05.1
生态概览
NumPy(底层数组)→ pandas(表格分析)→ matplotlib/seaborn(绘图)→ scikit-learn(ML)。本层是"数据栈"的地基。
向量化思维
尽量用数组/向量运算代替 Python 循环,性能可提升数十倍。
05.2
NumPy 基础
ndarray 是同质多维数组,向量化运算避免显式循环,广播机制自动对齐形状。
import numpy as np
a = np.array([1, 2, 3])
b = a * 2 # 向量化
print(b) # [2 4 6]
m = np.arange(9).reshape(3, 3)
print(m.sum(axis=0)) # 按列求和05.3
pandas 入门
DataFrame 是带标签的二维表,Series 是一列。读取、筛选、新增列是日常三板斧。
import pandas as pd
df = pd.read_csv("users.csv")
adults = df[df.age >= 18]
df["age_next"] = df.age + 1
print(df.head())05.4
数据清洗
处理缺失值(dropna/fillna)、去重、类型转换与字符串规整是分析前必经步骤。
df = df.dropna(subset=["email"])
df["name"] = df["name"].str.strip().str.title()
df["age"] = pd.to_numeric(df["age"], errors="coerce")05.5
分组聚合
groupby + agg 做分组统计,是数据分析最核心的操作之一。
result = df.groupby("city").agg(
count=("id", "count"),
avg_age=("age", "mean"),
)
print(result.sort_values("count", ascending=False))05.6
读写
pandas 支持 CSV/Excel/Parquet/SQL 读写;Parquet 列式存储更适合大数据。
df.to_parquet("out.parquet")
df2 = pd.read_parquet("out.parquet")05.7
可视化
matplotlib 画基础图,seaborn 在上层提供更美观的统计图表。
import matplotlib.pyplot as plt
df.age.hist(bins=20)
plt.title("年龄分布"); plt.show()05.8
常见陷阱
很多 pandas 操作默认返回新对象而非就地改。要么用 inplace=True,要么重新赋值接收结果。
逐行循环(apply 慢)替代向量化会极慢。优先用向量化列运算,必要时用 dtype 优化与分块处理。
05.9