计算机编程

利用Streamlit 做一个数据可视化工具

2022-06-23  本文已影响0人  升不上三段的大鱼

Streamlit 是一个用于机器学习、数据可视化的 Python 框架,可以非常快的做出一个在线的Web应用,不需要前端的知识。Streamlit可以做出灵活并且可交互的数据可视化,还可以向其他人分享。

Windows 安装:
在 Anaconda下创建一个环境,

pip install streamlit

运行 hello:

streamlit hello

会在浏览器中打开一个demo的页面,如果没有也可以根据命令行里的地址打开网页。在这里就可以看到数据可视化的 DataFrame Demo。



demo

想要运行自己的python程序, 输入命令:

$ python -m streamlit run your_script.py

# 相当于
$ streamlit run your_script.py

如果想做一个自己的数据可视化工具,首先需要读入数据。Streamlit支持 “magic commands”,即不需要调用write就可以在你的app里显示出来,比如:

import streamlit as st
import pandas as pd
df = pd.DataFrame({
  'first column': [1, 2, 3, 4],
  'second column': [10, 20, 30, 40]
})

df

就会得到这样的显示:


点击column还可以进行排序。利用pandas命令还可以对最大值进行高亮,df.style.highlight_max(axis=0)

如果我们的数据很多,想要筛选出来满足某个条件的数据并展示出来,就需要一个选择框:

option = st.selectbox(
    'Which number do you like best?',
     df['first column'])

'You selected: ', option
df[df['first column']==option]

呈现结果如下:


如果想要多个并列的选择:

col1, col2 = st.columns(2)
with col1:
    option1 = st.selectbox(
        'selecte first column',
        df['first column'])

with col2:
    option2 = st.selectbox(
        'selecte second column',
        df['second column'])

df[(df['first column']==option1) & (df['second column']==option2)]

每一次修改都会重新运行一次加载数据的流程,如果你的数据很大,可以用@st.cache,可以直接读缓存里加载的数据:

@st.cache  # 👈 This function will be cached
def load_data(path):
    df = pd.read_csv(path)
    return df

如果想要画图,st.line_chart(df)

其他各种可视化以及插入图片等可以查看文档,基本上都是很好理解的用法。

完整代码:

import streamlit as st
import pandas as pd

@st.cache  # 👈 This function will be cached
def load_data(path):
    df = pd.read_csv(path)
    return df

# df = load_data(path)
df = pd.DataFrame({
  'first column': [1, 2, 3, 4],
  'second column': [10, 20, 30, 40]
})

col1, col2 = st.columns(2)
with col1:
    option1 = st.selectbox(
        'selecte first column',
        df['first column'])

with col2:
    option2 = st.selectbox(
        'selecte second column',
        df['second column'])

df[(df['first column']==option1) & (df['second column']==option2)]

st.line_chart(df)

文档:
https://docs.streamlit.io/library/api-reference
教程:
https://zhuanlan.zhihu.com/p/163927661
https://juejin.cn/post/7044757186064416798
其他Demo:
https://github.com/streamlit/demo-self-driving

上一篇 下一篇

猜你喜欢

热点阅读