2017-03-08 133 views
2

我有一个外部数据集,其中包括犯罪类型及其发生的区域,我需要计算犯罪发生的频率。我想找到的将是一个频率表,以便我可以计算在特定区域犯罪的频率(最终需要为每种类型的犯罪(例如强奸,抢劫等)创建饼图) 这就是我到目前为止有:python - 如何计算csv连续两个字符串的频率

columns=defaultdict(list) 

with open('Seattle_Crime_Stats_by_Police_Precinct_2008-Present.csv') as f: 
    reader=csv.DictReader(f) 
    for row in reader: 
     for (k,v) in row.items(): 
      columns[k].append(v) 
crimes=(columns['CRIME_TYPE']) 
precincts=(columns['Precinct']) 
number=(columns['Row_Value_ID']) 
count_crimes=Counter(crimes) 

请大家帮忙,我一直停留在这几天(新的Python)

回答

0

我建议你阅读关于熊猫和使用它,因为它会大大简化所有进一步处理。下面是如何开始:读CSV文件作为一个数据帧,组数据由两个变量,并转换成表格:

import pandas as pd 
data = ps.read_csv("Seattle_Crime_Stats_by_Police_Precinct_2008-Present.csv") 
data.groupby(["Precinct","CRIME_TYPE"]).count().unstack() 

最后一行可能需要使用sum()代替count();目前还不清楚什么是您的CSV文件的结构:

data.groupby(["Precinct","CRIME_TYPE"]).sum().unstack() 
0

您可以使用value_counts()函数:

dataframe_name['column_name'].value_counts() 

这会给你的频率为所有唯一值。