在数据的探索性分析过程中,对于数值型数据集,我们可以使用pd.info(),pd.describe()来对数据做一些统计汇总,使我们对数据有一个初步的整体认识。我们也可以对其做一些可视化的展示,如使用柱状图,直方图,散点图等等。但是对于文本数据,上述的方式就没有那么有效了。在此我们可以使用词云,来对文本数据做一个直观的展示,使我们对文本数据有一个整体的了解。
这一节,我们对英文文本绘制词云。由于英文文本是以空格来分开的,所以不需要做分词处理,可以直接绘制词云。在绘制词云的时候,我们可以找一些模板,直接套用过来就ok了。
1.垃圾邮件分类数据集词云绘制
接下来,我们将以垃圾邮件分类数据集为例来进行展示。该数据集提取链接如下:
链接:https://pan.baidu.com/s/1_wruskJfFfEyKIFfgsKHHg
提取码:q9t3
代码如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud,STOPWORDS
%matplotlib inline
#创建一个绘制词云的函数
def plot_wordcloud(text,title):
wordcloud = WordCloud(background_color = 'black',
stopwords = set('STOPWORDS'),
max_words = 100,
max_font_size = 40,
relative_scaling = 1,
random_state = 3
).generate(str(text))
fig = plt.figure(figsize = (8,8))
plt.axis('off')
plt.title(title)
plt.imshow(wordcloud)
#导入垃圾邮件分类数据集
df = pd.read_csv('D:\\Py_dataset\\SMSSpamCollection',
names = ['Class','Message'],sep = '\t',encoding = 'utf-8')
df.head() #查看前5行数据
#绘制正常邮件的词云
ham_mesg = df.loc[df['Class'] == 'ham']['Message']
plot_wordcloud(ham_mesg,'Ham Message')
#绘制垃圾邮件的词云
spam_mesg = df.loc[df['Class'] == 'spam']['Message']
plot_wordcloud(spam_mesg,'Spam Message')


2.wordcloud参数说明
wordcloud是python的一个外部库,在使用的时候,我们首先应该安装wordcloud库。在anaconda prompt终端输入'pip install wordcloud'就可以了,然后就可以使用它来画图了。
*background_color:背景颜色,通常设置为'white','black'等。
*stopwords:停用词,词云中需要显示的词。
*max_words:整数,显示的词的最大数量。
*max_font_size:整数,最大的字体尺寸。
*min_font_size:整数,最小的字体尺寸。
*relative_scaling:浮点型,图片放大缩小的系数。
*font_path:字体的路径,对于汉语特别重要,如果缺失该参数,则汉语无法显示出来。
*height:图片的高度。
*width:图片的高度。
*mask:参考图片的形状。
3.绘制一个带有形状的词云
#提取将要绘制词云的文本
text = df.loc[df['Class'] == 'spam']['Message']
#读取一张带有形状的图片
wordcloud_image = plt.imread('D:\\Py_dataset\\girl.jpg')
wordcloud = WordCloud(background_color = 'white',
stopwords = set('STOPWORDS'),
mask = wordcloud_image,
max_font_size = 80,
min_font_size= 40,
max_words = 100,
)
wordcloud.generate(str(text))
plt.figure(figsize = (4,6))
plt.axis('off')
plt.imshow(wordcloud)
真实的图片形状

词云形状:

英文文本词云绘制小结
1.在对英文文本进行探索时,第一步可通过绘制词云来了解文本的关键字。
2.使用WordCloud库来绘制词云。
3.熟悉WordCloud中的各个参数,根据自己的实际需要做相应的设置。
网友评论