目录
- 引言:为什么 Pandas 是 AI 数据处理的瑞士军刀?
- Pandas 核心数据结构:精巧的矛与盾
- 2.1 Series:一维数据的精巧之矛
- 创建 Series:从零开始构建
- Series 索引和切片:精准定位与范围选取
- Series 运算:灵活的数据操作
- 2.2 DataFrame:二维数据的坚实之盾
- 创建 DataFrame:构建数据分析的基石
- DataFrame 索引和切片:行列自由穿梭
- DataFrame 常用属性和方法:洞察数据全貌
- 数据读取与写入:AI 世界的数据高速公路
- 3.1 读取 CSV、Excel、JSON、SQL 等格式的数据:连接数据世界的桥梁
- 3.2 将 DataFrame 写入各种格式的文件:数据持久化的保障
- 数据清洗:打造 AI 模型的 शुद्ध 数据
- 4.1 缺失值处理 (isnull, notnull, dropna, fillna):填补数据空白
- 4.2 重复值处理 (duplicated, drop_duplicates):消除数据冗余
- 4.3 异常值检测与处理:揪出数据中的捣蛋分子
- 4.4 数据类型转换 (astype):赋予数据正确的身份
- 4.5 字符串处理 (str 访问器):玩转文本数据
- 数据转换:让数据焕发新生
- 5.1 应用函数 (apply, applymap, map):定制化数据改造
- 5.2 数据排序 (sort_values, sort_index):理顺数据秩序
- 5.3 数据分组 (groupby):分而治之的数据策略
- 5.4 数据聚合 (agg):化繁为简的数据浓缩
- 5.5 数据透视表 (pivot_table):多维数据分析利器
- 5.6 数据合并 (merge, join, concat):集零为整的数据融合
- 数据探索:像侦探一样洞察数据
- 6.1 查看头部/尾部数据 (head, tail):快速预览数据
- 6.2 查看数据统计信息 (describe):数据概况一览
- 6.3 查看数据分布 (value_counts, hist):揭示数据模式
- 6.4 相关性分析 (corr):探寻数据关联
- Pandas 实用技巧:提升效率的秘密武器
- 7.1 使用链式操作:让代码更优雅
- 7.2 使用
query
方法进行数据筛选:更直观的查询- 7.3 使用
where
方法进行条件替换:精准修改数据- 7.4 使用
cut
和qcut
进行数据分箱:离散化连续数据- Pandas 在 AI 中的应用:无处不在的幕后英雄
- 总结与下一步:从 Pandas 到更广阔的 AI 世界
- 挑战任务:动手实践,融会贯通
Pandas:AI 数据处理的瑞士军刀
大家好!欢迎回到 “AI 高手之路” 系列,今天我们来聊聊 Pandas,这个在人工智能(AI)领域中扮演着至关重要角色的 Python 库。如果你立志成为一名 AI 专家,那么 Pandas 绝对是你工具箱中最锋利、最实用的瑞士军刀。
1. 引言:为什么 Pandas 是 AI 数据处理的瑞士军刀?
在构建任何 AI 模型之前,我们都必须面对一个共同的挑战:数据。原始数据就像未经雕琢的璞玉,散落在各处,格式各异,质量参差不齐。它们可能包含缺失值、重复项、错误信息,甚至是以模型无法直接理解的方式呈现。
这时,Pandas 就如同数据处理领域的瑞士军刀,以其强大的功能和灵活性,帮助我们高效地完成数据清洗、转换、分析和探索等一系列繁琐却至关重要的任务。它之所以在 AI 领域不可或缺,主要归功于以下几点:
- 化繁为简: Pandas 提供了简洁直观的 API,让复杂的数据操作变得易于理解和实现。你不需要编写冗长的循环,就能轻松完成各种数据处理任务。
- 灵活多变: 无论是处理结构化数据、时间序列数据还是文本数据,Pandas 都能提供强大的支持。它能够读取和写入多种数据格式,并进行各种灵活的数据操作。
- 性能卓越: Pandas 底层基于 NumPy 构建,拥有出色的运算性能,即使处理大型数据集也能保持高效。
- 生态融合: Pandas 与 Scikit-learn, Matplotlib, Seaborn 等众多 Python 数据科学和 AI 库无缝集成,构建了一个强大的数据处理和分析生态系统。
可以说,掌握 Pandas 是成为一名合格 AI 工程师的基本功。它不仅能帮助你高效地处理数据,更能让你将更多精力集中在模型构建和算法优化等核心 AI 任务上。
数据处理流程示意图:Pandas 在 AI 数据处理流程中扮演核心角色。
2. Pandas 核心数据结构:精巧的矛与盾
Pandas 的核心在于两种强大的数据结构:Series 和 DataFrame。它们就像是数据处理的矛与盾,Series 擅长处理一维数据,DataFrame 则能灵活应对二维表格数据。
2.1 Series:一维数据的精巧之矛
Series 是一种类似于一维数组的对象,但它比 NumPy 数组更强大,因为它带有标签,也就是索引(Index)。你可以把 Series 看作是带标签的列表或字典。
创建 Series:从零开始构建
创建 Series 非常简单,你可以从列表、NumPy 数组或字典等多种数据类型创建。
import pandas as pd# 从列表创建 Series
s1 = pd.Series([10, 20, 30, 40, 50])
print(s1)
# 0 10
# 1 20
# 2 30
# 3 40
# 4 50
# dtype: int64# 指定索引的 Series
s2 = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
print(s2)
# a 10
# b 20
# c 30
# d 40
# e 50
# dtype: int64# 从字典创建 Series
s3 = pd.Series({'apple': 10, 'banana': 20, 'orange': 30})
print(s3)
# apple 10
# banana 20
# orange 30
# dtype: int64
代码解释:
pd.Series()
是创建 Series 的核心函数。- 可以直接传入一个列表作为数据,索引默认从 0 开始。
- 可以通过
index
参数自定义索引标签。 - 也可以使用字典创建 Series,字典的键会成为索引标签,值会成为 Series 的数据。
Series 索引和切片:精准定位与范围选取
Series 的索引和切片操作非常灵活,你可以像操作列表或字典一样访问 Series 中的数据。
s = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])# 通过位置索引
print(s[0]) # 输出: 10
print(s[1:3]) # 输出:# b 20# c 30# dtype: int64# 通过标签索引
print(s['a']) # 输出: 10
print(s['b':'d']) # 输出:# b 20# c 30# d 40# dtype: int64
代码解释:
- Series 支持位置索引(类似列表的索引)和标签索引(使用自定义的索引标签)。
- 切片操作同样支持位置和标签,标签切片是包含结束标签的。
Series 运算:灵活的数据操作
Series 支持各种算术运算、比较运算和 NumPy 的通用函数,可以方便地进行数据处理。
s1 = pd.Series([1, 2, 3])
s2 = pd.Series([4, 5, 6])# 算术运算
print(s1 + s2) # 输出:# 0 5# 1 7# 2 9# dtype: int64
print(s1 * 2) # 输出:# 0 2# 1 4# 2 6# dtype: int64# NumPy 函数
import numpy as np
print(np.sqrt(s1)) # 输出:# 0 1.000000# 1 1.414214# 2 1.732051# dtype: float64
代码解释:
- Series 之间可以直接进行加减乘除等算术运算,运算会自动对齐索引。
- Series 可以和标量进行运算,会对 Series 中的每个元素都进行运算。
- 可以调用 NumPy 的数学函数直接对 Series 进行操作。
2.2 DataFrame:二维数据的坚实之盾
DataFrame 是 Pandas 中最核心、最常用的数据结构,它是一个二维表格型数据,可以看作是由多个 Series 组成的字典,每列可以是不同的数据类型。DataFrame 提供了强大的数据处理和分析功能,是 Pandas 的灵魂所在。
创建 DataFrame:构建数据分析的基石
创建 DataFrame 的方式多种多样,最常见的包括从字典、列表的列表、NumPy 数组等创建。
import pandas as pd
import numpy as np# 从字典创建 DataFrame
data1 = {'name': ['Alice', 'Bob', 'Charlie'],'age'