如果有人告诉您可以使用150-200行代码创建交互式Web应用程序,该怎么办? 有趣的权利。 Streamlit为您提供了使用简单的python脚本和一些streamlit调用来创建漂亮的Web应用程序的相同机会。

Streamlit是一个开放源代码框架,用于以最快的方式创建数据科学和机器学习应用程序以进行数据探索。 我最喜欢streamlit的地方是它为您提供了实时编码体验。 您可以启动流式应用程序,并且每次保存时,您都会看到代码同时反映在浏览器中。 整齐吧!

在这篇文章中,我们将为印度的Covid-19 Impact Analysis构建一个Streamlit Web应用程序。 我已经创建了完整的网站,您可以在这里浏览它-www.corona-updates.in。 我们不会深入研究Pandas,但是本教程将更侧重于Streamlit。 我们将研究一些Pandas库函数,但将深入探讨Streamlit。 因此,让我们开始吧!

要求:

· Streamlit

· Pandas

· plotly.express

使用pip安装streamlit:

pip install streamlit

安装完成后,您可以通过运行示例应用程序对其进行测试。

streamlit hello

您可以使用以下命令运行名为app.py的流式Web应用程序:

streamlit run app.py

精通Streamlit之后,现在就创建我们的网络应用。 创建一个python文件app.py,然后导入您需要创建的库和python脚本以及streamlit。

1.导入数据库

我们正在使用以下惊人的API导入数据库,以了解Covid-19印度的影响:https://api.covid19india.org。

在这里,在load_data()方法中,我们正在使用pandas库读取.csv文件,并且通过缓存数据来提高代码效率。 但是随着Covid-19的数据不断变化,我们每5分钟或最多20个条目清除一次缓存。 如果您有一个不经常更改数据的用例,则只需使用@ st.cache(persist = True)

2.创建标题,文本内容和侧边菜单

Streamlit支持markdown,因此在我们的网络应用中使用不同的字体大小非常容易。 它还通过传递参数来支持HTML:unsafe_allow_html =对st.markdown()调用正确,因此,我们可以按需要的方式设置文本样式。

由于我们使用HTML将自定义颜色设为蓝色,因此说明显示为蓝色。 我们也可以使用标头和子标头,就像我们将st.title()用于不同的标题一样。 或者我们可以为此使用markdown。

//will also give the same result as st.title()st.markdown("#  Covid-19 Impact in India")
st.sidebar.title('Select the parameters to analyze Covid-19 situation')

3.插入复选框,单选按钮和滑块

st.sidebar.checkbox("Show Analysis by State", True, key=1)select = st.sidebar.selectbox('Select a State',data['State'])#get the state selected in the selectboxstate_data = data[data['State'] == select]select_status = st.sidebar.radio("Covid-19 patient's status", ('Confirmed','Active', 'Recovered', 'Deceased'))

· 复选框-复选框中的第一个参数定义复选框的标题,第二个参数定义True或False,即默认情况下是否选中它,第三个参数定义复选框的唯一键。

· 选择框—此选择框包含所有印第安州。 第一个参数是选择框的标题,第二个参数定义要在选择框中填充的值的列表。 在这里,第二个参数是我们之前加载的.csv文件中的列名"州"。 您可以自己打开和浏览表格。 在下一行中,我们仅从选择框中获取state_data中针对所选状态的数据条目。 我们也可以在此处传递关键参数。

· 单选按钮—仅供您参考,我们目前尚未真正在Web应用程序中使用它。 与往常一样,第一个参数是广播组的标题,第二个参数接受选项的元组。 我们也可以在此处传递关键参数。

Plotting a graph

def get_total_dataframe(dataset):    total_dataframe = pd.DataFrame({    'Status':['Confirmed', 'Active', 'Recovered', 'Deaths'],    'Number of cases':(dataset.iloc[0]['Confirmed'],    dataset.iloc[0]['Active'], dataset.iloc[0]['Recovered'],    dataset.iloc[0]['Deaths'])})    return total_dataframestate_total = get_total_dataframe(state_data)if st.sidebar.checkbox("Show Analysis by State", True, key=2):    st.markdown("## **State level analysis**")    st.markdown("### Overall Confirmed, Active, Recovered and " +    "Deceased cases in %s yet" % (select))    if not st.checkbox('Hide Graph', False, key=1):        state_total_graph = px.bar(        state_total,         x='Status',        y='Number of cases',        labels={'Number of cases':'Number of cases in %s' % (select)},        color='Status')        st.plotly_chart(state_total_graph)

方法get_total_dataframe()用于获取数据框,以绘制选定状态的图。 dataset.iloc [0] [Confirmed]将返回" Confirmed"列的第一项,并且由于我们仅传递所选状态的数据,因此在" Confirmed"," Recovered"," Active"和" Deceased"列中将只有一个条目。 (检出.csv文件)

未选中"按状态显示分析"复选框,我们不会在主屏幕上看到"状态级别分析"部分。 同样,如果选中了"隐藏图形"复选框,我们将不会看到图形。

要绘制图形,我们将使用plotly.express库的bar方法。 第一个参数是我们要绘制的数据框,第二个参数是x轴的列,第三个参数是y轴的列,如果要更改列名,则labels参数是可选的 对于图形和颜色参数,此处是根据数据框中的"状态"列对图形进行颜色编码。

最后,为了显示该图在我们的Web应用程序中,我们使用st.plotly_chart()方法。 我们也可以使用st.write()来显示图形。

5.显示数据框或表

· st.dataframe():第一张图片是st.dataframe()的结果,用于第二张图片中的同一数据集。 您还可以使用内部调用st.datframe()的st.write()。

· st.table():我们使用st.table()获得了第二张图片中的表格。 这显示了数据框中的所有数据,而没有任何滚动。

def get_table():    datatable = data[['State', 'Confirmed', 'Active', 'Recovered', 'Deaths']].sort_values(by=['Confirmed'], ascending=False)    datatable = datatable[datatable['State'] != 'State Unassigned']    return datatabledatatable = get_table()st.markdown("### Covid-19 cases in India")st.markdown("The following table gives you a real-time analysis of the confirmed, active, recovered and deceased cases of Covid-19 pertaining to each state in India.")st.dataframe(datatable) # will display the dataframest.table(datatable)# will display the table

在get_table()中,我们通过从选择框获得的状态的最高"已确认"情况获得排序后的数据框。 我们还会从数据集中删除状态为"未分配状态"的行。

而已! 是的,就是这么简单。 :)

您已经准备创建自己的Web应用程序并尝试使用Streamlit。 这篇文章是关于如何使用简单的Python脚本创建Streamlit应用程序的,我希望您喜欢它。 我创建了另一本有关如何使用AWS EC2部署此Web应用程序的详细教程。 请检查一下,让我知道您的意见。

我已经为印度的Covid-19 Impact创建了完整的Streamlit Web应用程序,并使用AWS EC2进行了部署。 您可以在这里查看它-www.corona-updates.in。 请在评论部分提供您的宝贵反馈。 谢谢 :)

(本文翻译自Nishtha Goswami的文章《Using Streamlit to create interactive WebApps from simple Python scripts》,参考:https://medium.com/swlh/using-streamlit-to-create-interactive-webapps-from-simple-python-scripts-f78b08e486e7)

datatable使用_使用Streamlit从简单的Python脚本创建交互式WebApp相关推荐

  1. 如何写python脚本抓取数据并计算_【小工具】利用Python脚本从Gaussian计算结果中提取信息...

    1.前言 高斯(Gaussian)是一个功能强大的量子化学综合软件包,所有从事计算化学相关领域的科研工作者应该都使用或者了解过这个软件.它的输出文件(.log文件)是一个文本文件,可以利用文本工具打开 ...

  2. 一个简单的Python脚本实现SOCKS5代理服务器的基本功能

    以下是一个简单的Python脚本,实现了SOCKS5代理服务器的基本功能: import socket import selectclass Socks5Proxy:def __init__(self ...

  3. 如何搭建python框架_从零开始:写一个简单的Python框架

    原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...

  4. python 基因序列提取_科学网—简单的Python脚本提取对应位置基因序列(fasta文件) - 王彬忠的博文...

    最近,用Python脚本提取,在基因号已知,位置已知条件下,相对应位置的基因序列时发现,这样很简单但是很实用的脚本,在网上却比较难找.而且,能被找到的脚本,相对于具有初级编程能力的人而言,有点难.本人 ...

  5. python db2查询_如何将DB2查询转换为python脚本

    python db2查询 Many companies are running common data analytics tasks using python scripts. They are a ...

  6. python c#_【分享】C# 调用 Python 脚本, 与 Python 调用 C# 类库

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C# 调用 Python 脚本 操作步骤 1.创建一个控制台程序. O0101_DotNetCallPython. 2.管理 Nuget 程序包,搜索 I ...

  7. 在secureCRT软件上运行一些简单的python脚本

    secureCRT支持运行.js和.vbs以及.py格式的脚本,无奈mac上识别前两个格式的脚本只能写一写python脚本,  举个简单的例子,利用脚本直接ssh连接一台机器,  在View菜单中勾选 ...

  8. python脚本创建拓扑_实验 1:Mininet --拓扑的命令脚本生成

    一.实验目的 掌握 Mininet 的自定义拓扑生成方法:命令行创建.Python 脚本编写 二.实验任务 通过使用命令行创建.Python 脚本编写生成拓扑,熟悉 Mininet 的基本功能. 三. ...

  9. python+html语音人物交互_将HTML输入传递到python脚本

    我有一个Python脚本,我想创建一个非常简单的HTML表单,有3个字段(用户名.密码和ID)和一个submit按钮.在 当我单击Submit时,我只想将这三个参数传递到Python脚本中并运行脚本. ...

最新文章

  1. rabbitmq 查询版本_基于rabbitmq解决分布式事务
  2. 检查一列数据的重复项 vba_提取重复值,但字典不是重点。
  3. php设置session 生命周期,设置session的生命周期(php)
  4. VS2012+WDK7600.16385.1 驱动环境配置(模板导出)
  5. html二叉树遍历,二叉树的遍历(前序、中序、后序、层次)
  6. BZOJ3038 上帝造题的七分钟2
  7. 虚拟机服务器一直自动关机,诡异的Vmware虚拟机自动关机故障
  8. One Day One Step 之 nothing
  9. 通过微信授权接口,获取用户微信账户信息
  10. 在Unity中制作高质量的光照效果(上)
  11. 阿里云---云开发平台的创建与部署
  12. 汇编语言里 eax ebx ecx edx esi edi ebp esp
  13. 2023年最值得关注的十大科技趋势,这些技术将迎来爆发,把握住风口和掘金机会!
  14. Word中“更新所有域”的用法
  15. css清除浮动float
  16. 什么是内容引流?内容引流要怎么做?如何做好内容引流?
  17. 编写Java程序,使用ThreadLocal类,项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款
  18. SQL Assistant简介
  19. 三种有序表的查找算法
  20. gopro媒体文件误删怎么办?gopro媒体文件删除怎么找回来

热门文章

  1. jboss架构_检查Red Hat JBoss BRMS部署架构的规则和事件(第二部分)
  2. Java中的代理设计模式
  3. 如何使用JPA和Hibernate映射JSON集合
  4. java 绑定微信号开发_Java开发中的常见危险信号
  5. Java 9,Jigsaw,JPMS和模块:个人探索
  6. 为某人命名以重新连接到您的服务器
  7. Spring Boot和数据库初始化
  8. 带有ActiveMQ和Maven的JMS Sender应用程序
  9. 使用Curator和ZooKeeper发现Hazelcast成员
  10. 清洁单元测试图案–演示幻灯片