计算 Pandas 中两个文本列的相关性
Calculating correlation of two text columns in Pandas
我在 Python 方面很擅长,但对 Pandas 还是个新手,对统计数据几乎一无所知,所以如果这是一个简单或无知的问题,请原谅我。
假设我有一个包含两列的数据框,例如 Jobs
和 Cars
,其中两列中的条目都是一组有限的字符串之一,例如[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)
我在 Python 方面很擅长,但对 Pandas 还是个新手,对统计数据几乎一无所知,所以如果这是一个简单或无知的问题,请原谅我。
假设我有一个包含两列的数据框,例如 Jobs
和 Cars
,其中两列中的条目都是一组有限的字符串之一,例如[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)