本程式流程是讀取紅樓夢txt檔案----使用jieba進行分詞----借助counter讀取各人名出現次數並排序----使用matplotlib將結果視覺化
這裡的統計除了將「熙鳳」出現的次數合併到「鳳姐」中外並沒有其他處理,但應該也大體能反映人物提及次數情況
條形圖:
餅狀圖:
#此函式用於繪製條形圖
defshownamebar(self,name_list_sort,name_list_count):
#x代表條形數量
x =np.arange(len(name_list_sort))
#處理中文亂碼
plt.rcparams['
font.sans-serif
'] = ['
simhei']
#繪製條形圖,bars相當於控制代碼
bars =plt.bar(x,name_list_count)
#給各條形打上標籤
plt.xticks(x,name_list_sort)
#顯示各條形具體數量
i =0
for bar in
bars:
plt.text((bar.get_x() + bar.get_width() / 2), bar.get_height(), '
%d' % name_list_count[i], ha='
center
', va='
bottom')
i += 1
#顯示圖形
plt.show()
#此函式用於繪製餅狀圖
defshownamepie(self, name_list_sort, name_list_fracs):
#處理中文亂碼
plt.rcparams['
font.sans-serif
'] = ['
simhei']
#繪製餅狀圖
plt.pie(name_list_fracs, labels=name_list_sort, autopct='
%1.2f%%
', shadow=true)
#顯示圖形
plt.show()
defgetnametimessort(self,name_list,txt_path):
#將所有人名臨時新增到jieba所用字典,以使jieba能識別所有人名
for k in
name_list:
jieba.add_word(k)
#開啟並讀取txt檔案
file_obj = open(txt_path, 'rb'
).read()
#jieba分詞
jieba_cut =jieba.cut(file_obj)
#counter重新組裝以方便讀取
book_counter =counter(jieba_cut)
#人名列表,因為要處理鳳姐所以不直接用name_list
name_dict ={}
#人名出現的總次數,用於後邊計算百分比
name_total_count =0
for k in
name_list:
if k == '熙鳳'
:
#將熙鳳出現的次數合併到鳳姐
name_dict['
鳳姐'] +=book_counter[k]
else
: name_dict[k] =book_counter[k]
name_total_count +=book_counter[k]
#counter重新組裝以使用most_common排序
name_counter =counter(name_dict)
#按出現次數排序後的人名列表
name_list_sort =
#按出現次數排序後的人名百分比列表
name_list_fracs =
#按出現次數排序後的人名次數列表
name_list_count =
for k,v in
name_counter.most_common():
#print(k+':'+str(v))
#繪製條形圖
self.shownamebar(name_list_sort, name_list_count)
#繪製餅狀圖
self.shownamepie(name_list_sort,name_list_fracs)
if__name__ == '
__main__':
#參與統計的人名列表,可修改成自己想要的列表
name_list = ['
寶玉', '
黛玉', '
寶釵', '
元春', '
探春', '
湘雲', '
妙玉', '
迎春', '
惜春', '
鳳姐', '
熙鳳', '
巧姐', '
李紈', '
可卿', '
賈母', '
賈珍', '
賈蓉', '
賈赦', '
賈政', '
王夫人', '
賈璉', '
薛蟠', '
香菱', '
寶琴', '
襲人', '
晴雯', '
平兒', '
紫鵑', '鶯兒'
]
#紅樓夢txt檔案所在路徑,修改成自己檔案所在路徑
txt_path = '
f:/pycharmprojects/tutorial/hlm.txt
'hnc =hlmnamecount()
hnc.getnametimessort(name_list,txt_path)
參考:
python 統計紅樓夢人員姓名出現次數
使用到jieba庫 python 第三方中文分詞庫 1 安裝jieba庫 2 紅樓夢 txt 文件 import jieba txt open 紅樓夢.txt r encoding utf 8 read wenben jieba.lcut txt 使用精確模式對文字進行分詞 counts 通過鍵值對...
PYTHON中JIEBA分詞關於紅樓夢出現的高頻詞
import jieba excludes txt open 紅樓夢.txt r encoding utf 8 read words jieba.lcut txt 利用jieba庫將紅樓夢的所有語句分成詞彙 counts 建立的乙個空的字典 for word in words if len word...
jieba分詞統計紅樓夢出現名字前20名
import jieba excludes txt open 紅樓夢.txt r encoding utf 8 read 不寫明路徑的話,預設和儲存的python檔案在同一目錄下 注意開啟格式是utf 8,這個可以開啟txt檔案,選擇另存為,注意介面右下角的格式 words jieba.lcut t...