Transformaciones de Datos para Análisis en Pandas

Clase 30 de 32Curso de Python para Ciencia de Datos

Contenido del curso

NumPy

Pandas

Resumen

Transformar un dataset limpio en información útil es el paso que separa la preparación de datos del verdadero análisis. A partir de operaciones simples como multiplicar columnas, convertir tipos de dato y agrupar registros, puedes obtener indicadores de negocio listos para la toma de decisiones. Aquí se explora cómo lograrlo con Pandas, paso a paso.

¿Cómo crear nuevas columnas a partir de las existentes?

Una vez que el dataset está limpio, el siguiente movimiento es pensar qué nuevas columnas pueden derivarse de las que ya existen. En este caso, se cuenta con una columna de cantidad y otra de precio unitario, lo que permite generar el monto total multiplicando ambas [1:00].

python data_limpia['monto_total'] = data_limpia['cantidad'] * data_limpia['precio_unitario'] data_limpia.head()

  • La nueva columna se crea asignando un nombre que aún no existe en el dataframe.
  • La operación se realiza de forma vectorizada, es decir, se aplica a cada fila automáticamente.
  • Visualizar con head() permite confirmar que el resultado es correcto.

¿Por qué convertir fechas al formato datetime?

El dataset contiene una columna llamada invoice date que inicialmente Pandas interpreta como un simple objeto de texto. Para trabajar con series de tiempo, es necesario convertirla al tipo datetime [2:07].

python data_limpia['invoice_date'] = pd.to_datetime(data_limpia['invoice_date'])

A simple vista los datos parecen iguales, pero internamente el tipo cambia. Puedes verificarlo con dtypes: antes aparecía como object y después como datetime64 [3:07]. Este cambio es fundamental porque habilita el acceso a propiedades como .dt.year y .dt.month.

¿Cómo desglosar una fecha en año, mes y más?

Con la columna ya en formato datetime, se pueden extraer componentes individuales y crear columnas adicionales [3:40].

python data_limpia['año'] = data_limpia['invoice_date'].dt.year data_limpia['mes'] = data_limpia['invoice_date'].dt.month

  • También es posible extraer el día o la hora si el análisis lo requiere.
  • Estas nuevas columnas permiten realizar agrupaciones temporales más adelante.

¿Cómo agrupar datos para obtener ventas por año y semestre?

Con las columnas de año y monto total disponibles, el método groupby permite calcular las ventas totales por año [5:00].

python ventas_por_año = data_limpia.groupby('año')['monto_total'].sum() ventas_por_año

En este dataset hay registros de 2010 y 2011, así que el resultado muestra la ganancia acumulada de cada periodo.

¿Cómo calcular ventas por semestre usando una función lambda?

Para un análisis semestral, primero se necesita una columna que indique a qué semestre pertenece cada registro. Esto se logra aplicando una función lambda sobre la columna de mes [6:15].

python data_limpia['semestre'] = data_limpia['mes'].apply(lambda x: 1 if x <= 6 else 2)

  • Los meses del 1 al 6 se asignan al semestre 1.
  • Los meses del 7 al 12 se asignan al semestre 2.

Después se agrupa por año y semestre simultáneamente [7:05].

python ventas_por_semestre = data_limpia.groupby(['año', 'semestre'])['monto_total'].sum() ventas_por_semestre

Un error frecuente al trabajar con notebooks es olvidar ejecutar la celda donde se crea la nueva columna antes de utilizarla. Si aparece un error, basta con correr las celdas en orden [7:45].

¿Qué significa estar en el rol de científico de datos?

Todo lo anterior refleja la tercera etapa del flujo de trabajo: después de la limpieza, el científico de datos evalúa qué transformaciones aportan valor, crea columnas derivadas y genera dataframes resumidos que revelan insights del negocio [8:15]. Los resultados obtenidos, como ventas anuales o semestrales, son la base para reportes y visualizaciones.

El reto propuesto es aplicar la misma lógica para calcular ventas trimestrales y mensuales. Comparte tu solución en los comentarios.