【问题标题】:Python Pandas pandas correlation one column vs allPython Pandas pandas 相关一列与全部
【发布时间】:2022-01-25 11:33:13
【问题描述】:

我正在尝试获取单个列与数据框的其余数字列之间的相关性,但我被卡住了。

我正在尝试这个:

corr = IM['imdb_score'].corr(IM)

但我得到了错误

操作数不能与形状一起广播

我认为这是因为我试图找到一个向量(我的imdb_score 列)与几列的数据框之间的相关性。

如何解决这个问题?

【问题讨论】:

    标签: python pandas correlation


    【解决方案1】:

    我想你可以使用.corr which returns all correlations between all columns 然后只选择你感兴趣的列。

    所以,像

    IM.corr()['imbd_score']
    

    应该可以。

    【讨论】:

    • 这是低效的,因为许多计算将被丢弃。而是使用corrwith(参见my answer)。
    • 谢谢@mozway,也支持你的回答。 :)
    【解决方案2】:

    与其计算所有相关性并保留感兴趣的相关性,不如计算感兴趣的相关性子集在计算上更有效:

    import pandas as pd
    
    df = pd.DataFrame()
    
    df['a'] = range(10)
    df['b'] = range(10)
    df['c'] = range(10)
    
    pd.DataFrame([[c, df['a'].corr(df[c])] for c in df.columns if c!='a'], columns=['var', 'corr'])
    

    【讨论】:

      【解决方案3】:

      使用corrwith最有效的方法。

      例子:

      df.corrwith(df['A'])
      

      示例数据的设置:

      import numpy as np
      import pandas as pd
      df = pd.DataFrame(np.random.randint(10, size=(5, 5)), columns=list('ABCDE'))
      
      #    A  B  C  D  E
      # 0  7  2  0  0  0
      # 1  4  4  1  7  2
      # 2  6  2  0  6  6
      # 3  9  8  0  2  1
      # 4  6  0  9  7  7
      

      输出:

      A    1.000000
      B    0.526317
      C   -0.209734
      D   -0.720400
      E   -0.326986
      dtype: float64
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-27
        • 1970-01-01
        • 1970-01-01
        • 2019-09-16
        • 1970-01-01
        • 2015-07-31
        • 2016-11-01
        相关资源
        最近更新 更多