Streamlit:快速构建可视化网页(数据科学必备)

news/2024/10/2 18:29:52

很多算法工程师在完成数据分析、模型训练或者项目总结的时候,往往只能通过ppt汇报,添加数据图表、截图模型实验结果等。如果想提供一个前端演示demo,通常可以搭建flask服务,但是flask需要学习很多前端知识,如css、html等,这又是一个深之又深的坑。那有没有什么工具能够跳过这些模块,直接提供一个可用的前端页面呢?答案是肯定的,今天给大家推荐一个轻量化、简单好用、快速上手的streamlit。

1 streamlit

1.1 什么是streamlit?

streamlit 是2019年开源的python库,在GitHub上已经超过了17k的stars了。AI算法工程师利用streamlit可以快速构建机器学习应用和高级数据分析可视化的用户界面。更多内容和介绍可以参考streamlit的官方帮助文档

1.2 快速上手

pip安装

pip install streamlit

安装好以后,执行如下命令,可以运行内置演示界面hello

streamlit hello

如果你想停止运行,可以随时在命令行里使用Ctrl+C终止应用。

然后可以创建自己的python脚本app.py

import streamlit as st
st.title("Streamlit Demo")
st.write("Hello Word!")

在python脚本的目录下,在终端中启动服务。

streamlit run app.py

执行后会在8501端口启动服务,如果启动成功则显示如下URL。

启动截图

本地浏览器打开该URL,则为刚刚创建的前端页面

前端页面

1.3复杂功能

1.3.1支持markdown语法

可以把平时写markdown的习惯保留下来,用到前端页面排版上去。

st.markdown("""
## 代码片段
import streamlit as st
import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.randn(20,3), columns=['line1', 'line2', 'line3'])
st.line_chart(data)
""")

前端输出结果:

markdown示例

1.3.2 数据展示

import streamlit as st
import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.randn(20,3), columns=['line1', 'line2', 'line3'])
st.write(data.head(10))

前端输出结果:

表格示例图

1.3.3 自带画图

import streamlit as st
import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.randn(20,3), columns=['line1', 'line2', 'line3'])
st.line_chart(data)

前端输出结果:

画图示例

streamlit支持的所有图类型如下:

  • 折线图 line_chart
  • 条形图 bar_chart
  • 面积图 area_chart

1.3.4 Matplotlib

matplotlib大家应该不陌生,这是python常用的画图工具。streamlit也支持该画图结果的展示。

import streamlit as st
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
data = pd.DataFrame(np.random.randn(20,3), columns=['line1', 'line2', 'line3'])st.title("matplotlib")
st.subheader("histogram")
fig_mp, ax_mpl = plt.subplots()
ax_mp = plt.hist(data)
plt.xlabel("x")
plt.ylabel("y")
st.pyplot(fig_mp)

前端输出结果:

matplotlib示意图

1.3.5 Plotly

import streamlit as st
import numpy as np
import pandas as pd
data = pd.DataFrame(np.random.randn(20,3), columns=['line1', 'line2', 'line3'])
import plotly.express as pxst.title("plotly")
st.subheader("histogram")
fig = px.histogram(data)
st.plotly_chart(fig)

前端输出结果:

plotly示意图

2 总结

本文主要介绍了一种适合AI工程师们开箱即用的开源前端展示工具——streamlit。介绍了streamlit的安装、运行和几种图表。

3 参考文献

  • Streamlit 数据科学必备工具
  • Python数据分析师使用低代码Streamlit实现Web数据可视化方法——入门篇

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

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

相关文章

SpringBoot项目GraalVM迁移

一些背景 一直想把项目迁移到使用GraalVM构建出的原生应用上,但是在前段时间的一次尝试后,发现很难做到,其中一个最主要原因就在于我目前手头上没有X86架构的电脑。平时我使用的是一个M1处理器的MacBook,编译出的Docker镜像架构指令集也是Arm64的,无法在我的X86服务器启动…

董浩影评

本文来自博客园,作者:东岸,转载请注明原文链接:https://www.cnblogs.com/donghao99/p/18182035

Rust | 实现 API 限速操作 Example

在这篇文章中,我们将讨论如何在 Rust 中实现 API 限速。当涉及到生产中的服务时,是为了确保不良行为者不会滥用 API——这就是 API 限速的作用所在。 我们将实现 “滑动窗口” 算法,通过动态周期来检查请求历史,并使用基本的内存 hashmap 来存储用户 IP 及其请求时间。我们…

Tasks 和算子链

Flink中的每一个操作算子称为一个Task(任务),算子的每个具体实例则称为SubTask(子任务),SubTask是Flink中最小的处理单元,多个SubTask可能在不同的机器上执行。一个TaskManager进程包含一个或多个执行线程,用于执行SubTask。 TaskManager中的一个Task Slot对应一个执行…

MT3516W-ASEMI工业电源专用MT3516W

MT3516W-ASEMI工业电源专用MT3516W编辑:ll MT3516W-ASEMI工业电源专用MT3516W 型号:MT3516W 品牌:ASEMI 封装:MTW-5 最大重复峰值反向电压:1600V 最大正向平均整流电流(Vdss):35A 功率(Pd):大功率 芯片个数:5 引脚数量:5 类型:插件整流桥、整流方桥 正向浪涌电流:45…

会充电的CANoe-赋能新能源汽车,高效完成即插即充(PnC)智能充电功能测试

ISO 15118-2标准中描述的PnC功能,可以实现插枪即充电,识别、计费信息、充电参数都通过高级别通信在EV和EVSE之间自动交换。简化了电动汽车的充电过程,提高了用户体验,为电动汽车行业带来了更智能、更便捷的充电解决方案。然而,电动汽车和充电站之间要实现自动通信和计费,…

03 插入排序

03 插入排序1.插入排序的含义类似扑克牌,假设认为0-0位置有序,再把0-1的位置变有序,循环直到所有的有序。每次拿取右侧的数字,一个一个对比放到左侧来。2.示例代码 def insertion_sort(arr):if arr is None or len(arr) < 2:returnfor i in range(1, len(arr)):# 0 ~ i-…

IR2104详解

摘要:从NMOS到半桥驱动 关键词:NMOS、半桥、死区、自举升压目录基础知识 NMOS原理 半桥控制原理 IR2104简介 示例电路 引脚定义 电路原理详解 自举升压 死区控制 总结 链接 引入:IR2104是我上手的第一个半桥栅极驱动芯片,使用两片IR2104就可以搭建一个全桥电路控制电机的正…