• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Limpieza de datos con Pyjanitor: Optimizando los flujos de trabajo

abril 15, 2024 Por Daniel Rodríguez 2 comentarios
Tiempo de lectura: 5 minutos

Contar con unos datos de calidad es clave para que los resultados de un análisis de datos sean válidos. Sin embargo, en la mayoría de las ocasiones, los conjuntos de datos suelen tener múltiples problemas de calidad. Por ejemplo, la presencia de valores nulos, nombres de columnas no estandarizados y datos mal formateados. En esta entrada se analizará las opciones existentes para la limpieza de datos con Pyjanitor. Una biblioteca que ofrece métodos para hacer más fácil este proceso.

En esta entrada es parte de una serie sobre la biblioteca Pyjanitor, el resto de las publicaciones son:

  1. Introducción a Pyjanitor
  2. Limpieza de datos con Pyjanitor
  3. Transformación de datos con Pyjanitor
  4. Visualización de datos con Pyjanitor y Matplotlib o Seaborn

Carga de datos de ejemplo

Antes de comenzar, es necesario importar un conjunto de datos de ejemplo que cuente con varios problemas de los que puede solucionar Pyjanitor. Por ejemplo, el conjunto de datos clásico como los del Titanic. Un conjunto de datos contiene información sobre los pasajeros del famoso barco Titanic, incluyendo detalles como edad, género, clase de pasajero y si sobrevivieron o no. Para facilitar el seguimiento de los ejemplos, los datos se pueden cargar directamente desde una URL utilizando la biblioteca Pandas:

import pandas as pd

# URL del nuevo conjunto de datos de ventas
url = 'https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv'

# Cargar el conjunto de datos en un DataFrame
titanic = pd.read_csv(url)

# Mostrar las primeras filas del DataFrame para verificar la carga exitosa
titanic.head()
   PassengerId  Survived  Pclass  \
0 1 0 3
1 2 1 1
2 3 1 3
3 4 1 1
4 5 0 3

Name Sex Age SibSp \
0 Braund, Mr. Owen Harris male 22.0 1
1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1
2 Heikkinen, Miss. Laina female 26.0 0
3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1
4 Allen, Mr. William Henry male 35.0 0

Parch Ticket Fare Cabin Embarked
0 0 A/5 21171 7.2500 NaN S
1 0 PC 17599 71.2833 C85 C
2 0 STON/O2. 3101282 7.9250 NaN S
3 0 113803 53.1000 C123 S
4 0 373450 8.0500 NaN S

Una vez cargados los datos, se puede comenzar a explorar algunas técnicas de limpieza de datos utilizando Pyjanitor.

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
En Analytics Lane
Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

Publicidad


Limpiar nombres de columnas

Los nombres de las columnas inconsistentes o mal formateadas de los conjuntos de datos pueden dificultar los procesos de análisis de datos. Provocando la aparición de errores a la hora de referenciar una columna en concreto. Veamos cómo se puede limpiar los nombres de las columnas en el conjunto de datos de Titanic:

import janitor

# Limpiar nombres de columnas
titanic_cleaned_names = titanic.clean_names()

# Mostrar los nombres de las columnas limpiados
print(titanic_cleaned_names.columns)
Index(['passengerid', 'survived', 'pclass', 'name', 'sex', 'age', 'sibsp',
'parch', 'ticket', 'fare', 'cabin', 'embarked'],
dtype='object')

En este ejemplo, se ha empleado el método clean_names() de Pyjanitor para estandarizar los nombres de las columnas del conjunto de datos. Modificando estos para que tengan una notación homogénea y coherente. Al aplicar el método, todos los nombres de las columnas se convierten a minúsculas y se reemplaza los espacios en blanco con guiones bajos, lo que facilita tanto el acceso a las columnas, como mejora la legibilidad del código.

Manejo de valores nulos

Uno de los problemas más comunes en los conjuntos de datos es la presencia de valores nulos. La primera opción puede ser la eliminación de los registros que cuenta con algún valor nulo, lo que en Pandas se puede conseguir con el método dropna(). Aunque, como se ve en el siguiente código, para el conjunto de datos de Titanic esto es un problema ya que la mayoría de los registros cuentan con algún valor nulo y, por lo tanto, los registros que quedan son una pequeña fracción de los originales.

# Eliminar filas con valores nulos
titanic_no_nan = titanic_cleaned_names.dropna()

# Mostrar el número de filas antes y después de la limpieza
print("Número de filas antes de la limpieza:", len(titanic_cleaned_names))
print("Número de filas después de la limpieza:", len(titanic_no_nan))
Número de filas antes de la limpieza: 891
Número de filas después de la limpieza: 183

A modo de ejemplo, se pueden ver los registros que no cuentan con la edad del pasajero.

# Identificar los resgistros sin edad
titanic_no_age = titanic_cleaned_names.isna().age

# Mostrar los primeros registros sin edad
print(titanic_cleaned_names[titanic_no_age].head())
    passengerid  survived  pclass                           name     sex  age  \
5 6 0 3 Moran, Mr. James male NaN
17 18 1 2 Williams, Mr. Charles Eugene male NaN
19 20 1 3 Masselmani, Mrs. Fatima female NaN
26 27 0 3 Emir, Mr. Farred Chehab male NaN
28 29 1 3 O'Dwyer, Miss. Ellen "Nellie" female NaN

