Pandas 常用函数速查表(语法 + 参数 + 示例)

1 阅读3分钟

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)