Python 数据处理与可视化:使用 Numpy 和 Matplotlib 生成高频词柱状图
首先,我们需要先导入所需要的库:
import numpy as np
import matplotlib.pyplot as plt
from collections import Counter
from matplotlib.font_manager import FontProperties
接下来,我们可以定义一个函数来处理文本数据,统计高频词并进行降序排序。该函数将会接收一个文本文件的路径作为参数,并返回一个包含前十高频词及其出现次数的字典。
def process_text_file(path):
with open(path, 'r', encoding='utf-8') as f:
text = f.read()
seg_list = jieba.cut(text)
word_counts = Counter(seg_list)
top_ten_words = dict(word_counts.most_common(10))
return top_ten_words
为了能够在可视化时不让中文字符重叠,我们需要指定一个字体来显示中文字符。在这里,我们使用了一个名为'Microsoft YaHei'的字体。
font = FontProperties(fname=r'C:\Windows\Fonts\Microsoft YaHei\msyh.ttc', size=14)
接下来,我们可以定义一个函数来绘制柱状图。该函数将会接收一个字典作为参数,其中包含了前十高频词及其出现次数。
def draw_bar_chart(data):
labels = list(data.keys())
values = list(data.values())
plt.bar(range(len(data)), values, tick_label=labels)
plt.xticks(rotation=45, fontproperties=font)
for x, y in enumerate(values):
plt.text(x, y+0.1, str(y), ha='center', fontproperties=font)
plt.show()
最后,我们可以调用上述函数来进行可视化。这里,我们使用了一个名为'data.txt'的文本文件作为演示。
data = process_text_file('data.txt')
draw_bar_chart(data)
完整代码如下:
import numpy as np
import matplotlib.pyplot as plt
from collections import Counter
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r'C:\Windows\Fonts\Microsoft YaHei\msyh.ttc', size=14)
def process_text_file(path):
with open(path, 'r', encoding='utf-8') as f:
text = f.read()
seg_list = jieba.cut(text)
word_counts = Counter(seg_list)
top_ten_words = dict(word_counts.most_common(10))
return top_ten_words
def draw_bar_chart(data):
labels = list(data.keys())
values = list(data.values())
plt.bar(range(len(data)), values, tick_label=labels)
plt.xticks(rotation=45, fontproperties=font)
for x, y in enumerate(values):
plt.text(x, y+0.1, str(y), ha='center', fontproperties=font)
plt.show()
data = process_text_file('data.txt')
draw_bar_chart(data)
运行该程序后,将会得到一个包含前十高频词的柱状图。
原文地址: https://www.cveoy.top/t/topic/oZ1z 著作权归作者所有。请勿转载和采集!