python 并列条形图_python – 来自两个pandas数据框的分组条形图

本文介绍如何在单个图中同时展示两个具有相同结构但不同值的数据框df1和df2,通过pandas和seaborn的组合,实现按行(索引)为单位的子图,并保持列分组。解决数据合并后x轴刻度重复的问题,适用于数据可视化和分析。
摘要由CSDN通过智能技术生成

我有两个包含不同值但结构相同的数据框:

df1 =

0 1 2 3 4

D 0.003073 0.014888 0.155815 0.826224 NaN

E 0.000568 0.000435 0.000967 0.002956 0.067249

df2 =

0 1 2 3 4

D 0.746689 0.185769 0.060107 0.007435 NaN

E 0.764552 0.000000 0.070288 0.101148 0.053499

我想在单个分组条形图中绘制两个数据帧.另外,每一行(索引)应该是一个子图.

对于其中一个直接使用pandas,这很容易实现:

df1.T.plot(kind="bar", subplots=True, layout=(2,1), width=0.7, figsize=(10,10), sharey=True)

我试着加入他们

pd.concat([df1, df2], axis=1)

这会产生一个新的数据帧:

0 1 2 3 4 0 1 2 3 4

D 0.003073 0.014888 0.155815 0.826224 NaN 0.746689 0.185769 0.060107 0.007435 NaN

E 0.000568 0.000435 0.000967 0.002956 0.067249 0.764552 0.000000 0.070288 0.101148 0.053499

但是,使用上述方法绘制数据框不会对每列的条形图进行分组,而是将它们分开处理.对于每个子图,这导致x轴具有按列的顺序重复的刻度,例如, 0,1,2,3,4,0,1,2,3,4.

有任何想法吗?

最佳答案 目前尚不清楚数据是如何组织的. Pandas和seaborn通常期望

tidy datasets.因为你在绘图之前转移数据我假设你有两个变量(A和B)和四个观察值(例如测量值)

df1 = pd.DataFrame.from_records(np.random.rand(2,4), index = ['A','B'])

df2 = pd.DataFrame.from_records(np.random.rand(2,4), index = ['A','B'])

df1.T

kLeTRt.png

也许这接近你想要的:

df4 = pd.concat([df1.T, df2.T], axis=0, ignore_index=False)

df4['col'] = (len(df1.T)*(0,) + len(df2.T)*(1,))

df4.reset_index(inplace=True)

df4

T231it.png

使用seaborns facet grid可以方便地绘图:

sns.factorplot(x='index', y='A', hue='col', kind='bar', data=df4)

CiTWYm.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值