Pandas 教程(保姆级教程)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战(已更新的所有项目都能学习) / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新开坑项目:《Spring AI 项目实战》 正在持续爆肝中,基于 Spring AI + Spring Boot 3.x + JDK 21..., 点击查看 ;
  • 《从零手撸:仿小红书(微服务架构)》 已完结,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观

前言

在数据分析与处理领域,Pandas 是 Python 生态中最强大的工具之一。它以简洁高效的语法,为开发者提供了处理表格数据(如 Excel、CSV 文件)的完整解决方案。无论是编程初学者还是中级开发者,掌握 Pandas 的核心功能都能显著提升工作效率。本文将通过循序渐进的方式,从基础概念到实战案例,系统讲解 Pandas 的使用方法,帮助读者快速上手这一工具。


安装与环境配置

安装方法

使用以下命令即可安装 Pandas:

pip install pandas  

此外,建议同时安装 numpy(Pandas 的底层依赖)和 matplotlib(用于数据可视化)。

核心数据结构

Pandas 的核心是两个数据结构:SeriesDataFrame

  • Series:一维标记数组,类似 Excel 的单列数据。
  • DataFrame:二维表格结构,由多列 Series 组成,类似 Excel 的工作表。

比喻:可以把 DataFrame 想象成 Excel 的工作表,而 Series 是其中的一列数据。


基础操作:创建与查看数据

创建 DataFrame

通过字典或列表初始化:

import pandas as pd  

data_dict = {  
    "Name": ["Alice", "Bob", "Charlie"],  
    "Age": [25, 30, 28],  
    "City": ["New York", "London", "Tokyo"]  
}  
df = pd.DataFrame(data_dict)  

df = pd.read_csv("data.csv")  

常用查看方法

print(df.head())  

print(df.info())  

print(df.describe())  

数据选择与筛选

列的选择

ages = df["Age"]  

subset = df[["Name", "City"]]  

行的筛选

young_people = df[df["Age"] < 30]  

selected = df[(df["Age"] > 25) & (df["City"] == "Tokyo")]  

常用方法

  • loc[]:通过标签索引(行标签 + 列名)。
  • iloc[]:通过位置索引(行号 + 列号)。

示例

name = df.loc[0, "Name"]  

subset = df.iloc[:2, :]  

数据清洗与处理

处理缺失值

数据中的 NaN 值可通过以下方法处理:

cleaned_df = df.dropna()  

filled_df = df.fillna({"Age": 0, "City": "Unknown"})  

去重与排序

dedup_df = df.drop_duplicates()  

sorted_df = df.sort_values(by="Age", ascending=False)  

数据合并与连接

拼接数据

df_merged = pd.concat([df1, df2], axis=1)  

df_appended = pd.concat([df1, df2], axis=0)  

内连接与外连接

merged_df = pd.merge(  
    left=df1,  
    right=df2,  
    on="Common_Column",  # 共同的键  
    how="inner"  # 可选:inner, outer, left, right  
)  

比喻concat 像是“堆叠乐高”,而 merge 像是“拼图”,需要找到共同的“拼接点”。


数据转换与计算

列的新增与修改

df["Age_Group"] = df["Age"].apply(lambda x: "Young" if x < 30 else "Old")  

df["City"] = df["City"].str.upper()  

分组聚合

grouped = df.groupby("City")["Age"].mean()  

result = df.groupby(["City", "Age"])["Name"].count()  

数据可视化

Pandas 内置了与 Matplotlib 的集成,可快速生成图表:

df["City"].value_counts().plot(kind="bar", title="City Distribution")  

df.plot.scatter(x="Age", y="Salary", title="Age vs Salary")  

高级技巧与性能优化

向量化操作

避免使用 for 循环遍历数据,改用向量化操作:

new_col = []  
for age in df["Age"]:  
    if age > 30:  
        new_col.append("Old")  
    else:  
        new_col.append("Young")  
df["Age_Group"] = new_col  

df["Age_Group"] = np.where(df["Age"] > 30, "Old", "Young")  

内存优化

对于大数据集,可调整数据类型:

df["Age"] = df["Age"].astype("int16")  

实战案例:分析销售数据

数据加载与预览

sales_df = pd.read_csv("sales.csv")  
print(sales_df.head())  

核心分析步骤

  1. 计算总销售额

    total_sales = sales_df["Sales"].sum()  
    
  2. 按地区统计销售额

    region_sales = sales_df.groupby("Region")["Sales"].sum()  
    
  3. 可视化地区销售分布

    region_sales.plot(kind="pie", autopct="%1.1f%%", title="Sales by Region")  
    
  4. 处理缺失值

    cleaned_sales = sales_df.fillna(0)  # 假设缺失值用 0 填充  
    

结论

通过本文的讲解,读者应已掌握 Pandas 的核心功能与常见操作。从基础的数据结构到高级的性能优化,Pandas 的灵活性和高效性使其成为数据分析的首选工具。无论是处理简单的 CSV 文件,还是构建复杂的数据分析流程,Pandas 都能提供强大的支持。建议读者通过实际项目巩固所学知识,并参考官方文档进一步探索进阶功能。

提示:持续练习是掌握 Pandas 的关键!尝试用 Pandas 处理你手中的数据,逐步提升分析能力。

最新发布