微信扫码
和创始人交个朋友
我要投稿
Taipy:将数据科学模型轻松转化为Web应用的利器 核心内容: 1. Taipy的创立背景和主要功能 2. Taipy与Streamlit的比较分析 3. Taipy在数据处理和Web开发中的优势
Taipy 是一个免费使用的 Python 库,任何具备基本 Python 技能的人都可以使用。它是数据科学家、机器学习工程师和 Python 程序员的得力工具。使用 Taipy,你可以轻松地将数据和机器学习模型转换为功能齐全的 Web 应用程序。在我们生活的瞬息万变的世界中,拥有强大而灵活的工具非常重要。这就是 Taipy 的作用所在!
Vincent Gosselin 和 Albert Antoine 创立了 Taipy,他们在领先的软件公司拥有丰富的背景。他们专注于应对三大挑战 —
所有与数据处理相关的职业都存在孤立的工作。
缺乏用于前端和后端开发的 Python 工具。
专注于数据科学应用,但考虑不足
使用 Streamlit 设计应用程序非常简单,只需要很少的代码,因此它是快速展示原型的绝佳选择。任何对 Python 语法有基本了解的人都可以使用它。
Taipy 同样简单、清晰、优雅,易于开发。虽然添加超链接和视觉元素等任务可能需要对 markdown 有一定了解,但 Taipy 提供了灵活性并允许轻松参数化。
Streamlit 遵循 Web 应用程序的标准设计模板,因此很难使用 CSS 和 HTML 更改应用程序的布局。相比之下,Taipy 非常灵活,可以轻松调整视觉元素的显示属性,而无需具备 CSS 方面的专业知识。
Streamlit 主要依靠简单的前端框架进行应用程序控制和设计。另一方面,Taipy 为创建应用程序的后端提供专门支持,从而促进场景、管道和版本控制的高效创建、组织和处理。Taipy 的核心视觉元素进一步简化了前端和后端之间的联系。
Streamlit 缺乏处理大量数据的固有支持/优化。无论数据大小如何,每个 Streamlit 应用程序在后台都以相同的方式构建/编译。 Taipy 具有表格分页、图表抽取器和异步执行功能等功能,在支持大数据和重度处理方面胜过 Streamlit。
它旨在对任何类型的数据进行建模:输入、中间或输出数据、内部或外部数据、本地或远程数据、历史数据、一组参数、经过训练的模型等。
Taipy GUI
Taipy GUI 库提供了 Python 类,可让您在几分钟内轻松创建强大的 Web 应用程序。
在 GUI 类中,你可以创建多个页面,你可以在其中放置文本和图形。这些元素可以动态显示应用程序变量的状态,为用户提供相关信息。用户可以与这些元素交互以触发应用程序代码、更改显示的信息、生成更多数据或移动到不同的页面。
网页由你提供的模板文本文件构建,其中包含显示应用程序数据的占位符。这些视觉和交互元素称为视觉元素。
Taipy 支持两种模板格式,由 Markdown 和 Html 类处理,用于描述页面内容。基本思想是根据需要创建页面,为它们分配名称以便于访问,并将它们提供给应用程序中的 GUI 实例。
当你使用 GUI 的 run()
方法时,它会启动一个 Web 服务器,允许客户端连接并请求页面。然后 Taipy 将创建的页面转换为发送回客户端的 HTML 内容,使用户能够查看并与应用程序界面交互。
数据节点
在 Taipy Core 中,数据节点是一个至关重要的概念。它不保存实际数据,而是包含访问和修改数据所需的所有基本信息——一种数据集描述符或数据引用。
文本
数值
参数的列表、元组、集合或字典
自定义 Python 对象(如数据框或数据类)
来自 JSON、CSV、Pickle 或 Parquet 等文件的内容
来自一个或多个数据库表的数据
任何其他形式的数据
其目的是对各种数据类型进行建模,无论它们是输入、中间或输出数据、内部或外部、本地或远程、历史数据、一组参数、经过训练的模型等等。
任务
Taipy 中的任务是开发人员打算执行的 Python 函数。它表示开发人员打算在序列中实现的步骤之一。
鉴于任务代表一个函数,它可以接收一组参数作为输入并产生一组结果作为输出。每个输入参数和输出结果都被视为一个数据节点。
任务的特征(包括输入数据节点、输出数据节点和 Python 函数)由任务配置 (TaskConfig) 指定。创建新任务时必须提供此配置。(有关配置的更多详细信息,请参阅配置文档。)
作业
可以发送任务、序列和场景等实体以供执行。提交场景时,它会启动其包含的所有任务的提交。同样,提交序列会触发该序列内所有任务的执行。
每次提交任务以供执行时,都会生成一个新的作业。作业代表任务的单一执行实例。它包含与任务执行相关的所有相关信息,例如创建日期、执行状态、用户函数日志消息以及可能发生的任何异常堆栈跟踪。
场景
Taipy 场景表示具有一致数据和参数的业务问题。
每个场景都包含一个可提交执行的有向无环图 (DAG)。此 DAG 是一组连接数据节点的任务,可以通过定义序列将其进一步划分为较小的图以供执行。序列是来自场景任务集的连接任务的子集,形成可独立提交的较小的可执行 DAG。此外,场景可能包含不属于场景 DAG 的额外数据节点,表示与场景相关的额外数据。但是,场景的执行不会计算这些额外的数据节点。
用户分析了初始场景后,他们可能想要调整输入数据节点(不包括中间节点和输出节点),重新运行相同的序列或整个场景,并比较结果。
这涉及创建新场景、调整输入数据、执行该场景,然后将结果与第一个场景进行比较。
此迭代过程可以在多个场景中重复,从而可以彻底探索和分析问题的各种版本。
周期
数据应用程序通常解决遵循特定时间周期的重复性业务挑战。
商店 X 的每周销售数据预测。
公司 A 的供应链的每月总体规划。
为了满足这一需求,Taipy 引入了“周期”(或工作周期)的概念,表示这种时间模式的单次迭代。 每个周期都有一个开始日期和持续时间,由场景的选定时间频率决定。在 Taipy 中,场景可以具有以下频率:
Frequency.DAILY
Frequency.WEEKLY
Frequency.MONTHLY
Frequency.QUARTERLY
Frequency.YEARLY
创建新场景时,它会链接到与其频率和创建日期相匹配的特定周期。
范围
[图片] 数据节点的范围由具有以下值的枚举确定:
Scope.SCENARIO(默认值)
Scope.CYCLE
Scope.GLOBAL
每个数据节点都拥有一个范围,这是由 DataNodeConfig 定义的属性,指示数据节点在实体图中的可见性。在此图中,每个节点都是一个或多个父节点的一部分。数据节点与单个周期内的至少一个场景相关联。
简而言之:
具有 Scope.SCENARIO 的数据节点可以由单个场景中的多个任务和序列使用,但不能成为另一个场景的任务或序列的一部分。
Scope.CYCLE 的数据节点可以在一个周期内的所有任务、序列和场景之间共享,但不能与不同周期的任务、序列或场景共享。
Scope.GLOBAL 的数据节点可以由任何任务、序列和场景共享,无论它们的周期如何。
Taipy Studio 是 Visual Studio Code 的一个扩展,它显著简化了 Taipy 应用程序的开发,重点关注两个关键领域:
构建配置:
对于 Taipy Core 功能,创建 Taipy 配置至关重要。这涉及声明 DataNode 配置、任务配置等。
应用程序执行通常从制作依赖于这些配置元素的实体开始。
Taipy Studio 具有一个图形编辑器,可以创建和配置存储在 TOML 文件中的元素。这些文件由 Taipy 应用程序在运行时加载。
编辑器将序列和场景表示为图形,其中节点代表数据节点或任务。
在配置文件版本页面上探索有关编辑 Taipy 配置文件的更多详细信息。
使用 Markdown 定义 Taipy GUI 页面内容:
Taipy GUI 利用 Markdown 语法的增强实现,允许定义应用程序页面的视觉元素。
鉴于可用的视觉元素种类繁多,手动输入所有内容可能会很麻烦。Taipy Studio 提供代码完成功能,以帮助填充元素定义文本片段。
检测 Markdown 文本中的拼写错误和错误可能具有挑战性。 Taipy Studio 会识别这些问题并在“问题”视图中报告它们,通常会提供“快速修复”操作以快速解决语法问题。
当前项目包含任何带有 .toml 扩展名的文件(假定为 Taipy 配置文件)。
当前项目包含任何带有 .md 扩展名的文件(假定为 Taipy GUI 页面定义页面)。
当前项目包含任何带有 .py 扩展名的文件(可能包含定义 Taipy GUI 页面的字符串的 Python 源文件)。
使用“视图 > 打开视图…”菜单选项明确打开 Taipy 配置视图时。
以下是Taipy 中可用控件的列表:
文本
[图片] 按钮 [图片]
输入[图片]
数字[图片]
滑块[图片]
切换[图片]
日期[图片]
文件下载[图片]
文件选择器[图片]
图像[图片]
指示器[图片]
菜单[图片]
导航栏[图片]
选择器[图片]
状态[图片]
表格[图片]
对话框[图片]
树[图片]
图表[图片]
以下是Taipy 中所有可用块元素的列表:零件
[图片]
可展开[图片]
布局[图片]
窗格[图片] 6、Taipy安装
使用 pip 安装 taipy 库:
pip install taipy
以下示例展示了 Taipy 分析 CSV 文件并提供富有洞察力的演示的能力。它充分利用了 Taipy 的功能,涵盖了前端和后端开发。
虽然此演示中的后端涉及一个由单个任务组成的简单管道,但需要注意的是,Taipy 旨在构建具有多个任务的更复杂的管道。
在这种情况下,管道(在 Taipy 中称为“场景”)根据所选类型过滤电影数据。对类型选择的任何修改都会触发管道的自动运行,显示一个图表,其中包含该类型中最受欢迎的七部电影。
import taipy as tp
import pandas as pd
from taipy import Config, Scope, Gui
# Taipy Scenario & Data Management
# Filtering function - task
def filter_genre(initial_dataset: pd.DataFrame, selected_genre):
filtered_dataset = initial_dataset[initial_dataset["genres"].str.contains(selected_genre)]
filtered_data = filtered_dataset.nlargest(7, "Popularity %")
return filtered_data
# Load the configuration made with Taipy Studio
Config.load("config.toml")
scenario_cfg = Config.scenarios["scenario"]
# Start Taipy Core service
tp.Core().run()
# Create a scenario
scenario = tp.create_scenario(scenario_cfg)
# Taipy User Interface
# Let's add a GUI to our Scenario Management for a full application
# Callback definition - submits scenario with genre selection
def on_genre_selected(state):
scenario.selected_genre_node.write(state.selected_genre)
tp.submit(scenario)
state.df = scenario.filtered_data.read()
# Get list of genres
genres = [
"Action", "Adventure", "Animation", "Children", "Comedy", "Fantasy", "IMAX"
"Romance","Sci-FI", "Western", "Crime", "Mystery", "Drama", "Horror", "Thriller", "Film-Noir","War", "Musical", "Documentary"
]
# Initialization of variables
df = pd.DataFrame(columns=["Title", "Popularity %"])
selected_genre = "Action"
## Set initial value to Action
def on_init(state):
on_genre_selected(state)
# User interface definition
my_page = """
# Film recommendation
## Choose your favorite genre
<|{selected_genre}|selector|lov={genres}|on_change=on_genre_selected|dropdown|>
## Here are the top seven picks by popularity
<|{df}|chart|x=Title|y=Popularity %|type=bar|title=Film Popularity|>
"""
Gui(page=my_page).run()
使用 Taipy Cloud,我们可以部署 Taipy 应用程序。
Taipy 为寻求打造高度特定用户体验的开发人员提供了广泛的自定义选项。同时,它为那些想要快速创建简单应用程序的人提供了合理的默认设置。
使用 Taipy GUI,开发人员可以毫不费力地创建多页应用程序,处理各个页面之间的共享状态,应用 CSS 样式,以及许多其他多功能功能。Taipy 的学习曲线比 Streamlit 略高,但提供的自定义功能使其成为非常好的权衡。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-02-21
Grok 3 吐槽 AI 现状,放飞自我!
2025-02-20
10个实际例子学习如何使用Cursor
2025-02-20
游戏设计提示词 - RPG游戏框架设计
2025-02-19
WPS接入DeepSeek指南:告别繁忙报错,接入免费稳定高速API!
2025-02-19
Trae AI:AI编程新时代,解锁无限可能!
2025-02-19
吴恩达的 AI Agent 的四种工作流模式,我与 AI 总结几张图后更通透了(讲人话版)
2025-02-19
AI搜索,将顺手颠覆整个内容产业
2025-02-19
DeepSeek编程实战:3D库存可视化系统之线上数据对接
2024-09-04
2024-09-26
2024-10-30
2024-09-03
2025-01-25
2024-10-30
2024-12-25
2024-12-11
2024-09-06
2024-08-18