文章

NumPy与pandas简介

NumPy 管同质数值数组上的向量运算,pandas 管带行列名的表格读写和分组。二者是叠层关系,不是二选一;表里的数值列取出后往往就是数组。

NumPy与pandas简介

NumPy与pandas简介

NumPy 和 pandas 都是 Python 数据科学的底座,但管的不是同一层东西:NumPy 管 同质数值数组上的数学运算;pandas 管 带行列名的表格(读 CSV、筛选、分组、缺失值)。pandas 底层大量用 NumPy,二者是叠层关系,不是二选一的替代品。本文面向初学者,用同一组数字说明差在哪、何时用哪个。

参考与延伸阅读:


目录


1. 各自定位

库一句话典型对象
NumPy多维数组 + 向量化数学图像像素矩阵、特征矩阵 (X)、科学计算
pandas带标签的表Excel / CSV、业务明细、时间序列

可以把 NumPy 想成 「能批量算的格子」,pandas 想成 「带表头的电子表格」。表里的某一列数值,取出来往往就是一个 NumPy 数组。


2. 核心数据结构

 NumPypandas
一维ndarray,如形状 (n,)Series:值 + 索引名
二维ndarray,形状 (行, 列),一般同一类型(全是 float 或全是 int)DataFrame:多列,每列可以不同类型(数字、字符串、日期)
标签主要靠整数下标 a[0, 1]行索引、列名:df.loc["甲", "时长"]
缺失值常用 nan,处理偏底层NA / NaN,有 dropna、fillna 等现成方法

pandas 的 DataFrame.values / .to_numpy() 可以把表吐成 NumPy,交给 sklearn、PyTorch 训练。


3. 同一例子对照

同一批学员数据:学习时长、刷题套数。NumPy 只存数字;pandas 还记得「谁、哪一列」。

NumPy:纯矩阵运算

1
2
3
4
5
6
7
8
9
10
11
import numpy as np

# 行=学员,列=特征;没有列名
X = np.array([
    [2.0, 1.9],
    [1.6, 1.5],
    [-0.8, -0.7],
], dtype=float)

X.mean(axis=0)          # 每列均值
X @ np.array([1.1, 0.9])  # 矩阵乘,得到线性打分

pandas:带表头的表

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd

df = pd.DataFrame(
    {"时长": [2.0, 1.6, -0.8], "刷题": [1.9, 1.5, -0.7]},
    index=["甲", "乙", "丙"],
)

df["时长"]                 # 按列名取
df.loc["甲"]               # 按行名取
df.mean(numeric_only=True) # 按列统计
df[df["时长"] > 0]         # 按条件筛行

同一套数:要用 公式批量算 走 NumPy;要用 列名、筛人、和 CSV 打交道 走 pandas。训练模型前常见流程是:pandas 洗表 → .to_numpy() → sklearn / PyTorch。


4. 能力对照

维度NumPypandas
擅长加减乘、广播、线性代数、随机数、傅里叶变换等读存 CSV/Excel、对齐索引、合并表、groupby、时间序列、缺失值
速度同质数组、底层 C,数值循环远快于纯 Python表操作方便;纯数值大矩阵循环仍常落到 NumPy
类型一张数组一种 dtype 最省事每列一个 dtype,混用字符串和数字很自然
内存紧凑索引、列名有额外开销
不擅长没有「列名」「主键连接」这套表语义不是通用多维张量库;三维以上图像/批次数据仍用 NumPy 或框架张量

二者常见组合:

1
2
3
4
5
CSV / 数据库
  → pandas 读入、清洗、分组聚合
  → to_numpy()
  → NumPy 标准化、矩阵运算
  → sklearn 拟合 或 转成 torch.Tensor / tf.Tensor

5. 和深度学习框架的关系

库角色
pandas表格样本的清洗与特征列管理
NumPyCPU 上的数值数组;sklearn 的输入格式
PyTorch / TensorFlowGPU 张量、自动求导、神经网络积木

torch.from_numpy(x)、tf.convert_to_tensor(x) 都是从 NumPy 接过去。不要用 pandas 的 DataFrame 直接当卷积输入;先变成数值数组再转张量。


6. 怎么选

  • 只有数字、要矩阵乘 / 广播 / 科学计算:NumPy。
  • 有列名、要筛选分组、要对齐两张表、要读写表格文件:pandas。
  • 机器学习入门:先 pandas 把表洗干净,再交给 NumPy / sklearn;上深度网络时再转张量。
  • 不必二选一:pandas 依赖 NumPy;学顺序一般是 先 NumPy 数组概念,再 pandas 表操作。

7. 小结

要点结论
关系pandas 建在 NumPy 上,表里的数值列本质是数组
NumPy同质多维数组 + 向量化数学
pandas带行列标签的表 + 清洗、连接、分组
训练前表用 pandas,矩阵用 NumPy,网络用框架张量
本文由作者按照 CC BY 4.0 进行授权