当前位置: 首页 > 后端技术 > Python

Pandas处理数据太慢了,让我们试试Polars!

时间:2023-03-25 19:30:22 Python

很多人在学习数据分析的时候肯定会用到Pandas库,非常实用!从创建数据到读取各种格式(文本、csv、json)的文件,或者对数据进行切片、拆分以组合多个数据源,Pandas都能很好地满足。Pandas最初于2008年发布,使用Python、Cython和C编写。是一个超级强大、快速且易于使用的用于数据分析和操作的Python库。当然,Pandas也有缺点,比如没有多处理器,处理大数据集很慢。今天给大家介绍一个新兴的Python库——Polars。语法与Pandas类似,但数据处理速度比Pandas快很多。一个是大熊猫,一个是北极熊~Polars是一个用Rust编写的库,Polars的内存模型是基于ApacheArrow的。Polars有两个API,一个是EagerAPI,一个是LazyAPI。其中,EagerAPI的使用与Pandas类似,语法差别不大,执行后可以立即生成结果。LazyAPI就像Spark,先将查询转化为逻辑计划,然后对计划进行重组和优化,以减少执行时间和内存使用。安装Polars,使用百度pip源。#安装polarspipinstallpolars-ihttps://mirror.baidu.com/pypi/simple/安装成功后开始测试,对比一下Pandas和Polars的数据处理情况。使用某网站注册用户的用户名数据进行分析,包括一个CSV文件,大约有2600万个用户名。文件已上传公众号,获取方式见文末。importpandasaspddf=pd.read_csv('users.csv')print(df)数据如下。另外,一个自建的CSV文件用于数据集成测试。importpandasaspddf=pd.read_csv('fake_user.csv')print(df)得到结果如下。先对比一下两个库的排序算法耗时。importtimeitimportpandasaspdstart=timeit.default_timer()df=pd.read_csv('users.csv')df.sort_values('n',ascending=False)stop=timeit.default_timer()print('Time:',stop-start)--------------------Time:27.555776743218303可以看到使用Pandas对数据进行排序大约耗时28s。导入timeitimportpolarsasplstart=timeit.default_timer()df=pl.read_csv('users.csv')df.sort(by_column='n',reverse=True)stop=timeit.default_timer()print('Time:',stop-start)--------------------Time:9.924110282212496Polars只用了10s左右,也就是说Polars比Pandas快2.7倍。接下来,我们来试试数据整合,垂直连接的效果。importtimeitimportpandasaspdstart=timeit.default_timer()df_users=pd.read_csv('users.csv')df_fake=pd.read_csv('fake_user.csv')df_users.append(df_fake,ignore_index=True)stop=timeit.default_timer()print('Time:',stop-start)------------------------Time:15.556222308427095使用Pandas需要15s。importtimeitimportpolarsasplstart=timeit.default_timer()df_users=pl.read_csv('users.csv')df_fake=pl.read_csv('fake_user.csv')df_users.vstack(df_fake)stop=timeit.default_timer()print('Time:',stop-start)------------------------Time:3.475433263927698Polars其实用的最多的大概是3.5s,这里Polars比Pandas快4.5倍。通过以上对比,Polars在处理速度上表现得相当不错。可以作为大家以后处理数据的另一种选择~当然,Pandas已经存在了12年,已经形成了非常成熟的生态系统,支持很多其他的数据分析库。Polars是一个比较新的库,还有很多不足。如果您的数据集对于Pandas来说太大而对于Spark来说又太小,那么Polars是您可以考虑的一个选项。以上就是本次分享的全部内容。如果觉得文章还不错,请关注公众号:Python编程学习圈,每日干货分享,或者去编程学习网了解更多编程技术知识。