基于R平方值创建数据框

问题描述 投票:1回答:1

我有一个如下所示的数据框,

df1 =

Index   bins  one         two         three       four
a       1     0.760207    0.313230    1.257121    3.777180
b       2     0.920607    0.350345    -0.424963   0.032379
c       3     -0.975032   0.580298    1.819454    -0.807784
d       4     -0.886256   0.656349    0.306178    1.172622
e       5     0.512182    0.362790    1.066892    0.250835

我想获得一个数据框,该数据框仅给出具有列仓的列1、2、3、4的r平方值。这样我想要的数据框如下所示。

df2 =

columns     r-square_with_bins
one         0.25
two         0.7
three       0.35
four        0.01
five        0.112

我在这里写的r平方值并不精确,仅用于理解数据帧结构。在实际数据集中,有200多个列,其中第一列为“箱”。但是问题和这个相同。

需要帮助。

python pandas dataframe
1个回答
0
投票

您可以使用scipy.stats.linregress()找到scipy.stats.linregress(),然后将其平方成R²。

首先导入模块:

rvalue

然后,例如,用import scipy.stats 为列'bins'计算R²:

'one'

对我来说是0.15589578141321594。

为了对所有列(第一列的scipy.stats.linregress(df1[['bins', 'one']].to_numpy()).rvalue ** 2 除外)执行此操作,只需在'bins'循环中执行每个计算(例如,使用列表推导。)

这将像您描述的那样创建一个新的DataFrame for

df2

将产生以下DataFrame:

df2 = pd.DataFrame({
    'columns': df1.columns[1:],
    'r-square_with_bins': [
        scipy.stats.linregress(df1[['bins', col]].to_numpy()).rvalue ** 2
        for col in df1.columns[1:]
    ]
})
© www.soinside.com 2019 - 2024. All rights reserved.