¿Cómo limpiar códigos de productos usando Pandas en Python?
Explorar el uso de Pandas junto con Python es fundamental para todos los interesados en ingeniería y limpieza de datos. En esta lección aprenderemos a manejar el dataset de códigos de productos, empezando por limpiar los datos nulos y creando códigos aptos para nuestros análisis. Aprovecharemos los seis primeros dígitos de los códigos para cruzar la información con datos en Postgres. Las habilidades que hoy practicaremos, como la creación de funciones customizadas y la manipulación de dataframes, son esenciales para entender el potencial de Pandas y Python.
¿Cómo identificar y eliminar nulos?
Uno de los primeros pasos en la limpieza de datos es manejar los valores nulos. En nuestro caso, trabajamos con la columna CODCOM
y nos interesa solo los valores que no son nulos. El proceso es el siguiente:
dfcons = df[df['CODCOM'].notnull()]
Esta línea de código devuelve un dataframe (dfcons
) que contiene únicamente los códigos que no son nulos. Es crucial para garantizar que el análisis posterior sea efectivo y que los valores con los que trabajamos sean válidos y consistentes.
¿Cómo construir una función de limpieza de código?
Queremos crear una función que extraiga los seis primeros dígitos del código y la descripción del producto, más la descripción de su categoría de nivel superior. Lo logramos creando una función personalizada en Python:
def cleanCode(texto):
texto = str(texto)
parentCode = ''
if len(texto) == 11:
codigo = texto[:6]
parentCode = texto[0]
else:
codigo = texto[:6]
parentCode = texto[:2]
try:
parent = df[df['CODECOM'] == parentCode]['DESCRIPCION'].values[0]
except:
parent = None
return (codigo, parent)
Esta función convierte el código en un string, verifica su longitud y extrae el código y la categoría de nivel superior basándose en esas características. La utilidad de esta función se aprovecha al aplicarse a cada fila del dataframe.
¿Cómo aplicar la función personalizada al dataframe?
Aplicamos la función cleanCode
para obtener un dataframe enriquecido con nuevas columnas. Aquí te mostramos cómo hacerlo:
df[['cleanCode', 'parentDescription']] = df.apply(
lambda x: cleanCode(x['CODCOM']), axis=1, result_type='expand'
)
Se usa la función apply
junto con lambda
para aplicar cleanCode
a cada fila (axis=1
), expandiendo el resultado en dos nuevas columnas: cleanCode
y parentDescription
.
¿Cómo seleccionar columnas útiles?
Después de calcular el código limpio y las descripciones, se procede a seleccionar solo las columnas necesarias para el análisis final:
df_final = df[['cleanCode', 'DESCRIPCION', 'parentDescription']]
Este paso simplifica el dataframe, dejándonos con las columnas más valiosas: el código limpio para búsquedas y las descripciones del producto y su categoría madre.
Con esta técnica, podemos enriquecer nuestros análisis al tener descriptores claros de los productos y su categorización de nivel superior, dando pie a mejores decisiones basadas en datos sólidos y bien estructurados. ¡Sigue adelante y explora cómo Pandas puede transformar tu trabajo con datos!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?