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 需要额外的时间来设置索引标签。

