前面几节说一些沉闷的概念, 你若看了估计已经心生厌倦, 我也是. 所以, 找到了一个理由来说一个有兴趣的话题, 就是数据分析. 是什么理由呢? 就是, 机器学习的处理过程中, 数据分析是经常出现的操作. 就算机器对大量样本预测了结果, 那对结果进行数据分析与展示, 也是经常遇到的标准作业, 所以, 这一次, 来看看怎么做到数据分析的.
在 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 的详细理解, 可以参考这个文档:
你也可以边用边学, 谁用谁研究.
至此, 主要内容已经介绍完毕, 以下是一个好玩的词云图分析, 只是附带内容.
(三)词云图
小程拿到的好友信息中, 包括了 "签名" 这项内容, 一般来说, 可以弄个词云图来看看签名的重点信息.
安装模块 jieba, 这是一个支持中文的分词器:
pip install jieba
安装模块 PIL, 这是一个图像处理库:
pip install Pillow
安装 wordcloud, 这是一个词云图库:
pip install wordcloud
实现微信好友的签名的词云图, 大概的思路是这样的: 使用 pandas 从基础数据中读取到一个数据表, 从数据表中拿到签名的列并把这一列的内容转换成 list, 对签名 list 的每个签名逐一处理, 过滤掉一些关键词, 再使用正则表达式把一些特殊字符去除掉, 最后把处理后的签名用空格拼接在一起, 并调用分词器进行分词处理, 得到一个分词 list. 创建词云图对象, 设置背景颜色, 字体等, 并传递分词 list, 最终显示并保存词云图对象生成的图像.
实现的代码, 请参考下图:
执行这段代码, 可以看到这样的效果:
由图可见, 小程的好友很有个性(喜欢说 "自己"), 小程的好友跟 "程序" 分不开, 小程的好友已经开始聊人生与合作了(估计年纪比较大了).
在生成词云图时, 设置了背景图(back.jpg), 小程这里使用的是这张图:
设置不同的背景图跟颜色等属性, 会有不同的效果, 你可以尝试一下, 这里不细说了.
总结一下, 本文以微信好友的信息为数据基础, 使用 pandas 进行了数据分析. pandas 是机器学习处理过程中经常使用的工具, 有所理解是有必要的. 文章最后顺带演示了词云图的生成.
来源: https://www.cnblogs.com/freeself/p/10932370.html