Pandas 函数速查专业指南

Pandas 是 Python 数据分析的核心库,提供了丰富的函数用于数据处理、清洗和分析。下面按类别列出常用函数,并附专业说明。


1️⃣ DataFrame / Series 常用属性与方法

方法 / 属性 说明 示例
df.head(n) 查看前 n 行 df.head(5)
df.tail(n) 查看后 n 行 df.tail(3)
df.shape 返回行列数 (rows, columns) df.shape
df.info() 数据概况,列类型、非空数等 df.info()
df.describe() 数值列统计汇总(count, mean, std, min, max, quartile) df.describe()
df.columns 返回列名 df.columns
df.index 返回索引 df.index
df.dtypes 返回列的数据类型 df.dtypes
df.isna() / df.isnull() 判断缺失值 df.isna()
df.notna() / df.notnull() 判断非缺失值 df.notna()
df.drop(columns=[]) 删除列 df.drop(columns=["列1"])
df.dropna() 删除含缺失值的行 df.dropna()
df.fillna(value) 缺失值填充 df.fillna(0)
df.rename(columns={}) 重命名列 df.rename(columns={"旧列名":"新列名"})
df.sort_values(by="列名", ascending=True) 按列排序 df.sort_values("订单总额", ascending=False)
df.sort_index() 按索引排序 df.sort_index()
df.copy() 复制 DataFrame df2 = df.copy()

2️⃣ 数据选择与索引

方法 说明 示例
df["列名"] 取单列,返回 Series df["账户余额"]
df[["列1","列2"]] 取多列,返回 DataFrame df[["账户余额","信用评分"]]
df.loc[行标签, 列标签] 按标签取值,可切片 df.loc[0,"账户余额"]
df.iloc[行号, 列号] 按位置取值 df.iloc[0,1]
df.at[行标签, 列标签] 快速取单值 df.at[0,"账户余额"]
df.iat[行号, 列号] 快速按位置取单值 df.iat[0,1]
df.query("条件") 按表达式筛选 df.query("年龄>30 & 性别=='女'")
df[df["列"]>值] 按布尔条件筛选行 df[df["账户余额"]>20000]

3️⃣ 聚合与统计函数

方法 说明 示例
df.sum() 求和 df.sum()
df.mean() 平均值 df.mean()
df.median() 中位数 df.median()
df.std() 标准差 df.std()
df.var() 方差 df.var()
df.min() / df.max() 最小/最大值 df.min()
df.count() 非空数量 df.count()
df.value_counts() 对 Series 分组计数 df["性别"].value_counts()
df.nunique() 唯一值数量 df.nunique()
df.cumsum() 累积和 df["销售额"].cumsum()
df.cumprod() 累积乘积 df["增长率"].cumprod()
df.agg() / df.aggregate() 聚合函数,可同时多函数 df.groupby("客户编号")["订单总额"].agg(["count","sum"])

4️⃣ 分组与透视

方法 说明 示例
df.groupby("列名") 分组操作 df.groupby("性别")["账户余额"].mean()
df.pivot(index, columns, values) 数据透视表 df.pivot(index="客户编号", columns="月份", values="订单总额")
df.pivot_table(index, columns, values, aggfunc) 支持聚合的透视表 df.pivot_table(index="产品名称", values="订单总额", aggfunc=["sum","count"])
df.melt() 数据展开为长表 df.melt(id_vars=["客户编号"], value_vars=["订单总额","订单数量"])

5️⃣ 字符串操作 (.str)

方法 说明 示例
df["列"].str.lower() / .upper() 大小写转换 df["姓名"].str.upper()
df["列"].str.strip() 去掉首尾空格 df["姓名"].str.strip()
df["列"].str.contains("关键字") 判断包含 df["地址"].str.contains("北京")
df["列"].str.replace("旧","新") 替换 df["姓名"].str.replace("张","赵")
df["列"].str.split("分隔符") 拆分 df["姓名"].str.split(" ")
df["列"].str.len() 字符串长度 df["姓名"].str.len()

6️⃣ 日期与时间 (.dt) 与重采样 (resample)

方法 说明 示例
pd.to_datetime() 转为时间类型 df["日期"] = pd.to_datetime(df["日期"])
df["列"].dt.year/month/day 获取年/月/日 df["日期"].dt.year
df["列"].dt.weekday 星期(0=周一) df["日期"].dt.weekday
df["列"].dt.hour/minute/second 小时/分钟/秒 df["日期"].dt.hour
df["列"].dt.strftime() 格式化日期 df["日期"].dt.strftime("%Y-%m-%d")
df.resample("M", on="下单日期").count() 按时间频率重采样(聚合),默认月末对齐 df_ecom.resample("M", on="下单日期")["订单编号"].count()

7️⃣ 排序与排名

方法 说明 示例
df.sort_values(by) 按列排序 df.sort_values("账户余额", ascending=False)
df.sort_index() 按索引排序 df.sort_index()
df.rank() 排名 df["账户余额"].rank(ascending=False)

8️⃣ 合并与连接

方法 说明 示例
pd.concat([df1, df2], axis=0/1) 按行/列拼接 pd.concat([df1, df2], axis=0)
pd.merge(df1, df2, on="列", how="inner/left/right/outer") SQL 风格 join pd.merge(df1, df2, on="客户编号", how="left")
df.join(df2, on="列") 索引 join df.join(df2.set_index("客户编号"), on="客户编号")

9️⃣ 交叉表 (crosstab)

方法 说明 示例
pd.crosstab(index, columns) 统计两个分类变量组合频次 pd.crosstab(df_bank["性别"], df_bank["是否活跃"])
pd.crosstab(index, columns, values=..., aggfunc=...) 对交叉组合进行聚合 pd.crosstab(df_bank["性别"], df_bank["是否活跃"], values=df_bank["账户余额"], aggfunc="sum")
normalize 是否显示比例 pd.crosstab(df_bank["性别"], df_bank["是否活跃"], normalize="index")

10️⃣ 其他实用函数

方法 说明 示例
df.apply(func) 对行/列应用函数 df["余额"].apply(lambda x:x*1.1)
df.applymap(func) 对整个 DataFrame 每个元素应用函数 df.applymap(lambda x:x*2)
df.astype(type) 转换类型 df["账户余额"].astype(float)
df.duplicated() / df.drop_duplicates() 重复值检测与删除 df.drop_duplicates(subset=["订单编号"])
df.memory_usage() 内存占用 df.memory_usage()

补充说明

  1. pivot_table 可以理解为 Excel 的透视表,支持多函数聚合、多列、多 index。

  2. resample 用于时间序列聚合,默认索引对齐在周期末,可用 "MS" 对齐月初。

  3. crosstab 是统计两个分类变量组合频次的利器,也可加 aggfunc 聚合数值列。

相关推荐
倔强青铜三2 小时前
苦练 Python 第 57 天:用 pathlib 模块告别繁琐的文件操作,开启优雅编程之旅!
人工智能·python·面试
老歌老听老掉牙2 小时前
PDF转图片工具:基于PyQt5的完整实现与深度解析
python·qt·pdf
llm2009092 小时前
UI自动化框架之Selenium简介(一)
python·selenium·ui·自动化
独行soc3 小时前
2025年渗透测试面试题总结-90(题目+回答)
网络·python·安全·web安全·adb·渗透测试·安全狮
SYC_MORE3 小时前
多线程环境下处理Flask上下文问题的文档
后端·python·flask
qq_436962183 小时前
ChatBI与LLMs的融合:奥威BI引领数据分析新范式
数据挖掘·数据分析
hhzz3 小时前
GDAL 的内置矢量工具集ogr的详解使用
python·gis·gdal
Teacher.chenchong3 小时前
以涡度通量塔的高频观测数据为例,基于MATLAB开展;生态碳汇涡度相关监测与通量数据分析实践技术应用
数据挖掘·数据分析
轩辰q3 小时前
python异步编程
开发语言·python