春节既是一个阖家团圆的节日,也是一个集中问候亲朋好友、了解近况的机会。但是也有很多人过年也不能聚在一起,所以就会会选择发短信这一方式来表达自己的祝福。其中大多人都是复制转发,让人一眼就看穿,显得自己在回复他人的时候,就觉得自己的脑子不够用了。

别怕,不要慌张,在春节来临之前,菜鸟分析的这期手把手系列,逐步带各位利用Python完成一个技术范儿十足又有点高逼格的春节祝福:用词云图定制化一个属于自己的2018年狗年祝福。

好的,一切就绪,坐稳,老司机要上路了。

一、前期准备工作

在实现代码之前,我们需要准备一些关于狗年祝福语的语料库。那究竟什么是语料库呢?语料库是我们要分析的所有文档的集合。

在日常工作中我们对文章的管理,先是一篇篇的文章不断的积累,我们存了大量的文章之后,会对文章信息进行一些归类的工作,一般体现于建立不同的文件夹来保存不同类别的文章。

同样的,我们把我们需要分析的文本文件,读取内存变量中,然后在内存变量中使用不同的数据结构,对这些文本文件进行存储,以便进行下一步的分析。这个内存变量就是语料库。语料库构建实操

这里,菜鸟分析整理了一份网络上2018年最热门狗年祝福语语料数据,我将其存放

同时还需要在实现词云功能之前,我们需要一个python的编写和运行环境,同时安装好相关的依赖包。 对于python环境,我们推荐使用ipython notebook。 在本地电脑环境,anaconda提供了非常便利的安装和部署,他会自动帮你把ipython notebook环境部署好。

词云功能所需的依赖包如下: jieba(分词包)、numpy(计算包)、 codecs(语言代码处理包)、 pandas(数据分析包)、 matplotlib(绘图功能包)、 WordCloud(词云包)。

如果在安装过程中出现问题,可以看看这篇文章:菜鸟分析:手把手|教你将Windows环境下Python中安装wordcloud的雷排除掉​zhuanlan.zhihu.com

一切就位,接下来,就是实操代码时刻了,就问你激不激动!?

二、代码演练1.导入相关包

#导入所需要的包

import jieba

import numpy as np

import codecs

import pandas

import matplotlib.pyplot as plt

from scipy.misc import imread

from wordcloud import WordCloud,ImageColorGenerator2.导入相关记录txt文件,分词

所谓分词即是将文本序列按完整的意思切分成一个一个的词儿,方便进行下一步的分析(词频统计,情感分析等)。

由于英文词与词自带空格作为分隔符,相比于中文分词要简单的多。我们在做中文分词时,需要把词语从一整段话中筛出来,困难之处在于,汉语表达博大精深,一段话往往有不同的切分方法。

所幸这不是我们需要担心的,Python中的Jieba库提供了现成的解决方案。

#分词

file=codecs.open(u"2018.txt",'r',encoding='UTF-8')

content=file.read()

file.close()

segment=[]

#jiaba调用了自己的分词算法,将切分好的文本按逗号分隔符分开

segs=jieba.cut(content)

for seg in segs:

if len(seg)>1 and seg!='\r\n':

segment.append(seg)3.统计词频:狗年祝福日常高频词

下面进入到词云的关键一步了:词频统计。我们需要统计有效词集中每个词的出现次数,统计使用groupby函数。

#统计分词结果

words_df=pandas.DataFrame({'segment':segment})#组建数据框pandas.DataFrame

words_df.head()

words_stat=words_df.groupby(by=['segment'])['segment'].agg({"计数":numpy.size})

words_stat=words_stat.reset_index()

words_stat

我们已经把语料库搭建好,对语料库进行了分词,上面的案例我们得到了一列为分词(segment),一列为分词所属文件(filePath)的数据框,接下来我们进行词频统计就非常简单了。

我们使用分组统计函数,直接在分词变量数据框后调用groupby方法,使用分词字段进行分组,然后聚合函数使用numpy.size函数,也就是对分组字段做一个计数,最后重新设定索引[‘segment’],在根据计算进行倒序排列,得到的结果就是我们词频统计的结果了。

这里要特别注意的是:降序计数调用的方法sort函数,需要新版本的pandas库,懒得升新版本不降序也不影响后续的处理,这里小伙伴们可以自己处理。4.做词云,开启狗年汪汪汪模式

最后是词云的点睛之笔了:数据图形化显示。有了强有力的工具包,这些工作都是分分钟就可以搞定。我们使用matplotlib和wordcloud工具来图形化显示上述的词频统计结果

%matplotlib

#生成一个matplot对象,传入一个字体位置的路径和背景颜色即可

wordcloud=WordCloud(font_path="C:\simhei.ttf",background_color="white",max_words=200)

#WordCloud方法接受一个字典结构的输入,我们前面整理出来的词频统计结果是数据框的形式,因此需要转换,转换的方法,

#首先把分词设置为数据框的索引,然后在调用一个to_dict()的方法,就可以转换为字典的机构

words=words_stat.set_index('segment').to_dict()

#接着调用fit_words方法来调用我们的词频

wordcloud.fit_words(words['计数'])

#绘图

plt.imshow(wordcloud)

plt.show()词云结果图5.自定义背景图做词云,让他看到你是真心祝福

我们当然还可以把图形呈现玩得再酷炫一些,自定义一个心形图像背景并将词云图形化输出。心形云词祝福

当然你也可以选择对你们更有意义的图片,生成自己独一无二的词云图,我自己在网上找了一对萌狗狗(如自己的照片,自家的狗狗等)如果你想将生成的图形以本地图片的形式生成并打开显示,可以使用下面的实现代码:

