Taller - Dashboard en Python
📈 Taller: Creación de Dashboard Interactivo en Python con Datos de Recursos Humanos
🌟 Objetivo:
Aprenderás a construir un dashboard de análisis de Recursos Humanos usando Google Colab y librerías de visualización interactivas como Plotly. Al finalizar, generarás un archivo HTML
con todas tus gráficas.
🔹 Instrucciones paso a paso:
- Sube el archivo
RRHH.xlsx
a tu entorno de Google Colab. - Ejecuta el siguiente bloque para instalar las librerías necesarias:
!pip install pandas plotly openpyxl seaborn matplotlib
- Carga el archivo Excel:
import pandas as pd df = pd.read_excel("RRHH.xlsx") df.head()
- Limpieza de datos y corrección de tipos:
- Convertir fechas:
df["Fecha_Contratacion"] = pd.to_datetime(df["Fecha_Contratacion"], errors='coerce')
- Reemplazar valores nulos o erróneos:
# Reemplazar texto "N/A" por NaN df.replace("N/A", pd.NA, inplace=True) # Rellenar valores faltantes en columna 'Genero' df["Genero"] = df["Genero"].fillna("No definido") # Reemplazar valores no numéricos en "Salario" df["Salario"] = pd.to_numeric(df["Salario"], errors='coerce')
- Eliminar filas con campos críticos vacíos:
df.dropna(subset=["Edad", "Salario", "Departamento"], inplace=True)
- Convertir tipos de datos explícitamente:
# Convertir a entero (int) df["Antiguedad"] = df["Antiguedad"].astype("Int64") # Convertir a flotante (float) df["Salario"] = df["Salario"].astype(float) # Convertir a string (objeto textual) df["Nombre"] = df["Nombre"].astype(str)
- Convertir fechas:
- Importa plotly y genera las siguientes gráficas:
- Contrataciones por año:
import plotly.express as px df["Año"] = df["Fecha_Contratacion"].dt.year contrataciones = df.groupby("Año").size().reset_index(name="Total") fig1 = px.line(contrataciones, x="Año", y="Total", title="Contrataciones por Año") fig1.show()
- Top 5 departamentos:
top_dept = df["Departamento"].value_counts().nlargest(5).reset_index() top_dept.columns = ["Departamento", "Total"] fig2 = px.bar(top_dept, x="Departamento", y="Total", title="Top 5 Departamentos") fig2.show()
- Distribución por género:
genero = df["Genero"].value_counts().reset_index() genero.columns = ["Genero", "Total"] fig3 = px.pie(genero, names="Genero", values="Total", title="Distribución por Género") fig3.show()
- Mapa de calor de edad promedio por departamento y ciudad:
pivot = df.pivot_table(values="Edad", index="Departamento", columns="Ciudad", aggfunc="mean") import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(12, 6)) sns.heatmap(pivot, annot=True, cmap="YlGnBu") plt.title("Edad Promedio por Departamento y Ciudad") plt.show()
- Bubble chart: salario vs edad, tamaño por antigüedad:
fig5 = px.scatter(df, x="Edad", y="Salario", size="Antiguedad", color="Departamento", hover_name="Nombre", title="Salario vs Edad (Tamaño: Antigüedad)") fig5.show()
- Contrataciones por año:
- Guardar todas las gráficas como archivo HTML:
import plotly.io as pio pio.write_html(fig1, file="dashboard.html", auto_open=False)
- Descargar el archivo generado desde el panel izquierdo (Archivos) en Colab.
💻 Código útil para tipos de datos:
- Ver los tipos actuales:
df.dtypes
- Convertir tipo float a int:
df["Columna"] = df["Columna"].astype("Int64")
- Convertir tipo int a string:
df["Columna"] = df["Columna"].astype(str)
- Convertir tipo string a float:
df["Columna"] = pd.to_numeric(df["Columna"], errors='coerce')
- Convertir tipo string a fecha:
df["Fecha"] = pd.to_datetime(df["Fecha"], errors='coerce')
🔗 Recursos Recomendados:
Recuerda: lo importante no es solo el código, sino lo que interpretas de los datos. 🤝
Comentarios
Publicar un comentario