用相同的列绘制2个熊猫数据框

时间:2020-06-02 23:03:35

标签: python pandas matplotlib

我有2个熊猫数据帧,它们的长度相同,列名称也相同。我想遍历并相互绘制各列-df1中的column1与df2中的col1。我想要条形图

df1:

   time abst    farbe gier           goff  huft mode
1:    1    1    keine  2.5 haus,maus,toll        4.0
2:    2   NA            NA                        NA
3:    3    0    keine  0.0           maus wolle  2.5
4:    4   NA            NA                        NA
5:    5    3 rot,blau  3.0           maus  holz  3.0

df2:

   A  B  C
1  0  4  8
2  5  6  9
3  2  5  1

2 个答案:

答案 0 :(得分:0)

也许像下面这样,不太确定您的条形图是什么意思,我现在并排绘制

df1=pd.DataFrame({'A':[0,5,2],'B':[4,6,5],'C':[8,9,1]})
df2=pd.DataFrame({'A':[9,1,5],'B':[4,4,5],'C':[5,2,1]})

fig,ax = plt.subplots(1,3,figsize=(8,5))
x1 = [i-0.1 for i in range(len(df1))]
x2 = [i+0.1 for i in range(len(df2))]
for i,col in enumerate(df1.columns):
    ax[i].bar(x=x1,height=df1[col],width=0.2,label="df1")
    ax[i].bar(x=x2,height=df2[col],width=0.2,label="df2")
    ax[i].legend()

enter image description here

答案 1 :(得分:0)

称为分组条形图/集群条形图/多系列条形图

如果我能理解您所说的话,这是实现所需目标的最简单方法。

创建您提到的数据框:

df1 = pd.DataFrame(np.array([[0, 4, 8], [5, 6, 9], [2, 5, 1]]), columns=['a', 'b', 'c'])
df2 = pd.DataFrame(np.array([[9, 4, 5], [1, 4, 2], [5, 5, 1]]), columns=['a', 'b', 'c'])

将它们堆叠在一起(如果索引不重要,请在append方法中使用ignore_index = True选项)

combined = df1.append(df2)

由于要绘制列,因此首先需要将它们作为行绘制,因为默认情况下,DataFrame.plot会将行作为X轴进行绘制。

要使它们成为行,我们按如下方式进行转置。

combined.transpose().plot(kind='bar')

combined.T.plot(kind='bar')

这是情节: Cluster bar chart