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聚类算法之基本K均值实例详解
Nov 20 Python
基于Python Shell获取hostname和fqdn释疑
Jan 25 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
pandas数据分组和聚合操作方法
Apr 11 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
Jun 11 Python
python微信好友数据分析详解
Nov 19 Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 Python
python实现生成Word、docx文件的方法分析
Aug 30 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 Python
Python 动态变量名定义与调用方法
Feb 09 Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 Python
Python 数据结构之十大经典排序算法一文通关
Oct 16 Python
python基础之匿名函数详解
Apr 21 #Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
You might like
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
WordPress中缩略图的使用以及相关技巧
2015/11/24 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
Python isinstance函数介绍
2015/04/14 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
Python新手如何理解循环加载模块
2020/05/29 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
班班通项目实施方案
2014/02/25 职场文书
转让协议书范本
2014/04/15 职场文书
2015个人半年总结范文
2015/03/09 职场文书
退税申请报告怎么写
2015/05/18 职场文书
西游记读书笔记
2015/06/25 职场文书
海底两万里读书笔记
2015/06/26 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
移除Selenium中window.navigator.webdriver值
2022/06/10 Python