如何绘制特定的数据框

时间:2019-09-16 06:08:45

标签: python-3.x pandas matplotlib seaborn

我想画一个图

sex ch r  p
'm' 10 18 17
'm'  9  6 6

我尝试了联合绘图和barplot,但我不知道如何绘图

sns.jointplot(x=df.index,y=np.sum(df))

所以我在x轴数据框和y轴列数据框的总和上使用了代码,并得到错误:

  

操作数不能与形状(2,)(36,)一起广播

我想绘制一个图,其中在x轴上所有图的列和 y轴的列之和表示ch y轴为19,r出租车为24,p出租车为23

我尝试使用连接图,但是语法似乎错误

jointplot(x=df.index,y=np.sum(df))

我希望输出为 在x-axis上应该有ch,r,p列 在y-axis上应该有总共一列,我得到了一个空图,显示错误:

  

操作数不能与形状一起广播

1 个答案:

答案 0 :(得分:0)

我认为您需要聚合sum并通过unstack重塑形状,因此可以使用seaborn.catplot

df = df.groupby('sex').sum().unstack().reset_index()
df.columns = ['cat','sex','val']
print (df)
  cat sex  val
0  ch   m   19
1   r   m   24
2   p   m   23

sns.catplot(x='sex', y='val', hue='cat', data=df, kind='bar')

plot.bar的另一种解决方案:

df.groupby('sex').sum().plot.bar()