python - r 基于来自 2 个数据帧的列的平方
问题描述
我有2个数据框df1和df2,df1显示在下面的代码中,df2是每组中每一列的填充平均值,也如下面的代码所示
import pandas as pd
import numpy as np
data = {'Group':['1', '1', '2', '2'],
'A':[1, 5, 15, 170],
'B':[7, 12, 100.1, 14],
'C':[2, 3.1, 6, 1],
}
df1 = pd.DataFrame(data)
df2 = df1.groupby("Group").transform(lambda x: x.mean())
我想通过 2 个数据帧计算 R 平方循环的值并计算每对列的 r 平方 df1['A'] & df2['A'] , df1['B'] & df2['B '], .... 预期结果是一个数据框,其中填充了 A&A 、 B&B 列的 Rsquared .... 谢谢!
解决方案
一种选择是用于intersection
获取共享列并scipy.stats.linregress
获取rvalue
然后平方它:
# Columns Shared By Both DataFrames
cols = df1.columns.intersection(df2.columns)
# Iterate, Calculate, and Collect R-Squared Values
r_squared = {c: scipy.stats.linregress(x=df1[c], y=df2[c]).rvalue ** 2
for c in cols}
r_squared
:
{'A': 0.39989765735182164, 'B': 0.37808726682588906, 'C': 0.06442976976619669}
完整的工作示例:
import pandas as pd
import scipy.stats
data = {'Group': ['1', '1', '2', '2'],
'A': [1, 5, 15, 170],
'B': [7, 12, 100.1, 14],
'C': [2, 3.1, 6, 1],
}
df1 = pd.DataFrame(data)
df2 = df1.groupby("Group").transform('mean')
# Columns Shared By Both DataFrames
cols = df1.columns.intersection(df2.columns)
# Iterate, Calculate, and Collect R-Squared Values
r_squared = {c: scipy.stats.linregress(x=df1[c], y=df2[c]).rvalue ** 2
for c in cols}
print(r_squared)
推荐阅读
- php - 使用 PHP,按键搜索数组并将另一个数组中的值替换为匹配键中的值
- javascript - 使用 JS 进行水平单击和拖动滚动 - 防止单击 mouseup
- python - matplotlib 中最小的有效 alpha 值?
- php - 使用 curl 时某些文件没有完全下载
- opengl - 在OpenGL中围绕对象边缘翻转法线
- list - 简单 Prolog 谓词上的“堆栈外”错误
- php - 如何将订阅/会员计划设置为默认?
- reactjs - 当前未启用对实验语法“classProperties”的支持 (14:13)
- php - 使用jquery为php变量赋值
- quickfix - 是否有使用 QUICKFIX 库的客户端-客户端通信的开箱即用解决方案?