Streamlit库开发python交互式Web应用程序

news2024/11/7 7:34:57

Streamlit是一个开源的Python库,旨在帮助开发人员轻松创建数据科学和机器学习的Web应用程序。它允许您只需几行Python代码即可构建交互式Web应用程序,因此常用于创建数据驱动的应用程序、仪表板和原型。Streamlit以其简单性而闻名,通常被数据科学家和工程师用于快速分享他们的工作或为他们的数据分析创建用户友好的界面。

以下是与Streamlit相关的一些关键特点和概念:

  1. 简单的API:Streamlit提供了非常直观和简单的API,使您可以仅使用几行Python代码创建Web应用程序。您可以使用简单的函数调用创建交互元素,如滑块、文本输入和按钮。

  2. 响应式更新:Streamlit是“响应式”的,这意味着每当您更改输入参数或变量时,它会自动更新Web应用程序。您无需编写大量的事件处理代码来更新用户界面。

  3. 数据可视化:您可以使用Streamlit显示图表、绘图和表格,这使其非常适合数据分析和可视化任务。它可以与Matplotlib、Plotly和Altair等库很好地配合使用。

  4. 小部件:Streamlit提供各种小部件,如滑块、文本输入、选择框和按钮,用于与数据交互并更新应用程序内容。

  5. 自定义组件:您可以为Streamlit创建自定义组件,以扩展其功能并为您的应用程序添加独特的特性。

  6. 部署:Streamlit应用程序可以轻松部署在各种平台上,包括本地计算机、云服务(如Heroku或AWS)或专用托管服务。Streamlit Sharing也是一个官方平台,用于免费的应用程序托管。

要开始使用Streamlit,您需要使用pip进行安装:

pip install streamlit

安装完成后,以下是一个简单的Streamlit应用程序示例,用于绘制图表:

import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt

st.title("简单的csv文件内容展示程序")

# 侧边栏与用户输入
st.sidebar.header("用户输入")
file = st.sidebar.file_uploader("上传CSV文件", type=["csv"])
if file isNone:
    data = pd.read_csv(file)
    st.write(data)

    # 创建图表
    st.header("数据可视化")
    fig, ax = plt.subplots()
    ax.bar(data['Category'], data['Value'])
    st.pyplot(fig)

  1. fig, ax = plt.subplots(): 这一行创建了一个图形(fig)和一个坐标轴(ax)。plt.subplots()函数创建一个新的图形对象(fig)和一个包含一个坐标轴(ax)的子图。子图是图形中的可绘制区域,坐标轴则是子图上的坐标轴,您可以在坐标轴上绘制图表元素。
  2. ax.bar(data['Category'], data['Value']): 这一行使用ax坐标轴对象的bar方法创建柱状图。它接受两参数:X轴上的数据(data['Category'])和Y轴上的数据(data['Value'])。这将在图形中创建一组柱形,每个柱形的高度由data['Value']确定,X轴上的位置由data['Category']确定。

您可以使用以下命令运行您的Streamlit应用程序:

streamlit run your_app.py

将“your_app.py”替换为您的Python脚本的名称。

在这里插入图片描述文件内容

在这里插入图片描述
结果展示
在这里插入图片描述应用示例:单词释义查看
创建一个Python脚本,例如 vocab_app.py,然后将以下代码粘贴到脚本中:

import streamlit as st
import pandas as pd

# 创建一个Streamlit侧边栏
st.sidebar.title("英语单词学习应用")

# 在侧边栏中添加一个文本输入框,用于输入新单词
new_word = st.sidebar.text_input("输入新单词:")

# 加载或创建一个存储单词的数据框
if 'vocab' not in st.session_state:
    st.session_state.vocab = pd.DataFrame(columns=['单词', '释义'])

# 检查是否输入了新单词
if new_word:
    new_definition = st.sidebar.text_input("输入释义:")
    if new_definition:
        st.session_state.vocab = st.session_state.vocab.append({'单词': new_word, '释义': new_definition}, ignore_index=True)

# 在主界面中显示当前的单词列表
st.title("当前的单词列表:")
st.dataframe(st.session_state.vocab)

# 在主界面中添加一个文本框,用于练习已有的单词
word_to_practice = st.text_input("输入要练习的单词:")

# 在主界面中添加一个按钮,用于检查单词的释义
if st.button("检查释义"):
    word_definition = st.session_state.vocab[st.session_state.vocab['单词'] == word_to_practice]['释义'].values
    if len(word_definition) > 0:
        st.write(f"单词 '{word_to_practice}' 的释义是: {word_definition[0]}")
    else:
        st.write("未找到该单词的释义。")

# 在主界面中添加一个按钮,用于清空单词列表
if st.button("清空单词列表"):
    st.session_state.vocab = pd.DataFrame(columns=['单词', '释义'])
    st.write("单词列表已清空。")

保存脚本并在终端中运行它:

streamlit run vocab_app.py

这将启动Streamlit应用并在浏览器中打开。你可以在侧边栏中输入新单词和释义,然后点击“添加”按钮将其添加到单词列表中。在主界面中,你可以输入要练习的单词,然后点击“检查释义”按钮来查看单词的释义。你还可以点击“清空单词列表”按钮来清空单词列表。

在这里插入图片描述添加新单词,然后查询释义
在这里插入图片描述

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

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

相关文章

光影之梦:影视动画渲染的魅力

在动画世界中,光影与色彩是赋予生命与灵魂的魔法。它们将虚无的想象变为具象的画面,让故事情感跃然于屏幕之上。影视动画渲染,正是这一魔法的精妙施展,它以光影为笔,色彩为墨,勾勒出一个个绚丽多姿的梦境。…

洗地机哪个好用?2023年洗地机推荐指南

说到提高家庭幸福生活的家电,洗地机肯定是少不了的,特别对于现在快节奏的生活来说,高效率的解决家务活,而且能够大幅度的提高生活质量。在市场上,消费者面临着选择合适洗地机的难题,因为有各种型号、功能和…

德国大陆博世 ars 548 4D 毫米波雷达 window 系统或者 Ubuntu 系统通讯以及数据解析和显示程序

德国大陆博世 ars 548 4D 毫米波雷达 window 系统或者 Ubuntu ROS 系统通讯以及数据解析和显示程序

这件事,准备考PMP的都必须知道

大家好,我是老原。 新的一月,新的困惑。最近接到的咨询很多,但的确出现了差异化的特质。 以前的粉丝朋友上来就问,我现在是项目经理,主要负责产品研发,我是考PMP还是NPDP好? 现在的粉丝朋友会…

AGC电路,模拟乘法器

文章目录 AGC电路乘法器 AGC电路 注:下面三个没试过 乘法器 TI只有这一种乘法器,跟ADI的AD534一模一样 这个报告里有很多错误 做乘法器最厉害的是ADI

JUC并发编程——各种锁的理解(基于狂神说的学习笔记)

各种锁的理解 公平锁与非公平锁 公平锁:非常公平,不能够插队,先来后到 非公平锁:可以插队,比较灵活(默认都是非公平,如:synchronized,lock) // Lock lock new Reent…

从一次性销售到持续收益:低代码服务商的转型之路

随着低代码市场快速发展,低代码代理商也成为近年来快速崛起的一种新型IT服务提供商,其以敏捷、灵活和高效的优势可以有效地帮助企业加速数字化转型。然而,尽管低代码代理商们的潜力巨大,却共同面临着一个关键的挑战——与客户的合…

瑞芯微RKNN开发·yolov7

官方预训练模型转换 下载yolov7源码解压到本地,并配置基础运行环境。下载官方预训练模型 yolov7-tiny.ptyolov7.pt… 进入yolov7-main目录下,新建文件夹weights,并将步骤2中下载的权重文件放进去。修改models/yolo.py文件 def forward(sel…

【C++】:类和对象(中)之类的默认成员函数——构造函数and析构函数

1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数 默认成员函数:用户没有显式实现,编译器会生成…

系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第一部分:通信协议(2)

本心、输入输出、结果 文章目录 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第一部分:通信协议(2)前言SOAP vs REST vs GraphQL vs RPC代码优先与 API 优先HTTP 状态代码API 网关有什么作用步骤说明 我们如何设计有效和安全的 API弘…

Nautilus Chain 与 Coin98 生态达成合作,加速 Zebec 生态亚洲战略进程

目前,行业内首个模块化Layer3架构公链Nautilus Chain已经上线主网,揭示了模块化区块链领域迎来了全新的进程。在主网上线后,Nautilus Chain将扮演Zebec生态中最重要的底层设施角色,并将为Zebec APP以及Zebec Payroll规模性的采用提…

驱动day2作业

编写应用程序控制三盏灯亮灭 head.h #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0x50006000 #define PHY_LED2_MODER 0x50007000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED2_ODR 0x50007014 #define PHY_RCC 0x50000A28#endif demo1.c #includ…

海外调查问卷赚钱是真的吗?

海外问卷赚钱是真实的吗?我是橙河网络,一家问卷公司的老板,做这个行业已经2年时间了,首先给大家一个明确的回答:海外问卷调查赚钱是真实的! 海外问卷调查项目,在国内已经存在一二十年的时间了&…

21.3 Python 使用DPKT分析数据包

dpkt项目是一个Python模块,主要用于对网络数据包进行解析和操作。它可以处理多种协议,例如TCP、UDP、IP等,并提供了一些常用的网络操作功能,例如计算校验和、解析DNS数据包等。由于其简单易用的特性,dpkt被广泛应用于网…

[C语言]排序的大乱炖——喵喵的成长记

宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要…

C# Onnx Detic 检测2万1千种类别的物体

效果 lable organism benthos heterotroph cell person animal plant food artifact hop check-in dressage curvet piaffe funambulism rock_climbing contact_sport outdoor_sport gymnastics acrobatics track_and_field track jumping broad_jump high_jump Fosbury_flop …

adb 获取 Android 设备中已安装的 apk 文件

前言 今天发现手机上一个应用在应用商店已经搜索不到了,想把其推荐给朋友使用,发现不知道从哪里找原始的 apk 安装文件,记录一下。 如何提取 apk 两种方法 MT管理器导出 可以使用 MT管理器(Android 平台逆向神器),它有个 安装…

新版网站云监控计划任务系统源码+定时访问指定网址监控/更新(PHP源码)

源码简介: 新版网站云监控计划任务系统源码,能够定时访问网址监控,是更新的版本。该源码可以提供高效稳定的监控服务,免费简单使用并容易上手,这个为最新接口,能让用户更放心地进行任务监控。跟其他云任务…

SystemVerilog Assertions应用指南 Chapter1.37 使用局部变量的SVA

在序列或者属性的内部可以局部定义变量,而且可以对这种变量进行赋值。变量接着子序列放置,用逗号隔开。如果子序列匹配,那么变量赋值语句执行。每次序列被尝试匹配时,会产生变量的一个新的备份。 module cubed(enable1, a, aa, clk);input logic [7:0] a; input logic enable1,…