【问题标题】:The correlation with groupby returns all NaN values Python Dataframe与 groupby 的相关性返回所有 NaN 值 Python Dataframe
【发布时间】:2021-11-07 23:33:41
【问题描述】:

我有一个这样的数据框(真正的 DF 有 94 列和 40 行):

NAME TIAS EFGA SOE KERA CODE SURVIVAL
SOAP corp 1.391164e+10 1.265005e+10 0.000000e+00 186522000.0 366 21
NiANO inc 42673.0 0.0 0.0 42673.0 366 3
FFS jv 9.523450e+05 NaN NaN 8.754379e+09 737 4
KELL Corp 1.045967e+07 9.935970e+05 0.000000e+00 NaN 737 4
Os inc 7.732654e+10 4.046270e+07 1.391164e+10 8.754379e+09 737 4

我需要通过 CODE 对帧中的每个组进行关联。目标值为 SURVIVAL 列。 我试过这个:

df = df.groupby('CODE').corr()[['SURVIVAL']]

但它返回如下内容:

CODE SURVIVAL
366 TIAS NaN
EFGA NaN
SOE NaN
KERA NaN
SURVIVAL NaN
737 TIAS NaN
EFGA NaN
SOE NaN
KERA NaN
SURVIVAL NaN

为什么所有列都是 NaN? 在进行关联之前,我尝试用平均值填充 DataFrame 中的 NaN:

df = df.fillna(df.mean())

或丢弃它们,但它不起作用。

但是,当我对所有数据框进行关联时,无需进行任何这样的修改:

df.corr()[['SURVIVAL']]

一切正常,我有相关性,而不是 NaN。

所有类型都是 float64 和 int64。 有没有办法在没有 NaN 的情况下按组获得相关性?我不知道为什么它适用于所有数据框,但不适用于组。

提前感谢您的帮助!

【问题讨论】:

    标签: python pandas dataframe pandas-groupby correlation


    【解决方案1】:

    你可以这样做

    df = df.groupby('CODE')[['SURVIVAL']].corr()
    

    【讨论】:

    • 它不起作用:(
    • 填NA后有没有试过,并且在将所有数字列添加到选择后也尝试。
    【解决方案2】:

    试试这个:

    survival_corr = lambda x: x.corrwith(x['SURVIVAL'])
    by_code = df.groupby('CODE')
    by_code.apply(survival_corr)
    

    【讨论】:

      猜你喜欢
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 2020-03-30
      • 2015-05-10
      • 1970-01-01
      相关资源
      最近更新 更多