Day 102 — Pandas 核心:图解
1. Series 与 DataFrame 结构
Series(一维):
┌─────────────────────────────┐
│ index │ values │
├─────────┼───────────────────┤
│ 0 │ 10 │
│ 1 │ 20 │
│ 2 │ 30 │
│ 3 │ 40 │
└─────────┴───────────────────┘
DataFrame(二维):
┌─────────┬───────┬────────┬──────┐
│ index │ 姓名 │ 年龄 │ 城市 │
├─────────┼───────┼────────┼──────┤
│ 0 │ 张三 │ 25 │ 北京 │
│ 1 │ 李四 │ 30 │ 上海 │
│ 2 │ 王五 │ 35 │ 广州 │
└─────────┴───────┴────────┴──────┘
columns(列标签)
2. loc vs iloc 选择对比
DataFrame:
┌────┬────────┬───────┬────────┐
│ │ 姓名 │ 年龄 │ 薪资 │
├────┼────────┼───────┼────────┤
│ 0 │ 张三 │ 25 │ 15000 │ ← loc['张三'] 或 iloc[0]
│ 1 │ 李四 │ 30 │ 25000 │ ← loc['李四'] 或 iloc[1]
│ 2 │ 王五 │ 35 │ 18000 │ ← loc['王五'] 或 iloc[2]
└────┴────────┴───────┴────────┘
↑ ↑
loc['姓名'] loc['年龄']
iloc[:, 0] iloc[:, 1]
loc:
df.loc[0, '姓名'] → '张三'
df.loc[0:1, '姓名'] → 第0行到第1行的姓名(包含两端!)
iloc:
df.iloc[0, 0] → '张三'
df.iloc[0:2, 0] → 第0行到第1行的姓名(不包含结束!)
3. 布尔索引工作流程
原始 DataFrame:
┌────┬────────┬───────┐
│ │ 产品 │ 价格 │
├────┼────────┼───────┤
│ 0 │ 手机 │ 4999 │
│ 1 │ 电脑 │ 6999 │
│ 2 │ 耳机 │ 999 │
│ 3 │ 平板 │ 3999 │
└────┴────────┴───────┘
步骤 1: 创建布尔掩码
mask = df['价格'] > 3000
┌────┬───────┐
│ 0 │ True │ 4999 > 3000 ✓
│ 1 │ True │ 6999 > 3000 ✓
│ 2 │ False │ 999 > 3000 ✗
│ 3 │ True │ 3999 > 3000 ✓
└────┴───────┘
步骤 2: 用掩码筛选
df[mask]
┌────┬────────┬───────┐
│ 0 │ 手机 │ 4999 │ ← True
│ 1 │ 电脑 │ 6999 │ ← True
│ 3 │ 平板 │ 3999 │ ← True
└────┴────────┴───────┘
多条件(注意括号优先级):
mask = (df['价格'] > 3000) & (df['产品'] != '电脑')
├──── 条件1 ────┤ ├──── 条件2 ────┤
4. 数据探索流程图
┌──────────────┐
│ 1. 加载数据 │ pd.read_csv() / read_excel()
└──────┬───────┘
↓
┌──────────────┐
│ 2. 快速概览 │ shape, head(), info(), describe()
└──────┬───────┘
↓
┌──────────────┐
│ 3. 数据清洗 │ 缺失值, 重复值, 类型转换
└──────┬───────┘
↓
┌──────────────┐
│ 4. 数据分析 │ groupby, 聚合, 分组统计
└──────┬───────┘
↓
┌──────────────┐
│ 5. 结果导出 │ to_csv(), to_excel()
└──────────────┘
5. 文件读写格式对比
┌──────────────┬──────────┬──────────┬─────────────┐
│ 格式 │ 速度 │ 文件大小 │ 适用场景 │
├──────────────┼──────────┼──────────┼─────────────┤
│ CSV │ 慢 │ 大 │ 通用交换 │
│ Excel │ 慢 │ 中 │ 商业报告 │
│ Parquet │ 快 │ 小 │ 大数据 │
│ JSON │ 中 │ 中 │ API数据 │
│ HDF5 │ 快 │ 小 │ 科学计算 │
│ SQL │ 中 │ N/A │ 数据库交互 │
└──────────────┴──────────┴──────────┴─────────────┘
CSV vs Parquet 文件大小对比(100万行×10列):
CSV: ~80 MB
Parquet: ~15 MB (压缩后小 5 倍!)