python画二维温度云图_利用python画出词云图

本文将介绍如何利用python中相应的模块画出词云图。首先给出效果图:

8326cffc1e178a823c851d72a1a5bc89ab77e8d6.jpeg?token=ceabc09c4c618d41599cc7f7a5a42ba8&s=4394ED2A1981404F4476EE7C02000077

其中词云图中的词汇是对手机短信中的垃圾短信的统计,字体越大表示在垃圾短信中出现的频次越高。下面给出具体的步骤。

读取“垃圾短信”的csv数据

首先给出代码:

810a19d8bc3eb1357ab5bd26f1b867d7fc1f4463.jpeg?token=95125adce97ea35ac55e96f0f828db69&s=34966C32C524492254EDBDD10000C0B3

其中pandas是一个python常用的数据可视化模块。pd.read_csv函数是用来读取csv文件,data.columns是修改文件中的列的名称。

显示的结果为:

cdbf6c81800a19d8e8f080c56b5c4d8fa41e46ad.jpeg?token=31ba4479d30bada7388c590154266052&s=5AA834620BBCC1EB0ED491CF0000E0A1

查看数据

我们对读取的80000条短信中,正常短信与垃圾短信进行统计,给出代码:

1b4c510fd9f9d72a14a090d0838ce730369bbb66.jpeg?token=38dd9a6091cafbe1867a1694131f879d&s=6496E833C3745C23566DA8D90000D0B3

画出的效果图为:

4034970a304e251fdfc2961bf02006137e3e5342.jpeg?token=ae6e4db7126655698e253f01b5e11b08&s=3902147398375684489331150200C0E8

可以看出数据库中有1/10的垃圾短信。代码中,plt.figure函数控制画图的大小,rcParams函数用来修改字体(要不然不支持中文,毕竟这不是国人开发的)。

数据清洗

首先我们选出1000条正常数据和垃圾数据(因为数据比较多,为了简化运行,我们选出2000条短信),代码为:

0bd162d9f2d3572cbdb7fae2d3b5ac2363d0c3e6.jpeg?token=25246578d6c205ed2e78cd7f99a67895

其中,sample函数是随机的挑选样本。运行结果:

960a304e251f95ca1fb864eb91b1b03a6609524d.jpeg?token=5c63c6204cdda28c36fc753b294a3829&s=31B06C32190A604F52DCD5CA0000F0B1

然后我们对数据进行清洗,为什么要进行数据处理?因为我们后期用jieba库分词,而中文分词必须要求一个单词的两个汉字连在一起,不能有空格,不能有特殊符号。所以我们将数据的非汉字字符剔除掉,代码为:

7a899e510fb30f24866424aa9f331e47af4b03cc.jpeg?token=caa4690dbf3da3149c8b44650b30edf8&s=2596E8339FC45C411AD4D5DE0000C0B3

其中引入两个新的库,一个是re正则表达式的库(本文不介绍正则表达式),还有一个是结巴分词库。apply函数就是对元素中每一个元素都进行后续处理,传入的是要处理的函数。

本文传入的是匿名函数。re.sub是正则表达式中的函数,用于替换语句中的词,其中参数pattern表示的是正则表达式,repl是替换成什么字符,string是输入的参数。

输出为:

ae51f3deb48f8c5476d87a76628fe2f1e1fe7f8f.jpeg?token=0e59f7b255cee2351644edc1d6fa9458&s=1AA87C220BBFC1EF1E55B0CF0000C0A1

画图云

最后一步就是画出图云。首先给出代码:

b8014a90f603738d49fc39d2e4bd7f55f919ec33.jpeg?token=d7566029feee5c62d9162aaf079c947f&s=049EEC33CD666D20526D81DB000080B2

其中我们需要导入一个很重要的库,就是wordcloud,利用该模块,我们可以实现图云的绘画。

其中WordCloud是一个函数,用于生成词云,其中参数font_path是词云中字体的路径(在windows操作系统中字体路径一般为"C:\Windows\Fonts\***.ttf"),mask是传入绘画的图像,比如本文绘画的图像为:

86d6277f9e2f07084eb4944db182779da801f271.jpeg?token=b1c42e3835be806bac453737670beeb5&s=13DFA872C2845AE47B92BAAE02004029

background_color是设置背景颜色,fit_words函数用于传入词云的数据。绘画结果为:

eac4b74543a98226e11eb401d22476054b90eb60.jpeg?token=be90b9922b95221334245a1699724b91&s=53B52F6613BFC5CC7A63EE6C0200F07C

疑点分析

plt.imshow(wc)使用plt模块画图,我们给出imshow函数的api文档:

6609c93d70cf3bc7962568aa89a675a5cc112afd.jpeg?token=c1ecec77e0a64bb3007b2b2380144ebe&s=000A7C32158A45494E615CDB0000C0B2

传入的应该是array-like或者PIL image格式,但是我们传入的是wc(wordcloud类型的数据,而wordcloud类型是属于Wordcloud模块),为什么可以实现画图效果呢?

只有一种解释,Wordcloud模块中的wordcloud类型数据是属于PIL image类型的数据(笔者自己这么认为的,没有看底层,欢迎指出错误)

总结

本文利用python画出垃圾短信的词云图。希望对你的学习有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值