Python polars学习-06 Lazy / Eager API

背景

polars学习系列文章,第6篇 Lazy / Eager API
Lazy: 延迟、惰性
Eager: 即时、实时

该系列文章会分享到github,大家可以去下载jupyter文件,进行参考学习
仓库地址:https://github.com/DataShare-duo/polars_learn

小编运行环境

import sysprint('python 版本:',sys.version.split('|')[0])
#python 版本: 3.11.9import polars as plprint("polars 版本:",pl.__version__)
#polars 版本: 0.20.22

Lazy / Eager API 区别

  • Eager API(即时、实时)
    实时进行计算,每一步操作都会进行计算,类似pandas那样,每操作一步都会进行计算,得到这一步的结果,所见即所得,如果没有明确指定或者调用特定的方法之外,polars 基本都是使用该模式

  • Lazy API(延迟、惰性)
    推迟进行计算,把所有的操作步骤先记下来,Query plan(查询计划),等到需要结果时,才统一进行计算,polars 会对这些计算步骤自动进行优化,提升性能

    • pl.scan_csvpl.scan_ 函数
    • 调用DataFrame 的 .lazy 方法,转换为 Lazy 模式

Eager API 数据处理案例

df = pl.read_csv("./data/iris.csv")
df_small = df.filter(pl.col("Sepal.Length") > 5)
df_agg = df_small.group_by("Species").agg(pl.col("Sepal.Width").mean())
print(df_agg)#shape: (3, 2)
┌────────────┬─────────────┐
│ Species    ┆ Sepal.Width │
│ ------         │
│ str        ┆ f64         │
╞════════════╪═════════════╡
│ versicolor ┆ 2.804255    │
│ virginica  ┆ 2.983673    │
│ setosa     ┆ 3.713636    │
└────────────┴─────────────┘

Lazy API 数据处理案例

q = (pl.scan_csv("./data/iris.csv").filter(pl.col("Sepal.Length") > 5).group_by("Species").agg(pl.col("Sepal.Width").mean())
)df = q.collect()
print(df)#shape: (3, 2)
┌────────────┬─────────────┐
│ Species    ┆ Sepal.Width │
│ ------         │
│ str        ┆ f64         │
╞════════════╪═════════════╡
│ virginica  ┆ 2.983673    │
│ versicolor ┆ 2.804255    │
│ setosa     ┆ 3.713636    │
└────────────┴─────────────┘

在数据处理中会对Sepal.Length进行过滤,polars 在把数据加载进内存时,只会加载符合条件的数据行,同时计算时只用到了 SpeciesSepal.Width 2列,polars 只会加载这2 列到内存,进行计算

这样的话会显著降低内存和CPU的负载,从而能够在内存中容纳更大的数据集并加快处理速度

使用建议

  • 如果你是在进行探索性分析,想知道中间的每个步骤数据情况,那么可以使用 Eager 模式
  • 如果想得到最终的计算结果,那么可以使用 Lazy 模式,让polars对中间的计算进行优化,提升数据处理效率

注:在大部分情况下,Eager API 背后其实调用的是 Lazy API,Eager 模式其实也是有查询优化

历史相关文章

  • Python polars学习-01 读取与写入文件
  • Python polars学习-02 上下文与表达式
  • polars学习-03 数据类型转换
  • Python polars学习-04 字符串数据处理
  • Python polars学习-05 包含的数据结构

以上是自己实践中遇到的一些问题,分享出来供大家参考学习,欢迎关注微信公众号:DataShare ,不定期分享干货

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/856429.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

界面构件开发之RC文件

代码; #include <gtk-2.0/gtk/gtk.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <glib-2.0/glib.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);gtk_rc_parse("./mainrc");GtkWidget *winN…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 连续字母长度(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

某棋牌渗透测试

前言 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、信息收集 这里通过fofa进行收集&#xff0c;语法为&#xff1a;body某棋牌 && titlexxx 图1-1 fofa资产收集 …

Human4DiT:使用 4D Diffusion Transformer 生成自由视角人物视频。

Human4DiT&#xff0c;使用 4D Diffusion Transformer 生成自由视角人物视频。又一个根据一张图&#xff0c;生成人物动画视频的项目&#xff0c;效果如下视频所示。 给定参考图像、SMPL序列和摄像机参数&#xff0c;Human4DiT能够生成自由视图动态人体视频。 相关链接 项目地…

Ubuntu根分区在线扩容

操作系统:Ubuntu 20.04 原有分区 /dev/sda2 大小8G,扩容后 /dev/sda2 大小100G 1. 扩容前信息 系统盘为/dev/vda,共有2个分区,/dev/sda1为启动分区,/dev/sda2为根分区 root@test:~# fdisk -l /dev/sda Disk /dev/sda: 8 GiB, 8589934592 bytes, 16777216 sectors Disk …

神经网络模型---LeNet-5

