NumPy 和 Pandas 哪个更快?

pandasserver side programmingprogramming更新于 2025/9/28 12:37:17

NumPy 和 Pandas 都是数据科学和机器学习技术的重要工具。我们知道 Pandas 提供类似 SQL 表的 DataFrame,可用于进行表格数据分析,而 NumPy 可以非常高效地执行向量和矩阵运算。

Pandas 提供了许多针对 C 或 Cython 优化的函数,这些函数的速度可能比 NumPy 的等效函数更快(例如,从文本文件中读取文本)。

如果要执行点积、计算平均值等数学运算,Pandas DataFrame 通常比 NumPy 数组慢。因为 Pandas 可以做很多事情,比如对齐标签、处理异构数据等等。

示例

import numpy as np
import pandas as pd

array = np.arange(100, 200)

s = pd.Series(array)

print('Series object time: ',end = ')
%timeit -n10 -r2 s.mean()

print('Numpy array time: ',end = ')
%timeit -n10 -r2 np.mean(array)

解释

这里我们创建了一个包含 100 个值的 NumPy 数组,范围从100 到 200,并使用 NumPy 数组创建了一个 Pandas Series 对象。

我们使用 IPython 内置的魔法函数 %timeit 来查找每个函数的平均时间消耗。计算每个对象数据的平均值。

-n10 用于设置循环次数,-r2 用于设置运行次数。

输出

Series object: 225 µs ± 83 µs per loop (mean ± std. dev. of 2 runs, 10 loops each)
Numpy array: 33.1 µs ± 10.8 µs per loop (mean ± std. dev. of 2 runs, 10 loops each)

我们可以看到 NumPy 数组和 Series 对象计算平均值所花费的时间。

示例

import numpy as np
import pandas as pd

array = np.arange(100, 200)

s = pd.Series(array)

print('Series object time: ',end =')
%timeit -n10 -r2 s.std()

print('Numpy array time: ',end =')
%timeit -n10 -r2 np.std(array)

解释

这里我们验证了 NumPy 数组和 Series 对象所花费的时间使用 pandas Series 对象来计算标准差。我们可以在下面的输出块中看到时间戳。

输出

Series object time: 443 µs ± 26.6 µs per loop (mean ± std. dev. of 2 runs, 10 loops each)
Numpy array time: 104 µs ± 12.1 µs per loop (mean ± std. dev. of 2 runs, 10 loops each)

从以上两个示例可以看出,Pandas 的平均耗时比 NumPy 对象更长。

创建 Pandas DataFrame 所需的时间大约是创建 NumPy 数组的 6000 倍。Pandas 需要额外的时间来设置索引标签。


相关文章