由于Python拥有成千上万且功能强大的开源库,因此备受开发人员的欢迎。据统计,目前通过PyPl可以导入超过23.5万个库。本节介绍一些Python常用的数据分析库,包括NumPy、Pandas、Matplotlib和Sklearn,掌握这些工具的使用是数据分析人员的必备技能。
NumPy的前身是由Jim Hugunin与其他协作者共同开发的Numeric,在2005年,Travis OliphantNumeric包中结合Numarray包的特色,并添加其他扩展开发了NumPy。
NumPy是Python用于科学计算的基础包,它提供了多维数组对象、各种派生对象(如矩阵),以及用于数组快速操作的各种API,包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅里叶变换、基本线性代数、基本统计运算和随机模拟等。
下面我们从生成1~9的9个数字的一维数组开始介绍。
本例我们在NumPy中,通过np.array的方式创建一个数组,并赋给变量data,数值的顺序没有排序,而且6和9有重复值。示例代码如下:
data = np.array([8,6,9,1,3,5,4,2,7,9,6,9])
NumPy一个重要的特点就是其N维数组对象,也就是ndarray,该对象是一个快速而灵活的通用同构数据多维容器,其中的所有元素必须是相同类型的。例如,我们这里重新定义数值data,将其修改为3 × 4的数组,示例代码和输出如下:
这里输出的数组元素都是整型数据。
Pandas主要用于数据挖掘和数据分析,同时也提供数据清洗功能。在Pandas中有两类非常重要的数据结构,即序列(Series)和数据框(DataFrame)。Series类似于NumPy中的一维数组对象,由一组数据以及一组与之相关的数据标签(索引)组成,可以通过索引访问Series中某行的数据,也可以通过标签来访问某列的数据。
以下我们创建一个Series。
在创建Series之前,首先需要导入相关的包,代码如下:
import pandas as pd from pandas import Series
下面创建序列return1,它包含企业2020年第三季度在东北、华东、华中、华南、西南、西北6个地区的商品退单量,示例代码和输出如下:
以下我们来创建DataFrame。
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引,又有列索引,它可以被看成是由Series组成的字典(共用同一个索引)。
在创建DataFrame之前,首先需要导入相关的包,代码如下:
import pandas as pd from pandas import DataFrame
如果通过字典创建DataFrame,它会自动加上索引,默认是从0开始的,例如创建企业2020年4个季度在6个地区的商品退单量的DataFrame,即return2,示例代码和输出如下:
Python绘图包众多,各有其特点,但是Matplotlib是最基础的可视化包,如果需要学习Python数据可视化,那么Matplotlib是非学不可的。Matplotlib的中文学习资料比较丰富,其中最好的学习资料还是其帮助文档,地址为http://www.Matplotlib.org.cn/。
安装Anaconda后,会默认安装Matplotlib库,如果要单独安装,可以通过pip命令实现,命令为pip install matplotlib,前提是需要安装pip包。
下面演示一个比较简单的Matplotlib数据可视化的例子。例如需要按班级和性别统计某次考试的成绩,通过条形图对结果进行可视化分析,具体代码如下:
运行上面的代码,可以绘制出学生考试成绩的条形图,如图1-18所示。其中下方是男生的考试平均成绩,上方是女生的考试平均成绩。从图形中可以看出每个班级的考试成绩情况。
图1-18 条形图
Sklearn是Python重要的机器学习包,建立在NumPy、SciPy和Matplotlib之上,其中封装了大量的机器学习算法,如分类、回归、降维和聚类。Sklearn拥有完善的文档,使得它具有上手容易的优势,并且内置了大量的数据集,节省了获取和整理数据集的时间。
截至2020年12月,Sklearn的新版本是0.23.2,安装命令如下:
pip install scikit-learn
Sklearn的算法可以分为监督式机器学习和无监督式机器学习,其中主要的监督式机器学习算法如表1-1所示。
表1-1 监督式机器学习算法
Sklearn中的无监督式机器学习算法如表1-2所示。
表1-2 无监督式机器学习算法