一、LeNet-5 1.定义LeNet-5模型 model models.Sequential([1.1添加一个二维卷积层&#xff0c;有6个过滤器&#xff0c;每个过滤器的尺寸是5x5。输入图像尺寸是28x28像素&#xff0c;具有1个颜色通道,激活函数是relu layers.Conv2D(6, (5, 5), activationrelu, input_shape…

【Codesys】-计算开机通电运行时间,累计正常使用时间,故障停机时间

应客户要求&#xff0c;在程序添加了这个用来计算开机运行时间&#xff0c;原理就是取当前时间减去一开始记录的时间&#xff0c;没什么特别要求&#xff0c;记录一下使用的变量类型和数据写法&#xff0c;防止忘记了。 下文只写了一个开机通电运行时间的写法&#xff0c;累计…

ROS操作过程中的报错

文章目录 错误&#xff1a;E: Unable to locate package ros-noetic-desktop-full报错问题报错原因解决方法 错误2&#xff1a;ERROR: cannot download default source list from:报错问题错误原因解决办法 错误&#xff1a;E: Unable to locate package ros-noetic-desktop-fu…

查看 MAC 的 shell 配置文件

在Mac上&#xff0c;shell的配置文件主要取决于您当前使用的shell。从macOS Catalina开始&#xff0c;Mac使用zsh作为默认登录Shell和交互式Shell。以下是关于Mac上zsh shell配置文件的一些详细信息&#xff1a; 查看当前使用的shell&#xff1a; 要查看当前正在使用的shell&am…

养殖自动化温控系统:现代养殖场的智能守护神

现代农业养殖业中&#xff0c;养殖自动化温控系统已经成为提高生产效率和保障动物福利的关键技术之一。本篇文章将深入介绍养殖自动化温控系统的原理、组成、优势及其在不同类型养殖场中的应用实例&#xff0c;并展望该技术的未来发展。 一、养殖自动化温控系统概述 养殖自动…

智能制造 v3.13.12 发布,ERP、在线课堂、表白墙更新

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台]&#xff0c;适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…

Hive笔记-3

3.2.2 查看表 1) 展示所有表 (1) 语法: 语法: SHOW TABLES [IN database_name] LIKE [identifier_with_wildcards]; In database_name 写的是查哪个数据库,一般不写默认是当前数据库 Like 后面跟通配符表达式 (2) 案例: 查看在 db_hive1 数据库里有没有以 stu 开头的表 …

C++第二学期期末考试选择题题库(qlu题库,自用)

又到了期末周&#xff0c;突击一下c吧— 第一次实验 1、已知学生记录的定义为&#xff1a; struct student { int no; char name[20]; char sex; struct 注意年月日都是结构体&#xff0c;不是student里面的 { int year; int month; …

WEB前端实习日记通用

WEB前端实习日记通用 实习的第一天&#xff0c;我带着既紧张又期待的心情踏入了这家知名的互联网公司。作为一名WEB前端实习生&#xff0c;我深知自己将面临无数的挑战与机遇&#xff0c;而这本实习日记&#xff0c;便是我记录这些点点滴滴的见证。 四个方面&#xff1a;技术…

oliva-bruteforce-luks

olivaeasyLUKS v2破解、bruteforce-luks工具使用、cryptsetup使用、cap_dac_read_searcheip、mysql使用 主机发现 ┌──(kali㉿kali)-[~/桌面/OSCP] └─$ sudo netdiscover -i eth0 -r 192.168.44.148/24服务扫描 ┌──(kali㉿kali)-[~/桌面/OSCP] └─$ sudo nmap -sV -…

如何在springboot项目中引入knife4j接口文档

开发框架&#xff0c;帮助后端开发人员做后端接口测试 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案 引入依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId>&…

模电电流源相关知识总结

模电书版本为第五版&#xff1a; 一、基本电流源 1、镜像电流源 电路图&#xff1a; 电路图很好理解&#xff0c;T0和T1两个晶体管参数相近&#xff0c;即当施加相同的Ube时&#xff0c;对应的Ic也相同。 可用图中的电阻R来控制电流源的电流。 计算公式&#xff1a;Ic&…

使用Python进行深度学习:从基础到实战

使用Python进行深度学习:从基础到实战 深度学习是机器学习的一个重要分支,利用神经网络模拟人脑的学习方式来解决复杂的任务。Python凭借其丰富的库和社区支持,成为深度学习的首选编程语言。本文将介绍深度学习的基础概念、常用的Python库以及一个实战项目示例,带领读者从…

ES6数组新增API

ES6 为数组新增了一些非常有用的 API&#xff0c;这些 API 提高了数组操作的便利性和效率。以下是 ES6 给数组新增的主要 API 及其详细解释和示例&#xff1a; 1. Array.from() Array.from() 方法从类数组对象或可迭代对象创建一个新的数组实例。 const arrayLike {0: a,1:…

C# WPF入门学习番外篇——C#使用WPF连接MySQL数据库

在 C# 中使用 WPF 连接 MySQL 数据库涉及几个步骤&#xff0c;包括安装必要的库&#xff0c;配置连接字符串&#xff0c;编写代码以执行数据库操作等。下面是一个详细的入门教程&#xff0c;帮助你理解如何在 WPF 应用程序中使用 MySQL 数据库。 1. 安装 MySQL 数据库连接器 …