python-如何为csv计算一行中两个字符串的频率

python-如何为csv计算一行中两个字符串的频率,python,csv,dataset,Python,Csv,Dataset,我有一个外部数据集,其中包括犯罪类型和犯罪发生的辖区,我需要计算出一个辖区内犯罪发生的频率。我想找到的是一个频率表,这样我就可以计算在特定辖区内犯罪的频率(最终需要为每种类型的犯罪创建饼图,例如强奸、抢劫等) 这就是我到目前为止所做的: columns=defaultdict(list) with open('Seattle_Crime_Stats_by_Police_Precinct_2008-Present.csv') as f: reader=csv.DictReader(f)

我有一个外部数据集,其中包括犯罪类型和犯罪发生的辖区,我需要计算出一个辖区内犯罪发生的频率。我想找到的是一个频率表,这样我就可以计算在特定辖区内犯罪的频率(最终需要为每种类型的犯罪创建饼图,例如强奸、抢劫等) 这就是我到目前为止所做的:

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新手)

我建议您阅读有关pandas的文章并使用它,因为它将大大简化所有进一步的处理。以下是如何开始:将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()
您可以使用value_counts()函数:

dataframe_name['column_name'].value_counts()
这将为您提供所有唯一值的频率