Este proyecto analiza el comportamiento de uso de los clientes de ConnectaTel, una empresa de telecomunicaciones con operaciones en México y Colombia. El objetivo es identificar patrones de consumo (llamadas y mensajes), detectar comportamientos atípicos, crear segmentos de clientes y generar recomendaciones comerciales para optimizar la oferta de planes y mejorar la experiencia del usuario.
El análisis integra tres fuentes de datos:
plans.csv - Catálogo de planes vigentes con columnas: plan_name, price, minutes_included, gb_included, cost_per_extra.
users_latam.csv - Información de clientes registrados con columnas: user_id, age, city, plan, reg_date, churn_date.
usage.csv - Registro detallado de uso del servicio con columnas: id, user_id, type, duration, length, date.
Periodo de análisis: Datos registrados hasta el año 2024. Total de usuarios: 4,000 clientes. Total de registros de uso: 40,000 transacciones.
- Carga de los 3 datasets con pandas.
- Revisión de estructura: .shape, .info(), .head().
- Identificación de tipos de datos y posibles inconsistencias.
- Valores nulos: Conteo y proporción por columna.
- Sentinels detectados: age con valor -999 (edad imposible) y city con valor "?" (categoría desconocida).
- Fechas imposibles: 40 registros con año 2026 en reg_date (año no transcurrido).
- Nulos estructurales: duration y length son MAR (Missing At Random), dependientes de type.
- Reemplazo de -999 en age por la mediana.
- Reemplazo de "?" en city por NaN.
- Marcado de fechas futuras como NaT.
- Conversión segura de columnas de fecha con pd.to_datetime(errors='coerce').
- Agregación de usage por user_id: cant_mensajes, cant_llamadas, cant_minutos_llamada.
- Combinación con users para crear un perfil completo (user_profile).
- Histogramas de age, cant_mensajes, cant_llamadas, cant_minutos_llamada segmentados por plan.
- Boxplots para identificar valores atípicos.
- Método IQR aplicado para cuantificar outliers superiores.
- Grupo de Uso: Bajo uso, Uso medio, Alto uso (basado en llamadas y mensajes).
- Grupo de Edad: Joven (menor a 30), Adulto (30-59), Adulto Mayor (60 o más).
- Visualización: Countplots de cada segmento.
- Diagnóstico de calidad de datos.
- Identificación de segmentos valiosos.
- Interpretación de outliers como oportunidad de negocio.
- Recomendaciones concretas para nuevos planes y estrategias comerciales.
Instala las dependencias necesarias con: pip install pandas numpy matplotlib seaborn jupyter
- Clona el repositorio o descarga los archivos del proyecto.
- Asegúrate de que los datasets estén en la misma carpeta que el notebook: plans.csv, users_latam.csv, usage.csv.
- Abre el notebook con Jupyter: jupyter notebook connectatel_analysis.ipynb
- Ejecuta todas las celdas en orden (Kernel, Restart and Run All).
connectatel-analysis/
- connectatel_analysis.ipynb (Notebook principal con todo el análisis)
- plans.csv (Datos de planes)
- users_latam.csv (Datos de usuarios)
- usage.csv (Datos de uso)
- README.md (Este archivo)
Usuarios totales: 4,000. Edad promedio: 48.1 años. Mensajes promedio por usuario: 5.5. Llamadas promedio por usuario: 4.5. Minutos promedio por usuario: 23.3. Outliers detectados en minutos: 109 usuarios (2.73%). Plan Básico: 64.9% de usuarios. Plan Premium: 35.1% de usuarios.
- Plan Intermedio "Plus" para usuarios de uso medio (50% de la base).
- Plan "Senior" para Adultos Mayores, con más minutos y menos mensajes.
- Plan "Joven Digital" para menores de 30 años, enfocado en mensajería.
- Paquete adicional para usuarios de alto consumo (outliers).
- Rediseñar límites de planes actuales (no generan diferenciación real).
Este proyecto fue desarrollado como parte del sprint de análisis de datos para ConnectaTel, aplicando técnicas de limpieza, exploración, visualización y segmentación en Python.