python 并列条形图_python – 来自两个pandas数据框的分组条形图
我有兩個包含不同值但結(jié)構(gòu)相同的數(shù)據(jù)框:
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
我想在單個分組條形圖中繪制兩個數(shù)據(jù)幀.另外,每一行(索引)應(yīng)該是一個子圖.
對于其中一個直接使用pandas,這很容易實(shí)現(xiàn):
df1.T.plot(kind="bar", subplots=True, layout=(2,1), width=0.7, figsize=(10,10), sharey=True)
我試著加入他們
pd.concat([df1, df2], axis=1)
這會產(chǎn)生一個新的數(shù)據(jù)幀:
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
但是,使用上述方法繪制數(shù)據(jù)框不會對每列的條形圖進(jìn)行分組,而是將它們分開處理.對于每個子圖,這導(dǎo)致x軸具有按列的順序重復(fù)的刻度,例如, 0,1,2,3,4,0,1,2,3,4.
有任何想法嗎?
最佳答案 目前尚不清楚數(shù)據(jù)是如何組織的. Pandas和seaborn通常期望
tidy datasets.因?yàn)槟阍诶L圖之前轉(zhuǎn)移數(shù)據(jù)我假設(shè)你有兩個變量(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
也許這接近你想要的:
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
使用seaborns facet grid可以方便地繪圖:
sns.factorplot(x='index', y='A', hue='col', kind='bar', data=df4)
總結(jié)
以上是生活随笔為你收集整理的python 并列条形图_python – 来自两个pandas数据框的分组条形图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python如何读取csv文件某几行某几
- 下一篇: conda安装tensorflow-gp