%matplotlib

cloud_mask=imread(r'C:\gou.png')

wordcloud=WordCloud(background_color="white",mask=cloud_mask,font_path="C:\simhei.ttf")

words=words_stat.set_index('segment').to_dict()

wordcloud.fit_words(words['计数'])

plt.imshow(wordcloud)

plt.show()萌狗词云祝福

以上,就是2018年狗年春节祝福语词云的实现过程,所有代码都经过调试,直接可用。 让喜欢数据的你,利用这种方式,为心爱的他/她,带来一份数据感、科技感、炫酷感、新奇感十足的春节祝福吧!

再次菜鸟分析也祝福大家旺旺狗年,幸福吉祥!觉得不错话,顺手点个赞,转发一下哦!

利用python编写祝福_手把手|教你用Python换个姿势,送狗年祝福语相关推荐

  1. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  2. python文本分类_手把手教你在Python中实现文本分类.pdf

    手把手教你在Python 中实现文本分类(附代码.数 据集) 引言 文本分类是商业问题中常见的自然语言处理任务,目标是自动将文本文件分到一个 或多个已定义好的类别中.文本分类的一些例子如下: • 分析 ...

  3. python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码

    原标题:手把手教你使用Python实战反欺诈模型|原理+代码 作者 | 萝卜 来源 | 早起Python(ID: zaoqi-python) 本文将基于不平衡数据,使用Python进行 反欺诈模型数据 ...

  4. 用python画皇冠_手把手教你用 Python 绘制酷炫的桑基图!

    原标题:手把手教你用 Python 绘制酷炫的桑基图! 作者 | 周志鹏 责编 | 郭 芮 最近,不止一次收到小伙伴的截图追问: "这个图叫什么???" "这个图真好看! ...

  5. 如何用python开发游戏_手把手教你用Python完成一个控制台小游戏-阿里云开发者社区...

    很多人想学Python程序设计或者已经了解过一点Python程序设计基础,却没办法开发出一个项目. 今天,通过演示一个简单的控制台小游戏制作,手把手教你如何用Python编写一个游戏程序,即便你是个新 ...

  6. python广州地图_手把手教你用Python+可视化工具制作漂亮地图

    作者:J哥 这次呢,我想讲讲地图可视化的内容,以前我也写过用Python的内置库绘制地图,但总感觉不够美观.如何才能在短时间内制作漂亮的可视化地图呢,我觉得Python+可视化工具是不错的选择. 以下 ...

  7. python私人定制_手把手教你学python第十五讲(魔法方法续私人“定制”)

    python无处不对象的深刻理解 前面写了这么多,我觉得有必要从一个大的层面,也就是OO来看问题的本质.只要你调用对象的语法是合乎python的习惯的,那就是可以的,我们以前从来没有像下面这么写过,对 ...

  8. python画图宽度_手把手教你用 Python 绘制酷炫的桑基图!

    作者 | 周志鹏 责编 | 郭   芮 最近,不止一次收到小伙伴的截图追问: "这个图叫什么???" "这个图真好看!!!怎么画啊?" ...... 笔者本没有 ...

  9. python 金融分析代码_手把手教你以python为工具进行量化金融分析

    量化交易是指借助现代统计学和数学的方法,利用计算机技术进行投资交易的方式. 对于从未接触过量化的人来说,想要了解量化到底是做什么的,关键掌握四部份的内容:Python基础知识.金融知识.技术指标.量化 ...

最新文章

  1. 爱情也许是最忧伤的童话
  2. 除了芯片,我们还应关注这六大核心技术!
  3. Bitcoin ABC和区块上限——通过技术实现更大的区块
  4. 五、JavaScript基础知识,学会操作元素的简单事件(一)
  5. 自己电脑访问跳板机里面的集群中的web ui界面
  6. Jmeter参数化 CSV Data Set Config界面说明
  7. CI框架取消index.php
  8. Spring Cloud 入门 之 Ribbon 篇(二)
  9. 基于bootsplash的嵌入式linux启动画面定制
  10. OFFICE2013工具栏消失后的处理
  11. php阴阳万年历转换的接口,阴历阳历转换(阴阳转换万年历查询表)
  12. 网络工程师笔记--广域网和接入网
  13. linux生成.so库,调用.so库函数
  14. 区块链技术在食品溯源中的应用
  15. 给定秒数 seconds ,把秒转化成小时、分钟和秒
  16. vue实现下拉二级联动_select下拉菜单实现二级联动效果
  17. ovn-controller转换流表
  18. 设计,让交叉口更安全
  19. C# DataGridView控件选中某行和获取单元格数据
  20. 【C++】Placement New

热门文章

  1. android 仿美团悬浮,类似美团悬浮框的效果
  2. pat题解java,1039 到底买不买 (20分) Java题解 PAT (Basic Level) Practice (中文)- 巧妙开大数组减少代码量...
  3. charles都踩过哪些坑_野路子14年 不如“缠论”1年 收益翻20倍
  4. python怎么创建变量_Python中通过函数对象创建全局变量
  5. 玩cf一直连接服务器失败怎么办啊,windows10系统玩cf提示连接服务器失败怎么办...
  6. html点赞插件,chrome空间自动点赞插件。浏览器插件简单例子。
  7. verilog异步复位jk触发器_以不变应万变的异步FIFO面试宝典(二)
  8. mysql将表的某一列全部置空NULL。
  9. oracle 11g RAC无法采用deinstall自动卸载grid,手动卸载,超级棒!
  10. 玩转 SpringBoot 2 快速整合 | Thymeleaf 篇