【问题标题】:Creating a user-input filters on csv file that contains large data在包含大数据的 csv 文件上创建用户输入过滤器
【发布时间】:2019-04-28 20:17:39
【问题描述】:

我有一个程序可以打开并读取包含大数据的 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 中的表格中,该表格只会打印出每一行。但是,我需要合并搜索过滤器来缩小结果,如上所示。有谁熟悉这个?谢谢大家的帮助。

【问题讨论】:

  • 几个线索: 1. 获取用户输入。 2. 打开 CSV 文件,逐行读取,检查每个文件的内容是否与用户指定的值匹配。

标签: python csv coding-style


【解决方案1】:

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

【讨论】:

  • 您好,非常感谢您的帮助。有没有办法在不使用 pandas 模块的情况下做到这一点?我是编写 Python 的新手,我想在不使用模块的情况下解决这个问题。
  • 不客气!如果这已经回答了问题,请考虑投票/接受作为答案。
  • 我刚刚做到了!我现在正在测试代码,但我想知道是否有一种方法可以使用用户输入过滤器来缩小 csv 文件中的搜索结果
  • Python 的标准库有 csv 模块,可以帮助您处理 csv 文件。使用 Pandas,您可以获得查看数据的优势。如果您正在处理大数据,建议使用 pandas 而不是 csv 模块。
猜你喜欢
  • 2016-10-22
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多