【问题标题】:Best way to see correlation between a categorical variable and numerical variable in python,在 python 中查看分类变量和数值变量之间相关性的最佳方法,
【发布时间】:2020-07-15 21:57:30
【问题描述】:

我有一个 pandas 数据框,它存储用户 ID、他们的工资范围(在 3 个可能的范围中)和他们产生的利润,如下所示:

  user_id     salary_range     profit_amount  
 --------- ------------------ --------------- 
      123   0 - 35,000                   324  
      654   50,000 - 100,000            2083  
      129   50,000 - 100,000           20023  
      654   0 - 35,000                   699  
      398   35,000 - 49,999              298  

我想看看用户的工资范围和他们产生的利润之间是否存在任何关联。

通常我会使用 seaborn.heatmappd.corr 但这仅适用于 2 个数值变量,虽然薪水通常是一个数值,但这里的范围是一个分类。

就个人而言,我解决此问题的方法是将范围从 1 到 3 进行排名,然后从那里生成相关性。但是我相信还有其他可能的方法可以做到这一点,并想看看是否有人可以建议范围和利润之间的替代关联方法?

【问题讨论】:

    标签: python pandas statistics


    【解决方案1】:

    要计算定量变量和定性变量之间的联系,您需要计算 Eta

    如果它可以帮助你,在 R 中你可以使用这个函数:etaSquared() 在 anova 上

    【讨论】:

    • 这个功能是内置的还是我必须安装/加载特定的库?
    【解决方案2】:

    我相信获得salary_rangeprofit_amount 是一种方差分析方法。

    import pandas as pd
    import numpy as np
    
    data = {"user_id":[123,654,129,654,398],
        "salary_range":["0 - 35,000","50,000 - 100,000","50,000 - 100,000","0 - 35,000","35,000 - 49,999"],
        "profit_amount":[324,2083,20023,699,298]}
    
    df = pd.DataFrame(data)
    df
    
    from scipy import stats
    F, p = stats.f_oneway(df[df.salary_range=="0 - 35,000"].profit_amount,
                      df[df.salary_range=="35,000 - 49,999"].profit_amount,
                      df[df.salary_range=="50,000 - 100,000"].profit_amount)
    print("Statistics Values: ",np.round(F,2), "\n","P _Value        :",np.round(p,2))
    

    输出:

    Statistics Values:  0.84                                    
    P _Value        : 0.54
    

    如果 F 分数接近 0,则分类列和连续列之间没有相关性。 这表明没有相关性。

    【讨论】:

      猜你喜欢
      • 2021-01-19
      • 2015-06-12
      • 2017-11-25
      • 2022-10-04
      • 2019-02-12
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2021-11-28
      相关资源
      最近更新 更多