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脚本实现DNSPod DNS动态解析域名
Feb 14 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
python 异常处理总结
Oct 18 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
简单了解django缓存方式及配置
Jul 19 Python
Python pandas实现excel工作表合并功能详解
Aug 29 Python
python 调试冷知识(小结)
Nov 11 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
Python OrderedDict字典排序方法详解
May 21 Python
python实例化对象的具体方法
Jun 17 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
python基础之匿名函数详解
Apr 21 #Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
You might like
php UTF8 文件的签名问题
2009/10/30 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php获取url参数方法总结
2014/11/13 PHP
php封装的smarty类完整实例
2016/10/19 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
[JS]点出统计器
2020/10/11 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
2015/11/04 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
python和ruby,我选谁?
2017/09/13 Python
Django REST framwork的权限验证实例
2020/04/02 Python
QML用PathView实现轮播图
2020/06/03 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
大专毕业生简历的自我评价
2013/10/20 职场文书
安全检查管理制度
2014/02/02 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
学校捐款活动总结
2015/05/09 职场文书
golang实现浏览器导出excel文件功能
2022/03/25 Golang
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL