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 的核心功能,如同获得了数据分析领域的“超级工具包”。从基础的数据创建、选择到高级的分组、合并,再到性能优化,每个环节都需结合实际案例反复练习。本文提供的代码示例与比喻,旨在帮助读者在理解原理的基础上,快速将知识转化为实践能力。

建议读者在学习过程中:

  1. 通过官方文档(Pandas API Reference )巩固细节;
  2. 使用真实数据集(如公开的 Kaggle 数据)进行项目实践;
  3. 遇到复杂问题时,善用 df.describe()df.head() 等辅助函数快速定位数据特征。

通过持续学习与应用,Pandas DataFrame API 必将成为你数据科学之旅中得心应手的伙伴。

最新发布