首页 > 解决方案 > Dataframe - Pandas - 如何绘制两个数据框的相同列以可视化差异

问题描述

有两个数据框

df1
+-----+-----+-------+
|     | id  | price |
+-----+-----+-------+
| 1   | 1   | 5    |
+-----+-----+-------+
| 2   | 2   | 12    |
+-----+-----+-------+
| 3   | 3   | 34    |
+-----+-----+-------+
| 4   | 4   | 62    |
+-----+-----+-------+
| ... | ... | ...   |
+-----+-----+-------+
| 125 | 125 | 90    |
+-----+-----+-------+

df2
+-----+-----+-------+
|     | id  | price |
+-----+-----+-------+
| 1   | 1   | 14    |
+-----+-----+-------+
| 2   | 2   | 15    |
+-----+-----+-------+
| 3   | 3   | 45    |
+-----+-----+-------+
| 4   | 4   | 62    |
+-----+-----+-------+
| ... | ... | ...   |
+-----+-----+-------+
| 125 | 125 | 31    |
+-----+-----+-------+

我想要一个在 X 轴上显示两个价格列并在 Y 轴上显示总和的图,以查看这两个数据框之间的差异。

我尝试了以下但什么也没做。

line1 = df1.plot.line()
line2 = df2.plot.line()
lines = df.plot.line(x=df1['price'], y=df2['price']

在这两个数据框中显示两种价格模式之间差异的最佳方式是什么?

我想到了类似的东西,但如果有更好的方法来显示差异,请提及。

在此处输入图像描述

标签: pythonpandasdataframe

解决方案


真的不清楚您所说的“X 轴上的价格列和 Y 轴上的总和”是什么意思。

由于您的 id 相同,您可以像这样绘制它们:

import pandas as pd
import numpy as np 
import matplotlib.pyplot as plt

np.random.seed(221)
df1 = pd.DataFrame({'id':np.arange(125),
'price':np.random.randint(1,10,125)})
df2 = pd.DataFrame({'id':np.arange(125),
'price':np.random.randint(10,20,125)})

fig,ax = plt.subplots()
ax.plot(df1.price,label="df1")
ax.plot(df2.price,label="df2")
ax.legend()

在此处输入图像描述


推荐阅读