【问题标题】:Getting number of occurrences per year获取每年的发生次数
【发布时间】: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 中预先处理!

标签: python csv pandas


【解决方案1】:

您可能希望使用groupby 并在将日期作为索引的同时进行计数:

df['Date']=pd.to_datetime(df['Date'])
df.set_index('Date')
df.groupby(df.index.year).count()

输出

      IncidntNum  Category
2011           1         1
2013           1         1
2015           2         2

剧情:

df.groupby(df.index.year).count()['IncidntNum'].plot(kind='bar')

如果您希望它们按类别和年份分组:

df.groupby([df.index.year,'Category']).count()['IncidntNum'].plot(kind='bar')

让我们在 unstack 中加入一个很好的衡量标准:

df.groupby([df.index.year,'Category']).count()['IncidntNum'].unstack().plot(kind='bar')

【讨论】:

    猜你喜欢
    • 2021-10-13
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 2021-05-03
    相关资源
    最近更新 更多