本文对 Pandas 做基本介绍.
1. 简介
Pandas | https://pandas.pydata.org/ |
GitHub | https://github.com/pandas-dev/pandas/ |
Pandas 基于 NumPy ,它是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. Pandas提供了大量能使我们快速便捷地处理数据的函数和方法.
1.1 历史起源
2008年,Wes McKinny一人挑起了Pandas库的设计和开发工作.
2012 年,他的同事Sien Chang加入开发,他两一起开发了Python社区最为有用的库之一 – Pandas
数据分析工作需要一个专门的库,它能够用最简单的方式提供数据处理、数据抽取和数据操作所需要的全部工具,开发Pandas正是为了满足这个需求.
Wes MicKinny选择以Numpy库作为Python库Pandas的基础进行设计,可以说,该选择对于Pandas的成功和它的迅速扩展起着非常重要的作用. 事实上,选择Numpy为基础,不仅使Pandas能和其他大多数模块相兼容,而且还能借力Numpy模块在计算方面性能高的优势.
另外一个意义深远的决定是为数据分析专门设计了两种数据结构. 实际情况是,Pandas 没有使用Pandas已有的内置数据结构,也没有使用其他库的数据结构,而是开发了两种新型的数据结构. 这两种数据结构的设计初衷是用于关系型或带标签的数据. 用它们管理与SQL关系数据库和Excel工作表具有类似特征的数据很方便.
1.2 安装 Pandas
通过 conda
安装:
# conda
conda install pandas
通过 PyPI
安装:
# or PyPI
pip install pandas
1.3 Pandas 主要特点
- 快速高效的DataFrame对象,具有默认和自定义的索引。
- 将数据从不同文件格式加载到内存中的数据对象的工具。
- 丢失数据的数据对齐和综合处理。
- 重组和摆动日期集。
- 基于标签的切片,索引和大数据集的子集。
- 可以删除或插入来自数据结构的列。
- 按数据分组进行聚合和转换。
- 高性能合并和数据加入。
- 时间序列功能。
2. 基本数据结构
Series
:一维数组,与Numpy中的一维array类似,二者与Python基本的数据结构List也很相近。Series如今能保存不同种数据类型,字符串、boolean值、数字等。Time-Series
:以时间为索引的Series。
DataFrame
:二维的表格型数据结构,很多功能与R中的data.frame类似,可以将DataFrame理解为Series的容器。Panel
:三维数组,可以理解为DataFrame的容器。
可以简单理解为,高维数据结构是低维数据结构的容器。 例如,DataFrame
是Series
的容器,Panel
是DataFrame
的容器。
维数和描述
数据结构 | 维数 | 描述 |
Series | 1 | 一维数组,大小不可变,一旦创建则长度不可变化,由同种数据类型元素组成。 |
DataFrame | 2 | 二维数组,大小可变的表格结构,它含有一组有序的列,每列可以是不同的数据类型(整型、字符串、布尔值等) |
Panel | 3 | 大小可变的三维数组 |
可变性
数据结构 | 数据 | 大小 |
Series | 数据可变 | 大小不可变 |
DataFrame | 数据可变 | 大小可变 |
Panel | 数据可变 | 大小可变 |
2.1 Series
序列 (Series) 是由相同数据类型组成的一维数组。例如,如下Series是整数:10, 23, 56,…的集合。
10 | 23 | 56 | 17 | 52 | 61 | 73 | 90 | 26 | 72 |
2.2 DataFrame
数据帧 (DataFrame) 是大小可变的数据结构,每列可以是不同的数据类型(整型、字符串、布尔值等)。
姓名 | 年龄 | 性别 | 等级 |
---|---|---|---|
Maxsu | 25 | 男 | 4.45 |
Katie | 34 | 女 | 2.78 |
Vina | 46 | 女 | 3.9 |
Lia | 女 | x女 | 4.6 |
上表表示某销售团队的绩效评级数据,数据以行和列表示,每列表示一个属性,每行代表一个人。
DataFrame 四列的数据类型分别为:字符串,整数,字符串,浮点型。
2.3 Panel
面板 (Panel) 可以由不同的数据类型构成的三维数据结构,Panel
是 DataFrame
的容器。