早就听说Streamlit是数据分析和机器学习的利器,但一直没有机会尝试。最近花了些时间试用了一下,还真的非常好用!最主要的是其设计思路非常独特:开发者只需要关注于数据及服务器端编码就可以了,那些复杂的客户端交互,响应式设计等等全部由Streamlit这个框架来搞定!这让我想起了过去曾经用过的一个框架:GWT (Google Web Toolkit),其设计思路可以说和Streamlit是完全一样啊!不同之处是GWT中没有对数据分析和机器学习的支持。
下面通过一个简单的程序来演示Streamlit是如何工作的。
首先需要安装streamlit及下面需要的pandas:
pip install streamlit
pip install pandas
接下来写一个对下载数据可视化的程序:
import streamlit as st
import pandas as pd
st.write("""
## Download statistics
### Line chart
""")
# select DATE_FORMAT(date, '%Y-%m-%d') as d, count(id) as count from posts group by d;
dictionary = {'2020-06-25':34, '2020-06-26': 39, '2020-06-27': 40, '2020-06-28': 40, '2020-06-29': 42, '2020-06-30': 36}
series = pd.Series(dictionary)
st.line_chart(series)
st.write("""
### Bar chart
""")
st.bar_chart(series)
在上面程序中,演示了Streamlit的几个特点:
对Markdown的支持:在st.write中,可以直接使用markdown的语法。
客户端统计图形的生成: 可以看到,这里只需要调用line_chart和bar_chart方法,而无需担心如何将数据传送到客户端,客户端又是如何渲染这些统计图的。
其运行后的界面如下图所示:
可以看到,Streamlit还帮我们生成了保存为PNG, SVG等功能。