Pandas Cheatsheet I

🐼 Pandas 全能速查表 (Cheat Sheet)

1. 核心数据结构与 I/O (Setup & IO)

一切的开始。

python 复制代码
import pandas as pd
import numpy as np

# --- 创建对象 ---
df = pd.DataFrame(data)          # 从字典或Numpy数组创建
s = pd.Series(data)              # 创建序列

# --- 数据读取 (Input) ---
df = pd.read_csv('file.csv')     # 读取CSV
df = pd.read_excel('file.xlsx')  # 读取Excel
df = pd.read_sql(query, conn)    # 从数据库读取
df = pd.read_parquet('file.parquet') # 读取Parquet (大数据常用)
df = pd.read_clipboard()         # 从剪贴板读取 (调试神技)

# --- 数据保存 (Output) ---
df.to_csv('file.csv', index=False) # 保存为CSV (通常不保存索引)
df.to_excel('file.xlsx')           # 保存为Excel

2. 数据概览与检查 (Inspection)

拿到数据的第一步,先看它的"长相"和"体质"。

python 复制代码
# --- 宏观概览 ---
df.head(5)        # 查看前5行
df.tail(5)        # 查看后5行
df.shape          # 查看行数和列数 (rows, columns)
df.info()         # 查看索引、数据类型和内存信息 (关键!)
df.describe()     # 查看数值列的统计信息 (均值、标准差、四分位等)

# --- 微观检查 ---
df.columns        # 查看所有列名
df.index          # 查看索引
df.dtypes         # 查看各列数据类型
df['col'].unique()      # 查看某列的唯一值
df['col'].nunique()     # 查看某列唯一值的数量
df['col'].value_counts() # 查看某列各类别的出现频次 (高频使用)

3. 数据选择与过滤 (Selection & Filtering)

Pandas 推荐使用 .loc.iloc 进行精确索引。

python 复制代码
# --- 基于标签 (Label) 的选择 .loc ---
df.loc[row_label, 'col_name']      # 选取特定行和列的一个值
df.loc[:, ['col1', 'col2']]        # 选取所有行的特定列
df.loc[df['age'] > 18]             # 筛选满足条件的行

# --- 基于位置 (Position) 的选择 .iloc ---
df.iloc[0]                         # 第一行
df.iloc[:, 0:3]                    # 前三列
df.iloc[0, 1]                      # 第0行第1列的元素

# --- 条件过滤 (Boolean Indexing) ---
mask = (df['age'] > 18) & (df['city'] == 'Beijing') # 复合条件
df[mask]
df.query('age > 18 and city == "Beijing"') # SQL风格查询 (代码更易读)

4. 数据清洗 (Data Cleaning)

这是最耗时的部分。

python 复制代码
# --- 处理缺失值 ---
df.isnull().sum()                  # 检查每列有多少缺失值
df.dropna()                        # 删除包含缺失值的行
df.dropna(subset=['col'])          # 删除特定列有缺失的行
df.fillna(0)                       # 用0填充缺失值
df.fillna(method='ffill')          # 向前填充 (时间序列常用)

# --- 处理重复值 ---
df.duplicated().sum()              # 检查重复行数
df.drop_duplicates()               # 删除重复行
df.drop_duplicates(subset=['id'])  # 基于特定列去重

# --- 数据类型转换 ---
df['price'] = df['price'].astype(float) # 转换类型
df['date'] = pd.to_datetime(df['date']) # 转换为时间类型

# --- 重命名与替换 ---
df.rename(columns={'old_name': 'new_name'}, inplace=True) # 重命名列
df['col'].replace(1, 'One', inplace=True) # 替换值

5. 数据处理与变换 (Manipulation)

对数据进行"整形"和计算。

python 复制代码
# --- 列操作 ---
df['new_col'] = df['col1'] * 2     # 创建新列
df.drop('col', axis=1, inplace=True) # 删除列

# --- 排序 ---
df.sort_values(by='col', ascending=False) # 按某列降序排列
df.sort_index()                    # 按索引排序

# --- 应用函数 ---
df['col'].apply(lambda x: x*2)     # 对列中每个元素应用函数 (慢,通用)
df['col'].map({'A': 1, 'B': 2})    # 字典映射 (用于Series)

# --- 字符串处理 (.str accessor) ---
df['name'].str.lower()             # 转小写
df['name'].str.contains('Mr')      # 包含查找
df['name'].str.split(',')          # 字符串分割

6. 分组与聚合 (Grouping & Aggregation)

数据分析的核心,类似 SQL 的 GROUP BY

python 复制代码
# --- 基本分组 ---
g = df.groupby('category')         # 创建分组对象
g['value'].mean()                  # 计算每组的均值
g.size()                           # 每组的大小

# --- 强大的 agg ---
df.groupby('category').agg({
    'value': ['mean', 'max', 'sum'],  # 对value列做多个聚合
    'id': 'count'                     # 对id列做计数
})

# --- 透视表 (Pivot Table) ---
pd.pivot_table(df, values='sales', index='date', columns='city', aggfunc='sum')

7. 数据合并 (Merging & Joining)

将多个表拼在一起。

python 复制代码
# --- Merge (类似 SQL JOIN) ---
# how: 'left', 'right', 'inner', 'outer'
pd.merge(df1, df2, on='key_col', how='inner') 

# --- Concat (物理拼接) ---
pd.concat([df1, df2], axis=0)      # 上下拼接 (增加行)
pd.concat([df1, df2], axis=1)      # 左右拼接 (增加列)

8. 时间序列专门处理 (Time Series)

Pandas 的看家本领,金融与日志分析必备。

python 复制代码
# --- 时间属性提取 (.dt accessor) ---
df['date'].dt.year                 # 提取年份
df['date'].dt.month                # 提取月份
df['date'].dt.day_name()           # 提取星期几

# --- 重采样 (Resampling) ---
# 假设索引是DatetimeIndex
df.resample('M').mean()            # 按月重采样并计算均值
df.resample('15min').sum()         # 按15分钟聚合

相关推荐
quantdash_cc5 分钟前
告别自建 Requests/BS4 网页爬虫:基于 QuantDash 搭建零维保的高性能量化行情流水线
开发语言·爬虫·python·pandas·量化·quantdash
65岁退休Coder21 分钟前
LangChain v1.3.4 笔记 - 07 补充:链式调用 LCEL
后端·python·langchain
卷无止境32 分钟前
FastAPI 部署在 Nginx 后面到底该怎么配
后端·python
半亩码田42 分钟前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路
开发语言·python·c#
Wzx1980121 小时前
python沙箱和docker沙箱你选对了吗?
开发语言·python·docker
Python私教1 小时前
签名 URL 刷新导致审批失效?别急着删掉所有 query
python·安全
牧羊人.3332 小时前
Python 办公自动化从入门到入土|09 数据容器之字典
开发语言·python
Zane19942 小时前
类变量与实例变量:一个共享列表引发的线上事故
后端·python
Python私教2 小时前
一次性批准令牌:挡住旧授权误发新版本的工程设计
python·安全
for_ever_love__2 小时前
python基础语法学习: 数据容器
windows·python·学习