Lección 3 - Práctica 3: Python visualization packages
Objetivo de la práctica
- Crear un mismo diagrama de caja (boxplot) con distintos paquetes de Python para visualizar la relación entre la posición de juego y la altura en metros de los jugadores de la NBA en la temporada regular 2025-26.
Opciones de los fragmentos de código
En el encabezado YAML se han definido las opciones globales de los fragmentos de código con el campo
executepara que estas opciones se apliquen a todos los fragmentos del archivo.qmdsin tener que repetirlas al inicio de cada fragmento.Las opciones de un fragmento de código concreto se escriben en sus primeras líneas con el prefijo
#|y tienen prioridad sobre las opciones globales.Las opciones de los fragmentos de código utilizadas en esta práctica, por orden de aparición en el documento, son las siguientes:
message: false: se ejecuta el código de R y Python sin mostrar en el documento HTML resultante los mensajes generados durante su ejecución.warning: false: se ejecuta el código de R y Python sin mostrar en el documento HTML resultante las advertencias generadas durante su ejecución.include: true: se ejecuta el código de R y Python y se muestran en el documento HTML resultante el código ejecutado y sus resultados, ya sean valores, tablas o gráficos.results: hide: se ejecuta el código de R y Python y se muestran en el documento HTML resultante el código ejecutado y los gráficos, pero no sus resultados en formato de texto (valores y tablas).code-fold: true: se muestra en el documento HTML resultante el código ejecutado, colapsado y con un botónCódigopara desplegarlo.collapse: true: se muestra en el documento HTML resultante el código ejecutado en un único bloque, en lugar de dividirlo en varios bloques cuando hay varias expresiones que generan resultados.
Instalación y carga de paquetes
- En el primer y único fragmento de código de R, denominado
install_and_load_packages, instala y carga el paquete de Rreticulate(paquete para interoperabilidad entre R y Python) e instala los paquetes de Python necesarios para realizar la práctica (los paquetes de Python se cargarán cuando corresponda).
Importación y transformación de datos
- En el primer fragmento de código de Python, denominado
data_import_and_transformation, copia y pega el código del archivopy_script_nba_rs_2526.py.
Exploración de la estructura de los datos
En el segundo fragmento de código de Python, denominado
explore_data_structure, explora la estructura del dataframedf_py_nba_rs_2526_transformedcon el métodoinfo().En la salida de este fragmento de código se muestran el número de observaciones (filas) y variables (columnas), los nombres de las variables, el número de valores no faltantes y el tipo de dato de cada variable.
Selección y filtrado de datos
- En el tercer fragmento de código de Python, denominado
select_and_filter_data, selecciona las variablesplayer_name,positionyheight_m, filtra las observaciones para conservar solo a los jugadores clasificados en una única posición de juego (Center,Forward,Guard), elimina las categorías no utilizadas de la variableposition(Center-Forward,Forward-Center,Forward-Guard,Guard-Forward) y almacena el resultado en el dataframedf_py_nba_rs_2526_reduced.
Creación del boxplot con la interfaz Axes del paquete matplotlib
En el cuarto fragmento de código de Python, denominado
boxplot_matplotlib_axes, importa el módulopyplotdel paquetematplotlib, crea los objetospositionsyheightscon las posiciones de juego y sus alturas, crea el diagrama de caja de la altura en metros (height_m) según la posición de juego (position) del dataframedf_py_nba_rs_2526_reducedcon el métodoboxplot()de la claseAxesdel paquetematplotliby guárdalo en el objetoboxplot_matplotlib_axes.El método
boxplot()no agrupa los datos por categorías, por lo queheightscontiene un conjunto de alturas por cada posición de juego.
Creación del boxplot con la interfaz pyplot del paquete matplotlib
En el quinto fragmento de código de Python, denominado
boxplot_matplotlib_pyplot, crea el diagrama de caja de la altura en metros (height_m) según la posición de juego (position) del dataframedf_py_nba_rs_2526_reducedcon la funciónboxplot()del módulopyplotdel paquetematplotliby guárdalo en el objetoboxplot_matplotlib_pyplot, reutilizando el móduloplty los objetospositionsyheightscreados en el fragmento anterior.A diferencia de la interfaz
Axes, no se crean explícitamente la figura ni los ejes, sino quepyplotlos gestiona de forma implícita y todo se configura con funciones deplt.
Creación del boxplot con el paquete seaborn
En el sexto fragmento de código de Python, denominado
boxplot_seaborn, importa el paqueteseaborny crea el diagrama de caja de la altura en metros (height_m) según la posición de juego (position) del dataframedf_py_nba_rs_2526_reducedcon la funciónboxplot()del paqueteseaborny guárdalo en el objetoboxplot_seaborn.A diferencia de
matplotlib, la funciónboxplot()deseabornagrupa los datos por categorías, por lo que no hace falta crear listas con las alturas de cada posición de juego.
Creación del boxplot con el paquete plotnine
En el séptimo fragmento de código de Python, denominado
boxplot_plotnine, importa el paqueteplotniney crea el diagrama de caja de la altura en metros (height_m) según la posición de juego (position) del dataframedf_py_nba_rs_2526_reducedcon las funcionesggplot()ygeom_boxplot()del paqueteplotniney guárdalo en el objetoboxplot_plotnine.El paquete
plotninede Python está basado en el paqueteggplot2de R y, por lo tanto, crea gráficos mediante la gramática de gráficos en capas (layered grammar of graphics).
Creación del boxplot con el paquete plotly
En el octavo fragmento de código de Python, denominado
boxplot_plotly, importa el móduloexpressdel paqueteplotlyy crea el diagrama de caja interactivo de la altura en metros (height_m) según la posición de juego (position) del dataframedf_py_nba_rs_2526_reducedcon la funciónbox()del móduloexpressdel paqueteplotlyy guárdalo en el objetoboxplot_plotly.En el gráfico resultante se muestran los mismos elementos del diagrama de caja que en los creados con los paquetes anteriores, con la diferencia de que
plotlylo convierte en un gráfico interactivo que muestra los valores de los elementos del diagrama de caja y el nombre del jugador (player_name) en cada valor atípico al pasar el cursor del ratón sobre él.
Combinación de boxplots estáticos
A diferencia del paquete
cowploten R, los diagramas de caja estáticos creados con diferentes paquetes de Python no se pueden combinar fácilmente y, por ello, no se incluye en esta práctica un apartado equivalente.Esto se debe a que
matplotlibyseaborndibujan directamente sobre los ejes (Axes) de una figura, mientras queplotninegenera sus propios objetos, por lo que no existe una función sencilla que combine gráficos guardados en objetos de paquetes distintos.