在包含大数据的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文件上创建用户输入过滤器的主要内容,如果未能解决你的问题,请参考以下文章

scala过滤操作过滤CSV文件

如何在 LibreOffice Writer 中输入大表格?

如何从 csv 文件加载用户名?

如何使用CLI命令在输入文件参数上运行Python脚本来生成输出文件

根据 CSV 记录从 Spark 数据帧中过滤一些数据

Kettle使用_31 CSV文件输入跳过第一(首)行之过滤记录