我已经将三个列表加载到pandas数据帧中。
import pandas as pd
df = pd.DataFrame({'x': location})
df = df.assign(y1 = variable1)
df = df.assign(y2 = variable2)
我想画出y1和y2的相关性,其中x是公共x轴。也就是说,实际上,我想根据x位置对y1和y2值进行分类,在每个分类中找到y1与y2的相关性,然后绘制整个x域的相关性线。所以我的最终图在y轴上有相关性,在x轴上有位置。
我以前做过一些与此没有完全不同的事情,使用scipybinned_statistics
函数绘制条件均值,但我不认为我可以轻易地将其扩展到相关性。无论如何,我也想在使用熊猫方面做得更好,所以如果可能的话,我会尽量避开这条路线。
我相信以前有人问过这个问题,但我遇到的一切似乎都在关注多个分布图。
我或多或少已经找到了一个解决方案。实现类似于我在这里使用的东西:
nbins = 20
df['bins'] = pd.qcut(df['x'], q=nbins)
plotdatadf = df.groupby('bins')[['y1', 'y2']].corr().iloc[0::2, -1]
这为我提供了一个数据帧,每个仓的相关系数为y1
和y2
,其中根据每个仓的观测值,仓沿x
均匀划分。
现在,我可以返回到上一个数据帧,添加具有这些相关值的原始长度的另一列,条件是if bin[1] then corr = corr[1]
类型的复制。然后,可以将此列绘制为y,将我现有的x绘制为折线图。