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 相关文章推荐
Mac 上切换Python多版本
Jun 17 Python
Python实现好友全头像的拼接实例(推荐)
Jun 24 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
多个应用共存的Django配置方法
May 30 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
浅谈python之新式类
Aug 12 Python
Python绘制的二项分布概率图示例
Aug 22 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
python中列表的含义及用法
May 26 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 Python
python基础之匿名函数详解
Apr 21 #Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
You might like
解析数组非数字键名引号的必要性
2013/08/09 PHP
php中使用url传递数组的方法
2015/02/11 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
pandas 时间格式转换的实现
2019/07/06 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
设计部经理的岗位职责
2013/11/16 职场文书
学雷锋宣传标语
2014/06/25 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
争先创优个人总结
2015/03/04 职场文书
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server