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


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

👉有问题欢迎大家加关注私戳或者评论(包括但不限于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 grdef 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.hqwc.cn/news/2450.html

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

相关文章

视频解说小程序看点小程序搭建上线,流量主对接实现广告收益

什么是视频解说小程序? 影视剪辑和解说,我们都知道有这类的抖音号,这时候就用到我们小程序了,流量主产生了收益。把视频解说上传到小程序,设置为广告观看,这样引导用户去小程序看,就产生一个广告…

配置鼠标右键菜单功能 :一键csv转excel

配置右键菜单功能 :一键csv转excel 无需点开文件,双击即可以生成新的excel文件 步骤: 1、配置Python,安装依赖库 pip install openpyxl pip install pandas2、创建Python文件 csv_to_excel.py # -*- coding:utf-8 -*- impor…

基于Java+SSM+Vue的高校校园点餐系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

2023年城市分站系统源码采用php语言

系统源码介绍: 本系统采用了php语言,根据现有了城市分布,包含了省市区,划分,具备了高级少选功能,按照每个市级城市为分站点,和主站点同样的模式。 安装方法: 快速创建几百个城市分…

Redis 事务与数据持久化

目录 一、Redis 事务 1.1 事务本质 1.2 数据库事务与redis事务 1.2.1 数据库事务 1.2.2 Redis事务 1.2.2.1 两种错误不同处理方式 1)代码语法错误(编译时异常) 2)代码逻辑错误(运行时错误) 1.2.2.2 这种做…

HPM6750系列--第三篇 搭建MACOS编译和调试环境

一、目的 在上一篇《HPM6750系列--第二篇 搭建Ubuntu开发环境》我们介绍了Ubuntu上开发HPM6750,本篇主要介绍MAC系统上的开发环境的搭建过程,整个过程和Ubuntu上基本类似。 二、准备 首先我们在Mac电脑上打开一个terminal,然后创建一个…

手搓GPT系列之 - 通过理解LSTM的反向传播过程,理解LSTM解决梯度消失的原理 - 逐条解释LSTM创始论文全部推导公式,配超多图帮助理解(中篇)

近期因俗事缠身,《通过理解LSTM的反向传播过程,理解LSTM解决梯度消失的原理 - 逐条解释LSTM创始论文全部推导公式,配超多图帮助理解》的中下篇鸽了实在太久有些不好意思了。为了避免烂尾,还是抽时间补上(上篇在此&…

Day8——操作系统基础windows

文章目录 操作系统基础操作系统的定义 什么是windows 操作系统基础 操作系统的定义 什么是windows

1分钟学会使用docker-compose部署 registry 以及可视化镜像

获取 docker-compose: curl -L https://github.com/docker/compose/releases/download/2.2.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose docekr-compose.yaml: version: 3.3services:registry-ui:image: joxit/docker-registry-ui:mainrestart: always…

Spring之Bean生命周期源码解析

系列文章目录 文章目录 系列文章目录扫描包寻找候选的组件通过组件索引寻找通过包路径扫描所有候选组件 生成Bean的名字解析设置BeanDefinition信息检查Spring容器中是否已经存在该beanName注册BeanDefinition 实例化非懒加载的单例Bean合并BeanDefinition创建非懒加载单例Bean…

线性代数克莱姆法则的几何含义

以二元一次方程组的求解为例: { a c a 1 b c b 1 c 1 a c a 2 b c b 2 c 2 \left\{\begin{array}{l} a_{c}a_{1} b_{c}b_{1} c_{1} \\ a_{c}a_{2} b_cb_{2} c_{2} \end{array}\right. {ac​a1​bc​b1​c1​ac​a2​bc​b2​c2​​ 其中 a c a_c ac​和 b c b_…

Ansible自动化运维工具之playbook剧本编写含lnmp

1.playbook的相关知识 1.1 playbook 的简介 playbook是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部…