NumPy 和 pandas 哪个更快?


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 数组和 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)

正如我们在上面两个示例中看到的,与 NumPy 对象相比,pandas 消耗的平均时间更多。

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

更新于: 2021年11月18日

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.