sibsp parch ticket fare cabin embarked
5 0 0 330877 8.4583 NaN Q
17 0 0 244373 13.0000 NaN S
19 0 0 2649 7.2250 NaN C
26 0 0 2631 7.2250 NaN C
28 0 0 330959 7.8792 NaN Q

Otro enfoque común para tratar los valores nulos es rellenarlos con valores específicos. Pyjanitor cuenta con el método impute() que permite agregar un valor dado a una columna. Por ejemplo, se puede agregar el valor 30 a los registros que no cuentan con un dato de edad.

# Rellenar valores nulos con un valor constante
titanic_age_filled = titanic_cleaned_names.impute(column_names="age",
                                                  value=30)

# Mostrar el resultado
print(titanic_age_filled[titanic_no_age].head())
    passengerid  survived  pclass                           name     sex  \
5 6 0 3 Moran, Mr. James male
17 18 1 2 Williams, Mr. Charles Eugene male
19 20 1 3 Masselmani, Mrs. Fatima female
26 27 0 3 Emir, Mr. Farred Chehab male
28 29 1 3 O'Dwyer, Miss. Ellen "Nellie" female

age sibsp parch ticket fare cabin embarked
5 30.0 0 0 330877 8.4583 NaN Q
17 30.0 0 0 244373 13.0000 NaN S
19 30.0 0 0 2649 7.2250 NaN C
26 30.0 0 0 2631 7.2250 NaN C
28 30.0 0 0 330959 7.8792 NaN Q

En este ejemplo se ha llamado al método impute() indicando tanto la columnas que se desea rellenar como el valor que se desea usar. Un enfoque más avanzado puede ser rellenar los valores nulos con la media de la columna. Algo que se pude conseguir mediante indicando la operación en la propiedad ‌statistic_column_name como se muestra a continuación.

# Rellenar valores nulos con el valor medio de la columna
titanic_age_filled = titanic_cleaned_names.impute(column_names="age",
                                                  statistic_column_name="mean")

# Mostrar el resultado
print(titanic_age_filled[titanic_no_age].head())
    passengerid  survived  pclass                           name     sex  \
5 6 0 3 Moran, Mr. James male
17 18 1 2 Williams, Mr. Charles Eugene male
19 20 1 3 Masselmani, Mrs. Fatima female
26 27 0 3 Emir, Mr. Farred Chehab male
28 29 1 3 O'Dwyer, Miss. Ellen "Nellie" female

age sibsp parch ticket fare cabin embarked
5 29.699118 0 0 330877 8.4583 NaN Q
17 29.699118 0 0 244373 13.0000 NaN S
19 29.699118 0 0 2649 7.2250 NaN C
26 29.699118 0 0 2631 7.2250 NaN C
28 29.699118 0 0 330959 7.8792 NaN Q

Publicidad


Conclusiones

En esta entrada, se han analizado las opciones que están disponibles para la limpieza de datos con Pyjanitor. Viendo como estas pueden optimizar los flujos de trabajo para cualquier análisis de datos.

En la próxima entrada se explicará en detalle los métodos que ofrece Pyjanitor para la transformación de datos en Python.

Imagen de Ryan McGuire en Pixabay

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
  • La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento
  • Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows
  • Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte
  • Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)
  • Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato
  • ¿Media, mediana o moda en variables ordinales? Guía práctica para el análisis de datos
  • Cómo ejecutar JavaScript desde Python: Guía práctica con js2py
  • Cómo generar contraseñas seguras con Python (y entender su nivel de seguridad)

Publicado en: Python Etiquetado como: Pandas, Pyjanitor

Interacciones con los lectores

Comentarios

  1. Asher Herbas dice

    abril 16, 2024 a las 2:52 am

    Pregunta , puede hacer algun proceso PCA ?

    Responder
    • Daniel Rodríguez dice

      abril 16, 2024 a las 9:16 am

      La librería Pyjanitor se centra en la limpieza y preparación de datos, por lo que yo se no cuenta con funciones para realizar análisis de PCA. Para realizar PCA en Python lo mejor es usar Scikit-learn.

      Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Curiosidad: ¿Por qué los datos “raros” son tan valiosos?

noviembre 6, 2025 Por Daniel Rodríguez

Cómo generar contraseñas seguras con Python (y entender su nivel de seguridad)

noviembre 4, 2025 Por Daniel Rodríguez

Cómo ejecutar JavaScript desde Python: Guía práctica con js2py

octubre 30, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas publicado el mayo 10, 2019 | en Python
  • Curiosidad: ¿Por qué los datos “raros” son tan valiosos? publicado el noviembre 6, 2025 | en Ciencia de datos, Opinión
  • Redondear la hora en Python para agrupar datos publicado el octubre 26, 2020 | en Python
  • Diferencia entre R2 y R2 ajustado en modelos de regresión publicado el marzo 8, 2024 | en Ciencia de datos
  • Método del codo (Elbow method) para seleccionar el número óptimo de clústeres en K-means publicado el junio 9, 2023 | en Ciencia de datos

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto