专栏首页玉树芝兰如何用Python做词云?

如何用Python做词云?

临渊羡鱼,不如退而结网。我们步步为营,从头开始帮助你用Python做出第一张词云图来。欢迎尝试哦!

(由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开。如有需要,请点击文末的“阅读原文”按钮,访问可以正常显示外链的版本。)

需求

在大数据时代,你经常可以在媒体或者网站上看到一些非常漂亮的信息图。

例如这个样子。

或是这个样子的。

看过之后你有什么感觉?想不想自己做一张出来?

如果你的答案是肯定的,我们就不要拖延了,今天就来一步步从零开始做个词云分析图。当然,做为基础的词云图,肯定比不上刚才那两张信息图酷炫。不过不要紧,好的开始是成功的一半嘛。食髓知味,后面你就可以自己升级技能,进入你开挂的成功之路。

网上教你做信息图的教程很多。许多都是利用了专用工具。这些工具好是好,便捷而强大。只是它们功能都太过专一,适用范围有限。今天我们要尝试的,是用通用的编程语言Python来做词云。

Python是一种时下很流行的编程语言。你不仅可以用它做数据分析和可视化,还能用来做网站、爬取数据、做数学题、写脚本替你偷懒……

知道豆瓣吗?它一开始就是用Python写的。

在目前的编程语言热度排序里,Python屈居第四(当然,很多人不同意,所以编程语言的排行榜有许多,你懂的)。但看问题要用发展眼光。随着数据科学的发展,Python有爆发的趋势。早点儿站上风口,很有益处。

如果你之前没有编程基础,没关系。从零开始,意味着我会教你如何安装Python运行环境,一步步完成词云图。希望你不要限于浏览,而是亲自动手尝试一番。到完成的那一步,你不仅可以做出第一张词云图,而且这还将是你的第一个有用的编程作品。

心动了?那咱们就开始吧。

安装

首先,我们需要安装Python运行环境。

如果你用的是macOS,那么你的系统里面实际已经预装好了Python。

然而我们要使用到许多扩展包的功能。因此最好安装一个Python工具套装。只需要一次安装,以后大部分的功能就都已集成了。不必每次使用新功能,都去零敲碎打地安装新包了。

Python的套装有许多种,这里推荐给大家anaconda。因为经过我4年多的尝试与对比,感觉这款软件包的安装更为便捷,扩展包的涵盖范围与结构更合理。

请你到 这个网址 下载anaconda套装。下拉网页找到下载位置。根据你的操作系统类型选择合适的版本。

因为我的系统是macOS,所以网站直接给我推荐的就是macOS系统版本。但如果你用的是Windows或Linux,请切换到相应的标签页上面。

不管你用的是哪个操作系统,请注意右侧的两个按钮,分别对应Python 2.X和3.X版本。有人一定很纳闷,既然有新的版本,我凭什么用旧的?

不是这样的。到2020年之前,Python的两个版本会一直并存。Python的开发者确实希望大家升级切换到3.X版本。可惜目前3.X版本兼容的扩展包数量比2.X版本要少,尤其是涉及到数据科学类的软件包,就尤其明显。所以如果你是初学者,我建议你下载2.X(目前是2.7)版本,这样在以后的使用中,可能遇到的问题会少一些。等你运用熟练了,再迁移到3.X版本不迟。相信我,到那时你会很快适应新版本的。

下载后,执行安装文件就行了。

根据你的电脑运行速度不同,安装的时间长短不等。耐心点儿,只需要等这一次嘛。

安装完毕之后,请你安装一个“现代化”浏览器。如果你用的是macOS,那么系统自带的Safari就挺好。其他的选择包括Firefox和Google Chrome。

请安装上述浏览器之一,然后将其设置为系统默认的浏览器。

好了,下面请进入命令行模式。

在macOS和Linux下,你需要开启一个终端(terminal)。

如果是Windows,请打开“开始”-“附件”-“命令提示符”。

键入以下命令:

mkdir demo
cd demo

好了,你现在有一个专用的目录,叫做demo了。请到macOS的Finder或者Windows的“我的电脑”里面,找到这个目录并且打开它。

回到终端下面,macOS或者Linux用户请键入以下命令:

pip install wordcloud

macOS会提示你先安装XCode命令行工具,你按照默认设置一步步进行就可以了。但是请注意,务必在WiFi环境下安装。如果你用的是4G流量,那你可要破费一笔了。

如果你用的是Windows,那么为了使用这个词云包,就稍微麻烦一些,你需要到 这里 下载 wordcloud‑1.3.1‑cp27‑cp27m‑win32.whl 这个文件。下载后将它拖拽到你的demo目录里。

在命令行下,先执行:

pip install wheel

然后,再执行:

pip install wordcloud‑1.3.1‑cp27‑cp27m‑win32.whl

好了,我们需要的全部Python运行环境终于装好了。

请务必按照上述步骤执行,确保每一步都已经顺利完成。否则一旦遗漏,后面运行程序会报错。

数据

词云分析的对象,是文本。

理论上讲,文本可以是各种语言的。英文、中文、法文、阿拉伯文……

为了简便,我们这里以英文文本为例。你可以随意到网上找一篇英文文章作为分析对象。我特别喜欢英剧”Yes, minister”,所以到维基百科上找到了这部剧的介绍词条。

我把其中的正文文字部分拷贝了下来,存储为一个文本文件,叫做yes-minister.txt。

把这个文件挪动到我们的工作目录demo里。

好了,文本数据已经准备好了。开始进入编程的魔幻世界吧!

代码

在命令行下,执行:

jupyter notebook

浏览器会自动开启,并且显示如下界面。

这就是咱们刚才的劳动成果——安装好的运行环境了。我们还没有编写程序,目录下只有一个刚才生成的文本文件。

打开这个文件,浏览一下内容。

回到Jupyter笔记本的主页面。我们点击New按钮,新建一个笔记本(Notebook)。在Notebooks里面,请选择Python 2选项。

系统会提示我们输入Notebook的名称。程序代码文件的名称,你可以随便起。但是我建议你起一个有意义的名字,将来好方便查找。由于我们要尝试词云,就叫它wordcloud好了。

然后就出现了一个空白的笔记本,供我们使用了。我们在网页里唯一的代码文本框里,输入以下3条语句。请务必逐字根据示例代码输入,空格数量都不可以有差别。尤其注意第三行,用4个空格,或者1个Tab开始。输入后,按Shift+Enter键,就可以执行了。

filename = "yes-minister.txt"
with open(filename) as f:
 mytext = f.read()

没有任何结果啊。

对,因为我们这里没有任何输出动作,程序只是打开了你的yes-minister.txt文本文件,把里面的内容都读了出来,存储到了一个叫做mytext的变量里面。

然后我们尝试显示mytext的内容。输入以下语句之后,还是得按Shift+Enter键,系统才会实际执行该语句。

mytext

之后的步骤里,也千万不要忘了这一确认执行动作。

显示的结果如下图所示。

嗯,看来mytext变量里存储的文本就是我们从网上摘来的文字。到目前为止,一切正常。

然后我们呼唤(import)词云包,利用mytext中存储的文本内容来制造词云。

from wordcloud import WordCloud
wordcloud = WordCloud().generate(mytext)

这时程序可能会报警。别担心。警告(warning)不影响程序的正常运行。

此时词云分析已经完成了。你没看错,制作词云的核心步骤只需要这2行语句,而且第一条还只是从扩展包里找外援。但是程序并不会给我们显示任何东西。

说好了的词云呢?折腾了这么半天,却啥也没有,你蒙人吗?!

别激动。输入下面4行语句后,就是见证奇迹发生的时刻了。

%pylab inline
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")

运行结果如图所示:

不用那么兴奋嘛。

你可以在词云图片上单机鼠标右键,用“图片另存为”功能导出。

通过这张词云图,我们可以看到不同单词和词组出现的频率高低差别。高频词的字体明显更大,而且颜色也很醒目。值得说明的是,最显眼的单词Hacker并不是指黑客,而是指这部剧的主角之一——哈克首相。

包含程序完整代码的ipynb文件,我也分享了出来,你可以从 这里 下载。

希望你在尝试过程中一切顺利。对自己生成的词云图满意吗?如果你不满意,也不要紧,可以挖掘wordcloud软件包的其他高级功能。尝试一下,看自己能不能做出这样的词云图来?

讨论

学完了本方法后,你做出了一张什么样的词云图?除了本文介绍的方法以外,你还知道哪些便捷地制作词云或其他信息图的方式?欢迎留言,分享给大家。我们共同交流讨论。


本文分享自微信公众号 - 玉树芝兰(nkwangshuyi),作者:王树义

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-01

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 学 Python ,能提升你的竞争力吗?

    “王老师您好!我是学XX专业的(或是学过某编程语言),听说 Python 很热,打算好好学习,但是不知道学完以后能否进XX类型的企业?都有哪些岗位需要掌握 Py...

    王树义
  • 如何安装Python运行环境Anaconda?(视频教程)

    本视频教程针对Windows平台,集成3.6版本Python的Anaconda录制。

    王树义
  • 如何高效入门数据科学?

    说明:本文是我数据科学系列教程的导读。因为微信公众号文章一经发布,便不能大篇幅编辑内容,后续发布的新教程无法加入进来。所以我只得选择不定期更新发布本文的最新版,...

    王树义
  • selenium webdriver 启动三大浏览器Firefox,Chrome,IE

         1. 进入Python官方网站:https://www.python.org/downloads/  下载并安装最新版本的Python(建议安装Pyt...

    拓荒者
  • Python3网络爬虫实战-13、部署相

    在将 Scrapy 代码部署到远程 Scrapyd 的时候,其第一步就是要将代码打包为 Egg 文件,其次需要将 Egg 文件上传到远程主机,这个过程如果我们用...

    py3study
  • [704]虚拟机debian9.* 安装vm tools

    VMware Tools是VMware虚拟机中自带的一种增强工具,是VMware提供的增强虚拟显卡和硬盘性能、以及同步虚拟机与主机时钟的驱动程序。 在VMwa...

    周小董
  • Python网络爬虫-第一行代码-windows环境

    Python有强大的支持爬虫功能的库,是爬取网页数据的首选。先看看是否有Python:cmd界面执行Python

    震八方紫面昆仑侠
  • Outlook邮件撤回

    林万程
  • 零基础学编程010:最终可以输出完整的复利数据表了

    我为了用Python打印这365行枯燥的《复利数据表》: (1+0.01) ^ 1 = 1.01 (1+0.01) ^ 2 = 1.02 (1+0.01) ^...

    申龙斌
  • Python 两个内置函数: 【locals 】和 【globals】

    在理解这两个函数时,首先来理解一下 Python 中的名字空间概念。Python 使用叫做名字空间的东西来记录变量的轨迹。名字空间只是一个字典,它的键字就是变量...

    编程范 源代码公司

扫码关注云+社区

领取腾讯云代金券