NumPy 和 Pandas 哪个更快?

NumPy 和 Pandas 都是数据科学和机器学习技术必不可少的工具。我们知道,pandas 提供类似于 SQL 表的 DataFrames 允许您进行表格数据分析,而 NumPy 非常有效地运行向量和矩阵运算。

pandas 提供了一堆 C 或 Cython 优化的函数,它们可以比 NumPy 等效函数更快(例如从文本文件中读取文本)。

如果您想做点积、计算平均值等数学运算,pandas DataFrames 通常会比 NumPy 数组慢。因为熊猫正在做更多的事情,比如对齐标签、处理异构数据等等。

示例

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)

解释

在这里,我们创建了一个 NumPy 数组,其中包含 100 到 200 的 100 个值,还使用 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 消耗的平均时间更多。

与创建 NumPy 数组相比,创建 Pandas DataFrame 花费的时间大约长 6000 倍。Pandas 需要额外的时间来设置索引标签。

以上是 NumPy 和 Pandas 哪个更快? 的全部内容, 来源链接: utcz.com/z/356012.html

回到顶部