Cree paneles interactivos con Streamlit

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Introducción

En Visualización de datos, Dashboard es la gran interfaz gráfica de usuario que le ayuda a mostrar la información de una manera altamente interactiva e informativa. Ayuda a visualizar los indicadores clave y las tendencias de los datos.

image2-9960251

Los diversos gráficos, como barras, tartas, gráficos de líneas, etc., ayudan a explorar el conjunto de datos y nos brindan información útil. Los cuadros de mando son realmente útiles para mostrar los indicadores clave de rendimiento de forma eficaz. Sin embargo, crear paneles de control siempre es una tarea tediosa para los desarrolladores.

image4-7200012

Hay algunas bibliotecas como Plotly, Bokeh en Python que le permiten crear un tablero. Pero no encontré que estos sean fáciles de crear un tablero perfecto. Finalmente, encontré algunas formas fáciles de crear un tablero que te permite crear un tablero bastante efectivo e informativo.

Streamlit

Streamlit está ganando popularidad en el aprendizaje automático y la ciencia de datos. Es una biblioteca muy fácil para crear un tablero perfecto dedicando un poco de tiempo. También viene con el servidor web incorporado y le permite implementar en el contenedor de la ventana acoplable.

Configuración de Streamlit

Primero instalemos Streamlit en nuestro sistema y ejecutemos el comando hello para verificar su condición de trabajo. Podemos salir de la aplicación en ejecución usando Ctrl + c.

$ pip install streamlit
$ streamlit hello

A continuación se muestra el símbolo del sistema, puede ver que la aplicación se está ejecutando perfectamente.

image3-5-4724581

Cuando ejecute la aplicación, el servidor localhost se abrirá en su navegador automáticamente. Esta es la página de inicio del marco de código abierto de la aplicación Streamlit.

image6-3-6317778

Importar bibliotecas

Vamos a importar las bibliotecas necesarias para trazar y mostrar información.

import streamlit as st
import pandas as pd
import numpy as np
import plotly.express as px
from plotly.subplots import make_subplots
import plotly.graph_objects as go
import matplotlib.pyplot as plt

Podemos mostrar el texto de diferentes formas. Streamlit le permite escribir el título, el encabezado y también admite varias funciones.

  1. st.title () – para establecer el título
  2. st.text () para escribir la descripción del gráfico en particular
  3. st.markdown () para mostrar el texto como rebaja
  4. st.latex () para mostrar las expresiones matemáticas en el tablero.
  5. st.write () ayuda a mostrar todo, como gráfico, marco de datos, funciones, modelo, etc.
  6. st.sidebar () se utiliza para mostrar datos en la barra lateral.
  7. st.dataframe () para mostrar el marco de datos
  8. st.map () para mostrar el mapa en un código de una sola línea, etc.

Establecer el título y el título de la barra lateral para el tablero Streamlit

  1. st.title («Panel de Covid-19 para India»)
  2. st.markdown (‘El panel visualizará la situación de Covid-19 en India’)
  3. st.markdown (‘La enfermedad por coronavirus (COVID-19) es una enfermedad infecciosa causada por un coronavirus recién descubierto. La mayoría de las personas infectadas con el virus COVID-19 experimentarán una enfermedad respiratoria leve a moderada y se recuperarán sin requerir un tratamiento especial.’ Esta aplicación le brinda el análisis de impacto en tiempo real de los casos confirmados, fallecidos, activos y recuperados de COVID-19)
  4. st.sidebar.title («Selector de visualización»)
  5. st.sidebar.markdown («Seleccione los gráficos / gráficos en consecuencia:»)

Cargar el conjunto de datos

Aquí vamos a utilizar el conjunto de datos COVID-19 para la visualización del tablero.

DATA_URL=('E:Data science ProjectsNIELIT projectcovid_19_world.csv')
@st.cache(persist=True)( If you have a different use case where the data does not change so very often, you can simply use this)

def load_data():
    data=pd.read_csv(DATA_URL)
    return data

covid_data=load_data()

Visualización de datos por casos

st.sidebar.checkbox("Show Analysis by State", True, key=1)
select = st.sidebar.selectbox('Select a State',df['state'])

#get the state selected in the selectbox
state_data = df[df['state'] == select]
select_status = st.sidebar.radio("Covid-19 patient's status", ('Confirmed',
'Active', 'Recovered', 'Deceased'))

Hemos utilizado la casilla de verificación para elegir el análisis por estados. Selectbox mostrará la lista de estados afectados por COVID-19. El botón de radio para elegir los casos Activo, Confirmado, Muerte o Recuperado.

Trazar el gráfico

def get_total_dataframe(dataset):
    total_dataframe = pd.DataFrame({
    'Status':['Confirmed', 'Recovered', 'Deaths','Active'],
    'Number of cases':(dataset.iloc[0]['confirmed'],
    dataset.iloc[0]['recovered'], 
    dataset.iloc[0]['deaths'],dataset.iloc[0]['active'])})
    return total_dataframe

state_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)

Luego de ejecutar este código podemos seleccionar los casos según el estado requerido. El método get_total_dataframe se usa para obtener el conjunto de datos para trazar el gráfico para el estado seleccionado.

Para trazar el gráfico, hemos utilizado el método de biblioteca plotly.express. Y finalmente, muestre el gráfico usando st.plotly_chart ().

El gráfico que muestra los casos de Maharashtra.

image5-5-1237804

Mostrar un marco de datos o una tabla

También podemos ver el marco de datos en la vista de tabla usando st.dataframe () y st.table ().

def get_table():
    datatable = df[['state', 'confirmed', 'recovered', 'deaths','active']].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
st.table(datatable)# will display the table

image1-6-2052062

Conclusión

Streamlit se considera la plataforma de creación de tableros de control de ciencia de datos y aprendizaje automático de más rápido crecimiento. Se considera una de las mejores bibliotecas de paneles. Puede experimentar con diferentes conjuntos de datos para crear paneles interactivos.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.