Pandas DataFrame API 手册(长文解析)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观
在数据分析与处理领域,Pandas 是 Python 生态中不可或缺的工具。作为其核心数据结构,DataFrame
凭借灵活的 API 设计和丰富的功能,成为数据工程师和科学家的“瑞士军刀”。无论是清洗数据、探索分析,还是构建机器学习模型,掌握 Pandas DataFrame API
的使用方法,都将成为提升工作效率的关键。本文将以“Pandas DataFrame API 手册”为指南,通过循序渐进的方式,结合实际案例和代码示例,帮助编程初学者和中级开发者系统性地理解这一工具的核心能力。
一、DataFrame 的基础概念与创建
1.1 DataFrame 的类比:电子表格的数字化表达
可以将 DataFrame
想象为一个二维表格,其中每一列代表一个数据特征(如“姓名”“年龄”“销售额”),每一行对应一条数据记录。这种结构与 Excel 表格高度相似,但 DataFrame
支持更高效的数据操作和复杂计算。
1.2 创建 DataFrame 的常见方法
通过字典、列表或外部文件(如 CSV、Excel)均可创建 DataFrame
。以下是一些典型示例:
import pandas as pd
data = {
"姓名": ["Alice", "Bob", "Charlie"],
"年龄": [25, 30, 28],
"城市": ["上海", "北京", "广州"]
}
df = pd.DataFrame(data)
df = pd.read_csv("data.csv")
关键点:pd.DataFrame()
是创建 DataFrame
的核心函数,而 pd.read_csv()
等方法则提供了从外部数据源加载数据的便捷途径。
二、数据选择与过滤
2.1 列的选择:像字典一样访问数据
通过列名直接访问某一列,类似于字典的键值对访问方式:
ages = df["年龄"]
print(type(ages)) # 输出:<class 'pandas.core.series.Series'>
subset = df[["姓名", "城市"]]
2.2 行的选择:iloc 与 loc 的区别
iloc
:基于整数位置索引(类似列表的索引方式)。loc
:基于标签索引,支持通过行标签或布尔条件筛选。
first_two_rows = df.iloc[0:2]
older_than_28 = df.loc[df["年龄"] > 28]
比喻:iloc
像是按座位号点名,而 loc
则是根据姓名或特征(如“年龄大于 28 岁”)筛选人群。
三、数据清洗与预处理
3.1 处理缺失值:dropna 与 fillna
数据中的缺失值(NaN)是常见的问题。通过 dropna()
删除含缺失值的行,或通过 fillna()
填充默认值:
clean_df = df.dropna()
mean_age = df["年龄"].mean()
df["年龄"].fillna(mean_age, inplace=True)
3.2 去重与重置索引
- 去重:
drop_duplicates()
可消除重复记录。 - 重置索引:
reset_index()
可将索引重新排序(尤其在删除或筛选数据后)。
unique_df = df.drop_duplicates()
df = df.reset_index(drop=True)
四、数据操作与转换
4.1 列的新增与删除
通过赋值操作可直接新增或修改列,drop()
方法用于删除列:
df["是否成年"] = df["年龄"] >= 18
df = df.drop(columns=["城市"])
4.2 apply 函数:逐元素或逐列的自定义计算
apply()
允许对列或行应用自定义函数,例如计算年龄的平方:
def square_age(x):
return x ** 2
df["年龄平方"] = df["年龄"].apply(square_age)
五、高级操作与统计分析
5.1 groupby:数据分组与聚合
groupby
是 Pandas 中最强大的功能之一,用于按某一列的值对数据分组,再对分组后的数据执行聚合操作(如求和、平均值):
grouped = df.groupby("城市")["年龄"].mean()
比喻:groupby
相当于把数据分成多个“分类盒”,每个盒子里的数据具有相同的分组特征。
5.2 合并数据:merge 与 concat
merge
:类似 SQL 的 JOIN 操作,通过公共列合并两个 DataFrame。concat
:按行或列方向堆叠多个 DataFrame。
merged_df = pd.merge(left_df, right_df, on="共同列名")
combined_df = pd.concat([df1, df2], axis=1)
六、进阶技巧与最佳实践
6.1 时间序列处理:datetime 类型与 resample
将列转换为 datetime
类型后,可利用 resample
对时间序列数据进行周期性聚合:
df["日期"] = pd.to_datetime(df["日期"])
monthly_sales = df.resample("M", on="日期")["销售额"].sum()
6.2 优化性能:减少循环,利用向量化操作
避免使用 for 循环遍历行,改用向量化操作提升效率:
for index, row in df.iterrows():
row["年龄"] += 1
df["年龄"] += 1
结论
掌握 Pandas DataFrame API
的核心功能,如同获得了数据分析领域的“超级工具包”。从基础的数据创建、选择到高级的分组、合并,再到性能优化,每个环节都需结合实际案例反复练习。本文提供的代码示例与比喻,旨在帮助读者在理解原理的基础上,快速将知识转化为实践能力。
建议读者在学习过程中:
- 通过官方文档(Pandas API Reference )巩固细节;
- 使用真实数据集(如公开的 Kaggle 数据)进行项目实践;
- 遇到复杂问题时,善用
df.describe()
、df.head()
等辅助函数快速定位数据特征。
通过持续学习与应用,Pandas DataFrame API
必将成为你数据科学之旅中得心应手的伙伴。