【问题标题】:creating dataframe on the basis of R-squared value根据 R 平方值创建数据框
【发布时间】:2020-02-08 14:22:44
【问题描述】:

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

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

我想得到一个数据框,它简单地给出第一、二、三、四列的 r 平方值和列箱。这样我想要的数据框如下所示。

df2 =

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

我在这里写的 r 平方值并不准确,仅用于理解数据帧结构。 在真实数据集中,有 200 多列,第一列是“bins”。 但是问题和这个一样。

需要帮助。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

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

    从导入模块开始:

    import scipy.stats
    

    然后,例如,使用 'bins' 计算列 'one' 的 R²:

    scipy.stats.linregress(df1[['bins', 'one']].to_numpy()).rvalue ** 2
    

    我的结果是 0.15589578141321594。

    为了对所有列执行此操作('bins' 除外,它是第一列),只需在 for 循环中执行每个计算(例如,使用列表推导式)。

    这将创建一个新的 DataFrame df2,就像您描述的那样:

    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:]
        ]
    })
    

    这会产生以下 DataFrame:

             r-square_with_bins
    columns                    
    one                0.155896
    two                0.171381
    three              0.004014
    four               0.280958
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 2016-02-26
      • 1970-01-01
      • 2019-05-07
      • 2018-04-17
      • 1970-01-01
      • 2022-10-06
      相关资源
      最近更新 更多