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中pygal绘制雷达图代码分享
Dec 07 Python
Python语言描述随机梯度下降法
Jan 04 Python
Python 读写文件的操作代码
Sep 20 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
python实现简单聊天室功能 可以私聊
Jul 12 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
Python递归调用实现数字累加的代码
Feb 25 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
Python如何解除一个装饰器
Aug 07 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
python基础之匿名函数详解
Apr 21 #Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
You might like
Zend的MVC机制使用分析(二)
2013/05/02 PHP
解析PHP可变函数的经典用法
2013/06/20 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
python网络编程学习笔记(四):域名系统
2014/06/09 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
python使用tkinter实现简单计算器
2018/01/30 Python
Django框架模板介绍
2019/01/15 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
高校学生干部的自我评价分享
2013/11/04 职场文书
业务内勤岗位职责
2014/04/30 职场文书
2015年团支部工作总结
2015/04/03 职场文书
宾馆安全管理制度
2015/08/06 职场文书
《鲸》教学反思
2016/02/23 职场文书
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server