前面几篇文章采用的案例的方法进行介绍的,这篇文章主要介绍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()