Introducción al Análisis con Pandas
En este tutorial práctico, aprenderás a procesar y analizar datos de ventas e-commerce usando Pandas. Trabajaremos con un dataset real que contiene:
- Información de pedidos
- Datos de productos
- Registros de clientes
- Ubicaciones geográficas
1. Configuración Inicial
Instalación de Bibliotecas
pip install pandas numpy matplotlib seaborn plotly
Importación de Módulos
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
2. Exploración Inicial de Datos
Carga del Dataset
df = pd.read_csv('ventas_ecommerce.csv')
Primera Inspección
# Vista general
print(df.info())
# Estadísticas descriptivas
print(df.describe())
# Valores únicos por columna
print(df.nunique())
3. Limpieza de Datos Profesional
Manejo de Valores Faltantes
# Porcentaje de valores nulos por columna
print(df.isnull().mean() * 100)
# Estrategias de limpieza
df['columna_critica'] = df['columna_critica'].fillna(df['columna_critica'].median())
df.dropna(subset=['columna_importante'], inplace=True)
Eliminación de Duplicados
df.drop_duplicates(inplace=True)
Corrección de Formatos
# Conversión de tipos
df['fecha'] = pd.to_datetime(df['fecha'])
df['precio'] = df['precio'].astype(float)
# Normalización de textos
df['categoria'] = df['categoria'].str.upper().str.strip()
4. Análisis Avanzado
Feature Engineering
# Creación de nuevas características
df['valor_total'] = df['cantidad'] * df['precio']
df['mes_venta'] = df['fecha'].dt.month
Agregaciones con GroupBy
ventas_por_categoria = df.groupby('categoria').agg({
'valor_total': ['sum', 'mean', 'count'],
'cliente_id': pd.Series.nunique
}).rename(columns={'cliente_id': 'clientes_unicos'})
Análisis Temporal
ventas_mensuales = df.resample('M', on='fecha')['valor_total'].sum()
ventas_mensuales.plot(title='Ventas Mensuales')
5. Visualización de Datos
Gráficos Básicos con Pandas
df['categoria'].value_counts().plot(kind='bar', title='Ventas por Categoría')
Visualización Avanzada con Seaborn
sns.boxplot(x='categoria', y='valor_total', data=df)
plt.title('Distribución de Ventas por Categoría')
plt.xticks(rotation=45)
Dashboard Interactivo con Plotly
import plotly.express as px
fig = px.sunburst(df, path=['region', 'categoria'], values='valor_total')
fig.show()
6. Optimización de Rendimiento
Técnicas de Vectorización
# Anti-patrón (lento)
for i, row in df.iterrows():
df.at[i, 'nueva_col'] = row['precio'] * 1.1
# Buenas prácticas (rápido)
df['nueva_col'] = df['precio'] * 1.1
Reducción de Memoria
# Conversión a tipos óptimos
df['id_producto'] = df['id_producto'].astype('category')
df['precio'] = pd.to_numeric(df['precio'], downcast='float')
7. Casos de Negocio Reales
Análisis de Cohortes
# Creación de cohortes
df['cohorte'] = df['fecha'].dt.to_period('M')
cohortes = df.groupby(['cohorte', 'mes_venta']).agg({'cliente_id': pd.Series.nunique})
Pruebas A/B
grupo_control = df[df['grupo'] == 'A']['conversion']
grupo_prueba = df[df['grupo'] == 'B']['conversion']
from scipy import stats
t_test = stats.ttest_ind(grupo_control, grupo_prueba)
print(f"Resultado t-test: {t_test.pvalue:.4f}")
8. Exportación de Resultados
Guardado de Datos
# Formato CSV
df.to_csv('datos_limpios.csv', index=False)
# Formato Excel
ventas_por_categoria.to_excel('analisis_ventas.xlsx')
# Formato Pickle (alto rendimiento)
df.to_pickle('datos_optimizados.pkl')
9. Buenas Prácticas
- Documentación: Comenta cada transformación importante
- Modularización: Crea funciones reutilizables
- Validación: Implementa checks de calidad de datos
- Versionado: Guarda versiones limpias del dataset
Checklist Final
- [ ] Exploración inicial completa
- [ ] Datos limpios y normalizados
- [ ] Features relevantes creadas
- [ ] Análisis clave realizados
- [ ] Visualizaciones efectivas
- [ ] Resultados exportados
Recursos Adicionales
¡Ahora estás listo para analizar datos de e-commerce como un profesional con Pandas! 🚀
Deja una respuesta