我想在图表上绘制2个折线图,x轴为月,y轴为每个城市每个月的计数。
我在一个月内分组来计算每个城市的数量。
我的df:
city month
A 1
A 2
A 2
B 2
B 3
C 3
df['city'].groupby(df['month']).size().plot()
我希望看到2个折线图,1个用于A,1个用于B,用于x轴上的每个月。
上面的代码只给了我每个月的积累,但我希望每个城市的细分。
如何为城市列的不同值设置2个折线图?
答案 0 :(得分:1)
我认为您需要groupby
size
进行统计并按unstack
重新整形,最后一个过滤列(城市)subset
:
df.groupby(['month', 'city']).size().unstack(fill_value=0)[['A','B']].plot()
类似:
pd.crosstab(df['month'], df['city'])[['A','B']].plot()
对于情节,所有城市都可以省略子集[[]]
。
如果想过滤最重要的数量:
top = df['city'].value_counts().head(2).index
df.query('city in @top').groupby(['month', 'city']).size().unstack(fill_value=0).plot()