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轻松查到删除自己的微信好友
Jan 10 Python
Python环境下安装使用异步任务队列包Celery的基础教程
May 07 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
对Python发送带header的http请求方法详解
Jan 02 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
python如何通过twisted搭建socket服务
Feb 03 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
Python中的流程控制详解
Feb 18 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 Python
python基础之匿名函数详解
Apr 21 #Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
You might like
用PHP和ACCESS写聊天室(六)
2006/10/09 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
深入学习python的yield和generator
2016/03/10 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
质量承诺书怎么写
2014/05/24 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
人事文员岗位职责
2015/02/04 职场文书
创业计划书之宠物店
2019/09/19 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL