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的Flask框架来搭建第一个Web应用程序
Jun 04 Python
Python彩色化Linux的命令行终端界面的代码实例分享
Jul 02 Python
python爬虫使用cookie登录详解
Dec 27 Python
Python随机函数random()使用方法小结
Apr 29 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
python pandas修改列属性的方法详解
Jun 09 Python
python实现七段数码管和倒计时效果
Nov 23 Python
Python 3 使用Pillow生成漂亮的分形树图片
Dec 24 Python
详解Python中pyautogui库的最全使用方法
Apr 01 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
python 基于selectors库实现文件上传与下载
Dec 31 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 24 Python
python基础之匿名函数详解
Apr 21 #Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
You might like
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
微信小程序开发探究
2016/12/27 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
Python测试模块doctest使用解析
2019/08/10 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
企业演讲比赛主持词
2014/03/18 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
婚宴领导致辞
2015/07/28 职场文书
领导干部学习心得体会
2016/01/23 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
一条 SQL 语句执行过程
2022/03/17 MySQL