Técnicas de Limpieza de Datos con Pandas

Técnicas de Limpieza de Datos con Pandas

import pandas as pd
import numpy as np
datos = pd.DataFrame({"identificador":[1001,1002,1003,1004,1005,1006], 
 "fecha":pd.date_range('20130102', periods=6),
  "ciudad":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
 "edad":[23,44,54,32,34,32],
 "categoria":['100-A','100-B','110-A','110-C','210-A','130-F'],
  "valor":[1200,np.nan,2133,5433,np.nan,4432]},
  columns =['identificador','fecha','ciudad','categoria','edad','valor'])
datos


identificador fecha ciudad categoria edad valor
0 1001 2013-01-02 Beijing 100-A 23 1200.0
1 1002 2013-01-03 SH 100-B 44 NaN
2 1003 2013-01-04 guangzhou 110-A 54 2133.0
3 1004 2013-01-05 Shenzhen 110-C 32 5433.0
4 1005 2013-01-06 shanghai 210-A 34 NaN
5 1006 2013-01-07 BEIJING 130-F 32 4432.0
  1. Reemplazando valores faltantes con cero

datos['valor'].fillna(0,inplace=True)


El parámetro inplace=True indica que la modificación se realizará directamente en el DataFrame original. Por defecto es False, lo que significa que no se modifica el dato original sino que se devuelve un nuevo objeto.

datos['valor'].fillna(0)


0 1200.0 1 0.0 2 2133.0 3 5433.0 4 0.0 5 4432.0 Name: valor, dtype: float64

  1. Usando la media para imputar valores faltantes

datos['valor'].fillna(datos['valor'].mean(),inplace=True)


datos['valor'].fillna(datos['valor'].mean())


0 1200.0 1 3299.5 2 2133.0 3 5433.0 4 3299.5 5 4432.0 Name: valor, dtype: float64

  1. Eliminando espacios en blanco en la columna ciudad

datos['ciudad'] = datos['ciudad'].map(str.strip)


La función map() permite aplicar una operación a cada elemento del DataFrame. str.strip elimina los espacios en blanco al principio y al final de la cadena.

datos['ciudad'] = datos['ciudad'].map(str.strip)
datos['ciudad']


0 Biejing 1 SH 2 guangzhou 3 Shenzhen 4 shanghai 5 BEIJING Name: ciudad, dtype: object

  1. Conversión de mayúsculas y minúsculas

datos['ciudad'] = datos['ciudad'].map(str.lower)  # Convertir a minúsculas
datos['ciudad'] = datos['ciudad'].str.lower()  # Convertir a minúsculas
datos['ciudad'] = datos['ciudad'].map(str.upper)  # Convertir a mayúsculas
datos['ciudad'] = datos['ciudad'].str.upper()  # Convertir a mayúsculas


datos['ciudad'] = datos['ciudad'].str.upper()
datos['ciudad']


0 BEIJING 1 SH 2 GUANGZHOU 3 SHENZHEN 4 SHANGHAI 5 BEIJING Name: ciudad, dtype: object

datos['ciudad'] = datos['ciudad'].map(str.lower)
datos['ciudad']


0 beijing 1 sh 2 guangzhou 3 shenzhen 4 shanghai 5 beijing Name: ciudad, dtype: object

  1. Modificación de tipos de datos

datos['valor'] = datos['valor'].astype('int')  # Convertir a entero
datos['valor'] = datos['valor'].astype('float')  # Convertir a flotante


  1. Cambio de nombres de columnas

datos.rename(columns={'nombre_antiguo':'nombre_nuevo'}, inplace=True)


inplace=True indica que la modificación se realizará directamente en el DataFrame original. Por defecto es False, lo que significa que no se modifica el dato original sino que se devuelve un nuevo objeto.

datos.rename(columns = {"categoria" : "categoria-tamano"})


identificador fecha ciudad categoria-tamano edad valor
0 1001 2013-01-02 beijing 100-A 23 1200.0
1 1002 2013-01-03 sh 100-B 44 NaN
2 1003 2013-01-04 guangzhou 110-A 54 2133.0
3 1004 2013-01-05 shenzhen 110-C 32 5433.0
4 1005 2013-01-06 shanghai 210-A 34 NaN
5 1006 2013-01-07 beijing 130-F 32 4432.0
  1. Eliminando duplicados manteniendo el primer registro

datos.drop_duplicates(inplace=True, keep='first')


El parámetro keep especifica qué registro duplicado mantener: 'first' mantiene el primero, 'last' mantiene el último, False elimina todos los registros duplicados. Por defecto es 'first'.

datos['ciudad'].drop_duplicates()


0 beijing 1 sh 2 guangzhou 3 shenzhen 4 shanghai Name: ciudad, dtype: object

  1. Sustitución de valores

datos['ciudad'].replace('Nueva York', 'NYC', inplace=True)


datos['ciudad'].replace('sh', 'shanghai')


0 beijing 1 shanghai 2 guangzhou 3 shenzhen 4 shanghai 5 beijing Name: ciudad, dtype: object

Etiquetas: pandas Python limpieza-de-datos analisis-de-datos manipulación-de-datos

Publicado el 7-4 04:35