ibis:极具潜力的Python数据分析新框架
今天要给大家介绍的Python框架叫做ibis,没错,跟著名连锁酒店宜必思同名,其作者是创造了pandas、Arrow等著名框架的Wes McKinney。

ibis的核心理念是用同一套数据框操作API,统一操纵各种主流的数据运算框架,使得用户可以更轻松更一致的构建自己的数据分析处理过程,而不是囿于不同框架之间千差万别的用法,下面我们就来一起学习其基础用法😉~

2 ibis基础用法介绍
2.1 ibis的安装
为了方便演示,我们这里使用conda或mamba创建新的虚拟环境,来安装试用ibis,以mamba为例,在终端中执行下列命令,完成演示用虚拟环境的创建及激活,并安装ibis最基础的相关模块+示例数据集模块:

验证是否安装成功:

可以看到,我们完成了对ibis的安装,当前版本为9.0.0:

2.2 ibis主要功能
2.2.1 构建具有便携性的分析逻辑
ibis本身不直接执行分析计算,当我们针对目标数据编写好对应计算逻辑的ibis代码后,实际执行时其底层会将计算逻辑自动转换到当前的计算后端中。目前ibis支持「超过20种」计算后端,均为当前「单机分析」、「分布式分析」领域的主流框架:

这使得基于ibis构建的数据分析工作流,可以在不修改代码的情况下,轻松扩展应用于任意的计算后端。
譬如,ibis默认使用DuckDB作为后端进行单机分析运算,你可以在本机上使用部分数据构建并验证业务分析逻辑后,再套用相同的代码,切换计算后端到诸如ClickHouse上执行分布式运算,这一特性也是ibis「便携性」的体现。
举个简单的例子,首先我们基于pandas生成具有一千万行记录的示例数据并导出为parquet格式:

接下来我们先使用默认的DuckDB后端,在ibis中执行一些示例运算,注意其运算耗时:

接着,我们切换计算后端为pandas,执行完全一样的计算代码,可以看到计算耗时陡增,毕竟pandas处理上千万行数据性能要远逊于DuckDB,这个例子体现出ibis强大的代码便携性:

2.2.2 充分搭配Python与SQL
ibis中另一个非常强大的功能,是其可以充分结合Python代码和SQL代码来开展分析工作,譬如,你可以将ibis分析代码直接转换为SQL语句:

也可以直接执行SQL语句开展分析:

这使得ibis可以充分联结各类最先进的计算后端,帮助分析师轻松维护业务分析逻辑。
无论你原先在使用pandas、SQL还是R进行数据分析,ibis官网文档中都提供了非常友好的使用指南,确保你可以无痛的迁移使用ibis:

