Python数据预处理技术与实践
上QQ阅读APP看书,第一时间看更新

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 饼状图