Análisis de Componentes Principales y Modelización
Esta aplicación es una herramienta de análisis de datos construida con Streamlit para el Concurso de Streamlit en Español 2023. La aplicación está diseñada para analizar un conjunto de datos utilizando el Análisis de Componentes Principales (PCA) y buscar modelos con las componentes principales generadas.
Con esta aplicación, los usuarios podrán explorar y visualizar su conjunto de datos de una manera interactiva, identificando las variables más importantes que contribuyen a la variabilidad de los datos. Además, podrán seleccionar las componentes principales que desean utilizar y ajustar los parámetros del modelo para obtener los resultados óptimos.
Con Streamlit, se ha creado una interfaz de usuario intuitiva y fácil de usar que permite a los usuarios cargar su conjunto de datos, realizar un análisis PCA y probar diferentes modelos para encontrar la mejor solución para sus necesidades de análisis de datos.
¡Anunciado el Concurso de Streamlit en Español!
Con requisitos nos referimos a la configuración técnica del proyecto. Si estamos trabajando con Python tenemos que describir el entorno, enumerar los paquetes utilizados y sus versiones.
En los siguientes códigos se muestra cómo trabajar con los entornos y cómo guardar la configuración del proyecto. Este es un paso muy importante ya que nos permitirá reproducir el mismo análisis en el futuro aunque cambien las versiones de los paquetes
conda activate streamlit-concurso-2023
Una forma de guardar la configuración con conda es la siguiente
conda list --export > project-package-list.txt
conda list --explicit > project-package-explicit-list.txt
conda info > project-info.txt
conda env export > project-env.yaml
Si queremos reproducir el análisis podemos crear o reproducir el mismo entorno con el siguiente comando
conda env create -f project-env.yaml
Se puede definir el nombre del nuevo entorno con una de las dos opciones siguientes
conda env create -n new-name -f project-env.yaml
conda env create --name new-name --file project-env.yaml
Y entonces se puede activar este nuevo entorno
conda activate project
Cuando no necesitemos este entorno podemos eliminarlo
conda env remove --name project
Hay dos conjuntos de datos junto con los respectivos ficheros de configuración como ejemplo. Los dos conjuntos de datos tienen la misma estructura. Una primera variable ID
identificado la observación con un código (Streamlit-concurso-2023-
), una variable GRUPO
mediante la que se asociarán las observaciones a dos grupos y un conjunto de variables (VAR-
).
-
./data/ejemplo01.xlsx
Este fichero de datos cuenta con 20 observaciones distintas y 351 variables. El fichero de configuración asociado a este conjunto de datos es./code/config_ejemplo01.yaml
. -
./data/ejemplo02.xlsx
Este fichero de datos cuenta con 50 observaciones distintas y 100 variables. El fichero de configuración asociado a este conjunto de datos es./code/config_ejemplo02.yaml
.
Los datos mostrados en ./data/ejemplo02.xlsx
se han generado mediante la función make_biclusters()
de la librerías sklearn
. El código completo se muestra a continuación.
import pandas as pd
from numpy import abs, min
from sklearn.datasets import make_biclusters
N_ROWS_ = 50
N_COLS_ = 100
N_CLUSTERS_ = 2
dt = make_biclusters(shape = (N_ROWS_, N_COLS_),
n_clusters = N_CLUSTERS_,
noise = 50,
minval = 0,
maxval = 25.0,
random_state = 42)
salida01 = pd.DataFrame(
{'ID': ['Streamlit-concurso-2023-' + str(i+1).zfill(2) for i in range(N_ROWS_)],
'GRUPO': ['Grupo A' if x else 'Grupo B' for x in dt[1][1]]})
salida02 = pd.DataFrame(dt[0],
columns = ['VAR' + str(i+1).zfill(3) for i in range(N_COLS_)])
MIN_ = min(min(salida02))
MIN_ = MIN_ + MIN_/10
salida02 = salida02 + abs(MIN_)
pd.concat([salida01, salida02], axis = 1)\
.to_excel('ejemplo02.xlsx', sheet_name = 'data', index = False)
La aplicación funcionará con cualquier set de datos siempre que se mantenga la estructura de columnas.
La planificación y la elección de las herramientas adecuadas son fundamentales en cualquier proyecto de análisis de datos o data science. Las librerías y herramientas adecuadas pueden acelerar el proceso de análisis y hacerlo más eficiente y efectivo, permitiendo a los analistas centrarse en el problema en sí y no en las tareas tediosas de manipulación y procesamiento de datos. Además, elegir las herramientas adecuadas también puede permitir la reutilización de código y facilitar la colaboración con otros miembros del equipo.
Por otro lado, una planificación adecuada puede ayudar a garantizar que el proyecto se mueva en la dirección correcta, se alcancen los objetivos establecidos y se respeten los plazos. Esto puede implicar la definición clara de los objetivos del proyecto, la identificación de las tareas necesarias para alcanzarlos y la estimación del tiempo y recursos necesarios para cada una de ellas. La planificación también puede ayudar a identificar posibles problemas o obstáculos antes de que surjan y a mitigar su impacto en el proyecto. En resumen, la elección de herramientas adecuadas y la planificación efectiva son elementos esenciales para el éxito en cualquier proyecto de análisis de datos o data science.
Python es un lenguaje de programación popular entre los científicos de datos debido a su facilidad de uso y a la gran cantidad de bibliotecas y herramientas disponibles para el análisis de datos. Con Python, es posible realizar tareas de limpieza, manipulación, análisis y visualización de datos de manera eficiente. Además, Python cuenta con bibliotecas especializadas en machine learning y deep learning, lo que lo convierte en una herramienta muy poderosa para la construcción de modelos predictivos y clasificadores. La combinación de Python con herramientas como Jupyter Notebook y Pandas hace que sea fácil explorar y visualizar los datos de manera interactiva. En resumen, Python es una herramienta imprescindible en el kit de herramientas de cualquier científico de datos moderno.
-
Python for Data Analysis de Wes McKinney (2017): Es un libro que introduce el uso de Python en el análisis de datos y en particular, en el uso de la librería pandas.
-
Python Data Science Handbook de Jake VanderPlas (2016): Un libro que cubre temas avanzados de Python para el análisis de datos, como la visualización de datos, el aprendizaje automático y la manipulación de datos con pandas.
Streamlit es una herramienta cada vez más popular en el mundo del análisis de datos y la visualización de información. Se trata de un framework open source de Python que permite construir aplicaciones web interactivas y personalizadas de manera sencilla y rápida, sin necesidad de tener conocimientos avanzados de programación web.
Con Streamlit, los científicos de datos pueden crear visualizaciones dinámicas, gráficos interactivos, paneles de control y aplicaciones de aprendizaje automático con solo unas pocas líneas de código. Además, la herramienta es altamente personalizable y ofrece una amplia variedad de widgets y opciones de configuración para que el usuario pueda ajustar la apariencia y la funcionalidad de la aplicación a sus necesidades específicas.
Streamlit también ofrece una serie de características útiles para el desarrollo de aplicaciones, incluyendo la recarga automática de la aplicación cada vez que se detecta un cambio en el código, el manejo de datos en caché para mejorar el rendimiento y la integración con otras herramientas de Python como pandas, matplotlib y scikit-learn.
En resumen, Streamlit es una herramienta valiosa para los científicos de datos que buscan crear aplicaciones web interactivas y personalizadas de manera rápida y sencilla, sin tener que preocuparse demasiado por los detalles de la programación web.
-
Getting Started with Streamlit for Data Science de Tyle Richards (2021).
-
Streamlit: Turn Python Scripts into Beautiful Data Apps de Adrien Treuille, Thiago Teixeira y Amanda Kelly (2020).
-
Data Visualization with Python and JavaScript de Kyran Dale (2016). Aunque no se centra exclusivamente en Streamlit, incluye varios ejemplos de cómo usar Streamlit para visualización de datos interactiva.
Primero pudes clonar el repositorio
git clone https://github.com/imarranz/streamlit-concurso-2023
Una vez clonado el repositorio debes crear y activar el entorno (./environment/streamlit-concurso-2023-env.yaml
). Posiblemente esta aplicación funcione bien en un entorno qur ya tenga instaladas las librerías necesarías (obviamente con Strealit es obligatoria) pero por reproducibilidad es conveniente usar el mismo entorno.
Para lanzar una aplicación de Streamlit desde la consola con una dirección IP específica y un puerto, debes abrir la línea de comandos y navegar hasta el directorio donde se encuentra tu archivo Python que contiene la aplicación de Streamlit. Luego, utiliza el siguiente comando:
streamlit run --server.address IP_ADDRESS --server.port PORT_NUMBER streamlit-concurso-2023.py
Sustituye IP_ADDRESS
con la dirección IP que deseas usar y PORT_NUMBER
con el número de puerto que deseas usar. Asegúrate de cambiar app.py con el nombre de tu archivo Python que contiene la aplicación de Streamlit.
Por ejemplo, si queremos utilizar la dirección IP 192.168.1.452 y el puerto 8500, y el archivo de Python se llama streamlit-concurso-2023.py, el comando que se deberá ejecutar en la consola es:
streamlit run --server.address 192.168.1.452 --server.port 8500 streamlit-concurso-2023.py
Esto lanzará la aplicación de Streamlit en el navegador utilizando la dirección IP y el puerto especificados.
YAML es un lenguaje de serialización de datos que se utiliza comúnmente como una herramienta de configuración en proyectos de software. Es fácil de leer y escribir para los humanos y es muy útil para definir la estructura de datos que un programa debe usar. YAML es especialmente útil en proyectos de data science y machine learning, donde a menudo se deben configurar modelos y procesos de entrenamiento de datos de manera precisa y detallada. Al utilizar YAML, los desarrolladores pueden definir y gestionar las configuraciones de su proyecto de manera más sencilla y eficiente. Además, YAML es compatible con varios lenguajes de programación, lo que lo hace una opción popular para desarrolladores de diferentes lenguajes y plataformas.
-
Learning YAML de Steven Simpson
-
YAML by Example de Mark Dunnett
-
YAML: A Fresh Approach to Configuration de Pavel Tišnovský
-
Python and YAML: Using YAML with Python de Martin Chikilian
-
Documentación oficial de PyYAML: https://pyyaml.org/wiki/PyYAMLDocumentation
-
Tutorial de YAML en Python de TutorialsPoint: https://www.tutorialspoint.com/yaml/yaml_python_example.htm
-
YAML Tutorial de Programiz: https://www.programiz.com/python-programming/yaml
-
YAML en Python de Real Python: https://realpython.com/python-yaml/
-
YAML en Python de GeeksforGeeks: https://www.geeksforgeeks.org/yaml-in-python/
No es dificil encontrar proyectos de análisis de datos que usan ficheros de configuración editables y modificables. Estos proyectos tienen una configuración básica que puede modificarse en función de las necesidades del proyecto.