簡體   English   中英

根據Pandas中的日期范圍計算定性值

[英]Counting qualitative values based on the date range in Pandas

我正在學習使用Pandas庫,需要進行分析並繪制下面的犯罪數據集。 每一行代表一次犯罪。 date_rep列包含一年的每日日期。

在此輸入圖像描述

數據需要按月分組,特定犯罪的實例需要每月累計,如下表所示。

在此輸入圖像描述

我遇到的問題是犯罪列中的數據是定性的,我只是無法在線找到可以幫助我解決這個問題的資源!

我一直在閱讀groupby和不同的排序方法,但實現這一目標的最有效方法是什么? 先感謝您!

要復制您的數據:

In [29]: df = pd.DataFrame({'date_rep':pd.date_range('2012-01-01', periods=100),
    ...:                    'crm_cd_desc':np.random.choice(['robbery', 'traffic', 'assault'], size=100)})


In [30]: df.head()
Out[30]: 
  crm_cd_desc   date_rep
0     traffic 2012-01-01
1     traffic 2012-01-02
2     assault 2012-01-03
3     robbery 2012-01-04

從本質上講,你想要做的是一個價值計數

In [31]: df['crm_cd_desc'].value_counts()
Out[31]: 
assault    36
traffic    34
robbery    30
dtype: int64

但是,您希望每個月分別執行此操作。 要按月分組,可以使用groupby pd.Grouper指定月份:

In [34]: df.groupby(pd.Grouper(key='date_rep', freq='M'))['crm_cd_desc'].value_counts()
Out[34]: 
date_rep           
2012-01-31  traffic    12
            robbery    10
            assault     9
2012-02-29  assault    13
            traffic    11
            robbery     5
2012-03-31  assault    12
            robbery    10
            traffic     9
2012-04-30  robbery     5
            assault     2
            traffic     2
dtype: int64

然后unstack以獲得結果:

In [35]: df.groupby(pd.Grouper(key='date_rep', freq='M'))['crm_cd_desc'].value_counts().unstack()
Out[35]: 
            assault  robbery  traffic
date_rep                             
2012-01-31        9       10       12
2012-02-29       13        5       11
2012-03-31       12       10        9
2012-04-30        2        5        2

您也可以按月和犯罪類型進行分組,然后計算每個組的長度,而不是使用value_counts

In [46]: df.groupby([pd.Grouper(key='date_rep', freq='M'), 'crm_cd_desc']).size().unstack()
Out[46]: 
crm_cd_desc  assault  robbery  traffic
date_rep                              
2012-01-31        9       10       12
2012-02-29       13        5       11
2012-03-31       12       10        9
2012-04-30        2        5        2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM