词云图:论一个精致猪猪男孩的数据修养

吓得小编赶紧上某宝买把太阳伞压压惊! 但是某宝上伞这么多怎么挑呢?于是小编就顺手爬取了数万条卖家评论,来了个词频分析,做了一张炫酷的词云图!由词云图来看,这把伞的综合评价还是不错的,于是就赶紧下单啦~

接下来就让小编教大家如何做成像下面这样炫酷的词云图吧!

一. 词云介绍

“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。

可见词云在数据挖掘中有重要的作用!

二. 工具+依赖包+配置环境

形成一张词云图我们需要使用python语言(小编使用Anaconda自带的spyder编译器),jieba、numpy、matplotlib、wordcloud、PIL模块(Anaconda的安装以及模块的导入详情在本公众号 数据技术|十分钟教你写会爬虫程序 一文中有介绍)

以下分享三种方法导入外部模块

三种方法

1

不嫌麻烦 通过下载whl文件导入(https://www.lfd.uci.edu/~gohlke/pythonlibs/)

1)进入网页后ctrl+f,输入想要导入的模块,找到并下载

2)将下载后的whl文件重命名为zip文件解压缩,将模块复制到Anaconda的Lib文件下(小编电脑位置D:\Anaconda\Lib)

2

Win+R打开cmd输入conda install package_name

3

推荐Win+R打开cmd输入pip install package_name

配置好环境之后,万事俱备只欠东风!接下来就让小编手把手教学吧!(对这部分有疑问的小伙伴们别着急,文末还有干货给你们哦~)

三. 用wordcloud创建基础词云图

大家都知道近年成功出村进城的霉霉(Taylor Swift)吧,我们就先来分析一下霉霉的40首歌的歌词~

步骤表

1

#import 所需要的模块

from wordcloud import WordCloud

import matplotlib.pyplot as plt

2

#加载需要分析的文章

text = open(r'D:\BaiduNetdiskDownload\Song.txt','r').read()

3

#创建词云对象

wc = WordCloud(
              #指定格式
        background_color="white",
max_font_size=300,
        width=800 ,
        height=600,
        margin=2)

4

#生成词云

wc.generate(text)

5

#展示词云

plt.imshow(wc)
plt.axis("off")
plt.show()

6

#保存词云

wc.to_file('test.png')

运行上述代码我们就得到下面的词云图啦!

(嘿嘿嘿,是不是很简单?)

什么?不够炫酷?

哼!凡人,是时候展示一下真正的技术了!!!

什么?他的战斗力居然还在飙升!!!简直不敢相信!!!

四. 创建wordcloud创建高级词云图

我们就以分析很火的科幻小说三体3死神永生中的关键词频为例子吧~

Before that ,需要科普一下的是由于计算机可以通过英文单词之间的空格来分词辨别,然而在中文中可是没有空格来分割呢,计算机怎么识别单词呢?贴心的python开发者就想到了这点,开发了jieba分词模块,下面我们通过代码来认识一下这个模块吧~

步骤表

1

#import jieba

sentence = ‘小编好想喝肥宅快乐水啊!’

2

#全模式

sentence_1=jieba.cut(sentence, cut_all=True)

3

#精确模式

sentence_2=jieba.cut(sentence, cut_all=False)
print(‘,’.join(sentence_1))
print(‘,’.join(sentence_2))

运行结果:

小,编,现在,好,想,喝,肥,宅,快乐,水,啊,,

小编,现在,好,想,喝,肥宅,快乐,水,啊,!

可以看到,精确模式下,jieba.cut()尽可能多的进行分词(类似re的贪婪模式,全模式对应着非贪婪模式

充分了解jieba模块后,我们就开始愉快的代码之旅吧~

步骤表

1

#导入需要模块

import jieba
from PIL import Image 
import numpy as np 
import matplotlib.pyplot as plt 
from wordcloud import WordCloud, STOPWORDS 

2

#读取txt文件

text = open(r'D:\BaiduNetdiskDownload\三体3死神永生.txt','r',encoding='gbk').read()
print('加载txt文件成功')

3

#进行分词

wordlist_after_jieba = jieba.cut(text, cut_all=False)
wl_space_split = " ".join(wordlist_after_jieba)
print('分词成功')

4

# 读取照片通过numpy.array函数将照片等结构数据转化为np-array

mask=np.array(Image.open( r'D:\我的文档\图片\ wordcloud_mask.png'))   
print('加载图片成功!')

5

#选择屏蔽词,不显示在词云里面

stopwords = set(STOPWORDS)
stopwords.add("此用户没有填写评价")
# stopwords.add("收到”)可以加多个屏蔽词

6

#创建词云对象并设置参数

需要注意的是使用mask参数后不能使用width, height参数,因为图片大小已经确定

wc = WordCloud( 
 #选择背景色
    background_color="black",  
    max_words=1000,  
    mask=mask, 
    stopwords=stopwords,
max_font_size=40,
 # 设置有多少种随机生成状态,即有多少种配色方案
    random_state=30

7

#生成词云

wc.generate(text)

8

#存储并指定文件名称

wc.to_file( "三体3死神永生词云.png")

9

#通过matplotlib绘图库显示词云

plt.imshow(wc, interpolation='bilinear') 
plt.axis("off")

10

#不显示坐标轴

plt.figure() 
plt.imshow(mask, cmap=plt.cm.gray, interpolation='bilinear') 
plt.axis("off") 
plt.show() 
print('生成词云成功!')

如果你欣喜的阅读本篇文章的同时在运行代码的话,会得到这样的运行结果:

What?Excuse me?Are you kidding me?素质三连,这堆方框什么鬼!

莫慌,这是因为wordcloud默认字体并不支持中文,所以就出现这堆方框啦~小编特地留在后面说是因为希望小编就踩过这个雷(手动滑稽),希望大家加深印象~

解决方法:

我们只需要指定字体就好了,Win+R下输入fonts打开了windows的字体库,选择一个支持中文的字体

修改代码

1

#创建词云对象

wc = WordCloud( 
  #设置字体,不指定就会出现乱码   font_path=r'C:\Windows\Fonts\STHUPO.ttf',  
    background_color="black",  
    max_words=1000,  
    mask=mask, 
    stopwords=stopwords,
    max_font_size=40,
    random_state=30

# 设置有多少种随机生成状态,即有多少种配色方案

修改完成后再次运行就得到我们的炫酷词云图啦!

有了上面的基础之后我们就可以创建更多的词云图了:

五. 淘宝爬虫代码分享

小魔术师前面的文章有 十分钟入门爬虫 的教程,并且淘宝评论加载方式为ajax,爬取难度比普通静态页面要难,在此不多赘述,仅分享代码:

代码分享

#淘宝爬虫代码

import json
import requests
#要是想将评论导入xls文件中则去掉代码前的#,若仅需要txt文件则不需要改动
#import xlwt
#book = xlwt.Workbook ( encoding = 'utf-8' )
#sheet = book.add_sheet ( '评论', cell_overwrite_ok = True )
#i = 0
for m in range ( 1, 100 ) :
    headers = {'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' 
url仅需要改变商家的auctionNumId即可
    url = 'https://rate.taobao.com/feedRateList.htm?auctionNumId=559124988376&currentPageNum=' + str ( m ) + '&pageSize=20'
    res = requests.get ( url, headers = headers )
    strJson = res.text
    strJson = strJson [ :-2 ]
    strJson = strJson [ 3 : ]
    json_data = json.loads ( strJson )
    for comment in json_data [ "comments" ] :
        with open ('评论.txt','a',encoding='gbk',errors='ignore') as f:
           f.write(comment [ "content" ])
        #j = 0
        #sheet.write ( i, j, comment [ "content" ] )
        #j += 1
        #sheet.write ( i, j, comment [ "date" ] )
        #j += 1
        #sheet.write ( i, j, comment [ "auction" ] [ "sku" ] )
        #j += 1
        #i += 1
        print(comment [ "content" ])
        print(comment [ "date" ])
        print(comment [ "auction" ] [ "sku" ])
#book.save ( '评论.xls' )

干货预警!

由于官网下载Anaconda速度十分之慢,小编推荐使用快速并且安全的清华大学开源软件镜像站(https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/)选择最新版本下载(上图前为官网速度,后为镜像站速度)

由于通过condapip安装包都是源于外网,速度十分十分十分之慢,可以看到下载速度只有5.9kb/s,下面小编就教大家如何替换使用国内服务器进行高速下载:

步骤表

1

#初始

Win+R下输入%APPDATA%,进入文件夹后创建pip文件夹,在pip文件夹下创建pip.ini配置文件

2

#在pip.ini内输入以下内容并保存:

[global]
timeout = 6000
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com

(见下图1)

3

#添加到环境变量中:

我的电脑右键—>属性—>高级系统配置—>环境变量—>path—>新建—>输入%APPDATA%\pip\pip.ini,然后一直确定就完成啦!

(见下图2)

图1 pip.ini输入内容

图2 配置环境变量

新下载速度

完成上述步骤后重新导入模块,可以说下载速度有了质的飞跃~~

文案 / 欧子铨(大一)

排版 / 陈志(大三)

代码 / 欧子铨(大一)

审核 / 贺兴(大三)

指导老师 / 秦时明岳

原文发布于微信公众号 - 数据魔术师(transfer_3227891492)

原文发表时间:2018-06-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏坚毅的PHP

zookeeper学习系列:四、Paxos算法和zookeeper的关系

一、问题起源 淘宝搜索的博客 http://www.searchtb.com/2011/01/zookeeper-research.html  提到Paxos是...

44340
来自专栏字根中文校对软件

JcJc人工智能错别字校对系统API(网站错别字检查)

JcJc人工智能错别字校对系统API - 网站错别字检查 中文校对软件 http://cuobiezi.net/zigen_jiaodui.html App...

53950
来自专栏玉树芝兰

如何用Markdown写论文?

本文用简明的样例,介绍如何使用Markdown和自动化工具帮你处理数学公式、参考文献引用、图片交叉索引等学术论文写作中常见的棘手问题。快来试试吧。

48920
来自专栏CDA数据分析师

Excel2016四个超强的数据分析功能

摘要:三维地图、预测工作表、引用外部数据查询、数据透视表更强大的功能改进、将Excel 表格发布到Office 365 Power BI实现数据的商业智能分析…...

30450
来自专栏安恒信息

LOCKY勒索者新花样:通过PDF投递

摘 要 最近安恒APT团队截获一个新版的LOCKY勒索者病毒样本,区别之前大多数样本采用WORD文档投递并用宏代码远程下载执行的方式,该样本在原有的WORD文档...

30360
来自专栏知识分享

STM32采集电阻触摸贴膜

公司的项目用电阻屏,触摸的时候发现获取的位置会漂,后来自己发现是由于压力的问题....如果亲们用电阻屏发现触摸的位置有问题,可以看一下这篇文章,,先测量触摸的压...

32360
来自专栏编程

无数据库权限下载文献攻略大全

阅读完本篇文章你就会学会了在家里,在路上,在可以连接到网络的任何地点都轻松下载您所需要的文献!!! 在之前的内容中,我们为大家推送过两篇关于如何在没有权限的情况...

25380
来自专栏数据派THU

手把手教你安装深度学习软件环境(附代码)

来源:机器之心 本文长度为2800字,建议阅读5分钟。 本文向你解释如何在一台新装的 Ubuntu 机器上安装 Python 和 Nvidia 硬件驱动、各类库...

23480
来自专栏梧雨北辰的开发录

Python爬虫原理

本篇是在学习Python基础知识之后的一次小小尝试,这次将会爬取熊猫TV网页上的王者荣耀主播排名,在不借助第三方框架的前提下演示一个爬虫的原理。

25830
来自专栏SAP最佳业务实践

想学FM系列(16)-SAP FM模块:预算结构(7)-预算结构操作-多层预算结构维护

3.2.2.3 多层预算结构的维护 ? 1)FMHIE_HIEID- 编辑层次结构标识 功能为多层预算结构备用树定义一相标识ID,并定义相关属性,为之后生成备...

53880

扫码关注云+社区

领取腾讯云代金券