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应用的教程
Apr 16 Python
Python3里的super()和__class__使用介绍
Apr 23 Python
Python文件及目录操作实例详解
Jun 04 Python
Django 生成登陆验证码代码分享
Dec 12 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
Django 用户认证组件使用详解
Jul 23 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
从0到1使用python开发一个半自动答题小程序的实现
May 12 Python
Python实现敏感词过滤的4种方法
Sep 12 Python
Python实现石头剪刀布游戏
Jan 20 Python
详解Python 3.10 中的新功能和变化
Apr 28 Python
python基础之匿名函数详解
Apr 21 #Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
You might like
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
PHP设计模式之工厂模式定义与用法详解
2018/04/03 PHP
不安全的常用的js写法
2009/09/15 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
小白谈谈对JS原型链的理解
2016/05/03 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
Jquery的Ajax技术使用方法
2019/01/21 jQuery
javaScript中indexOf用法技巧
2019/11/26 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
2020/05/25 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
校园歌手大赛策划书
2014/01/17 职场文书
大学生个人求职信例文
2014/07/07 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
单位婚育证明范本
2014/11/21 职场文书
初中生毕业评语
2014/12/29 职场文书
大国崛起观后感
2015/06/02 职场文书
运动会广播稿200字
2015/08/19 职场文书
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript