计算 Pandas 中两个文本列的相关性

Calculating correlation of two text columns in Pandas

我在 Python 方面很擅长,但对 Pandas 还是个新手,对统计数据几乎一无所知,所以如果这是一个简单或无知的问题,请原谅我。

假设我有一个包含两列的数据框,例如 JobsCars,其中两列中的条目都是一组有限的字符串之一,例如[Software Engineer, Sysadmin, Product Manager][Tesla, Hummer, Ford Focus].

我想生成某种显示工作和汽车之间相关性的 table,如下所示:

|     | Tesla | Hummer | Ford Focus |
| SWE | ###   | ###    | ###        |
| SA  | ###   | ###    | ###        |
| PM  | ###   | ###    | ###        |

执行此操作的最 pythonic 方法是什么?老实说,这是一次性查询,我的数据集很小,所以它不需要是最高效的。

编辑:示例数据框可以像这样生成

from random import choice

jobs = ['SWE', 'Data Scientist', 'Product Manager', 'Sysadmin', 'Data Engineer']
cars = ['Tesla', 'Hummer', 'Ford Focus', 'Chevy Volt', 'Toyota Tercel']

df = pd.DataFrame({
    'jobs': [choice(jobs) for _ in range(1000) ], 
    'cars': [choice(cars) for _ in range(1000) ]
})

预期输出与 DataFrame.corr() 类似,但该函数仅对数字进行操作,并且这些是字符串。

您正在寻找crosstabs

pd.crosstab(df['jobs'], df['cars'], normalize = True)