python Polars库的使用简介


Posted in Python onApril 21, 2021

大家好,我是小F~

很多人在学习数据分析的时候,肯定都会用到Pandas这个库,非常的实用!

从创建数据到读取各种格式的文件(text、csv、json),或者对数据进行切片和分割组合多个数据源,Pandas都能够很好的满足。

Pandas最初发布于2008年,使用Python、Cython和C编写的。是一个超级强大、快速和易于使用的Python库,用于数据分析和处理。

当然Pandas也是有不足之处的,比如不具备多处理器,处理较大的数据集速度很慢。

今天,小F就给大家介绍一个新兴的Python库——Polars。

使用语法和Pandas差不多,处理数据的速度却比Pandas快了不少。

一个是大熊猫,一个是北极熊~

GitHub地址:https://github.com/ritchie46/polars

使用文档:https://ritchie46.github.io/polars-book/

Polars是通过Rust编写的一个库,Polars的内存模型是基于Apache Arrow。

Polars存在两种API,一种是Eager API,另一种则是Lazy API。

其中Eager API和Pandas的使用类似,语法差不太多,立即执行就能产生结果。

python Polars库的使用简介

而Lazy API就像Spark,首先将查询转换为逻辑计划,然后对计划进行重组优化,以减少执行时间和内存使用。

安装Polars,使用百度pip源。

# 安装polars
pip install polars -i https://mirror.baidu.com/pypi/simple/

安装成功后,开始测试,比较Pandas和Polars处理数据的情况。

使用某网站注册用户的用户名数据进行分析,包含约2600万个用户名的CSV文件。

文件已上传公众号,获取方式见文末。

import pandas as pd

df = pd.read_csv('users.csv')
print(df)

数据情况如下。

python Polars库的使用简介

此外还使用了一个自己创建的CSV文件,用以数据整合测试。

import pandas as pd

df = pd.read_csv('fake_user.csv')
print(df)

得到结果如下。

python Polars库的使用简介

首先比较一下两个库的排序算法耗时。

import timeit
import pandas as pd

start = 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。

import timeit
import polars as pl

start = 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.924110282212496

Polars只花费了约10s,这意味着Polars比Pandas快了2.7倍。

下面,我们来试试数据整合的效果,纵向连接。

import timeit
import pandas as pd

start = 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。

import timeit
import polars as pl

start = 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.475433263927698

Polars居然最使用了约3.5s,这里Polars比Pandas快了4.5倍。

通过上面的比较,Polars在处理速度上表现得相当不错。

可以是大家在未来处理数据时,另一种选择~

当然,Pandas目前历时12年,已经形成了很成熟的生态,支持很多其它的数据分析库。

Polars则是一个较新的库,不足的地方还有很多。

如果你的数据集对于Pandas来说太大,对于Spark来说太小,那么Polars便是你可以考虑的一个选择。

文件地址:

链接:https://pan.baidu.com/s/14fFNOPomQe38RLbAUq5W7w  密码:nfqv

以上就是python Polars库的使用简介的详细内容,更多关于python Polars库的使用的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python中实现php的var_dump函数功能
Jan 21 Python
python自动格式化json文件的方法
Mar 11 Python
利用Python绘制数据的瀑布图的教程
Apr 07 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
Python探索之SocketServer详解
Oct 28 Python
Python实现调度算法代码详解
Dec 01 Python
Python Pexpect库的简单使用方法
Jan 29 Python
学python最电脑配置有要求么
Jul 05 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
Python urllib3软件包的使用说明
Nov 18 Python
python基础之类属性和实例属性
Oct 24 Python
python基础之匿名函数详解
Apr 21 #Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
You might like
php面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
php 无限分类的树类代码
2009/12/03 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
认购协议书范本
2014/04/22 职场文书
室内设计专业自荐信
2014/05/31 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
法定代表人身份证明书
2015/06/18 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python