如何关联两个 pandas 数据帧,为所有值找到一个 r 值?我不想关联列或行,而是关联所有标量值。一个数据帧是 x 轴,另一个数据帧是 y 轴。
我在这里下载了结构相同的 csv 文件: https: //www.gapminder.org/data/ 这些表格的列为年份,行为国家/地区,每个表格报告的指标都有数值。
例如,我想了解政治参与指标(gapminder 将其称为指数,但我不想将其与数据框索引混淆)与政府职能指标(按年份和国家/地区)的总体关联情况。
pol_partix_idx_EIU_df = pd.read_csv('polpartix_eiu.csv',index_col=0)
govt_idx_EIU_df = pd.read_csv('gvtx_eiu.csv',index_col=0)
pol_partix_idx_EIU_df.head()
2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018
country
Afghanistan 0.222 0.222 0.222 0.250 0.278 0.278 0.278 0.278 0.389 0.389 0.278 0.278 0.444
Albania 0.444 0.444 0.444 0.444 0.444 0.500 0.500 0.500 0.500 0.556 0.556 0.556 0.556
Algeria 0.222 0.194 0.167 0.223 0.278 0.278 0.389 0.389 0.389 0.389 0.389 0.389 0.389
Angola 0.111 0.250 0.389 0.416 0.444 0.444 0.500 0.500 0.500 0.500 0.556 0.556 0.556
Argentina 0.556 0.556 0.556 0.556 0.556 0.556 0.556 0.556 0.556 0.611 0.611 0.611 0.611
您可以按列或行关联:
pol_partix_idx_EIU_df.corrwith(govt_idx_EIU_df, axis=0)
2006 0.738297
2007 0.745321
2008 0.731913
...
2018 0.718520
dtype: float64
pol_partix_idx_EIU_df.corrwith(govt_idx_EIU_df, axis=1)
country
Afghanistan 6.790123e-01
Albania -5.664265e-01
...
Zimbabwe 4.456537e-01
Length: 164, dtype: float64
但是,我想要一个 r 值来将一个表中的每个字段与另一个表中的每个相应字段进行比较。本质上,我想要这个散点图的 r 值:
plt.scatter(pol_cultx_idx_EIU_df,govt_idx_EIU_df)
plt.xlabel('Political participation')
plt.ylabel('Government functioning')
(示例代码不会像这样为图着色,但会绘制相同的点。)
问题的第二部分是如何对结构不完全相同的表执行此操作。我想要比较的每个表(数据框)都有国家/地区记录和年份列,但并非所有表都具有相同的国家/地区或年份。在上面的例子中,他们确实这样做了。如何仅获取数据帧的共享行和列的单个 r 值?
开满天机
长风秋雁
相关分类