很多人在学习数据分析的时候肯定会用到Pandas库,非常实用!从创建数据到读取各种格式(文本、csv、json)的文件,或者对数据进行切片、拆分以组合多个数据源,Pandas都能很好地满足。Pandas最初于2008年发布,使用Python、Cython和C编写。是一个超级强大、快速且易于使用的用于数据分析和操作的Python库。当然Pandas也有缺点,比如没有多处理器,处理大数据集很慢。今天给大家介绍一个新兴的Python库——Polars。语法与Pandas类似,但数据处理速度比Pandas快很多。一只是大熊猫,一只是北极熊~GitHub地址:https://github.com/ritchie46/polars文档:https://ritchie46.github.io/polars-book/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是您可以考虑的一个选项。
