Python3紅樓夢人名出現次數統計分析

2022-06-26 01:45:09 字數 3281 閱讀 5791

本程式流程是讀取紅樓夢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...