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 22 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
django celery redis使用具体实践
Apr 08 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
简单了解python高阶函数map/reduce
Jun 28 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 Python
Python大批量搜索引擎图像爬虫工具详解
Nov 16 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
python中数组和列表的简单实例
Mar 25 Python
python基础之匿名函数详解
Apr 21 #Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
You might like
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
php中namespace及use用法分析
2016/12/06 PHP
用jscript启动sqlserver
2007/06/21 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
Django框架 信号调度原理解析
2019/09/04 Python
Python如何读取、写入JSON数据
2020/07/28 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
退学证明范本3篇
2014/10/29 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
初中化学教学反思
2016/02/22 职场文书
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
2021/11/11 HTML / CSS
springboot用户数据修改的详细实现
2022/04/06 Java/Android