前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Streamlit来制作数据可视化面板实战

用Streamlit来制作数据可视化面板实战

作者头像
用户8949263
发布2022-04-08 12:58:09
9550
发布2022-04-08 12:58:09
举报

在上回初步介绍了“steamlit”框架的基本用法之后(干货分享 | 用 Streamlit 来制作数据可视化面板教程(一)),这回我们动手来实践一下,用“streamlit”框架来制作一个可视化仪表盘,用到的数据是印度在新冠病毒的影响之下病例数据,包括了印度每个州的“死亡数据”、“治愈数据”、“确诊数据”以及“活跃病例”,感兴趣的童鞋也可以一起动手来实现一下。

01

首先导入所需要用到的模块以及读取数据

代码语言:javascript
复制
import streamlit as st
import pandas as pd
import numpy as np
import plotly.express as px
from PIL import Image

@st.cache(ttl=60 * 5, max_entries=20)
def load_data():
    data = pd.read_csv("state_wise.csv")
    return data

df = load_data()

我们用到了“pandas”模块当中的“read_csv”的方法,当然特别要指的注意的是,里面用到了“st.cache()”作为装饰器,由于考虑到可能引用的数据会时时发生变化,因此我们会每隔五分钟对缓存做一次清理,并且最多清理20次,要是引用的源数据不会经常改变,那么你可以设置为是

代码语言:javascript
复制
@st.cache(persist=True)

02

我们同时需要添加一下文字说明,以便他人更好的来理解我们所绘制的图形,例如标题、注释等等,

代码语言:javascript
复制
st.title('Covid-10 India Cases')
st.write("It shows ***Coronavirus Cases*** in India")
st.sidebar.title("Selector")
image = Image.open("2.jpg")
st.image(image, use_column_width=True)
st.markdown('<style>body{background-color:lightblue;}</style>', unsafe_allow_html=True)

visualization = st.sidebar.selectbox('Select a Chart type', ("Bar Chart", "Pie Chart", "Line Chart"))
state_select = st.sidebar.selectbox('Select a state', df['State'].unique())
status_select = st.sidebar.radio("Covid-19 patient status", ('confirmed_cases', 'active_cases',
                                                            'recovered_cases', 'death_cases'))

selected_state = df[df['State'] == state_select]
st.markdown("## **State level analysis**")

在“streamlit”中的“image”方法来读取图片,而要是我们用到下拉框则是用“st.sidebar.selectbox”方法,而要是使用单选框的话,则是用“st.sidebar.radio”方法,

03

下面我们就开始可视化的部分,分别有直方图饼图以及折线图,使用的是“plotly_express”当中的对应的方法,代码如下

代码语言:javascript
复制
state_total = get_total_dataframe(df)
if visualization == "Bar Chart":
    state_total_graph = px.bar(state_total, x = 'Status', y = 'Number of cases',
                               labels = {"Number of cases": "Number of cases in %s" % (status_select)}, color="Status")
    st.plotly_chart(state_total_graph)
elif visualization == "Pie Chart":
    if status_select == "confirmed_cases":
        st.title("Total Confirmed Cases ")
        fig = px.pie(df.iloc[1:], values=df['Confirmed'], names = df['State'])
        st.plotly_chart(fig)

04

最后我们还想将表格展示在仪表盘上,用到的是“streamlit”当中的“dataframe”方法,代码如下

代码语言:javascript
复制
def get_table():
    datatable = df[['State', 'Confirmed', 'Active', 'Recovered', 'Deaths']].sort_values(by=['Confirmed'], ascending=False)
    datatable = datatable[datatable['State'] != 'State Unassigned']
    return datatable
    
datatable = 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 dataframe

整体的效果如下图所示

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python数据分析实例 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档