【发布时间】:2017-02-18 12:38:43
【问题描述】:
我有一个如下所示的 CSV:
IncidntNum Category Date
1 150098210 ROBBERY 02/03/2011 12:00:00 AM
2 150098210 ASSAULT 07/05/2013 12:00:00 AM
4 150098226 VANDALISM 12/01/2015 12:00:00 AM
7 150098248 VANDALISM 04/06/2015 12:00:00 AM
而且我有兴趣弄清楚每年发生多少次特定犯罪,这样我就可以例如能够为每种类型的犯罪制作图表,显示该犯罪每年发生的次数。我该怎么做呢?老实说,我对到达那里的步骤有点迷茫。
到目前为止,我已经导入了 CSV 文件,并绘制了简单地发生了多少犯罪,并将其绘制在一个图表上,显示了每种犯罪的发生率。
with open("file.csv", 'r') as f:
data = pd.read_csv(f)
crimes = data.loc[data['Category'] == x]
crimes_dates = crimes['Date']
crimes_year = crimes_dates.apply(lambda x: x[6:10]).value_counts().sort_index()
unique_crimes_years = crimes_year.value_counts()
unique_crimes_years.plot(kind='bar')
plt.ylabel("Crimes count")
plt.show()
这很好,但我希望能够挑选出某种犯罪并绘制出每年发生多少次犯罪。
crimes = data.loc[data['Category'] == 'VANDALISM'
这将为我提供一个类似于 data 的新 DataFrame,但仅带有“VANDALISM”,但我有点不知道如何相对于年份绘制它?
编辑:
按照亨利的建议,提取年份然后按年份计数已被添加并尝试绘制。
编辑2:
还按索引对年份进行排序,因此我们得到正确的年份顺序。
【问题讨论】:
-
从日期字符串中提取年份,然后按年份计数。
-
这似乎是朝着正确方向迈出的重要一步,但除了使用
value_counts()之外,还有其他方法吗,因为它似乎按出现次数排序,例如左边出现次数最少的年份,上升,而我想按年份排序? -
老实说,我亲自在 SQL 中预先处理!