#python
Из DataSet выбираю события, которые произошли 2015 году, и хочу записывать тип Primary Type в словарь, чтобы через class Counter посмотреть самые популярные. Как правильно добавлять в словарь, а не перезаписывать значения? import csv import re import collections a = {"Primary Type": set()} with open("Crimes.csv") as f: reader = csv.reader(f) for smt in reader: if len(re.findall(r"\w+/\w+/2015\b", smt[2])) > 0: a["Primary Type"] = smt[5] print(a) c = collections.Counter(a) print(c.most_common(3)) Пример того что я получаю на выходе: {'Primary Type': 'ASSAULT'} {'Primary Type': 'DECEPTIVE PRACTICE'} {'Primary Type': 'BURGLARY'} {'Primary Type': 'DECEPTIVE PRACTICE'} {'Primary Type': 'HOMICIDE'} {'Primary Type': 'HOMICIDE'} {'Primary Type': 'HOMICIDE'} {'Primary Type': 'HOMICIDE'} {'Primary Type': 'HOMICIDE'} [('Primary Type', 'HOMICIDE')] # тут я ожидаю получить HOMICIDE DECEPTIVE PRACTICE и тд.
Ответы
Ответ 1
Поправил, сделал так: import csv import re import collections m = [] with open("Crimes.csv") as f: reader = csv.reader(f) for smt in reader: if len(re.findall(r"\w+/\w+/2015\b", smt[2])) > 0: m.append(smt[5]) c = collections.Counter(m) print(c.most_common(3))Ответ 2
Модуль Pandas гораздо лучше подходит для решение такого рода задач: import pandas as pd # читаем данные из CSV в Pandas DataFrame filename = r'D:\download\Chicago_Crimes_2012_to_2017.csv' df = pd.read_csv(filename, index_col=0) # фильтруем данные - оставляем только 2015 год df = df[df['Date'].str.contains('\d{2}/\d{2}/2015\s')] показываем top-5 наиболее часто встречающихся в выборке за 2015г. преступлений: print(df['Primary Type'].value_counts().head(5)) результат: THEFT 57292 BATTERY 48904 CRIMINAL DAMAGE 28669 NARCOTICS 23833 OTHER OFFENSE 17534 Name: Primary Type, dtype: int64 тоже самое в виде словаря: print(df['Primary Type'].value_counts().head(5).to_dict()) результат: {'THEFT': 57292, 'BATTERY': 48904, 'CRIMINAL DAMAGE': 28669, 'NARCOTICS': 23833, 'OTHER OFFENSE': 17534}
Комментариев нет:
Отправить комментарий