Pandas 透视表性能比较:pivot_table() vs groupby() vs agg()
在 Pandas 中,透视表可以使用三个函数来完成:'pivot_table()'、'groupby()' 和 'agg()'。本文将使用这三个函数来计算某个数据集中每个不同类别的产品的平均价格,并比较它们的速度。
首先,我们导入 Pandas 库并创建一个示例数据集:
import pandas as pd
data = {'Product': ['A', 'B', 'A', 'B', 'A', 'B'],
'Category': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
'Price': [10, 20, 30, 40, 50, 60]}
df = pd.DataFrame(data)
使用 'pivot_table()' 函数计算每个不同类别的产品的平均价格:
pivot_result = df.pivot_table(index='Product', columns='Category', values='Price', aggfunc='mean')
使用 'groupby()' 函数计算每个不同类别的产品的平均价格:
groupby_result = df.groupby(['Product', 'Category']).mean().unstack()
使用 'agg()' 函数计算每个不同类别的产品的平均价格:
agg_result = df.groupby(['Product', 'Category']).agg({'Price': 'mean'}).unstack()
为了比较它们的速度,我们可以使用 'timeit' 模块来计算每个函数的执行时间:
import timeit
pivot_time = timeit.timeit(lambda: df.pivot_table(index='Product', columns='Category', values='Price', aggfunc='mean'), number=1000)
groupby_time = timeit.timeit(lambda: df.groupby(['Product', 'Category']).mean().unstack(), number=1000)
agg_time = timeit.timeit(lambda: df.groupby(['Product', 'Category']).agg({'Price': 'mean'}).unstack(), number=1000)
最后,我们可以比较它们的执行时间:
print('pivot_table() 执行时间:', pivot_time)
print('groupby() 执行时间:', groupby_time)
print('agg() 执行时间:', agg_time)
根据执行时间的比较,可以得出最快的函数是 'agg()' 函数。请注意,具体的执行时间可能会因计算机性能和数据集大小而有所不同。
原文地址: https://www.cveoy.top/t/topic/fvy0 著作权归作者所有。请勿转载和采集!