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中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
python查看列的唯一值方法
Jul 17 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
Python实现基于socket的udp传输与接收功能详解
Nov 15 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
Mar 24 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
Python: glob匹配文件的操作
Dec 11 Python
python 下载文件的几种方法汇总
Jan 06 Python
python基础之匿名函数详解
Apr 21 #Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
You might like
PHPShop存在多个安全漏洞
2006/10/09 PHP
javascript 小型动画组件与实现代码
2010/06/02 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
2018/04/20 PHP
Js组件的一些写法
2010/09/10 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
Vue中"This dependency was not found"问题的解决方法
2018/06/19 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
python自动安装pip
2014/04/24 Python
python处理图片之PIL模块简单使用方法
2015/05/11 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
python爬虫可以爬什么
2020/06/16 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
COS美国官网:知名服装品牌
2019/04/08 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
工程监理应届生求职信
2013/11/09 职场文书
国际会议邀请函范文
2014/01/16 职场文书
作弊检讨书1000字
2014/02/01 职场文书
《四季》教学反思
2014/04/08 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
高考升学宴答谢词
2015/01/20 职场文书
土地租赁协议书
2015/01/29 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
Java使用JMeter进行高并发测试
2021/11/23 Java/Android