1.利用Python软件对一个csv文件的文本资料进行分词、停词和词频统计
2. 基于词频统计结果制作词云
代码如下:
import pandas as pd
import jieba
from jieba import analyse
import wordcloud
import matplotlib.pyplot as plt
import numpy as np
import PIL
#需要更换文件路径,我是把excel文件保存为csv ,utf8格式
df=pd.read_csv("C:\\Users\\ThinkPad\\Desktop\\samgov.csv")
#需要把字符串更换为csv文件词云列的title
title=';'.join([ str(c) for c in df['content'].tolist()])
# 载入自定义词典
jieba.load_userdict("E:\\python\\chineseStopWords.txt")
#分词
gen=jieba.lcut(title)
data={}
#统计词频
for i in gen:
if len(str(i))>1:
data[i] = data.get(i,0)+1
hlist=list(data.items())
hlist.sort(key=lambda x:x[1],reverse=True)
dd=pd.DataFrame(hlist)
dd=dd.iloc[:30,:] #只要前30个
#需要更改输出词频的路径
dd.to_csv('E:\\python\\samgovword.txt',encoding='utf-8',index=False,header=False,sep=':')
# for i in range(10):
# print('{:<10}{:>5}'.format(hlist[i][0],hlist[i][1]))
#导入词频的背景图片
#mask= np.array(PIL.Image.open('C:\\Users\\ThinkPad\\Desktop\\fengjing.bmp'))
mask = np.array(PIL.Image.open('E:\\python\\haitun.jpg'))
cloud=wordcloud.WordCloud(background_color='white',mask=mask,font_path='C:/Windows/Fonts/simhei.ttf')
cloud.generate_from_frequencies(frequencies=data)
plt.figure(dpi=1200) #分辨率
plt.imshow(cloud,interpolation='bilinear')
plt.axis('off')
#保存
plt.savefig('E:\\python\\ctbu.jpg')
plt.show()
根据文本资料建立了停词表,并进行分词,python程序的对前30个词频输出部分截图如下:
词云图如下:
经过对词频整理,列出词频数目前30个的词,如下表所示: