• 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
  • Herramientas
    • Método D’Hondt – Atribución de escaños
  • 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
  • Python
  • Pandas
  • NumPy
  • Matlab
  • Julia
  • Excel
  • IA Generativa

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.

Consistencia en nombres y orden en TypeScript: la base de un código mantenible aplicado a tslane
En Analytics Lane
Consistencia en nombres y orden en TypeScript: la base de un código mantenible aplicado a tslane

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

  • Consistencia en nombres y orden en TypeScript: la base de un código mantenible aplicado a tslane
  • Análisis de Redes con Python
  • Nuevo calendario de publicaciones: más calidad, mejor ritmo
  • Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Publicaciones de verano 2025: los trucos más populares, ahora en vídeo
  • Cómo enviar correos desde PowerShell utilizando Brevo: Guía paso a paso para automatizar tus notificaciones
  • Nueva herramienta disponible: Calculadora del Método D’Hondt para la atribución de escaños
  • Cómo enviar correos desde Python utilizando Brevo: Automatiza tus notificaciones con scripts eficientes

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

¡Nuevo video! Gráficos de barras en Matplotlib sin complicarte

julio 17, 2025 Por Daniel Rodríguez

¡Nuevo video! Iterar filas en Pandas sin romperte la cabeza

julio 15, 2025 Por Daniel Rodríguez

¡Nuevo video! Encuentra la posición en listas como un PRO

julio 10, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Obtención de valores únicos de una columna con Pandas publicado el mayo 8, 2019 | en Python
  • Cómo encontrar la posición de elementos en una lista de Python publicado el abril 12, 2021 | en Python
  • Combinar varios archivos Jupyter Notebook en uno publicado el noviembre 21, 2022 | en Python
  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • pandas Pandas: Cómo iterar sobre las filas de un DataFrame en Pandas publicado el septiembre 13, 2021 | en Python

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

  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes
  • Javier en Tutorial de Mypy para Principiantes
  • javier en Problemas con listas mutables en Python: Cómo evitar efectos inesperados
  • soldado en Numpy básico: encontrar la posición de un elemento en un Array de Numpy

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