年月数

Number of months by year

我有问题。我想总结一下不同年份的月份。不幸的是,我不知道如何计算每年的月份。 .value_counts() 计算整个月份,是否也可以说只针对不同的年份。我尝试了类似 groupby df.groupby(['year', 'month']).count() 的方法,但它不起作用。

数据框

   id        date
0   1  2021-02-22
1   2  2021-03-22
2   3  2021-04-22
3   4  2021-02-15
4   5  2021-09-15
5   6  2020-01-12
6   7  2022-02-22

代码

import pandas as pd
import seaborn as sns
d = {'id': [1, 2, 3, 4, 5, 6, 7],
     'date': ['2021-02-22', '2021-03-22', '2021-04-22', 
'2021-02-15', '2021-09-15', '2020-01-12', '2022-02-22'],
    }
df = pd.DataFrame(data=d)
print(df)
df['month']  = pd.to_datetime(df['date'], errors='coerce').dt.month
df['year']  = pd.to_datetime(df['date'], errors='coerce').dt.year


sns.lineplot(data=df, x="month", y="", hue="month")
[OUT]
>>> ValueError: Could not interpret value `` for parameter `y`

我试过的

#df_month = df__orders['orderDate_month'].value_counts().reset_index()
#df_month.columns = ['month', 'count']
#sns.lineplot(data=df_month, x='month', y='count')

#df_new  = df.groupby(by=["year, month"]).count()
df.groupby(['year', 'month']).count()
df_new

[OUT]
year
2020    1
2021    5
2022    1
dtype: int64

我想要的

year    month  count
2020    1      1
2021    2      2
2021    3      1      
2021    4      1      
2021    9      1      
2022    2      2

使用GroupBy.size:

df_month = df.groupby(['year', 'month']).size().reset_index(name='count')
print (df_month)
   year  month  count
0  2020      1      1
1  2021      2      2
2  2021      3      1
3  2021      4      1
4  2021      9      1
5  2022      2      1

然后添加hue参数:

sns.lineplot(data=df_month, x='month', y='count', hue='year')