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做我想做的事吗?
该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)