Taller - Dashboard en Python

Taller - Dashboard en Python (Google Colab)

📈 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:

  1. Sube el archivo RRHH.xlsx a tu entorno de Google Colab.
  2. Ejecuta el siguiente bloque para instalar las librerías necesarias:
    !pip install pandas plotly openpyxl seaborn matplotlib
  3. Carga el archivo Excel:
    import pandas as pd
    
    df = pd.read_excel("RRHH.xlsx")
    df.head()
  4. 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)
  5. 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()
  6. Guardar todas las gráficas como archivo HTML:
    import plotly.io as pio
    pio.write_html(fig1, file="dashboard.html", auto_open=False)
  7. 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

Entradas más populares de este blog