我正试图从这个csv数据集创建一个字典:https://data.cityofnewyork.us/Social-Services/311-Noise-Complaints/p5f6-bkga,这样我就可以为记录的每个邮政编码创建投诉数量计数,这样我就可以将其映射到choropleth地图中
这是我目前的代码:
import folium
import pandas as pd
data311 = pd.read_csv('311_Noise_Complaints.csv')
zips = list(data311["Incident Zip"])
zipsND = pd.Series(zips).drop_duplicates().to_list()
newData = {}
occ = 0
for zp in zipsND:
for data in data311["Incident Zip"]:
if zp == data:
newData[zp].append(occ)
occ += 1
print(newData)
但我得到了这个错误:
Warning (from warnings module):
File "<string>", line 1
DtypeWarning: Columns (15,17,18,20) have mixed types.Specify dtype option on import or set low_memory=False.
Traceback (most recent call last):
File "/Users/kenia/Desktop/CSCI233/PRAC.py", line 15, in <module>
newData[zp].append(occ)
KeyError: 11215.0
我不太清楚错误告诉了我什么。问题是我如何设置字典,它无法记录数据集的第一个数据?我还尝试在for循环中移动缩进(仅在occ += 1
和print
行),但我得到了相同的错误
[编辑]
所以我再次运行了这段代码,但这次使用的是defaultdict():
data311 = pd.read_csv(311_Noise_Complaints.csv')
zips = list(data311["Incident Zip"])
zipsND = pd.Series(zips).drop_duplicates().to_list()
new = defaultdict(list)
count = 0
for (zp, count) in zipsND:
if zp in zips:
count += 1
new[zp].append(count)
print(new)
但现在我得到了这个错误:
line 13, in <module>
for (zp, count) in zipsND:
TypeError: cannot unpack non-iterable float object
[编辑2]
zips = list(data311["Incident Zip"])
zipsND = pd.Series(zips).drop_duplicates().to_list()
new = defaultdict(list)
count = 0
for zp in zipsND:
if zp in zips:
new[zp] = [count]
count += 1
print(new)
我用这段代码得到结果,但值不正确。它只计算每个zipcode;因此,第一个邮政编码的值为0,第二个邮政编码的值为1,依此类推。我需要每个zipcode都有在该zipcode中提出的投诉总数
最初,
newData
中没有任何内容,因此第一次尝试添加到newData[zp]
时,没有任何内容可附加这就是你要找的吗
这个的输出将是(我选择了前160行作为样本集):
编辑1:
这是一个更新的代码
输出如下所示
我对完整的311文件运行了它。
编辑2:
您还可以使用pandas value_counts()选项。当您不使用排序选项时,速度会快得多
其输出将为:
相关问题 更多 >
编程相关推荐