如何在分类列之间进行相关性分析

6

我有一个数据框 df1,其中包含一组列 (col1,col2,col3)。

我有另一个数据框 df2,其中包含一组列 (col4,col5,col6)。

假设这两个数据框具有相同的行数。

如何生成一个相关性表格,对 df1 和 df2 进行成对相关性计算?

该表格将如下所示:

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

我使用 df1.corrwith(df2),但它似乎没有生成所需的表格。
我在这里提出了一个类似的问题:如何在具有不同列名称的两个数据框之间执行相关性,但现在我正在处理分类列。
如果不能直接比较,是否有一种标准方法使它们可比较(例如使用get_dummies)?并且是否有更快的自动处理所有字段(假设所有字段都是分类的)并计算它们的相关性的方法?

get_dummies会将变量转换为二进制。这样,您就可以对它们应用相关函数。 - epattaro
皮尔逊相关性要求数据为数字。在二进制数据上计算的相关性没有意义。请寻找分类数据上的关联度量。 - ayhan
1个回答

5

您说得对,需要使用 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

我们也能使用这种方法检验相关性检验统计量的显著性吗? - Ayan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接