Создание фильтров пользовательского ввода в CSV-файле, который содержит большие данные - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть программа, которая открывает и читает файл в формате 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 Ответ

0 голосов
/ 29 апреля 2019

Библиотека Pandas в Python позволяет просматривать и манипулировать данными CSV. Следующее решение импортирует библиотеку pandas, читает csv с помощью функции read_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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...