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分钟聚合

相关推荐
_一路向北_3 小时前
爬虫框架:Feapder使用心得
爬虫·python
皇族崛起4 小时前
【3D标注】- Unreal Engine 5.7 与 Python 交互基础
python·3d·ue5
你想知道什么?4 小时前
Python基础篇(上) 学习笔记
笔记·python·学习
Swizard5 小时前
速度与激情:Android Python + CameraX 零拷贝实时推理指南
android·python·ai·移动开发
一直跑5 小时前
Liunx服务器centos7离线升级内核(Liunx服务器centos7.9离线/升级系统内核)
python
leocoder5 小时前
大模型基础概念入门 + 代码实战(实现一个多轮会话机器人)
前端·人工智能·python
Buxxxxxx5 小时前
DAY 37 深入理解SHAP图
python
ada7_5 小时前
LeetCode(python)108.将有序数组转换为二叉搜索树
数据结构·python·算法·leetcode
请一直在路上5 小时前
python文件打包成exe(虚拟环境打包,减少体积)
开发语言·python
浩瀚地学5 小时前
【Arcpy】入门学习笔记(五)-矢量数据
经验分享·笔记·python·arcgis·arcpy