Python数据挖掘课程 六.Numpy、Pandas和Matplotlib包基础知识
来源:互联网 发布:java怎么制作游戏 编辑:程序博客网 时间:2024/06/05 05:41
前面几篇文章采用的案例的方法进行介绍的,这篇文章主要介绍Python常用的扩展包,同时结合数据挖掘相关知识介绍该包具体的用法,主要介绍Numpy、Pandas和Matplotlib三个包。目录:
一.Python常用扩展包
二.Numpy科学计算包
三.Pandas数据分析包
四.Matplotlib绘图包
前文推荐:
【Python数据挖掘课程】一.安装Python及爬虫入门介绍
【Python数据挖掘课程】二.Kmeans聚类数据分析及Anaconda介绍
【Python数据挖掘课程】三.Kmeans聚类代码实现、作业及优化
【Python数据挖掘课程】四.决策树DTC数据分析及鸢尾数据集分析
【Python数据挖掘课程】五.线性回归知识及预测糖尿病实例
绘图强推:http://python.jobbole.com/85106/
希望这篇文章对你有所帮助,尤其是刚刚接触数据挖掘以及大数据的同学,这些基础知识真的非常重要。如果文章中存在不足或错误的地方,还请海涵~
部分截图参考张良均的《Python数据分析与挖掘实战》,推荐大家购买阅读。
一. Python常用扩展包
参考张良均的《Python数据分析与挖掘实战》,下图展示了常见的Python扩展包。
常用的包主要包括:
1.Numpy
Python没有提供数组,列表(List)可以完成数组,但不是真正的数据,当数据量增大时,,它的速度很慢。所以Numpy扩展包提供了数组支持,同时很多高级扩展包依赖它。例如:Scipy、Matplotlib、Pandas。
2.Scipy
该包提供矩阵支持,以及矩阵相关的数值计算模块。如果说Numpy让Python有了Matlab的味道,那么Scipy就让Python真正地成为二半个Matlib。因为涉及到矩阵内容,而课程中主要使用数组,所以不再介绍。
3.Pandas
Pandas是面板数据(Panel Data)的简写。它是Python最强大的数据分析和探索工具,因金融数据分析工具而开发,支持类似SQL的数据增删改查,支持时间序列分析,灵活处理缺失数据,后面详细介绍。
4.Scikit-Learn
Scikit-Learn是一个基于python的用于数据挖掘和数据分析的简单且有效的工具,它的基本功能主要被分为六个部分:分类(Classification)、回归(Regression)、聚类(Clustering)、数据降维(Dimensionality Reduction)、模型选择(Model Selection)、数据预处理(Preprocessing),前面写的很多文章算法都是出自该扩展包。
详见官网:http://scikit-learn.org/stable/
5.Matplotlib
该包主要用于绘图和绘表,强大的数据可视化工具,做图库,语法类似MATLAB。同时,Seaborn也是数据可视化的工具包。
注意:这些包在Anaconda集成环境中已经存在,可以直接使用,最早我是通过Python2.7来编写代码的,安装过程通过pip install numpy,而且安装顺序非常讲究,容易出错,所以推荐大家使用该集成包。
二. Numpy科学计算包
NumPy(Numeric Python)系统是Python的一种开源的数值计算扩展,一个用python实现的科学计算包。它提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。
推荐学习:http://old.sebug.net/paper/books/scipydoc/numpy_intro.html
下面通过这段代码详细讲解这个包在数据分析中的常见用法:
1.一维数组处理
代码通过np.array定义了一个数组[2, 0, 1, 5, 8, 3],其中min计算最小值,max计算最大值,shape表示数组的形状,因为是一维数组,故6L(6个数字)。
最重要的一个知识点是数组的切片操作,因为在数据分析过程中,通常会对数据集进行"80%-20%"或"70%-30%"的训练集和测试集划分,通常采用的方法就是切片。
a[:-2]表示从头开始获取,"-2"表示后面两个值不取,结果:[2 0 1 5]
a[-2:]表示后往前数两个数字,获取数字至结尾,即获取最后两个值[8 3]
a[:1]表示从头开始获取,获取1个数字,即[2]
2.二维数组处理
注意的是定义二维数组括号不要弄错,正确的应该是:[[1,2,3],[4,5,6]]
同时计算机的存储下标都是从0开始计算的。
代码如下:
代码输出结果如下所示:
需要注意:(1)获取二维数组中的某行,如第2行数据[4,5,6,7],采用方法是:c[1][:];
(2)获取二维数组中的某列,如第2列数据[[3] [6] [9]],c[:,np.newaxis, 2]。因为通常在数据可视化中采用获取某列数据作为x或y坐标,同时多维数据也可以采用PCA降低成两维数据,再进行显示。
最后希望读者自己去阅读该段代码。
三. Pandas数据分析包
Pandas是面板数据(Panel Data)的简写。它是Python最强大的数据分析和探索工具,因金融数据分析工具而开发,支持类似SQL的数据增删改查,支持时间序列分析,灵活处理缺失数据。
注意:首先声明改包功能非常强大,我只是学习了它的非常小的一部分,后面随着学习深入会写更多它的用法,同时建议读者自行学习,不喜勿喷。
约定俗成的导入惯例:
from pandas import Series, DataFrame
import pandas as pd
1.常见用法:读写文件
这里读文件最常用的是两种方法:
下面通过一个具体的案例来讲解该包,这里读取的数据是张良均的《Python数据分析与挖掘实战》的第六章的电力用户数据集,missing_data.xls文件。内容如下,共3列数据,分别是用户A、用户B、用户C,共21行,对应21天的用电量,其中包含缺失值。
部分Excel文件数据截图如下所示:
具体代码如下所示:
输出结果如下所示:
其中data.describe()输出数据的基本信息统计,其方法参考前面的图,包括count计数、std、max等函数。同时因为Excel表格中存在空值,故Python显示为NaN(Not a Number)表示空。
2.Series
Series是一维标记数组,可以存储任意数据类型,如整型、字符串、浮点型和Python对象等,轴标一般指索引。
Series、Numpy中的一维array 、Python基本数据结构List区别:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
3.DataFrame
DataFrame是二维标记数据结构,列可以是不同的数据类型。它是最常用的pandas对象,像Series一样可以接收多种输入:lists、dicts、series和DataFrame等。初始化对象时,除了数据还可以传index和columns这两个参数。
注意:
(1) 在pandas中用函数 isnull 和 notnull 来检测数据丢失:pd.isnull(a)、pd.notnull(b)。
Series也提供了这些函数的实例方法:a.isnull()。
(2) Pandas提供了大量的方法能够轻松的对Series,DataFrame和Panel对象进行各种符合各种逻辑关系的合并操作。如:Concat、Merge (类似于SQL类型的合并)、Append (将一行连接到一个DataFrame上)。
(3) DataFrame中常常会出现重复行,DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行;还有一个drop_duplicated方法,它返回一个移除了重复行的DataFrame。
总之,Pandas是非常强大的一个数据分析包,很多功能都需要我自己去慢慢摸索。
四. Matplotlib画图包
Matplotlib是一个Python的图形框架,类似于MATLAB和R语言。它是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
补充两张图,原自《Python数据分析与挖掘实战》,对大家绘图很有帮助。
最常用的画图函数是plot,同时常用的设置样式方法见下图。
这里主要使用前面第三部分Pandas读取的电力数据绘制图形,主要是柱状图和饼图。
1.绘制柱状图
输出如下所示:
2.绘制饼图
代码部分详解,引用前面自己写的第三篇文章:
matplotlib.pyplot是用来画图的方法,matplotlib是可视化包。
import matplotlib.pyplot as plt
绘制散点图(scatter),横轴为x,获取的第1列数据;纵轴为y,获取的第2列数据;c=y_pred对聚类的预测结果画出散点图,marker='o'说明用点表示图形。
plt.scatter(x, y, c=y_pred, marker='o')
表示图形的标题为Kmeans-heightweight Data。
plt.title("Kmeans-Basketball Data")
表示图形x轴的标题。
plt.xlabel("assists_per_minute")
表示图形y轴的标题。
plt.ylabel("points_per_minute")
设置右上角图例。
plt.legend(["Rank"])
表示显示图形。
plt.show()
最后希望文章对你有所帮助,上课内容还需要继续探索,但enjoy myself~
同时周末监考两天回来,确实挺累的,事情堆了很多,浪费15个小时,发现这份工作,赚点外块真不容易啊!甚至比程序猿累多了。
当老师难,当好老师更难,当贵州的好老师难上难。希望还能坚持自己的梦想,做个财大信院的扫地僧吧,但每每和学生一起还是非常享受的。同时,这次熬夜写文到深夜4点半,旁边也坐着一个自己的学生,在调试Struts、Json代码,所以说,还真不是这边的学生差,你懂得,但也并不是没有好老师,只是相对较少。fighting~
最后补充学生冯Y的一首朋友圈感言:
把握现在,活在当下。
不以物喜,不以己悲。
闲看花开花落,
静观云卷云舒。
顺其自然,随遇而安。
我也希望自己有朝一日能达到这种心境~
对这份工作、事业、校园、办公还是得看淡点。
(By:Eastmount 2016-11-14 中午4点半 http://blog.csdn.net/eastmount/ )
- 【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识
- Python数据挖掘课程 六.Numpy、Pandas和Matplotlib包基础知识
- Numpy、Pandas和Matplotlib包基础知识
- Numpy、Pandas和Matplotlib包基础知识
- 【python数据挖掘课程】十.Pandas、Matplotlib、PCA绘图实用代码补充
- 【python数据挖掘课程】十一.Pandas、Matplotlib结合SQL语句可视化分析
- 【python数据挖掘课程】十二.Pandas、Matplotlib结合SQL语句对比图分析
- python数据挖掘课程 十.Pandas、Matplotlib、PCA绘图实用代码补充
- python数据挖掘课程 十一.Pandas、Matplotlib结合SQL语句可视化分析
- python数据挖掘课程 十二.Pandas、Matplotlib结合SQL语句对比图分析
- Python数据分析模块安装---Numpy、Pandas、Matplotlib
- python数据分析学习笔记-Numpy-Matplotlib-Pandas
- Python数据科学Jupyter-Matplotlib-Numpy-Keras-Pandas速查
- numpy,scipy,pandas 和 matplotlib
- python数据挖掘包Pandas基本操作
- python数据挖掘包matplotlib绘图
- Python数据挖掘学习02--numpy和pandas模块基本使用
- python数据挖掘包numpy基本操作
- 4对象的组合
- Eclipse Amaterasuml安装
- 打基础系列-----java泛型
- Centos7配置NFS服务
- 114:Sqrt(x)
- Python数据挖掘课程 六.Numpy、Pandas和Matplotlib包基础知识
- 顺序容器(上)
- 第一课hello world的启发
- hdoj1059 Dividing 多重背包
- spfa + 静态链表 模板
- 1085: [SCOI2005]骑士精神
- UVA 10976
- 一个简单的每日访客IP统计
- T_SQL 将一列多行数据合并为一行