Python数据科学库详解:NumPy、Pandas与SciPy

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

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

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

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

最新稳定版发布日期Python 最低要求推荐安装命令
NumPy2.4.42026.033.10+pip install numpy
Pandas3.0.22026.033.11+pip install pandas
SciPy1.17.12026.023.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 实战

项目练习

  • Kaggle:Titanic、House Prices
  • 真实业务:销售数据分析、A/B 测试、用户行为分析

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

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

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

文章已创建 5321

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部