首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python-polars `df.select`操作的性能改进

python-polars `df.select`操作的性能改进
EN

Stack Overflow用户
提问于 2022-06-18 13:12:12
回答 1查看 205关注 0票数 1

目前,我正在尝试将一些代码迁移到polars,但注意到了过程中的一些性能差异。

代码语言:javascript
复制
import os, platform, timeit, numpy as np, pandas as pd, polars as pl

data = np.random.rand(100000, 1)
df_pandas = pd.DataFrame(data)
df_polars = pl.DataFrame(data)

def timer(expr):
    return round(min(timeit.repeat(expr, repeat=5, number=5)), 8)

print("---- info ----")
print(f"platform={platform.platform()}; processor={platform.processor()}; CPUs={os.cpu_count()}")
print(f"python={platform.python_version()}; numpy={np.__version__}; pandas={pd.__version__}; polars={pl.__version__}")

print("---- pow(2) ----")
print("pandas:", timer(lambda: df_pandas.pow(2)))
print("polars:", timer(lambda: df_polars.select(pl.all().pow(2))))

print("---- sum ----")
print("pandas:", timer(lambda: df_pandas.sum()))
print("polars:", timer(lambda: df_polars.sum()))

这个片段的输出是

代码语言:javascript
复制
---- info ----
platform=macOS-11.6.5-x86_64-i386-64bit; processor=i386; CPUs=4
python=3.8.13; numpy=1.22.4; pandas=1.4.2; polars=0.13.47
---- pow(2) ----
pandas: 0.00147684
polars: 0.01482804
---- sum ----
pandas: 0.00300668
polars: 0.00027682

这些结果表明,对于包含Python的操作,polars要比pandas慢得多,但是对于直接在select上执行的操作来说,则要快得多。

实际上,我的数据更大(rows > 1,000,000cols > 100,000),其性能差异要大得多。

任何关于在polars中实现相同(或更好)性能的可能发生的事情以及是否有更快的方法的建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-18 13:44:07

polars >= 0.13.49中,功率操作被优化为对特定功率的square优化。如果我运行这个,两种操作都比熊猫快。

代码语言:javascript
复制
---- info ----
platform=Linux-5.13.0-51-generic-x86_64-with-glibc2.31; processor=x86_64; CPUs=12
python=3.9.12; numpy=1.22.4; pandas=1.4.2; polars=0.13.49
---- pow(2) ----
pandas: 0.00041451
polars: 0.0003346
---- sum ----
pandas: 0.00157432
polars: 0.00011628
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72669537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档