在包含大数据的csv文件上创建用户输入过滤器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在包含大数据的csv文件上创建用户输入过滤器相关的知识,希望对你有一定的参考价值。
我有一个程序打开并读取包含大数据的csv格式的文件,例如:
State Crime type Occurrences Year
CALIFORNIA ROBBERY 12 1999
CALIFORNIA ASSAULT 45 2003
NEW YORK ARSON 9 1999
CALIFORNIA ARSON 21 2000
TEXAS THEFT 30 2000
OREGON ASSAULT 10 2001
我需要通过用户输入创建3个过滤器。例如:
Enter State:
Enter Crime Type:
Enter Year:
如果我输入:
Enter State: CALIFORNIA
Enter Crime: ASSAULT
Enter Year: 2003
Crime Report
State Crime type Occurrences Year
CALIFORNIA ASSAULT 45 2003
这需要发生。
我不知道如何解决这个问题。我只能打开并以csv格式将数据文件读入Python中的一个表格,该表格将打印出每一行。但是,我需要结合搜索过滤器来缩小结果,如上所示。有人熟悉这个吗?感谢大家的帮助。
答案
Python中的Pandas库允许您查看和操作csv数据。以下解决方案导入pandas库,使用read_csv()
函数读取csv并将其加载到数据框中,然后询问输入值,记住State和Crime应该是字符串值并转换为str
,Year应该是整数和强制转换作为int
,然后应用一个简单的查询来过滤数据帧所需的结果。我们构建此查询时要记住,应该满足所有三个条件,并且输入字符串也可以是小写。
In [125]: import pandas as pd
In [126]: df = pd.read_csv('test.csv')
In [127]: df
Out[127]:
State Crime type Occurrences Year
0 CALIFORNIA ROBBERY 12 1999
1 CALIFORNIA ASSAULT 45 2003
2 NEW YORK ARSON 9 1999
In [128]: state = str(input("Enter State: "))
Enter State: California
In [129]: crime_type = str(input("Enter Crime Type: "))
Enter Crime Type: robbery
In [130]: year = int(input("Enter Year: "))
Enter Year: 1999
In [131]: df.loc[lambda x:(x['State'].str.lower().str.contains(state.lower()))
...: & (x['Crime type'].str.lower().str.contains(crime_type.lower())) & (x
...: ['Year'] == year)]
Out[131]:
State Crime type Occurrences Year
0 CALIFORNIA ROBBERY 12 1999
以上是关于在包含大数据的csv文件上创建用户输入过滤器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 LibreOffice Writer 中输入大表格?