Python 数据科学库详解:NumPy、Pandas 与 SciPy(2026 最新版)

这三个库是 Python 数据科学与科学计算的基石。它们的关系可以概括为:

  • NumPy:底层数值计算引擎(数组基础)
  • Pandas:高级数据分析工具(基于 NumPy)
  • SciPy:科学计算与高级算法库(基于 NumPy)

1. 版本与安装(2026 年 5 月)

最新稳定版 发布日期 Python 最低要求 推荐安装命令
NumPy 2.4.4 2026.03 3.10+ pip install numpy
Pandas 3.0.2 2026.03 3.11+ pip install pandas
SciPy 1.17.1 2026.02 3.10+ pip install scipy

推荐环境(使用 conda 或 uv):

conda create -n ds python=3.11
conda activate ds
pip install numpy pandas scipy matplotlib seaborn plotly

2. NumPy —— 数值计算基础

核心概念ndarray(N 维数组)

主要特性(NumPy 2.x 亮点)
  • 高速向量化和广播机制
  • 内存连续存储(C 语言实现)
  • 丰富的数学、线性代数、随机数、傅里叶变换功能
  • 新特性:更强的类型标注支持、StringDType 改进、性能优化
import numpy as np

# 创建数组
arr = np.array([1, 2, 3, 4], dtype=np.float32)
zeros = np.zeros((3, 4))
ones = np.ones((2, 3))
rand = np.random.randn(5, 5)          # 标准正态分布

# 广播机制(核心优势)
a = np.array([1, 2, 3])
b = np.array([[10], [20], [30]])
result = a + b   # 自动广播

# 高效运算
arr.mean(), arr.std(), arr.sum(axis=0)
np.dot(a, a)     # 内积
np.linalg.inv(np.random.rand(3,3))  # 矩阵求逆

性能对比:NumPy 数组比 Python List 快 10~100 倍,尤其在大规模数值计算中。


3. Pandas —— 数据分析利器

核心数据结构

  • Series:带标签的一维数组
  • DataFrame:带行索引和列标签的二维表格
Pandas 3.0 重要更新
  • 更好的 Arrow 后端支持(更快、更省内存)
  • 增强的字符串方法和 nullable 数据类型
  • 性能大幅提升
import pandas as pd

# 读取数据
df = pd.read_csv('data.csv', parse_dates=['date'])
df = pd.read_excel('file.xlsx', sheet_name=0)
df = pd.read_sql('SELECT * FROM table', engine)

# 基础探索
df.head()
df.info()
df.describe(include='all')
df.shape

# 数据清洗
df.dropna(subset=['col'])
df.fillna({'col1': 0, 'col2': 'unknown'})
df.drop_duplicates()

# 选择与过滤
df[['col1', 'col2']]
df.loc[df['age'] > 18, ['name', 'score']]
df.query('age > 18 and score > 90')

# 分组聚合(GroupBy 威力)
result = df.groupby(['region', 'category']).agg({
    'sales': ['sum', 'mean', 'count'],
    'profit': ['max', 'min']
}).round(2)

# 时间序列
df.set_index('date')['sales'].resample('M').sum()

Pandas + NumPy 结合
Pandas 底层大量使用 NumPy,因此你可以随时用 df.valuesdf.to_numpy() 获取数组进行高速计算。


4. SciPy —— 科学计算与高级算法

SciPy 建立在 NumPy 之上,提供了大量科学、工程领域常用的工具。

主要模块(2026 版)
模块 主要功能 典型用途
scipy.stats 统计分布、假设检验、描述统计 t检验、卡方检验、正态性检验
scipy.optimize 优化、拟合、最小二乘 曲线拟合、参数优化
scipy.integrate 数值积分、常微分方程求解 物理建模
scipy.linalg 线性代数(比 NumPy 更全面) 特征值分解、SVD
scipy.signal 信号处理 滤波、傅里叶变换
scipy.interpolate 插值 数据平滑
scipy.spatial 空间数据结构(KDTree 等) 最近邻
scipy.cluster 聚类分析 层次聚类
from scipy import stats, optimize, integrate

# 统计检验
t_stat, p_value = stats.ttest_ind(group1, group2)

# 曲线拟合
def func(x, a, b, c):
    return a * np.exp(-b * x) + c

popt, pcov = optimize.curve_fit(func, xdata, ydata)

# 数值积分
result, error = integrate.quad(lambda x: np.sin(x)**2, 0, np.pi)

5. 三者协作关系与最佳实践

import numpy as np
import pandas as pd
from scipy import stats

# 典型工作流
df = pd.read_csv('data.csv')

# Pandas 清洗 + 选择
clean = df.dropna().query('value > 0')

# 转为 NumPy 做高速计算
data = clean['value'].to_numpy()
normalized = (data - data.mean()) / data.std()

# SciPy 做统计分析
corr, pval = stats.pearsonr(clean['x'], clean['y'])

最佳实践

  1. 大尺寸纯数值计算 → 直接用 NumPy
  2. 带标签的结构化数据(表格、时间序列)→ Pandas
  3. 高级科学/统计算法 → SciPy
  4. 超大数据集 → 考虑 Polars(2026 强烈推荐)或 DuckDB
  5. 类型一致性:Pandas 3.0+ 推荐使用 pd.options.mode.string_storage = 'pyarrow'

6. 学习路径建议

入门(1 周)

  • NumPy:数组创建、广播、通用函数(ufunc)
  • Pandas:DataFrame 基本操作、GroupBy、合并(merge/join)

进阶(2-4 周)

  • NumPy:广播规则、内存视图、向量化技巧
  • Pandas:多索引、透视表(pivot_table)、时序处理、自定义聚合
  • SciPy:stats + optimize 实战

项目练习


想深入哪个部分? 我可以立刻展开以下内容:

  • NumPy 广播机制与性能优化深度解析
  • Pandas 高频操作 100 例 + 避坑指南
  • SciPy 统计建模与优化实战
  • 三库在机器学习 pipeline 中的协作(与 scikit-learn 结合)
  • Polars vs Pandas 全面对比(2026 版)

告诉我你的当前水平和具体需求,我继续给你写下一节!

更多推荐