前面几节说一些沉闷的概念,你若看了估计已经心生厌倦,我也是。所以,找到了一个理由来说一个有兴趣的话题,就是数据分析。是什么理由呢?就是,机器学习的处理过程中,数据分析是经常出现的操作。就算机器对大量样本预测了结果,那对结果进行数据分析与展示,也是经常遇到的标准作业,所以,这一次,来看看怎么做到数据分析的。

在python提供的模块中,pandas,是一个实用的数据分析的工具。说到pandas,我就想起“机动部队”里面的pandas(熊猫),一道绿光。

本文结合微信好友的数据,介绍如何使用pandas进行数据分析。

数据分析之前,先得有数据,这里使用小程的微信好友的数据进行分析。

(一)获取微信好友的数据

为了获取微信好友的数据,需要使用一个工具,叫itchat。itchat是网页微信接口的封装,在工具篇,小程介绍过如何给微信群自动地发送(批量)消息,用的就是itchat。

这里直接介绍使用itchat获取微信好友的信息。

试验一下,先算一下小程有多少异性朋友吧,可以这样写代码:

执行这段代码,可以看到这样的输出:

为了后续的数据分析,接下来,小程提取更具体的好友数据,并保存到文件,这里面用到了pandas。

如果你没有安装pandas,那可以这样安装(假设你是mac系统):

pip install pandas

以下是获取好友数据的代码:

执行这段代码,在本地生成了一个文件:friends_info.csv,csv文件一般是纯文本,用来保存记录的文件(一般所有记录都有相同的字段)。

用excel打开这个csv文件,可以看到这样的信息(如果你发现excel打开会乱码,那可以先用word并选择用utf8来打开,然后再保存,之后再用excel打开):

这个csv文件的内容,就是后续数据分析的基础。

(二)分析数据

有了基础数据之后,就可以使用pandas进行分析,并用matplotlib进行绘图。matplotlib是绘图的实用工具,小程另找机会详细介绍,你可以先不管这部分内容,或者先简单了解,因为代码截图中有相应的解释。

这里演示对微信好友的性别与地区进行数据分析。

(1)引入pandas与matplotlib

引入pandas与matplotlib的代码,以及代码的执行效果是这样的:

(2)分析性别

这里根据性别种类的个数,绘制条形图。

先来看分析性别与绘制的代码,截图中的解释是重点内容:

执行这段代码,可以看到这样的输出与显示:

由展示图可见,小程的朋友以男性居多。

(3)分析地区

实现的思路跟性别分析类似,代码如下:

执行的效果如下:

由展示图可见,小程的朋友以广州跟深圳为主,小程的朋友圈很窄。

以上介绍了怎么分析性别与地区的分布数据,其中pandas的使用是本文的重点。

以上的代码中,用到了pandas的DataFrame跟Series类型,也用到了Series的统计函数max。接下来,对pandas的知识再做一个简单的介绍。

(三)pandas的知识

pandas的数据,有两个类型。一个是DataFrame,一个是Series。

DataFrame就是一个数据表(由若干列组成),而Series就是其中的一列(一个字段的所有内容)。对于DataFrame或Series变量,有各种函数,可以完成数据分析,包括:个数、最大值、最小值、平均值、中位数、众数、方差、峰值,等等。

对于pandas的详细理解,可以参考这个文档:http://pandas.pydata.org/pandas-docs/stable/index.html

你也可以边用边学,谁用谁研究。

至此,主要内容已经介绍完毕,以下是一个好玩的词云图分析,只是附带内容。


(三)词云图

小程拿到的好友信息中,包括了“签名”这项内容,一般来说,可以弄个词云图来看看签名的重点信息。

安装模块jieba,这是一个支持中文的分词器:

pip install jieba

安装模块PIL,这是一个图像处理库:

pip install Pillow

安装wordcloud,这是一个词云图库:

pip install wordcloud

实现微信好友的签名的词云图,大概的思路是这样的:使用pandas从基础数据中读取到一个数据表,从数据表中拿到签名的列并把这一列的内容转换成list,对签名list的每个签名逐一处理,过滤掉一些关键词,再使用正则表达式把一些特殊字符去除掉,最后把处理后的签名用空格拼接在一起,并调用分词器进行分词处理,得到一个分词list。创建词云图对象,设置背景颜色、字体等,并传递分词list,最终显示并保存词云图对象生成的图像。

实现的代码,请参考下图:

执行这段代码,可以看到这样的效果:

由图可见,小程的好友很有个性(喜欢说“自己”),小程的好友跟“程序”分不开,小程的好友已经开始聊人生与合作了(估计年纪比较大了)。

在生成词云图时,设置了背景图(back.jpg),小程这里使用的是这张图:

设置不同的背景图跟颜色等属性,会有不同的效果,你可以尝试一下,这里不细说了。


总结一下,本文以微信好友的信息为数据基础,使用pandas进行了数据分析。pandas是机器学习处理过程中经常使用的工具,有所理解是有必要的。文章最后顺带演示了词云图的生成。


最新文章

  1. 利用XML FOR PATH 合并分组信息
  2. 使用 PowerDesigner 和 PDMReader 逆向生成 MySQL 数据字典
  3. ORA-29275: partial multibyte character
  4. [HIHO1393]网络流三·二分图多重匹配
  5. 跟我一起云计算(1)——storm
  6. ASP.NET 4.0 取消表单危险字符验证
  7. QT笔记之实现阴影窗口
  8. Git CMD - remote: Manage set of tracked repositories
  9. Win7下Solr4.10.1和TomCat8的安装
  10. 【iOS问题】字典转模型,属性个数不匹配问题
  11. c#左右socket连接超时控制方案
  12. [CQOI2010]内部白点
  13. #!/usr/bin/python3的作用 解决vscode ImportError: No module named xxxx
  14. thinphp5框架遇到 mkdir() Permission denied 解决办法
  15. HDU 1051 Wooden Sticks 造木棍【贪心】
  16. 字典和json 的区别 和转换
  17. idea 添加 VUE 的语法支持和开发
  18. android开源项目框架大全:
  19. linux移植常见问题
  20. Spring学习笔记(一):快速入门

热门文章

  1. 实验一 查看CPU和内存,用机器指令和汇编指令编程
  2. 2019腾讯暑期实习面试(offer)前端
  3. IBOutletCollection 索引获取顺序问题
  4. 15、响应式布局和BootStrap 全局CSS样式知识点总结-part2
  5. 【Add Two Numbers】
  6. chrome浏览器设置自动切换代理上网的方法
  7. Monkey日志信息的11种Event percentages
  8. python 文件(file)操作
  9. server.xml属性概念
  10. 【转】behave行为树学习使用第一天