有没有办法绘制两个数据帧的对应点?

时间:2019-06-25 14:18:30

标签: python pandas

我有两个具有相同列和日期索引的数据框:

df1:

Date        T.TO AS.TO NTR.TO ... R.TO
2016-03-03  0.1  0.02  0.04       0.02
2016-03-04  0.09 0.01  0.02       0.02
2016-03-05  0.1  0.02  0.04       0.02
...
2019-03-03  0.09 0.01  0.02       0.02

df2:

Date        T.TO AS.TO NTR.TO ... R.TO
2016-03-03  0.01  0.32  0.04       0.02
2016-03-04  0.81  0.21  0.02       0.02
2016-03-05  0.01  0.12  0.04       0.02
...
2019-03-03  0.89  0.11  0.12       0.72

我想在图表上绘制两个数据框的所有匹配点,例如第一个点将对应于2016-03-03, T.TO (0.1, 0.01)。另一点对应于2016-03-03, AS.TO (0.02, 0.32),依此类推,我得到了大量的分数。然后,我将使用这些来找到最合适的线。

我知道如何找到最合适的线,但是我很难直接绘制这些点。我尝试使用嵌套的for循环和字典,但我想知道是否有更简单的方法吗?

2 个答案:

答案 0 :(得分:2)

要绘制这些点,可以stack

plt.scatter(df1.set_index('Date').stack(), df2.set_index('Date').stack())

输出:

enter image description here

答案 1 :(得分:1)

如果您要删除两个数据帧之间不通用的所有数据,则应该可以。

In [71]: df = pd.read_clipboard()

In [72]: df
Out[72]:
         Date  T.TO  AS.TO  NTR.TO   ...  R.TO
0  2016-03-03  0.10   0.02    0.04  0.02   NaN
1  2016-03-04  0.09   0.01    0.02  0.02   NaN
2  2016-03-05  0.10   0.02    0.04  0.02   NaN
3         ...   NaN    NaN     NaN   NaN   NaN
4  2019-03-03  0.09   0.01    0.02  0.02   NaN

In [73]: df2 = pd.read_clipboard()

In [74]: df2
Out[74]:
         Date  T.TO  AS.TO  NTR.TO   ...  R.TO
0  2016-03-03  0.01   0.32    0.04  0.02   NaN
1  2016-03-04  0.81   0.21    0.02  0.02   NaN
2  2016-03-05  0.01   0.12    0.04  0.02   NaN
3         ...   NaN    NaN     NaN   NaN   NaN
4  2019-03-03  0.89   0.11    0.12  0.72   NaN

然后df3只能具有与两个数据集匹配的值

In [75]: df3 = df[df==df2]

In [76]: df3
Out[76]:
         Date  T.TO  AS.TO  NTR.TO   ...  R.TO
0  2016-03-03   NaN    NaN    0.04  0.02   NaN
1  2016-03-04   NaN    NaN    0.02  0.02   NaN
2  2016-03-05   NaN    NaN    0.04  0.02   NaN
3         ...   NaN    NaN     NaN   NaN   NaN
4  2019-03-03   NaN    NaN     NaN   NaN   NaN

从那里开始绘制很简单。