如何清洗转换Pandas数据以统计词频并获取词分布?
实现方案
步骤1:导入依赖库
import pandas as pd import ast from collections import Counter
步骤2:转换数据类型,清洗空值
首先过滤掉列中的NaN值,再把字符串格式的列表转换为Python原生列表,可加异常兼容避免脏数据报错:
# 安全转换函数,脏数据默认返回空列表 def str_to_list(s): try: return ast.literal_eval(s) except: return [] # 可选:提前清洗多余换行符、空格 df['profile_values'] = df['profile_values'].str.replace('\n| ', '', regex=True) # 过滤空值+转换格式 notna_mask = df['profile_values'].notna() df['profile_list'] = df.loc[notna_mask, 'profile_values'].apply(str_to_list)
步骤3:统计词频
两种常用实现方式二选一即可:
方式1:用Counter统计(处理速度快,适合大数据量)
# 展开所有词到一个列表 all_words = [] for lst in df['profile_list'].dropna(): all_words.extend(lst) # 统计并转成目标格式的DataFrame word_count = pd.DataFrame(Counter(all_words).items(), columns=['word', 'count'])
方式2:Pandas原生方法实现(代码更简洁)
word_count = df['profile_list'].dropna()\ .explode()\ .value_counts()\ .reset_index(name='count')\ .rename(columns={'index': 'word'})
运行完上述代码后,word_count就是你需要的词分布结果,可按需排序输出。
内容的提问来源于stack exchange,提问作者Mikael Björkqvist
相关产品推荐
相关产品推荐

