Pandas 常用函数速查表(语法 + 参数 + 示例) 全部按场景分类,复制即用,无废话。
一、导入与创建数据
import pandas as pd
import numpy as np
1. 创建 Series
pd.Series(data, index=[])
示例:
s = pd.Series([10,20,30], index=['a','b','c'])
2. 创建 DataFrame
pd.DataFrame(data, index=[], columns=[])
示例:
df = pd.DataFrame({
'姓名': ['张三','李四'],
'年龄': [20,21]
})
二、文件读写(高频)
1. 读取 CSV
pd.read_csv(filepath, sep=',', header=0, encoding='utf-8')
常用参数:
header=0:第0行做列名encoding='gbk' / 'utf-8':解决中文乱码usecols=[]:只读取指定列
示例:
df = pd.read_csv('data.csv', encoding='utf-8')
2. 读取 Excel
pd.read_excel(path, sheet_name='Sheet1')
3. 保存文件
df.to_csv('out.csv', index=False, encoding='utf-8')
df.to_excel('out.xlsx', index=False)
index=False:不保存行索引(必加)
三、查看数据信息
1. 前几行 / 后几行
df.head(n)
df.tail(n)
示例:
df.head(3)
2. 基础信息
df.info() # 类型、非空数
df.describe() # 数值列统计
df.shape # (行数, 列数)
df.columns # 列名
df.dtypes # 每列类型
df.index # 行索引
3. 去重计数 / 唯一值
df['列'].unique() # 唯一值
df['列'].nunique() # 唯一值数量
df['列'].value_counts() # 频次统计
四、选择数据(核心)
1. 选择列
df['列名']
df[['列1','列2']]
2. 按位置选择 iloc
df.iloc[行, 列]
示例:
df.iloc[0] # 第0行
df.iloc[0:3] # 前3行
df.iloc[:, 0:2] # 前2列
df.iloc[2, 1] # 第2行第1列
3. 按标签选择 loc
df.loc[行索引, 列名]
示例:
df.loc[0, '姓名']
df.loc[0:2, ['姓名','年龄']]
4. 条件筛选(最常用)
df[条件]
示例:
df[df['年龄'] > 20]
df[(df['年龄']>20) & (df['成绩']>80)]
df[df['城市'].isin(['北京','上海'])]
df[~df['城市'].isin(['北京'])] # 取反
df[df['姓名'].str.contains('张', na=False)]
五、数据清洗
1. 缺失值
df.isnull().sum() # 各列缺失数
df.dropna(axis=0) # 删除含缺失行
df.dropna(axis=1) # 删除含缺失列
df.fillna(值) # 填充固定值
df.fillna(df.mean()) # 均值填充
示例:
df['成绩'].fillna(df['成绩'].median(), inplace=True)
2. 重复值
df.duplicated().sum() # 重复行数
df.drop_duplicates() # 去重
df.drop_duplicates(['列1','列2']) # 按列去重
3. 数据类型转换
df['列'].astype(类型)
pd.to_datetime(df['列'])
示例:
df['年龄'] = df['年龄'].astype(int)
df['日期'] = pd.to_datetime(df['日期'])
六、新增/修改/删除列
1. 新增列
df['新列'] = 值
示例:
df['成年'] = df['年龄'] >= 18
df['总分'] = df['语文'] + df['数学']
2. 修改列名
df.rename(columns={'旧名':'新名'}, inplace=True)
3. 删除列
del df['列']
df.drop('列', axis=1, inplace=True)
七、排序
df.sort_values(by='列', ascending=True)
df.sort_index()
示例:
df.sort_values('成绩', ascending=False)
八、分组聚合 groupby(数据分析核心)
1. 基础分组
df.groupby('列')['统计列'].聚合函数()
2. 多聚合函数 agg(最常用)
df.groupby(by).agg({
'列1': ['mean','max','sum'],
'列2': 'count'
})
示例:
df.groupby('城市').agg(
平均成绩=('成绩','mean'),
人数=('姓名','count')
)
3. 过滤分组
df.groupby('用户ID').filter(lambda x: x['消费'].sum() > 1000)
九、表合并与拼接
1. merge(SQL 风格连接)
pd.merge(df1, df2, on='键', how='连接方式')
how='left':左连接how='inner':内连接(默认)how='outer':全连接
示例:
pd.merge(df1, df2, on='用户ID', how='left')
2. concat(上下/左右拼接)
pd.concat([df1,df2], ignore_index=True) # 上下
pd.concat([df1,df2], axis=1) # 左右
十、字符串处理
df['列'].str.strip() # 去空格
df['列'].str.upper() # 大写
df['列'].str.lower() # 小写
df['列'].str.replace(a, b) # 替换
df['列'].str.contains(关键字)
df['列'].str.split(',') # 分割
十一、时间序列
df['日期'] = pd.to_datetime(df['日期'])
df['年'] = df['日期'].dt.year
df['月'] = df['日期'].dt.month
df['日'] = df['日期'].dt.day
df['季度'] = df['日期'].dt.quarter
df['星期几'] = df['日期'].dt.dayofweek
# 按月重采样
df.resample('M')['销售额'].sum()
# 移动平均
df['收盘价'].rolling(5).mean()
十二、常用统计函数
df.sum()
df.mean()
df.median()
df.max()
df.min()
df.std()
df.count()
df.corr() # 相关系数
十三、透视表 pivot_table
pd.pivot_table(
data=df,
values='值列',
index='行分组',
columns='列分组',
aggfunc='mean'
)
十四、apply / map(自定义函数)
map(单列映射)
df['等级'] = df['成绩'].map(lambda x: '优' if x>=90 else '良')
apply(复杂计算)
df['总分'] = df.apply(lambda row: row['语文']+row['数学'], axis=1)