如何基于pandas两列字符串数据构建连续字符串出现频次统计矩阵
前序词-后续词频次计数矩阵实现方案
你要实现的是二元词汇共现频次统计,直接用pandas内置的pd.crosstab()即可完成,不需要使用相关性计算接口或者额外分词操作,具体实现步骤如下:
- 第一步:准备待处理的DataFrame
导入pandas后加载你自己的数据集,示例构造代码如下:import pandas as pd # 替换为你自己的数据集加载逻辑即可 df = pd.DataFrame({ 'word 1': ['cat', 'dog', 'mouse', 'dog', 'dog', 'mouse'], 'word 2': ['dog', 'mouse', 'dog', 'dog', 'mouse', 'cat'] }) - 第二步:生成计数矩阵
调用pd.crosstab(),指定行索引为前序列word 1,列索引为后续列word 2即可得到原始计数结果。如果需要保证行列覆盖所有出现过的单词、不存在的组合自动补0,可以补充reindex对齐逻辑:# 基础版:直接统计现有组合的频次 count_matrix = pd.crosstab(index=df['word 1'], columns=df['word 2']) # 完整版:补全所有词汇的行列,缺失频次填充为0 all_words = sorted(pd.unique(df[['word 1', 'word 2']].values.ravel())) count_matrix = count_matrix.reindex(index=all_words, columns=all_words, fill_value=0) - 第三步:查看输出结果
直接打印count_matrix即可得到你需要的矩阵格式,示例输出如下:word 2 cat dog mouse word 1 cat 0 1 0 dog 0 1 2 mouse 1 1 0
如果你的数据量超过百万级,可以用更轻量化的collections.Counter实现:将两列打包为元组迭代计数后,再转换为DataFrame格式,性能会比crosstab更高。
内容的提问来源于stack exchange,提问作者Tatiana P.
相关产品推荐
相关产品推荐

