2.3 Pandas
Pandas也是一个常用的Python科学计算工具包,被广泛用于包括金融、经济、统计、分析等学术和商业领域的数据分析、数据清洗和准备等工作,是数据预处理的核心模块。使用Pandas可以完成数据处理和分析的5个典型步骤即数据加载、数据准备、操作、模型和分析。本节主要介绍Pandas的安装和特点以及Pandas的数据结构、数据统计、处理缺失值、稀疏数据、文件操作和可视化技术。
Pandas的官网:https://pandas.pydata.org/,如图2-13所示。
图2-13 Pandas官网
(源代码见:Chapter2/PandasDome.py)
2.3.1 Pandas的安装和特点
1. Pandas的安装
可以通过以下3种方法安装Pandas:
方法一 Anaconda已经集成了Pandas,读者在命令提示符环境下查看:conda list。
方法二 可以通过pip自动安装,执行如下命令:pip install pandas。
方法三 在GitHub上下载Pandas源码(网址:https://github.com/pandas-dev/pandas),然后在源码根目录下执行如下命令:python setup.py install。
安装完成后,检测是否成功。首先启动Sublime,然后按F6键进入Python环境,输入import pandas,得到以下状态即安装成功。如图2-14所示。
图2-14 验证Pandas是否安装成功
2. Pandas的特点
Pandas快速高效、对缺失值自动处理及支持异构数据类型等诸多特点深受Python爱好者的喜欢,其主要特点包括:
- 快速高效的DataFrame对象,具有默认和自定义的索引。
- 将数据从不同文件格式加载到内存中的数据对象工具。
- 丢失数据的数据对齐和综合处理。
- 重组和摆动日期集。
- 基于标签的切片、索引和大数据集的子集。
- 可以删除或插入来自数据结构的列。
- 按数据分组进行聚合和转换。
- 高性能合并和数据加入。
- 时间序列功能。
- 具有异构类型列的表格数据,例如SQL表格或Excel数据。
2.3.2 Pandas的数据结构
Pandas可处理以下3种数据结构:
1. 系列(Series)
系列是具有均匀数据的一维数组结构。表2-6中的系列是整数1,3,5,6…的集合。
表2-6 一维数组
代码实现:
代码说明:
代码中使用了pandas.Series方法处理一位数组,该方法共有4个参数,即pandas.Series(data, index, dtype, copy),各参数的说明如下:
- data:传入的数据参数,数据类型支持数组、列表等。
- index:索引,与数据的长度相同。
- dtype:用于表示数据类型,省略是默认为浮点数据类型。
- copy:复制一份数据,默认为false。
运行结果:
100 a 101 b 102 c 103 d dtype: object
2. 数据帧(DataFrame)
数据帧是一个具有异构数据的二维数组,如表2-7所示。
表2-7 二维数组
代码实现:
代码说明:
代码中使用了pandas.DataFrame方法处理二维数据,该方法共有5个参数,即pandas.DataFrame( data, index, columns, dtype, copy),各参数说明如下:
- data:传入的数据参数,数据类型支持数组、列表、字典等。
- index:索引,与数据的长度相同。
- columns:列参数。
- dtype:用于表示数据类型,省略是默认为浮点型。
- copy:复制数据,默认为false(不复制)。
运行结果:
3. 面板(Panel)
面板是具有异构数据的三维数据结构,在图形表示中很难表示出面板,但是一个面板可以说明为DataFrame的容器。
代码实现:
代码说明:
代码中使用了pandas.Panel方法,该方法表示创建一个面板。该方法共有6个参数,即pandas.Panel (data, items, majoraxis, minoraxis, dtype, copy),各参数的含义如下:
- data:传入的数据参数,数据类型支持数组、列表、字典等。
- items:axis 0,每个项目对应于内部包含的数据帧(DataFrame)。
- major_axis:axis 1,表示每个数据帧(DataFrame)的行。
- minor_axis:axis 2,表示每个数据帧(DataFrame)的列。
- dtype:用于表示数据类型,省略是默认为浮点数据类型。
- copy:复制数据,默认为false(不复制)。
运行结果:
2.3.3 Pandas的数据统计
1. 利用DataFrame创建二维数组
代码实现:
运行结果:
2. 数据统计
代码实现:
运行结果:
Pandas的其他统计方法,如表2-8所示。
表2-8 Pandas的其他统计方法
2.3.4 Pandas处理丢失值
机器学习和数据挖掘等领域由于数据缺失导致的数据质量差,在模型预测的准确性上面临着严重的问题。为了提高模型效果可以使用Pandas对数据缺失值进行处理。
1. 构造一个含有缺失值的数据集
使用重构索引(Reindexing),创建有一个缺少值的DataFrame。代码实现:
运行结果:
在输出结果中,NaN表示不是数字的值。
2. 检查缺失值
Pandas提供了isnull()和notnull()函数,它们也是Series和DataFrame对象的方法,可用于检查缺失值,代码如下:
运行结果:
3. 清理/填充缺少数据
(1)用标量值0替换缺失值,其中g行表示缺少的数据。
运行结果:
(2)用缺失值的前一行替换缺失值,例如a,b行,其中b为缺少数据。
实现代码如下:
运行结果:
(3)剔除缺失值。
代码说明:
- axis=0:表示作用在行上,如果axis=1,则表示作用在列上。
运行结果:
(4)设置任意值替换缺失值,如one列的2000被60替换,two列的1000被10替换。
代码如下:
运行结果:
(5)忽略缺失值。
运行结果:
2.3.5 Pandas处理稀疏数据
当任何匹配特定值的数据(NaN/缺失值或任何值)被省略时,稀疏对象被“压缩”。
稀疏数据处理
运行结果:
2.3.6 Pandas的文件操作
Pandas库提供了一系列的read_函数来读取各种格式的文件,这些read_函数如下所示:
下面通过示例来说明部分函数的使用。
1. 操作Excel文件
代码说明:
本例表示使用Pandas的read_excel方法来处理Excel格式文件并打印输出Excel文件的内容。
运行结果:
2. 操作CSV文件
代码说明:
本例使用Pandas的read_csv方法来处理CSV格式文件并打印出文件的内容。
运行结果:
3. 操作JSON文件
代码说明:
本例首先将列表数据转化为JSON格式数据,然后调用Pandas的read_json方法处理JSON格式文件并打印输出内容。
运行结果:
2.3.7 Pandas可视化
1. 绘制折线图
运行结果如图2-15所示。
图2-15 折线图
2. 绘制条形图
运行结果如图2-16所示。
图2-16 条形图
3. 绘制堆积条形图
运行结果如图2-17所示。
图2-17 堆积条形图
4. 绘制水平条形图
运行结果如图2-18所示。
图2-18 水平条形图
5. 绘制直方图
运行结果如图2-19所示。
图2-19 直方图
6. 绘制多个直方图
运行结果如图2-20所示。
图2-20 多个直方图
7. 绘制箱形图
运行结果如图2-21所示。
图2-21 箱形图
8. 绘制区域块图形
运行结果如图2-22所示。
图2-22 区域块图形
9. 绘制散点图形
运行结果如图2-23所示。
图2-23 散点图形
10. 绘制饼状图
运行结果如图2-24所示。
图2-24 饼状图