在包含大量数据的 csv 文件上创建用户输入过滤器
Creating a user-input filters on csv file that contains large data
我有一个程序可以打开和读取包含大量数据的 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 中的 table 中,它会打印出每个线。但是,我需要结合搜索过滤器来缩小结果,如上所示。有人熟悉这个吗?谢谢大家的帮助。
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 格式文件,例如:
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 中的 table 中,它会打印出每个线。但是,我需要结合搜索过滤器来缩小结果,如上所示。有人熟悉这个吗?谢谢大家的帮助。
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