如何使用Python的wordcloud包统计总词数及指定词在DataFrame中的出现次数
核心说明
WordCloud 对象的 .words_ 属性返回的是归一化相对词频,不是原始计数:所有值为「当前词出现次数 / 全量最高频词的出现次数」,因此最高频词的返回值固定为1.0,其余值均落在0~1区间,无法直接从这个属性计算总词汇量、特定词汇的真实出现次数。
具体实现方案
方案1:复用WordCloud内置统计逻辑(与词云统计口径完全一致)
WordCloud生成词云时内部已经完成了分词、停用词过滤、词组规则匹配(对应你设置的collocations=False参数)、大小写转换全流程预处理,直接调用内置的process_text()方法即可拿到原始词频计数,不需要重复写预处理逻辑,结果和词云实际使用的统计值完全对齐。
# 获取预处理后的原始词频字典:key为词汇,value为真实出现次数 raw_word_freq = wordcloud1_EN.process_text(text1) # 统计词云口径下的所有有效词汇总出现次数 total_words = sum(raw_word_freq.values()) # 查询特定词汇的真实出现次数,以查询cut为例 target_word_count = raw_word_freq.get("cut", 0) # 不存在对应词汇时默认返回0
方案2:统计DataFrame字段内的特定词汇出现次数
如果需要单独统计DataFrame某文本列的词汇出现次数,可直接按列计算,注意提前对齐预处理规则避免结果偏差。假设你的文本存储在df的content列:
# 统计全列中目标词cut的整词出现次数 target_word = "cut" # 正则\b为单词边界,避免匹配到cutting、shortcut等包含cut的长词,不需要整词匹配可删除 target_total = df["content"].str.count(fr"\b{target_word}\b").sum()
注意:如果DataFrame统计前没有做和WordCloud一致的停用词过滤、特殊字符清洗、大小写转换,统计结果会和词云展示的词频存在差异,需要对齐口径优先使用方案1。
内容的提问来源于stack exchange,提问作者tassaneel
相关产品推荐
相关产品推荐

