实用指南: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()复制 DataFramedf2 = df.copy()

2️⃣ 信息选择与索引

方法说明示例
df["列名"]取单列,返回 Seriesdf["账户余额"]
df[["列1","列2"]]取多列,返回 DataFramedf[["账户余额","信用评分"]]
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 风格 joinpd.merge(df1, df2, on="客户编号", how="left")
df.join(df2, on="列")索引 joindf.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 聚合数值列。

posted @ 2025-10-24 11:21  ycfenxi  阅读(2)  评论(0)    收藏  举报