我们已经完成了 Python 编程基础的入门,掌握了 Python 语法、数据类型、数据结构、文件操作和异常处理等核心知识。 从今天开始,我们将正式踏入 Python 数据分析的核心领域,学习 Pandas 库!
Pandas:Python 数据分析的 “瑞士军刀”
Pandas 是 Python 数据分析领域 最核心、最基础、最强大 的库,没有之一! 它提供了高性能、易于使用的数据结构和数据分析工具,使得 Python 成为数据分析的强大武器。 Pandas 的地位,就如同 Excel 在电子表格软件中的地位,但 Pandas 的功能远比 Excel 强大和灵活。
为什么要学习 Pandas?
- 高效的数据处理能力: Pandas 提供了高性能的数据结构 Series (序列) 和 DataFrame (数据框),可以高效地处理各种类型的数据,包括数值型、字符串型、时间序列型等。 Pandas 底层使用 C 语言编写的 NumPy 库,性能非常出色,处理大规模数据也游刃有余。
- 强大的数据清洗和预处理功能: Pandas 提供了丰富的数据清洗和预处理工具,例如处理缺失值、重复值、异常值、数据转换、数据合并、数据分组等,让你轻松应对各种数据质量问题,为后续的数据分析打下坚实的基础。
- 灵活的数据分析和探索功能: Pandas 提供了强大的数据分析和探索功能,例如数据筛选、排序、统计计算、分组聚合、透视表、时间序列分析等,让你能够从不同维度分析和挖掘数据,发现数据中的规律和 insights。
- 便捷的数据导入导出功能: Pandas 可以轻松地从各种数据源 (例如 CSV 文件、Excel 文件、文本文件、SQL 数据库、JSON 文件、HTML 网页等) 导入数据,并将数据导出到各种格式的文件,实现数据的高效流通。
- 与 Python 生态系统无缝集成: Pandas 与 Python 的其他数据科学库 (例如 NumPy, Matplotlib, Seaborn, Scikit-learn 等) 无缝集成,可以方便地进行数据分析、可视化和机器学习,构建完整的数据科学工作流。
- 简单易学,上手快速: Pandas 的 API 设计简洁直观,易于学习和使用,即使是零基础的初学者,也能快速上手,并用 Pandas 解决实际的数据分析问题。
Pandas 核心数据结构:Series 和 DataFrame
Pandas 最核心的数据结构就是 Series (序列) 和 DataFrame (数据框)。 理解和掌握 Series 和 DataFrame 是学习 Pandas 的关键,也是进行数据分析的基础。
- Series (序列): 类似于 一维数组 或 带标签的列表,由 索引 (Index) 和 值 (Values) 两部分组成。 Series 可以用来表示 一列数据,例如 Excel 表格中的一列、数据库表中的一列、时间序列数据等。
- DataFrame (数据框): 类似于 二维表格 或 带标签的电子表格,由 行索引 (Index)、列索引 (Columns) 和 数据 (Values) 三部分组成。 DataFrame 可以用来表示 多行多列的表格数据,例如 Excel 表格、CSV 文件、数据库表等。 DataFrame 是 Pandas 最核心、最常用的数据结构,也是数据分析中最常用的数据组织形式。
本篇博客将重点讲解 Pandas 的核心数据结构 Series 和 DataFrame,让你掌握 Pandas 数据分析的基石,为后续学习 Pandas 的数据处理和分析功能做好充分准备。
📊 一、Pandas Series:一维带标签数据
Series (序列) 是 Pandas 的 一维数据结构,它由 索引 (Index) 和 值 (Values) 两部分组成。 Series 可以看作是 带标签的 NumPy 数组 或 带索引的列表,但功能更加强大和灵活。 Series 非常适合表示 一维时间序列数据、单列数据 等。
1. Series 的创建
可以使用多种方式创建 Series 对象:
-
从列表 (List) 创建 Series:
import pandas as pd # 导入 pandas 库,约定俗成简写为 pd data = [10, 20, 30, 40, 50] s = pd.Series(data) # 从列表 data 创建 Series 对象 s print(s)
输出:
0 10 1 20 2 30 3 40 4 50 dtype: int64
代码解释:
import pandas as pd
: 导入 Pandas 库,并约定俗成地使用pd
作为 Pandas 的别名,方便后续代码中使用pd.Series
等 Pandas 函数和对象。data = [10, 20, 30, 40, 50]
: 定义一个 Python 列表data
,作为 Series 的数据部分。s = pd.Series(data)
: 使用pd.Series(data)
函数 从列表data
创建一个 Series 对象s
。print(s)
: 打印 Series 对象s
。
输出结果解释:
- 左侧
0, 1, 2, 3, 4
是 Series 的索引 (Index),默认情况下,Pandas 会自动创建 从 0 开始的整数索引。 - 右侧
10, 20, 30, 40, 50
是 Series 的值 (Values),即列表data
中的元素。 dtype: int64
表示 Series 的数据类型 (data type) 是 64 位整数 (int64)。 Pandas 会自动推断 Series 的数据类型,也可以在创建 Series 时手动指定数据类型 (例如dtype='float64'
,dtype='str'
等)。
-
从 NumPy 数组 (Array) 创建 Series:
import pandas as pd import numpy as np # 导入 NumPy 库 data = np.array([10, 20, 30, 40, 50]) # 创建 NumPy 数组 s = pd.Series(data) # 从 NumPy 数组 data 创建 Series 对象 s print(s)
输出结果与从列表创建 Series 相同。 Pandas Series 可以很好地与 NumPy 数组集成。
-
从字典 (Dictionary) 创建 Series:
import pandas as pd data = { 'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50} # 创建字典 s = pd.Series(data) # 从字典 data 创建 Series 对象 s print(s)
输出:
a 10 b 20 c 30 d 40 e 50 dtype: int64
代码解释:
data = {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50}
: 创建一个 Python 字典data
,字典的键 (keys) 将作为 Series 的索引 (Index),字典的值 (values) 将作为 Series 的值 (Values)。s = pd.Series(data)
: 使用pd.Series(data)
函数 从字典data
创建 Series 对象s
。
输出结果解释:
- 左侧
a, b, c, d, e
是 Series 的索引 (Index),即字典data
的键。 使用字典创建 Series 时,索引会自动使用字典的键。 - 右侧
10, 20, 30, 40, 50
是 Series 的值 (Values),即字典data
的值。
-
指定索引 (Index) 创建 Series:
在从列表或 NumPy 数组创建 Series 时,可以 手动指定索引 (Index)。 索引可以是 任意类型 的数据 (例如字符串、日期时间等),但通常建议使用 唯一且有意义 的索引,方便数据访问和操作。
import pandas as pd data = [10, 20, 30, 40, 50] index = ['A', 'B', 'C', 'D', 'E'] # 自定义索引列表 s = pd.Series(data, index=index) # 创建 Series 对象 s,并指定索引