如何从熊猫中的“ groupby”对象中选择要绘制在条形图上的数据

时间:2019-08-21 16:02:48

标签: python pandas matplotlib

我有一个使用groupby从Python Pandas创建的表,称为“ LikelihoodAwareness”。该表如下所示:

Q7                       No        Yes

AwarenessImprovement

Decrease               1.492537   0.000000

Increase              12.686567  64.925373

No change              4.477612  16.417910

我想制作一个条形图,在y轴上带有百分比(数字),在x轴上带有“是”“否”。我希望该图是一个堆叠的条形图,在“否”,“是”列上以不同的颜色表示“增加”,“减少”和“不变”。我还想添加一个图例,描述哪种颜色是“增加”,“减少”,“不变”。

我用过

LikelihoodAwareness.plot(kind='bar', stacked=True)

但是这在x轴上绘制了“增加”,“减少”和“不变”,在图例上绘制了“是”,“否”。

如何使条形图在x上绘制“是”,“否”列以及堆积的条形图的“增加”,“减少”和“不变”的百分比

1 个答案:

答案 0 :(得分:1)

您必须从groupby创建一个类似于您所显示的表的DataFrame,然后将其应用于转置 DataFrame。

我已经创建了一个像您的表格一样的DataFrame来绘制图形。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.DataFrame()
df['No']=[1.492537,12.686567,4.477612]
df['Si']=[0,64.925373,16.417910]
ax=df.T.plot(kind='bar', stacked=True,figsize=(15,15),fontsize=20)
df['index']=['Decrease','Increase','Nochange']
df.set_index('index')
ax.legend(df['index'],fontsize=20)

输出:

enter image description here