【问题标题】:How to perform correlation between categorical columns如何在分类列之间执行相关性
【发布时间】:2017-01-24 12:00:18
【问题描述】:

我在数据框 df1 中有一组列 (col1,col2,col3) 我在数据框 df2 中有另一组列 (col4,col5,col6) 假设这两个数据帧的行数相同。

如何生成在 df1 和 df2 之间进行成对相关的相关表?

表格看起来像

    col1 col2 col3
col4 ..   ..   ..
col5 ..   ..   ..
col6 ..   ..   ..

我用df1.corrwith(df2),好像没有按要求生成表格。

我在这里问了一个类似的问题: How to perform Correlation between two dataframes with different column names 但现在我正在处理分类列。

如果不能直接比较,是否有标准方法可以使其可比较(例如使用 get_dummies)?这是自动处理所有字段(假设所有字段都是分类的)并计算它们的相关性的更快方法吗?

【问题讨论】:

  • get_dummies 将使变量二进制化。反过来,您将能够将相关函数应用于它们。
  • Pearson 相关要求数据为数字。您在二进制数据上计算的相关性没有任何意义。寻找分类数据的关联度量。

标签: python pandas


【解决方案1】:

您是正确的,需要pd.get_dummies 才能获得相关性。下面,我将创建一些带有两个分类列的假数据,然后使用corrwith

df = pd.DataFrame({'col1':np.random.choice(list('abcde'),100),
                  'col2':np.random.choice(list('xyz'),100)}, dtype='category')
df1 = pd.DataFrame({'col1':np.random.choice(list('abcde'),100),
                   'col2':np.random.choice(list('xyz'),100)}, dtype='category')

dfa = pd.get_dummies(df)
dfb = pd.get_dummies(df1)
dfa.corrwith(dfb)

col1_a   -0.057735
col1_b    0.002513
col1_c    0.137956
col1_d   -0.095050
col1_e   -0.114022
col2_x    0.022568
col2_y   -0.081699
col2_z   -0.128350

【讨论】:

  • 我们也可以使用这种方法检查相关性检验统计量的显着性吗?
猜你喜欢
  • 2023-03-15
  • 2020-04-01
  • 2017-06-08
  • 2018-02-25
  • 2020-02-25
  • 2014-02-09
  • 1970-01-01
  • 2019-11-03
  • 2017-01-11
相关资源
最近更新 更多