如何使用两列绘制聚合的DataFrame?

时间:2016-04-14 06:21:44

标签: pandas plot seaborn

我有以下内容,使用包含两列的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))

结果:

enter image description here

我想改变两件事:

  • 按航空公司
  • 绘制堆积图表中的数据
  • 使用%代替原始数字(按航空公司)

我不确定如何实现这一目标。任何方向都表示赞赏。

1 个答案:

答案 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')

这会产生一个漂亮的图表:

enter image description here