在 Python 的数据科学版图中,NumPy 和 Pandas 是两座不可撼动的基石。如果把数据分析比作一场烹饪,那么 NumPy 就是那个高效的多功能切菜机 ,而 Pandas 则是那个有条不紊的食材收纳柜与记账本。
下面为你详细介绍这两大神器,并结合生活例子与代码进行对比说明。
一、 NumPy:数值计算的"性能怪兽"
NumPy (Numerical Python) 是 Python 科学计算的核心库。它最伟大的贡献是引入了 ndarray(N 维数组)对象。
1. 生活中的例子:超市里的同款罐头阵列
想象超市仓库里堆放着几千箱完全一样的可乐罐头。
- 普通 Python 列表:就像是你把这些罐头散放在大袋子里,每个罐头还可能有大有小。你想数数或搬运时,得一个一个确认,非常慢。
- NumPy 数组:就像是整整齐齐码在托盘里的罐头,规格统一。因为整齐(内存连续),你可以直接用叉车一整排地搬运,计算速度极快。
2. 核心特点:
- 同质性:数组里的所有元素必须是同一种类型(比如全是整数或全是浮点数)。
- 广播机制(Broadcasting):可以一次性对整组数据进行加减乘除,不需要写循环。
- 底层 C 语言编写:速度比原生 Python 列表快 10-100 倍。
3. 代码示例:
python
import numpy as np
# 创建一个 NumPy 数组
prices = np.array([10, 20, 30, 40])
# 广播机制:所有价格打 9 折
discounted_prices = prices * 0.9
print(discounted_prices)
# 输出:[ 9. 18. 27. 36.] -> 一行代码搞定,不需要写 for 循环!
二、 Pandas:数据处理的"全能管家"
Pandas 是基于 NumPy 构建的,专门为解决结构化数据分析 而生。它提供了两种核心结构:Series(一维带标签)和 DataFrame(二维表格)。
1. 生活中的例子:超级 Excel 表格
想象你有一张员工工资表:里面有"姓名"(字符串)、"入职日期"(时间)、"月薪"(数字)。
- NumPy 面对这张表会很头疼,因为它要求所有数据类型一致。
- Pandas 则是处理这类表格的大师。它能自动识别表头,处理缺失的空位(NaN),还能根据"部门"进行分组汇总。它就像是一个自带编程能力的 Excel。
2. 核心特点:
- 异质性:同一张表里,可以一列存名字,一列存年龄,一列存布尔值。
- 索引(Index):每一行每一列都有标签,你可以直接说"找张三的月薪",而不是数张三在第几行。
- 强大的清洗功能:一行代码过滤掉脏数据、填充缺失值。
3. 代码示例:
python
import pandas as pd
# 创建一个 DataFrame (像不像一个字典组成的表格?)
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [5000, 6000, 7000]
}
df = pd.DataFrame(data)
# 统计分析:一行代码搞定基本情况
print(df.describe())
# 过滤:找出年龄大于 28 的员工
rich_older_staff = df[df['Age'] > 28]
print(rich_older_staff)
三、 NumPy 与 Pandas 的深度对比:谁更强?
其实它们不是竞争关系,而是上下级关系:
| 特性 | NumPy | Pandas |
|---|---|---|
| 主要对象 | ndarray (数组) |
DataFrame (数据框) / Series |
| 数据类型 | 必须相同 (Homogeneous) | 可以不同 (Heterogeneous) |
| 查询方式 | 索引下标 (如 arr[0,1]) |
标签查询 (如 df['Salary']) |
| 擅长领域 | 纯数学运算、矩阵变换、信号处理 | 表格操作、数据清洗、时间序列、SQL式连接 |
| 关系 | 它是 Pandas 的地基 | 它是构建在 NumPy 之上的摩天大楼 |
四、 它们如何协同工作?
在实际的数据分析流程中,它们的角色分工非常明确:
-
Pandas 负责"迎宾与整理": 从 CSV、Excel 或 SQL 数据库中读取杂乱无章的数据。Pandas 负责对齐日期、剔除重复项、处理"空值",并把数据整理成整齐的 DataFrame。
-
NumPy 负责"高强度计算": 当 Pandas 整理好数据后,如果你需要进行复杂的线性代数运算、傅里叶变换或者输入到机器学习模型(如 Scikit-learn)中,数据通常会转化为 NumPy 数组进行高速跑分。
五、 总结
- 如果你在做科学计算、图像处理或纯数学逻辑 ,请拥抱 NumPy。
- 如果你在做财务分析、报表处理、商业洞察或数据清洗 ,请拥抱 Pandas。
掌握了这两个库,你就拥有了进入 Python 数据分析大门的钥匙。绝大多数时候,你会先用 Pandas 读数据,再在需要底层优化时调用 NumPy,这就是数据科学界的"黄金组合"。