ibis正处于高速迭代发展阶段,其代码仓库几乎每天都在进行新的提交活动,欢迎进行⭐支持:https://github.com/ibis-project/ibis
更多相关内容,请移步其官网学习更多:https://ibis-project.org/
相关文章:
ibis:极具潜力的Python数据分析新框架
今天要给大家介绍的Python框架叫做ibis,没错,跟著名连锁酒店宜必思同名,其作者是创造了pandas、Arrow等著名框架的Wes McKinney。 ibis的核心理念是用同一套数据框操作API,统一操纵各种主流的数据运算框架,使得用户可以…...
SQL Zoo 8+.NSS Tutorial
以下数据来自SQL Zoo 1.at Edinburgh Napier University,studying (8) Computer Science,Show the the percentage who STRONGLY AGREE.(在爱丁堡纳皮尔大学,学习“计算机科学”,显示STRONGLY AGREE的百分比࿰…...
conda pack迁移环境
文章目录 下载conda pack打包已有环境还原环境 因为有的服务器没有网络,如果想要安装自己的虚拟环境,就需要在有网络的服务器安装好环境后迁移到没有网络的服务器。conda-pack是一个命令行工具,用于打包 conda 环境,pip inatall和…...
UML建模案例分析-活动图商业建模
概述 活动图主要用来描述如何完成工作以及做什么工作。可以用活动图来描述操作、类或 用例,但是它们只能显示工作流。可以用活动图来进行商业建模,在模型中,工作、工 人、组织、对象被显示。 案例 在商业建模时,下列方面是模型要…...
C++标准模板(STL)- 低层内存管理 - 解分配函数 (operator delete, operator delete[])
低层内存管理 new 表达式是创建拥有动态存储期对象或对象数组的仅有方式,即它们拥有不受制于创建所它们在的作用域的生存期。 new 表达式通过调用分配函数获得存储。 delete 表达式销毁最终导出对象或通过 new 表达式创造的数组,然后调用解分配函数。默认…...
LeetCode 热题 HOT 100 (025/100)【宇宙最简单版】
【二叉树】No. 0124 二叉树中的最大路径和 【困难】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你…...
【mysql 第三篇章】一条 update语句是怎么持久化到磁盘上的?
首先看一下这个 SQL 语句你会不会写? 下面是说明执行这个 SQL 语句,数据库底层做了什么操作。 update users set namexxx where id10;在引擎要执行更新语句的时候,比如更新 id10 这行数据时,他会先查看数据在缓冲池中是否存在,如…...
深入探索大模型:从基础到实践,开启AI之旅
摘要: 在人工智能领域,大模型技术正成为推动创新和进步的关键力量。对于初学者而言,掌握大模型的基本概念、理论和技术是至关重要的。 本文将为你提供一个全面的学习路线,帮助你从基础知识出发,逐步深入到大模型的实践…...
题解:力扣1567 - 返回乘积为正数的最长子数组
问题描述 给定一个整数数组 nums,找出乘积为正数的最长子数组的长度。这里的子数组定义为连续元素的序列,乘积为正数指子数组中正数的个数必须大于负数的个数。 解题思路 为了解决这个问题,我们可以使用两个数组 f 和 g 分别表示以当前位置…...
009 | 上证50ETF基金数据分析及预测
项目背景 中国股市的发展历程坎坷,从最初的茫然到现在的逐步成熟,股市已经成为中国经济发展的重要标志之一。然而,当前中国股市仍存在投机行为过度和定价机制不完善等问题。为更好地理解和预测股市走势,本项目聚焦于上证50ETF基金的历史数据分析和未来走势预测。 项目目标…...
Wakanda: 1靶场复现【附代码】(权限提升)
靶机下载地址: wakanda: 1 ~ VulnHubwakanda: 1, made by xMagass. Download & walkthrough links are available.https://www.vulnhub.com/entry/wakanda-1,251/#download 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.7.0/24…...
内核函数调试
要进入 bind 函数的内部进行调试,实际上是不能直接在用户空间代码中进入内核内部的 bind 实现,因为 bind 是一个系统调用,它由内核处理。尽管如此,你可以通过以下几种方法来间接调试 bind 函数并理解它的行为: 1. 使用…...
Spring IOC使用DButil实现对数据库的操作
一、DButil、lombok、junit的简单介绍 1.dbutil dbutil是由阿帕奇提供操作数据库的插件,其核心类为QueryRunner,存在方法 .query() 查询,.update() 增删改; <!-- dbutil --> <dependency><groupId>commons-d…...
Android14音频进阶调试之命令播放mp3/aac非裸流音频(八十)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更…...
vue中怎么自定义组件
目录 一:功能描述 二:实现过程 一:功能描述 在开发过程中我们经常需要自定义组件完成特定的功能,比如用户详情页,我增加一个调整余额的按钮,点击以后需要打开一个调整余额对话框,输入调整的金…...
BM1反转链表[栈+头插法]
题目要求如下: 问题比较简单,就是将链表中的值进行反转即可。 一种比较简单的方式是使用栈链表的方式来实现,下面是相应的代码: #include <stdio.h> #include <stdlib.h> int arr[10001] {0}; struct ListNode* ReverseList(struct ListNode* head ) {if (head …...
VisionPro二次开发学习笔记10-使用 PMAlign和Fixture固定Blob工具检测孔
使用 PMAlign和Fixture固定Blob工具检测孔 这个示例演示了如何使用 PMAlign 工具和 Fixture 工具来夹持一个 Blob 工具。示例代码将检测支架右上角孔的存在。当点击运行按钮时,将读取新图像。PMAlign 工具运行并生成一个 POSE 作为输出。POSE 是一个六自由度的变换…...
学单片机怎么在3-5个月内找到工作?
每个初学者,都如履薄冰,10几年前,我自学单片机时,也一样。 想通过学习,找一份体面点的工作,又害怕辛辛苦苦学出来,找不到工作。 好在,当初执行力,还算可以,自…...
探索设计模式:观察者模式
探索设计模式:观察者模式 🧐观察者模式简介:gem:核心概念:rainbow:观察者模式的优点:truck:实现步骤1. 定义主题接口2. 实现观察者接口3. 具体主题实现4. 具体观察者实现5. 调用 :triangular_flag_on_post:总结 在实际开发过程中,设计模式的作…...
gradio之持续输入,持续输出(流式)
流式输出yield,比如一个输出控件,想要实时显示内容,用return for循环一次就返回去了。而用yield会持续更新往下执行 for i in range(length):time.sleep(8)yield 总共str(length)条语料,已运行str(i1)条 在Gradio中,某些组件&am…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
