問題を解決する手順は次のとおりです。
「三國志」テキストファイルを開き、jiebaライブラリを使用して「三國志」全体を単語分割処理し、出現回数の多い上位5文字の統計を取得し、表示します。ヒストグラム。matplotlib ライブラリを使用してヒストグラムを描画し、イメージの形式でコンピューターのディスクに保存します。
プログラムコードは次のとおりです。
import jieba
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'#matplotlib库绘制图像的字体设置
matplotlib.rcParams['font.sans-serif']=['SimHei']
excludes = {"将军", "却说", "荆州", "二人", "不可", "不能", "如此"}
txt = open("三国演义.txt", "r", encoding='utf-8').read()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1:
continue
elif word == "诸葛亮" or word == "孔明曰" or word == "卧龙":
rword = "孔明"
elif word == "关公" or word == "云长" or word == "美髯公":
rword = "关羽"
elif word == "玄德" or word == "玄德曰" or word == "刘皇叔":
rword = "刘备"
elif word == "孟德" or word == "丞相" or word == "曹贼":
rword = "曹操"
elif word == "翼德" or word == "猛张飞" or word == "张翼德":
rword = "张飞"
else:
rword = word
counts[rword] = counts.get(rword, 0) + 1
for word in excludes:
del (counts[word])
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
print("三国人物出场次数统计:")
for i in range(5):
word, count = items[i]
print("{0:<10}{1:>5}".format(word, count))
qww=[]
qwc=[]
for k in range(5):
qwwk,qwck=items[k]
qww.append(qwwk)
qwc.append(qwck)
plt.figure()
plt.bar(qww,qwc)
for a,b,i in zip(qww,qwc,range(5)):
plt.text(a,b+0.01,qwc[i],ha='center',fontsize=10)
plt.ylabel('出场次数',fontsize=12)
plt.xlabel('人物',fontsize=12)
plt.title('《三国演义》出场次数前五柱状图')
plt.savefig('三国出场柱状图.png')
plt.show()
プログラムを実行した結果は次のようになります。
これを見た友達は、離れる前に「いいね!」することを忘れないでください。
ブロガーをフォローして、Python プログラミングの知識をさらに学びましょう。