构建交互式数据框架:使用Gradio的Dataframe模块

news2024/12/24 2:41:37

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

博主原文链接:https://www.yourmetaverse.cn/nlp/369/

请添加图片描述

(封面图由文心一格生成)

构建交互式数据框架:使用Gradio的Dataframe模块

Gradio是一个功能强大且易于使用的库,可帮助您构建交互式界面和部署机器学习模型。其中的Dataframe模块为数据框架提供了一种类似于电子表格的组件,可用于接受或显示2D输入。本文将介绍Gradio的Dataframe模块及其常用方法change、input和select,帮助您了解如何使用该模块构建交互式数据框架。

Dataframe模块简介

Gradio的Dataframe模块允许用户通过类似于电子表格的界面进行数据输入和显示。它可以接受上传的电子表格数据,并将其表示为pandas.DataFrame、numpy.array、List[List]或List等数据类型。同时,它还可以将数据以电子表格的形式呈现,期望接收pandas.DataFrame、numpy.array、List[List]、List、带有"data"键(可选地还有"headers"键)的字典,或指向CSV文件的路径作为输出。

Dataframe模块的常用参数包括:

  • value:默认值,作为一个二维值列表。如果是可调用对象,该函数将在应用加载时被调用,用于设置组件的初始值。
  • headers:字符串列表,用于指定列的标题名称。如果为None,则不显示列标题。
  • row_count:限制输入行数并决定用户是否可以创建新行。元组的第一个元素是一个整数,表示行数;第二个元素应为’fixed’或’dynamic’,表示新行的行为。如果传递一个整数,行数默认为’dynamic’。
  • col_count:限制输入列数并决定用户是否可以创建新列。元组的第一个元素是一个整数,表示列数;第二个元素应为’fixed’或’dynamic’,表示新列的行为。如果传递一个整数,列数默认为’dynamic’。
  • datatype:表格中值的数据类型。可以为整个表格提供单个字符串,也可以作为字符串列表按列提供。有效的数据类型包括"str"、“number”、“bool”、“date"和"markdown”。
  • type:组件返回的值的类型。可选值为"pandas"(pandas DataFrame)、“numpy”(numpy数组)或"array"(Python数组)。
  • max_rows:一次显示的最大行数。设置为None表示无限制。
  • max_cols:一次显示的最大列数。设置为None表示无限制。
  • overflow_row_behaviour:当出现溢出行时的行为。如果设置为"paginate",将创建分页以显示溢出行;如果设置为"show_ends",将显示起始和结束行,并截断中间行。
  • label:组件在界面中的名称。

其他可选参数包括scalemin_widthinteractivevisibleelem_idelem_classeswrap等。

示例代码

以下是一个使用Dataframe模块的示例代码:

import gradio as gr


def filter_records(records, gender):
    return records[records["gender"] == gender]


demo = gr.Interface(
    filter_records,
    [
        gr.Dataframe(
            headers=["name", "age", "gender"],
            datatype=["str", "number", "str"],
            row_count=5,
            col_count=(3, "fixed"),
        ),
        gr.Dropdown(["M", "F", "O"]),
    ],
    "dataframe",
    description="Enter gender as 'M', 'F', or 'O' for other.",
)

if __name__ == "__main__":
    demo.launch()

change方法

Dataframe模块的change方法用于监听组件值的变化。当用户输入或函数更新导致组件值发生变化时,将触发该方法。通过调用change方法,您可以将一个函数与Dataframe组件关联起来,并在组件值发生变化时执行相应的逻辑。

常用参数包括:

  • fn:要关联的函数,通常是一个机器学习模型的预测函数。该函数的每个参数对应一个输入组件,函数应返回单个值或一个与输出组件对应的值元组。

除了fn参数外,change方法还支持其他参数,如inputsoutputsapi_namestatus_trackerscroll_to_outputshow_progressqueuebatchmax_batch_sizepreprocesspostprocesscancelsevery等,用于定义函数的行为和触发逻辑。

input方法

Dataframe模块的input方法用于监听用户对组件值的更改。当用户更改组件的值时,将触发该方法。通过调用input方法,您可以将一个函数与Dataframe组件关联起来,并在用户更改组件值时执行相应的逻辑。

参数与change方法相似,包括fninputsoutputsapi_namestatus_trackerscroll_to_outputshow_progressqueuebatchmax_batch_sizepreprocesspostprocesscancelsevery等。

select方法

Dataframe模块的select方法用于监听用户选择数据框架中的单元格事件。当用户选择数据框架中的单元格时,将触发该方法。通过调用`select

`方法,您可以将一个函数与Dataframe组件关联起来,并在用户选择单元格时执行相应的逻辑。

参数与changeinput方法类似,包括fninputsoutputsapi_namestatus_trackerscroll_to_outputshow_progressqueuebatchmax_batch_sizepreprocesspostprocesscancelsevery等。

参数详解

Dataframe组件的参数

参数数据类型默认值描述
valuelist[list[Any]] | Callable | NoneNone默认值为二维值列表。如果是可调用对象,则在应用程序加载时调用该函数以设置组件的初始值。
headerslist[str] | NoneNone字符串头名称列表。如果为None,则不显示标题。
row_countint | tuple[int, str](1, ‘dynamic’)输入的行数限制和用户是否可以创建新行。元组的第一个元素是整数,表示行数;第二个元素应为’fixed’或’dynamic’,表示新行的行为。如果传递整数,则行默认为’dynamic’。
col_countint | tuple[int, str] | NoneNone输入的列数限制和用户是否可以创建新列。元组的第一个元素是整数,表示列数;第二个元素应为’fixed’或’dynamic’,表示新列的行为。如果传递整数,则列默认为’dynamic’。
datatypestr | list[str]“str”表格中值的数据类型。可以为每个列提供字符串列表,也可以为整个表格提供单个字符串。有效的数据类型包括"str"、“number”、“bool”、“date"和"markdown”。
typestr“pandas”组件返回的值的类型。"pandas"表示返回 pandas DataFrame,"numpy"表示返回 numpy 数组,"array"表示返回 Python 数组。
max_rowsint | None20一次显示的最大行数。将其设置为 None 表示无限制。
max_colsint | NoneNone一次显示的最大列数。将其设置为 None 表示无限制。
overflow_row_behaviourstr“paginate”如果设置为"paginate",将为溢出行创建页面。如果设置为"show_ends",将显示初始行和最后一行,并截断中间行。
labelstr | NoneNone组件在界面中的名称。
everyfloat | NoneNone如果value是可调用对象,在客户端连接打开时每隔 every 秒运行该函数。否则没有影响。必须启用队列。可以通过此组件的 .load_event 属性访问事件(例如,取消事件)。
show_labelboolTrue如果为 True,则显示标签。
scaleint | NoneNone相对于同一行中相邻组件的宽度比例。例如,如果组件 A 的 scale=2,组件 B 的 scale=1,则组件 A 的宽度是组件 B 的两倍。应为整数。
min_widthint160最小像素宽度,如果屏幕空间不足以满足此值,则换行。如果某个 scale 值导致该组件比 min_width 更窄,则首先将尊重 min_width 参数。
interactivebool | NoneNone如果为 True,则允许用户编辑数据表;如果为 False,则只能用于显示数据。如果未提供此参数,则根据组件用作输入还是输出来推断该值。
visibleboolTrue如果为 False,则隐藏组件。
elem_idstr | NoneNone可选字符串,用作此组件在 HTML DOM 中的 id。可用于定位 CSS 样式。
elem_classeslist[str] | str | NoneNone可选的字符串列表,用作此组件在 HTML DOM 中的类。可用于定位 CSS 样式。
wrapboolFalse如果为 True,则文本将在适当的情况下换行,如果为 False,则表格将水平滚动。默认为 False。

change方法参数

参数数据类型默认值描述
fnCallable | Nonerequired需要包装的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或一个元组,元组的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone要用作输入的 gradio.components 的列表。如果函数不需要输入,则应传递一个空列表。
outputsComponent | list[Component] | NoneNone要用作输出的 gradio.components 的列表。如果函数不返回输出,则应传递一个空列表。
api_namestr | NoneNone定义此参数将在 API 文档中公开该端点。
status_trackerNoneNone-
scroll_to_outputboolFalse如果为 True,则在完成时滚动到输出组件。
show_progress‘full’ | ‘minimal’ | ‘hidden’“full”如果为 True,则在等待时显示进度动画。
queuebool | NoneNone如果为 True,则将请求放入队列(如果已启用队列)。如果为 False,则不将此事件放入队列,即使已启用队列。如果为 None,则使用 gradio 应用程序的队列设置。
batchboolFalse如果为 True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表的长度应相等(最多为 max_batch_size 的长度)。然后,函数必须返回一个元组的列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法,最大批处理在一起的输入数量(仅当 batch=True 时才相关)。
preprocessboolTrue如果为 False,则在运行 ‘fn’ 之前不运行组件数据的预处理(例如,如果使用 Image 组件调用此方法,则保持为 base64 字符串)。
postprocessboolTrue如果为 False,则在将 ‘fn’ 的输出返回给浏览器之前不运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone当触发此监听器时,要取消的其他事件列表。例如,设置 cancels=[click_event] 将取消 click_event,其中 click_event 是另一个组件的 .click 方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔 every 秒运行此事件。以秒为单位解释。必须启用队列。

input方法参数

参数数据类型默认值描述
fnCallable | Nonerequired需要包装的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或一个元组,元组的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone要用作输入的 gradio.components 的列表。如果函数不需要输入,则应传递一个空列表。
outputsComponent | list[Component] | NoneNone要用作输出的 gradio.components 的列表。如果函数不返回输出,则应传递一个空列表。
api_namestr | NoneNone定义此参数将在 API 文档中公开该端点。
status_trackerNoneNone-
scroll_to_outputboolFalse如果为 True,则在完成时滚动到输出组件。
show_progress‘full’ | ‘minimal’ | ‘hidden’“full”如果为 True,则在等待时显示进度动画。
queuebool | NoneNone如果为 True,则将请求放入队列(如果已启用队列)。如果为 False,则不将此事件放入队列,即使已启用队列。如果为 None,则使用 gradio 应用程序的队列设置。
batchboolFalse如果为 True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表的长度应相等(最多为 max_batch_size 的长度)。然后,函数必须返回一个元组的列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法,最大批处理在一起的输入数量(仅当 batch=True 时才相关)。
preprocessboolTrue如果为 False,则在运行 ‘fn’ 之前不运行组件数据的预处理(例如,如果使用 Image 组件调用此方法,则保持为 base64 字符串)。
postprocessboolTrue如果为 False,则在将 ‘fn’ 的输出返回给浏览器之前不运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone当触发此监听器时,要取消的其他事件列表。例如,设置 cancels=[click_event] 将取消 click_event,其中 click_event 是另一个组件的 .click 方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔 every 秒运行此事件。以秒为单位解释。必须启用队列。

select方法参数

参数数据类型默认值描述
fnCallable | Nonerequired需要包装的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或一个元组,元组的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone要用作输入的 gradio.components 的列表。如果函数不需要输入,则应传递一个空列表。
outputsComponent | list[Component] | NoneNone要用作输出的 gradio.components 的列表。如果函数不返回输出,则应传递一个空列表。
api_namestr | NoneNone定义此参数将在 API 文档中公开该端点。
status_trackerNoneNone-
scroll_to_outputboolFalse如果为 True,则在完成时滚动到输出组件。
show_progress‘full’ | ‘minimal’ | ‘hidden’“full”如果为 True,则在等待时显示进度动画。
queuebool | NoneNone如果为 True,则将请求放入队列(如果已启用队列)。如果为 False,则不将此事件放入队列,即使已启用队列。如果为 None,则使用 gradio 应用程序的队列设置。
batchboolFalse如果为 True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表的长度应相等(最多为 max_batch_size 的长度)。然后,函数必须返回一个元组的列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法,最大批处理在一起的输入数量(仅当 batch=True 时才相关)。
preprocessboolTrue如果为 False,则在运行 ‘fn’ 之前不运行组件数据的预处理(例如,如果使用 Image 组件调用此方法,则保持为 base64 字符串)。
postprocessboolTrue如果为 False,则在将 ‘fn’ 的输出返回给浏览器之前不运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone当触发此监听器时,要取消的其他事件列表。例如,设置 cancels=[click_event] 将取消 click_event,其中 click_event 是另一个组件的 .click 方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔 every 秒运行此事件。以秒为单位解释。必须启用队列。

结语

通过Gradio的Dataframe模块,您可以轻松构建交互式数据框架,使用户能够方便地输入和显示数据。通过change、input和select等方法,您可以为Dataframe组件添加监听器,实现对组件值变化的响应和相应的逻辑处理。希望本文对您理解和使用Gradio的Dataframe模块有所帮助!


❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

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

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

相关文章

查找算法-线性搜索

线性搜索 简介 线性搜索是一种简单的搜索算法,也被称为顺序搜索。它从数据集的起始位置开始,逐个比较每个元素,直到找到目标元素或遍历完整个数据集为止。如果目标元素存在于数据集中,线性搜索会返回该元素的位置或索引&#xf…

照片如何转存到手机笔记中?具体方法教程在这里

传统的笔记形式一般是以文字的形式记录,通常是在一个笔记本中写下自己的所感所想、工作、生活等方面的内容。有时也有人会选择贴上照片,成为个人回忆的重要资料。 而随着手机笔记的出现,很多人选择使用它来记录,因为我们可以随时…

小米 红米 Redmi note11 4G 5G 手机解锁BL 秒BL解锁 教程 跳过168小时 selenes evergo线刷机包下载

红米(Redmi)Note 11 5G 手机BL解锁 红米note11 4G/5G 秒解锁BL锁 方法 教程 跳过168小时 新版本 selenes evergo 红米Note11系列版本非常多,从4G开始一直到后面出现的11R,我们常见的机型有红米 Note11/11Pro/11Pro/11SE/11R等等&…

管理类联考——数学——知识篇——公式——最难记

立方和与立方差公式 a 3 b 3 ( a b ) ( a 2 ∓ a b b 2 ) a^3b^3(ab)(a^2∓abb^2) a3b3(ab)(a2∓abb2) 一元二次方程求根公式 x − b b 2 − 4 a c 2 a , b 2 − 4 a c ≥ 0 x\frac{-b\sqrt{b^2-4ac}}{2a},\sqrt{b^2-4ac}≥0 x2a−bb2−4ac ​​&…

蓝牙模块(HC-05/HC-06)详解

这里写目录标题 0. 蓝牙概述蓝牙技术的特点 1. 常见的蓝牙模块2. HC-05/HC-062.1 概念2.2 区别 3. STM32使用HC-05通信3.1 方法3.2 示例代码 0. 蓝牙概述 蓝牙(Bluetooth)是一种用于无线通信的技术标准,允许设备在短距离内进行数据交换和通信…

初学mybatis(七)缓存

学习回顾:初学mybatis(六) 一、简介 1、什么是缓存 [ Cache ]? 存在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询&#x…

6应用层-6.2【实验】【计算机网络】

6应用层-6.2【实验】【计算机网络】 前言推荐6应用层知识一、DNS常用记录类型:二、nslookup命令的用法 6.1 Web服务与FTP服务配置6.2 DNS域名系统配置实验目的实验内容及实验环境实验原理实验过程1.搭建如图所示的网络拓扑2.测试网络连通性3.在服务器上启用DNS服务&…

腾讯云部署tomcat问题--使用localhost访问没问题但是使用公网访问就有问题

1、使用localhost访问没问题。 2、使用公网访问就有问题 3、解决方案 3.1设置了一个规则, 3.2查看页面,访问OK

如何在 Shadow 插件化框架中动态加载和调用插件中的方法

Shadow是一种Android插件化框架,它允许将应用功能模块以插件的方式集成到宿主应用中。插件化是指将应用的不同模块打包成独立的插件,可以在运行时动态地加载和卸载这些插件,从而实现动态扩展和灵活组合功能。 Shadow插件化框架采用了类加载器…

Jenkins全栈体系(一)

Jenkins Jenkins,原名 Hudson,2011年改为现在的名字。它是一个开源的实现持续集成的软件工具。 第一章 GitLab安装使用 官方网站:https://about.gitlab.com/ 安装所需最小配置 内存至少4G https://docs.gitlab.cn/jh/install/requireme…

上海声通团队在WeNet中开源Branchformer

上海声通信息科技股份有限公司作为交互式人工智能市场的领导者,具有极强的技术优势和突出的产品特点。公司基于自研的融合通信及人工智能两项核心技术,打造了丰富的、高度标准化的产品模块,为客户提供高效、稳定的产品体验。公司主要的业务场…

Arduino Proteus仿真空气净化器温湿度PM2.5空气质量MQ135-0049

Arduino Proteus仿真空气净化器温湿度PM2.5空气质量MQ135-0049 Proteus仿真小实验: Arduino Proteus仿真空气净化器温湿度PM2.5空气质量MQ135-0049 功能: 硬件组成:ARDUINO -UNO-R3开发板、 LCD1602 、DHT11温湿度传感器、电位器模拟PM2.…

垃圾收集策略与算法

垃圾收集策略与算法 程序计数器、虚拟机栈、本地方法栈随线程而生,也随线程而灭;栈帧随着方法的开始而入栈,随着方法的结束而出栈。这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的问题,因…

详解C++类型转换特性(代码+详解)

C类型转换 引言1. C语言中的类型转换2. 为什么C需要四种类型转换 C强制类型转换1.static_cast补充 2.dynamic_cast3.const_cast4.reinterpret_cast RTTI 引言 1. C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配…

虚拟机Centos7环境下如何安装wget

一、wget简介 wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。“wget” 这个名称来源于 “World Wide Web” 与 “get” 的结合。所谓自动下载,是指 wget 可以在…

JVM oop内存模型

一、oop模型 1、非数组对象 InstaceOopDesc 2、数组对象 arrayOopDesc 2.1 基本数据类型数组 typeArrayOopDesc 2.2 引用类型数组 objArrayOopDesc 3、MarkOopDesc 存放锁信息、分代年龄等 二、对象的内存结构 对象内存结构分成三大部分 对象头 (64位操作系统&a…

软考02原码反码和补码

文章目录 前言一、原码二、反码三、补码总结 前言 机器是通过二进制来存储数据的,最好是在学习了软考01进制转换基础上开始学习原码反码和补码。 一、原码 原码通常以固定位数表示,不足补0,由于需要区分正负数所以,最高位为符号位(0为正&…

Electron中启动node服务

记一次遇到的问题,我们知道Electron 中主进程是在node环境中,所以打算在node环境中再启动一个node服务。但是直接使用exec命令启动就会卡主。对应的代码如下 // 启动Node server const startServer async () > {try {console.log(开始启动node serv…

React | 再战Redux

✨ 个人主页:CoderHing 🖥️ React.js专栏:React.js 再战Redux 🙋‍♂️ 个人简介:一个不甘平庸的平凡人🍬 💫 系列专栏:吊打面试官系列 16天学会Vue 7天学会微信小程序 Node专栏…

chatgpt赋能python:下载Python的方法及使用指南

下载Python的方法及使用指南 Python是一种高级编程语言,被广泛应用于各种领域。如果你是一名程序员或者对编程有兴趣,那么学习Python会是一个不错的选择。本文将介绍Python的下载方法,并提供使用Python的基础指南。 Python的下载方法 Pyth…