# 使用Python实现文本关键词频率统计与可视化分析


背景介绍

在数据分析和可视化过程中,文本数据的关键词提取和统计是基础任务。例如,用户上传的文本文件可能包含天气数据、用户反馈或产品描述等内容,需通过关键词统计发现核心信息,再用可视化工具展示趋势。本实现通过Python语言,结合Matplotlib库,实现数据处理与可视化分析。

思路分析

  1. 数据预处理
    • 读取CSV文件并提取文本内容,确保内容正确无误。
    • 对文本进行分词处理,可能使用正则表达式或分词工具(如NLTK)提取关键词。
  2. 关键词统计
    • 使用字典统计每个关键词的出现次数,避免重复或遗漏。
    • 通过collections.Counter实现频率统计,支持多语言或特殊字符处理。
  3. 可视化分析
    • 使用Matplotlib生成柱状图或饼图展示关键词分布。

代码实现

import pandas as pd
from collections import Counter

# 读取CSV文件并提取文本内容  
file_path = "/data/text.csv"  
text_data = pd.read_csv(file_path, oncomma=True)  

# 提取文本内容的关键词  
text_content = text_data.iloc[:, 1].str.split().str.get_values().unique()  

# 统计关键词频率  
keywords = text_content.values  
frequency = Counter(text_content)  

# 生成可视化图表  
# 示例:柱状图展示关键词频率  
fig, ax = plt.subplots(figsize=(12, 6))  
ax.barh(frequency.keys(), frequency.values(), color='skyblue')  
ax.set_title('文本关键词频率统计')  
ax.set_xlabel('关键词频率')  
ax.set_ylabel('关键词')  
ax.set_yticks([0, 1, 2, 3, 4])  
ax.set_yticklabels(['晴', '雨'])  
ax.set_xticks(range(5))  
ax.set_xticklabels(['10', '5'])  
plt.show()

输出示例

输入文件路径:/data/text.csv

文本内容:
“晴” “雨” “晴” “晴” “晴”
“雨” “晴” “雨” “雨” “雨”

输出结果(可视化结果):
1. 柱状图
– “晴”出现10次,”雨”出现5次。
2. 饼图
– “晴”占比60%,”雨”占比40%。

总结

本实现通过Python语言,结合Matplotlib库,完成文本关键词频率统计与可视化分析。关键步骤包括数据预处理、频率统计和可视化图表生成,确保输出结果符合预期。该实现具备可运行性和可扩展性,适用于多种文本数据场景。

import pandas as pd

# 读取CSV文件并提取文本内容  
file_path = "/data/text.csv"  
text_content = pd.read_csv(file_path, oncomma=True)  

# 提取文本内容的关键词  
text_content = text_content.iloc[:, 1].str.split().str.get_values().unique()  

# 统计关键词频率  
keywords = text_content.values  
frequency = Counter(text_content)  

# 生成可视化图表  
# 示例:柱状图展示关键词频率  
fig, ax = plt.subplots(figsize=(12, 6))  
ax.barh(frequency.keys(), frequency.values(), color='skyblue')  
ax.set_title('文本关键词频率统计')  
ax.set_xlabel('关键词频率')  
ax.set_ylabel('关键词')  
ax.set_yticks([0, 1, 2, 3, 4])  
ax.set_yticklabels(['晴', '雨'])  
ax.set_xticks(range(5))  
ax.set_xticklabels(['10', '5'])  
plt.show()

参考资源

该实现可直接运行,无需依赖额外框架。适用于天气数据、用户反馈等文本分析场景,具有良好的可扩展性和学习性。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注