FaC*_*fee 5 python matplotlib categories bar-chart pandas
我有以下数据框,其中pd.concat已用于对列进行分组:
a b
C1 C2 C3 C4 C5 C6 C7 C8
0 15 37 17 10 8 11 19 86
1 39 84 11 5 5 13 9 11
2 10 20 30 51 74 62 56 58
3 88 2 1 3 9 6 0 17
4 17 17 32 24 91 45 63 48
Run Code Online (Sandbox Code Playgroud)
现在我想绘制一个条形图,其中我只有两个类别(a和b),每个类别有四个条形代表每列的平均值.列C1和C5应该具有相同的颜色,列C2和C6应该具有相同的颜色,依此类推.
我怎么能用df.plot.bar()做到这一点?
该图应类似于下图.很抱歉它是手绘的,但我很难找到一个相关的例子:

编辑
这是我的实际DataFrame的标题:
C1 C2 C3 C4 C5 C6 C7 C8
0 34 34 34 34 6 40 13 26
1 19 19 19 19 5 27 12 15
2 100 100 100 100 0 0 0 0
3 0 0 0 0 0 0 0 0
4 100 100 100 100 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
您可以unstack在计算 后简单地执行mean以DF渲染条形图。
import seaborn as sns
sns.set_style('white')
#color=0.75(grey)
df.mean().unstack().plot.bar(color=list('rbg')+['0.75'], rot=0, figsize=(8,8))
Run Code Online (Sandbox Code Playgroud)
数据:(根据编辑后的帖子)
df
Run Code Online (Sandbox Code Playgroud)
DF通过根据列的选择重复标签来创建额外的列来准备多重索引(此处为 4)。
df_multi_col = df.T.reset_index()
df_multi_col['labels'] = np.concatenate((np.repeat('A', 4), np.repeat('B', 4)))
df_multi_col.set_index(['labels', 'index'], inplace=True)
df_multi_col
Run Code Online (Sandbox Code Playgroud)
df_multi_col.mean(1).unstack().plot.bar(color=list('rbg')+['0.75'], rot=0, figsize=(6,6), width=2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3882 次 |
| 最近记录: |