使用Seaborn条形图绘制宽格式的数据框

Sil*_*fan 3 python pandas seaborn

我正在尝试生成一个条形图DataFrame,其中包含所有观察值,如下所示:数据(行=年,列=对象,值=违反对象的年份)

使用默认熊猫时,我得到的图形类型正确plot

cluster_yearly_results_df.plot.bar()
Run Code Online (Sandbox Code Playgroud)

正确的条形图

但是,我想使用seaborn,并且在使用以下命令输入宽格式数据帧时遇到问题:

sns.barplot(data=cluster_yearly_results_df)
Run Code Online (Sandbox Code Playgroud)

我可以用seaborn做我想做的事吗?

Ste*_*fan 5

seaborn.barplot文件说:

条形图表示每个矩形的高度对数值变量的集中趋势的估计,并使用误差条提供了围绕该估计的不确定性的某种指示。

换句话说,目的是用表示的单个条形代表一个变量的多个值,而用表示mean误差线std。您正在寻找使用竖线来表示单个值的方法pandas.plot.bar()

话虽如此,您可以DataFrame如下调整您的seaborn界面以匹配它。从与DataFrame您相似的开始:

df = pd.DataFrame(np.random.randint(low=0, high=10, size=(10, 3)), columns=list('ABC'))

   A  B  C
0  7  6  4
1  3  5  9
2  3  0  5
3  0  1  3
4  9  7  7
Run Code Online (Sandbox Code Playgroud)

使用.stack().reset_index()创建两列,以唯一地标识以下各项中的每个值y

df = df.stack().reset_index()
df.columns = ['x', 'hue', 'y']
Run Code Online (Sandbox Code Playgroud)

产生:

   x hue  y
0  0   A  6
1  0   B  1
2  0   C  2
3  1   A  5
4  1   B  7
Run Code Online (Sandbox Code Playgroud)

然后绘制:

sns.barplot(y='y', x='x', hue='hue', data=df)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明