我有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
答案 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()
答案 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