我有以下内容,使用包含两列的DF,我希望通过以下方式聚合:
df2.groupby(['airline_clean','sentiment']).size()
airline_clean sentiment
americanair -1 14
0 36
1 1804
2 722
3 171
4 1
jetblue -1 2
0 7
1 1074
2 868
3 250
4 11
southwestair -1 4
0 20
1 1320
2 829
3 237
4 4
united -1 7
0 74
1 2467
2 1026
3 221
4 5
usairways -1 5
0 62
1 1962
2 716
3 155
4 2
virginamerica -1 2
0 2
1 250
2 180
3 69
dtype: int64
绘制混合视图:
DFC = df2.groupby([' airline_clean''情绪'])。大小() dfc.plot(kind =' bar',stacked = True,figsize =(18,6))
结果:
我想改变两件事:
我不确定如何实现这一目标。任何方向都表示赞赏。
答案 0 :(得分:0)
最好的方法是绘制此数据集,首先转换为%值,然后使用unstack()进行绘图:
airline_sentiment = df3.groupby(['airline_clean', 'sentiment']).agg({'tweet_count': 'sum'})
airline = df3.groupby(['airline_clean']).agg({'tweet_count': 'sum'})
p = airline_sentiment.div(airline, level='airline_clean') * 100
p.unstack().plot(kind='bar',stacked=True,figsize=(9, 6),title='Sentiment % distribution by airline')
这会产生一个漂亮的图表: