Primera calle
Más que un informático e ingeniero, soy un ser humano. Y como ser humano, ver es una de las experiencias sensoriales más importantes y gratificantes que podemos tener. Por lo tanto, para empezar, voy a mostrar mi primer tablero creado en el marco Streamlit (con la ayuda de python, pandas y Altair).
Introducción
¿Tableros? ¿Cuadro? ¿PowerBI? ¿Por qué no usar simplemente algunas hojas de Excel?
La palabra "panel" es sin duda una palabra de moda en el ámbito de la ciencia de datos, la ingeniería de datos, la inteligencia comercial, etc. Pero, ¿qué es un tablero? ¿Y qué puedo hacer con él?
En primer lugar, cuando escuchamos la palabra tablero, uno recuerda más rápido a un policía tirando de autos en las películas, en lugar de un sistema informático lleno de gráficos. "¿No viste el exceso de velocidad en el tablero del auto?" Bueno... Un tablero es simplemente un marco visual que contiene algunos indicadores, gráficos y estadísticas clave de rendimiento. Pueden ser receptivos, interactivos y actualizados en tiempo real. Con un enfoque diferente, son herramientas para la visualización de información seleccionada en relación con un escenario de caso específico. ¿Por qué curado? Porque el sistema se usa con frecuencia y los datos deben mantenerse en un nivel esencial para evitar la sobrealimentación de la aplicación. El tiempo es crucial y cuanto más rápido se digiera la información, mejor.
Entonces… Tableau y Power BI son solo marcos para crear tableros e historias. Además, Excel se puede utilizar para crear cuadros de mando. De hecho, Excel es el abuelo de los tableros… Al final, la palabra es solo un término elegante que se usa para describir un sistema de información que contiene estadísticas.
Como dicen algunos, una imagen vale más que mil palabras, así que pasamos a la parte práctica. Terminamos la introducción aquí y pasamos a seleccionar las herramientas y elegir un conjunto de datos aleatorio para realizar EDA, luego encontrar puntos de estrés que puedan resolverse o analizarse utilizando nuestro tablero e intentar responderlos. Todo, mientras se maneja en paralelo.
La pila
Para romper eficientemente grandes cantidades de rocas, probablemente se requiera un conjunto de herramientas poderosas y dedicadas. La siguiente lista describe las diversas herramientas utilizadas en el mini proyecto.
Streamlit . Marco de código abierto que sigue tres principios fundamentales: secuencias de comandos como elementos visuales, interacción mediante el uso de componentes como variables e implementación rápida. En otras palabras, con Streamlit es posible crear un panel de control visualmente atractivo sin la necesidad de saber cómo usar marcos de estilo y front-end. Este paradigma permite que el sistema ignore los detalles de estilo y centre toda la atención en definir los KPI y qué métodos son mejores para representarlos.
Altair. Herramienta de visualización de datos. Altair tiene un objetivo similar al de Matplotlib, pero se construyó sobre un conjunto diferente de principios. El estilo de codificación sigue un paradigma declarativo y su sintaxis se parece al formato JSON.
pandas _ Biblioteca que se puede utilizar para explorar, limpiar y manipular datos tabulares. Permite unir varias tablas, completar valores faltantes, convertir, limpiar, filtrar y consultar.
Scikit-Learn . La biblioteca ofrece múltiples herramientas para el análisis de datos. Desde aprendizaje automático y modelos estadísticos, cronogramas de entrenamiento, métricas para cuantificación de errores y predicciones de datos. Mediante el uso de este Scikit-Learn, es posible analizar datos de forma rápida y sencilla. Pero ten en cuenta que los modelos implementados no son de última generación.
entumecido _ Mejora el tiempo requerido para los cálculos numéricos dentro del ecosistema de Python. Los datos nativos de Numpy consisten en matrices N-Dimensionales.
pepinillo _ Esta herramienta se utiliza para la serialización y deserialización de objetos de Python.
El conjunto de datos
El proyecto se enfoca en explorar lo que Streamlit tiene para ofrecer, no en realizar un proyecto de ciencia de datos curado de extremo a extremo. Entonces, el conjunto de datos que vamos a elegir casi se elige por pura suerte.
Nuestros hallazgos consisten en un conjunto de datos del mercado inmobiliario de Seattle (EE. UU.). Las instancias se recopilaron entre el 14 y el 15 de mayo.
Los componentes
Ahora es el momento de verificar los diversos componentes que se suman al tablero final. Verifique la implementación completa en la página de mi Github (https://github.com/LOCLuisPereira/streamlit_house_market).
Métricas iniciales de KPI
Estas métricas de KPI son lo primero que ve el usuario. Deben entregar información importante de manera concisa. Streamlit ofrece un componente similar a una tarjeta (streamlit.metric), donde se puede definir el título, el valor y un delta del KPI. Se utilizan para identificar, cuantificar y medir la fluctuación del valor.
En nuestro caso, tenemos el número total de casas y algunos otros promedios sobre el mercado inmobiliario de Seattle (como el precio promedio de la casa, el número de condiciones de los pisos, etc.).

Mapa de Seattle y distribución de casas
Streamlit tiene un componente de mapa que permite al desarrollador crear rápidamente un mapa de palabras o de una ciudad (streamlit.map). Este componente es bastante simple y no requiere requisitos complejos, ya que su grado de personalización es bajo.
Tomemos como ejemplo, para verificar la distribución de instancias en una ciudad determinada, el componente es suficiente. Pero para visualizar la distribución de clústeres y su respectivo color, se requiere otra herramienta.

Uso del gráfico de mapa de Altair para visualización de agrupamiento
El componente de mapa nativo de Streamlit usa Altair bajo el capó. Tan simple como eso. Dijimos anteriormente que este componente es plug-and-play, pero no ofrece ningún tipo de personalización. Una alternativa a la implementación nativa es usar Altair Chart y vincularlo con el componente Streamlit-Altair Chart.
La ubicación es clave. Especialmente, en el negocio del mercado inmobiliario. La misma casa puede tener su valor multiplicado por 20x solo por estar ubicada cerca del océano o por estar dentro de una gran ciudad.
Para asegurarnos de que es cierto, realizamos un experimento. Usando Scikit-Learn y sus implementaciones de K-Means, ejecutamos el algoritmo con un número diferente de grupos (de 2 a 10). La longitud y la latitud se utilizaron como características. De cada tirada, comprobamos el precio medio de la vivienda.
El paso final, la visualización, se realizó fusionando tres componentes. Un control deslizante para elegir el número deseado de grupos. Un mapa de Altair para mostrar las instancias y la ubicación de su mapa. Y un marco de datos, para mostrar el precio promedio de cada grupo.


Al final, la ubicación realmente importa. A medida que vamos del sur al norte, los precios de las casas suben. Las casas en el lado izquierdo de Seattle tienden a ser menos costosas. En el mercado inmobiliario, varios factores pueden influir en el precio. Por ejemplo, las casas en el lado derecho están más cerca del continente y es fácil navegar a otras partes de Seattle o ciudades cercanas. Esta razón no es crucial, pero puede influir en el precio final de la casa.
Grado y Condición
Este componente es simple y breve. Utilizando dos gráficos de barras, `streamlit.bar_chart`, trazamos la distribución de leyes y condiciones. Al visualizar el gráfico, concluimos que la mayoría de las instancias se encuentran en el medio (para ambos gráficos).

Trazamos estas dos características una contra la otra. Si consideramos que el puntaje promedio es neutral, entonces la mayoría de las casas tienden a estar en el lado neutral de los puntajes. Si no son neutrales, caen en una tímida puntuación positiva.

¿Qué hay de las renovaciones de la casa? Otro conjunto de KPI
Usando streamlit.metric, implementamos tres métricas de KPI en línea para analizar rápidamente los datos relacionados con las renovaciones de casas. Mostramos el número de viviendas reformadas, su representación frente al resto, y cuál es el lapso de tiempo entre el año de construcción y el de reforma.

Al mirar el tablero, encontramos que se han renovado 914 casas. Y las casas suelen restaurarse después de 56 años de su construcción.
¿Un tablero sin un gráfico de líneas? Imposible…
Los gráficos de líneas tienden a ser bastante comunes. Streamlit ofrece un componente envolvente para trazarlos de una manera rápida y sencilla. En nuestro tablero, los usamos para ver las ventas de casas por mes.

Eche un vistazo rápido... Los meses más vendidos fueron julio de 2014 y abril de 2015.
Dormitorios y Baños? ¿Apilarlos o equilibrarlos?
A veces, más no está estrechamente relacionado con mejor. Para confirmarlo o desacreditarlo, implementamos un mapa de calor que relaciona el número de dormitorios, baños y precio promedio para cada combinación de dormitorio y baño.
Al observar el nuevo gráfico, podemos ver que equilibrar el número de dormitorios y baños es fundamental. La industria favorece proporciones 1:1 y más baños que dormitorios.
Al apilar dormitorios, el precio tiende a estar en el mismo rango. Pero al agregar baños, el precio siempre tiende a aumentar.

Esto probablemente se puede explicar siguiendo un razonamiento simple. A la gente no le gusta esperar, y a la gente no le gusta compartir espacios de extrema privacidad. En resumen, permitir que los residentes e invitados tengan un mayor grado de privacidad conduce a valores más altos en las propiedades.
Tengo una propiedad en Seattle... ¿Me pueden ayudar a encontrar un precio justo para vender?
Podemos deconstruir esta pregunta en dos problemas más pequeños. ¿Qué podemos hacer para unir el flujo de información del usuario a nuestro sistema de información? ¿Y podemos usar algún algoritmo de aprendizaje automático para digerir datos y atribuir un posible precio dada la información de entrada?
Streamlit ofrece varios componentes que unen automáticamente la comunicación entre el usuario y el sistema. En este caso específico, vamos a utilizar los componentes del formulario. Este componente permite la fusión de otros componentes con el único requisito de un botón final, que activa el envío de datos.

La información del componente de formulario se introduce en dos modelos previamente entrenados. Después de la inferencia, los datos se envían al tablero y los usuarios pueden ver dos posibles estimaciones de valor.
Dado que la misión del proyecto es construir un tablero y explorar la mayoría de los componentes de Streamlit, usamos dos algoritmos de modelo de aprendizaje automático básicos, que se implementan en Scikit-Learn. Al final, tenemos una cresta bayesiana y un bosque aleatorio con una puntuación R2 de 0,54 y 0,87 en todos los datos.

Uno puede preguntarse, ¿por qué mantener un modelo con una puntuación de 0,54? Lo mantuvimos como una broma. El modelo a veces genera valores negativos. En otras palabras, el modelo nos dice que podemos comprar una casa… y recibir dinero para conservarla.
¿Qué hay dentro del marco de datos?
Para esta tarea, Streamlit ofrece tres opciones diferentes. Uno para tablas estáticas, uno para dataframe y otro para JSON. Aquí, nos centraremos en los dos últimos.
La función de Dataframe genera una tabla que permite visualizar la estructura del conjunto de datos de forma tabular. Es posible ordenar las columnas de forma ascendente o descendente, lo que mejora la visualización y la semántica de los datos.

La salida de JSON se asemeja a la función de volcado, con sangría, que es nativa de la biblioteca JSON de Python.

Ambos componentes tienen un caso de uso. El componente de marco de datos se puede utilizar para analizar información rápidamente y, por ejemplo, encontrar máximos, mínimos, verificar valores faltantes o nulos, etc. El JSON es excelente para verificar la estructura de datos y qué tipo, excepto para cada campo en el conjunto de datos.
Tomas finales
Este es el final del camino para este proyecto. No exploramos ningún algoritmo delicado o de última generación. Eran simples en la teoría y en la implementación. Pero con esta implementación, estamos en condiciones de meditar y responder preguntas sobre qué tan bueno es el marco y si es compatible con nuestra pila.
Al final, Streamlit es capaz de ofrecer lo que propone. Crear un tablero es tan fácil como escribir un guión. Los datos se muestran de forma interactiva y organizada. Aunque no lo mostramos, implementar un prototipo es rápido y fácil.
En este momento, solo podemos ver dos posibles inconvenientes. Enrutamiento y estilo. Enrutamiento para tablero de varias páginas. Estilo para ampliar el mecanismo de estilo actual y permitir un mayor grado de personalización.
Mi opinión personal sobre Streamlit es simple. Estoy muy emocionado de usarlo en mis otros proyectos. La creación de tableros prototipo o internos es rápida, los resultados son estéticamente agradables y EDA se vuelve aún más emocionante... debido a lo simple que podemos visualizar los datos en la interfaz.
Prima. ¿Qué pasa con los paneles en tiempo real?
En nuestro proyecto, no necesitábamos actualización de datos en tiempo real. Pero Streamlit ofrece métodos para implementar la visualización de datos en tiempo real. El mecanismo es sencillo. Cree un componente vacío, establezca un bucle, busque y alimente los datos... ¡Voilà! Flujos de datos continuos y en tiempo real. Vea las imágenes a continuación como una prueba de las capacidades del marco.


¡Eso! Nos vemos la próxima vez.