一、Pandas库概述
1.1 Pandas库简介
Pandas 是一个开源的 Python 数据分析支持库,它是Python编程语言的一个第三方库,用于数据清洗和分析。Pandas提供了快速、灵活和表达力强的数据结构,旨在简单、直观地处理关系型、标记型数据。并且它是基于NumPy开发,可以与其它第三方科学计算支持库完美集成。
Pandas专门设计用于处理以下类型的数据:
- 与 SQL 或 Excel 表类似的,含异构列的表格数据;
- 有序和无序(非固定频率)的时间序列数据;
- 带行列标签的矩阵数据,包括同构或异构型数据;
- 任意其它形式的观测、统计数据集, 数据转入 Pandas 数据结构时不必事先标记。
Pandas的主要数据结构是 Series(一维数据)与 DataFrame(二维数据):
名称 | 维数 | 描述 |
---|---|---|
Series | 1维 | 带标签(索引)的一维(一般数据类型相同)数组 |
DataFrame | 2维 | 带标签(索引)的,大小可变的,二维异构表格 |
Pandas 数据结构就像是低维数据的容器。可以这样理解,DataFrame 是 Series 的容器,Series 则是标量的容器。因此,可以在容器中以字典的形式插入或删除对象。
1.2 Pandas能做什么
- 数据读取:从CSV、Excel、SQL等多种数据源读取数据。
- 数据清洗:处理缺失值、去除重复数据、数据类型转换等。
- 数据探索:提供描述性统计、数据过滤、分组等操作。
- 数据可视化:与Matplotlib、Seaborn等库结合,绘制各种图表。
- 时间序列分析:提供了丰富的时间序列功能,包括时间戳、频率转换、移动窗口统计等。
简而言之,Pandas是一个多用途的数据分析工具,它几乎可以处理任何与数据相关的任务,从数据的导入、处理到分析和可视化。
二、Pandas库核心数据结构 之 Series
2.1 Series 数据结构概述
Series 是 Pandas 中最基本的数据结构,它是是一种类似于一维数组的对象,由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成:
- values:一组同构(数据类型相同)数组(ndarray类型),数组元素类型可以是任何数据类型(整数、字符串、浮点数、Python对象等)。
- index:相关的数据索引标签。每个元素都有一个索引标签,这使得 Series 非常适合用于表示具有明确标签的数据。
Series的特点:
- 一维数组:Series是一维的,这意味着它只有一个轴(或维度),类似于 Python 中的列表。
- 索引: 每个 Series 都有一个索引,索引可以是整数、字符串、日期等类型。如果不指定索引,Pandas 将默认创建一个从 0 开始的连续整数索引。
- 数据类型: Series 可以容纳不同数据类型的元素,包括整数、浮点数、字符串、Python 对象等。
- 大小不变性:Series 的大小在创建后是不变的,但可以通过某些操作(如 append 或 delete)来改变。
- 操作:Series 支持各种操作,如数学运算、统计分析、字符串处理等。
- 缺失数据:Series 可以包含缺失数据,Pandas 使用 NaN(Not a Number)来表示缺失或无值。
2.2 创建 Series
使用 pd.Series() 构造函数创建一个 Series 对象,传递一个数据数组(可以是列表、NumPy 数组等)和一个可选的索引数组。
|
|
参数说明:
data
:Series 的数据部分,可以是 标量值、元组、列表、数组、字典等。如果不提供此参数,则创建一个空的 Series。index
:Series 的数据索引标签。如果不指定索引参数,创建的 Series 将自动添加默认从 0 开始的连续整数索引;如果指定索引参数的话,使用列表或者元组格式进行指定,其中列表或者元组的长度需要 和 data 的数据行数一致。索引列表的元素类型可以是 数值(连续整数 或 不连续整数都可以)、字符、字符串等数据类型。dtype
:指定 Series 的数据类型。可以是 NumPy 的数据类型,例如 np.int64、np.float64 等。如果不提供此参数,则根据数据自动推断数据类型。如果 data 中数据类型不同时 dtype 为 object 。name
:Series 的名称,用于标识 Series 对象。如果提供了此参数,则创建的 Series 对象将具有指定的名称。copy
:是否复制数据。默认为 False,表示不复制数据。如果设置为 True,则复制输入的数据。fastpath
:是否启用快速路径。默认为 False。启用快速路径可能会在某些情况下提高性能。
示例:
|
|
2.3 Series的索引操作
Series 有两套索引:
- 隐式索引:为固定索引,是在创建 Series 时自动创建从 0 开始的连续递增整数索引,故称为 隐式索引,Series 使用
arr.iloc[num]
(如arr.iloc[0]
——arr.iloc[len(arr)-1]
)进行隐式索引的操作; - 显示索引:为可选索引,是创建 Series 时使用 index 参数指定的索引,故称为 显示索引, index 索引参数可以是 整数、浮点数、字符、字符串、日期、等Python 值类型对象 组成的 列表、元组对象,通常索引的 数据类型全部相同,也可以不同。可以使用
arr[idx]
和arr.loc[idx]
对 Series 的显示索引进行索引操作,对应字符 或 字符串 类型的索引,也可以使arr.index_name
方式 操作索引,如 索引为字符 ‘a’ 则 可以使用arr.a
或 索引为字符串 “one” 则 可使用arr.one
操作索引。
Tips: 当 显示索引也为 从 0 开始递增的整数 时, a[i] == a.loc[i] == a.iloc[i]
单索引操作:
|
|