机器学习(4):数据分析的工具-pandas的使用
前面几节说一些沉闷的概念,你若看了估计已经心生厌倦,我也是。所以,找到了一个理由来说一个有兴趣的话题,就是数据分析。是什么理由呢?就是,机器学习的处理过程中,数据分析是经常出现的操作。就算机器对大量样本预测了结果,那对结果进行数据分析与展示,也是经常遇到的标准作业,所以,这一次,来看看怎么做到数据分析的。
在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的使用的更多相关文章
- Python机器学习笔记 使用scikit-learn工具进行PCA降维
之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...
- python数据分析的工具环境
python做数据分析的优势: 拥有大量的库为数据分析和处理提供了完整的工具链 随着库还在不断的增加的同时, 算法的实现也更加的创新.Numpy, matplotlib, scipy,scikit-l ...
- Python数据处理常用工具(pandas)
目录 数据清洗的常用工具--Pandas 数据清洗的常用工具 Pandas常用数据结构series和方法 Pandas常用数据结构dataframe和方法 常用方法 数据清洗的常用工具--Pandas ...
- Python数据分析入门之pandas基础总结
Pandas--"大熊猫"基础 Series Series: pandas的长枪(数据表中的一列或一行,观测向量,一维数组...) Series1 = pd.Series(np.r ...
- GyoiThon:基于机器学习的渗透测试工具
简介 GyoiThon是一款基于机器学习的渗透测试工具. GyoiThon根据学习数据识别安装在Web服务器上的软件(操作系统,中间件,框架,CMS等).之后,GyoiThon为已识别的软件执行有效的 ...
- 数据分析04 /基于pandas的DateFrame进行股票分析、双均线策略制定
数据分析04 /基于pandas的DateFrame进行股票分析.双均线策略制定 目录 数据分析04 /基于pandas的DateFrame进行股票分析.双均线策略制定 需求1:对茅台股票分析 需求2 ...
- 数据分析03 /基于pandas的数据清洗、级联、合并
数据分析03 /基于pandas的数据清洗.级联.合并 目录 数据分析03 /基于pandas的数据清洗.级联.合并 1. 处理丢失的数据 2. pandas处理空值操作 3. 数据清洗案例 4. 处 ...
- python数据分析工具——Pandas、StatsModels、Scikit-Learn
Pandas Pandas是 Python下最强大的数据分析和探索工具.它包含高级的数据结构和精巧的工具,使得在 Python中处理数据非常快速和简单. Pandas构建在 Numpy之上,它使得以 ...
- 数据分析工具Pandas
参考学习资料:http://pandas.pydata.org 1.什么是Pandas? Pandas的名称来自于面板数据(panel data)和Python数据分析(data analys ...
随机推荐
- 源码级强力分析hadoop的RPC机制
分析对象: hadoop版本:hadoop 0.20.203.0 必备技术点: 1. 动态代理(参考 :http://weixiaolu.iteye.com/blog/1477774 )2. Java ...
- 菜鸟学Linux - 用户与用户组基础
/etc/passwd: 用户的信息是保存在/etc/passwd下面(早期的时候,用户的密码也是放在该文件中.后来出于安全考虑,将密码放在/etc/shadow中去): /etc/group: 用户 ...
- 2940: [Poi2000]条纹(Multi_SG)
2940: [Poi2000]条纹 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 114 Solved: 72[Submit][Status][Dis ...
- 03012_会话技术Cookie&Session
1.会话技术简介 (1)存储客户端的技术 网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识 ...
- loj2046 「CQOI2016」路由表
大傻逼trie树,更傻逼的是我这都没独立想出来,以后要少看题解,多多思考 #include <algorithm> #include <iostream> #include & ...
- Asp.net自定义控件开发任我行(4)-ViewState保存控件状态
摘要 上一篇我们实现了下拉框的效果,此章的目的主要是保存控件属性状态 内容 我们先来看一个例子,后台代码不变,我们只改UI页面的代码,先在页面上拖放两个控件,一个是我们现在要开发的这个控件,另一个是按 ...
- 在 Amazon AWS 搭建及部署网站:(二)安装、配置软件,启动网站
现在,我们已经有了一台EC2主机,具备了基本的硬件环境.下面,开始软件环境的配置. 第一步:连接服务器 后面所有的一切,都需要在SSH终端窗口操作.首先,我们需要一个SSH客户端.PuTTY是很常用的 ...
- IOS开发学习笔记034-UIScrollView-xib实现分页
通过xib实现分页功能的封装 1.首先实现xib UIView 的尺寸为300*130,因为准备的图片为600*260. scrollView属性设置如下: 2.新建一个和xib同名的类 2.1 类方 ...
- NGUI 学习总结
NGUI 学习一段时间了,这里总结一下,用于以后查看. 获取组件 在Awake函数里获取组件,然后就可在Start以及其他函数里使用 lbl = GetComponent<UILabel> ...
- Eclipse 4.6(最新版本) js文件不能F3
解决办法........我是没找到解决4.6版本的办法!不过可以换一个版本!猜想是因为 最新版本强制要求使用jdk1.8所导致的~! 换了一个4.5版本就一切Ok 换上主题一样漂亮护眼