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

在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是机器学习处理过程中经常使用的工具,有所理解是有必要的。文章最后顺带演示了词云图的生成。


机器学习(4):数据分析的工具-pandas的使用的更多相关文章

  1. Python机器学习笔记 使用scikit-learn工具进行PCA降维

    之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...

  2. python数据分析的工具环境

    python做数据分析的优势: 拥有大量的库为数据分析和处理提供了完整的工具链 随着库还在不断的增加的同时, 算法的实现也更加的创新.Numpy, matplotlib, scipy,scikit-l ...

  3. Python数据处理常用工具(pandas)

    目录 数据清洗的常用工具--Pandas 数据清洗的常用工具 Pandas常用数据结构series和方法 Pandas常用数据结构dataframe和方法 常用方法 数据清洗的常用工具--Pandas ...

  4. Python数据分析入门之pandas基础总结

    Pandas--"大熊猫"基础 Series Series: pandas的长枪(数据表中的一列或一行,观测向量,一维数组...) Series1 = pd.Series(np.r ...

  5. GyoiThon:基于机器学习的渗透测试工具

    简介 GyoiThon是一款基于机器学习的渗透测试工具. GyoiThon根据学习数据识别安装在Web服务器上的软件(操作系统,中间件,框架,CMS等).之后,GyoiThon为已识别的软件执行有效的 ...

  6. 数据分析04 /基于pandas的DateFrame进行股票分析、双均线策略制定

    数据分析04 /基于pandas的DateFrame进行股票分析.双均线策略制定 目录 数据分析04 /基于pandas的DateFrame进行股票分析.双均线策略制定 需求1:对茅台股票分析 需求2 ...

  7. 数据分析03 /基于pandas的数据清洗、级联、合并

    数据分析03 /基于pandas的数据清洗.级联.合并 目录 数据分析03 /基于pandas的数据清洗.级联.合并 1. 处理丢失的数据 2. pandas处理空值操作 3. 数据清洗案例 4. 处 ...

  8. python数据分析工具——Pandas、StatsModels、Scikit-Learn

    Pandas Pandas是 Python下最强大的数据分析和探索工具.它包含高级的数据结构和精巧的工具,使得在 Python中处理数据非常快速和简单. Pandas构建在 Numpy之上,它使得以 ...

  9. 数据分析工具Pandas

        参考学习资料:http://pandas.pydata.org 1.什么是Pandas? Pandas的名称来自于面板数据(panel data)和Python数据分析(data analys ...

随机推荐

  1. linux下编译openjdk8

    一.准备工作                                                           1.0 工作环境 Ubuntu 12.04,32位机 1.1.安装JD ...

  2. Python 信号处理 signal 模块

    Table of Contents 1. signal模块简介 1.1. signal简单示例 1.2. signal说明 1.2.1. 基本的信号名 1.2.2. 常用信号处理函数 2. signa ...

  3. Proguard returned with error code 1. See console

    满世界的bug. 微信支付,Windows的远程桌面. Android的 , Proguard returned with error code 1. See console解决办法" 真的 ...

  4. Java开发经验

    两个类要传递参数: 1.构造方法 2.方法的参数 3.静态的变量

  5. 关于前后端日期处理 开发注意事项 jquery.tmpl()函数的使用

    1当后端将日期传到前段的时候 我们通常会需要将日期转为制定格式 除了平常我们使用的前段插件将日期转好 spring @datetimeFormat 注解 这些形式外 我们还可以在实体里通过get方法进 ...

  6. 设计模式之第13章-职责链模式(Java实现)

    设计模式之第13章-职责链模式(Java实现) “请假都那么麻烦,至于么.”“咋的了?”“这不快过年了么,所以我想早两天回去,准备一下,买买东西什么的,然后去给项目经理请假,但是他说快过年了,所以这个 ...

  7. 【Unique Paths II】cpp

    题目: Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. H ...

  8. 体验devstack安装openstack

    由于公司制度,工作环境是不能直接上网的,所以在工作时间从没有体验过devstack或者其他联网方式安装openstack. 因自己购置了一台不错的主机,因而决定尝试安装一番,经过一段为期不短的内心极度 ...

  9. outlook同步异常

    新装的系统,备份了outlook,还原后发现,outlook还在不停的同步服务端邮件,设置规则,禁止接收今天之前的邮件,但是outloock还是在同步,只是不接收而已,这样导致了莫名其妙的异常错误,o ...

  10. 【bzoj4668】冷战 并查集按秩合并+朴素LCA

    题目描述 1946 年 3 月 5 日,英国前首相温斯顿·丘吉尔在美国富尔顿发表“铁幕演说”,正式拉开了冷战序幕. 美国和苏联同为世界上的“超级大国”,为了争夺世界霸权,两国及其盟国展开了数十年的斗争 ...