Medidas estadísticas#
Nuevamente cargamos el dataset de ifood para hacer una exploración de los datos. Para este caso, vamos a hacer una exploración de los datos desde las medidas de tendencia central y dispersión. Así mismo, vamos a hacer una exploración de los datos categóricos que aquí se encuentran escritos como variables dummy.
Carga de datos#
Recordemos que para cargar los datos debe hacer clic en el panel izquierdo en el botón de exploración de archivos. En ese menu tendra la opción de subir algunos datos.
Note
Recuerde que para cargar los datos debe hacer clic en el panel izquierdo en el botón de exploración de archivos. En ese menu tendra la opción de subir algunos datos. En Google Colab, el archivo se borrará una vez que se cierre el entorno.
import pandas as pd
# Load the dataset from the user's Google Drive
df = pd.read_csv("ifood_df.csv")
# Show DataFrame
df.head(5)
Income | Kidhome | Teenhome | Recency | MntWines | MntFruits | MntMeatProducts | MntFishProducts | MntSweetProducts | MntGoldProds | ... | marital_Together | marital_Widow | education_2n Cycle | education_Basic | education_Graduation | education_Master | education_PhD | MntTotal | MntRegularProds | AcceptedCmpOverall | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 58138.0 | 0 | 0 | 58 | 635 | 88 | 546 | 172 | 88 | 88 | ... | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1529 | 1441 | 0 |
1 | 46344.0 | 1 | 1 | 38 | 11 | 1 | 6 | 2 | 1 | 6 | ... | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 21 | 15 | 0 |
2 | 71613.0 | 0 | 0 | 26 | 426 | 49 | 127 | 111 | 21 | 42 | ... | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 734 | 692 | 0 |
3 | 26646.0 | 1 | 0 | 26 | 11 | 4 | 20 | 10 | 3 | 5 | ... | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 48 | 43 | 0 |
4 | 58293.0 | 1 | 0 | 94 | 173 | 43 | 118 | 46 | 27 | 15 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 407 | 392 | 0 |
5 rows × 39 columns
Medidas estadísticas para la variable Recency
#
La variable Recency
es una variable numérica que representa la cantidad de días desde la última compra. Esta resulta ser una variable muy importante para el análisis de la base de datos, ya que nos permite entender el comportamiento de los clientes. Vamos a hacer varios tipos de exploraciones de esta variable y haremos algunas cuentas que son de variables categóricas pero que aquí tendrán un interpretación.
Por ejemplo, sabemos que las tablas de frecuencia son una forma de entender la distribución de los datos. En este caso, vamos a hacer una tabla de frecuencia para la variable Recency
y vamos a hacer una tabla de frecuencia para la variable Recency
pero con intervalos de clase.
Note
Recuerde que para hacer una tabla de frecuencia con intervalos de clase, primero debe definir el número de intervalos que va a tener. En este caso, vamos a definir 5 intervalos de clase.
Note
Decimos que las tablas de frecuencia son una forma de entender la distribución de los datos. Efectivamente se utiliza más y mejor en variablñes categóricas, pero en variables numéricas también se puede hacer.
## Veamos la frecuencia de las categorías
df['Recency'].value_counts()
Recency
56 37
30 32
54 32
46 31
65 30
..
41 15
59 14
22 13
7 12
44 11
Name: count, Length: 100, dtype: int64
### Ahora una tabla con rangos de clases
# Crear una tabla de frecuencias
tabla_frecuencia = pd.cut(df['Recency'], bins=5).value_counts().sort_index()
# Mostrar la tabla de frecuencias
tabla_frecuencia
Recency
(-0.099, 19.8] 451
(19.8, 39.6] 441
(39.6, 59.4] 445
(59.4, 79.2] 434
(79.2, 99.0] 434
Name: count, dtype: int64
Note
pd.cut
es una función de pandas que nos permite hacer intervalos de clase. En este caso, el argumento bins
nos permite definir el número de intervalos de clase.
Ahora hagamos cálculos más simples como el máximo, el mínimo, la media, la mediana y la desviación estándar, entre otros.
Note
Recuerde que la media y la mediana son medidas de tendencia central y la desviación estándar es una medida de dispersión.
Las medidas de tendencia central nos permiten entender el valor central de los datos, mientras que las medidas de dispersión nos permiten entender la variabilidad de los datos.
Note
Esta información es importantisima en la inferencia, y como profesionales en mercadeo tratar con estos conceptos es fundamental puesto que nos permite aplicar técnicas como:
Segmentación de clientes
Análisis de canasta de productos
Análisis de comportamiento de compra
Análisis de ciclo de vida del cliente
Análisis de retención de clientes
Incluso, los famosos test A/B que se utilizan para entender el impacto de una campaña de marketing.
## Veamos el mínimo y máximo de la variable Recency
print(df['Recency'].min())
print(df['Recency'].max())
0
99
## Si quisiera describir de mejor manera el dato que estoy observando escribiría
print('El mínimo de la variable Recency es: ', df['Recency'].min())
print('El máximo de la variable Recency es: ', df['Recency'].max())
El mínimo de la variable Recency es: 0
El máximo de la variable Recency es: 99
## Veamos las medidas de tendencia central de la variable Recency
print('La media de la variable Recency es: ', df['Recency'].mean())
print('La mediana de la variable Recency es: ', df['Recency'].median())
print('La moda de la variable Recency es: ', df['Recency'].mode())
La media de la variable Recency es: 49.00907029478458
La mediana de la variable Recency es: 49.0
La moda de la variable Recency es: 0 56
Name: Recency, dtype: int64
## Veamos las medidas de dispersión de la variable Recency
print('El rango de la variable Recency es: ', df['Recency'].max() - df['Recency'].min())
print('La varianza de la variable Recency es: ', df['Recency'].var())
print('La desviación estándar de la variable Recency es: ', df['Recency'].std())
El rango de la variable Recency es: 99
La varianza de la variable Recency es: 837.0670683276336
La desviación estándar de la variable Recency es: 28.932111370026792
## Incluso podriamos explorar los percentiles de la variable Recency
print('El percentil 25 de la variable Recency es: ', df['Recency'].quantile(0.25))
print('El percentil 50 de la variable Recency es: ', df['Recency'].quantile(0.50))
print('El percentil 75 de la variable Recency es: ', df['Recency'].quantile(0.75))
El percentil 25 de la variable Recency es: 24.0
El percentil 50 de la variable Recency es: 49.0
El percentil 75 de la variable Recency es: 74.0
Sin embargo, antes de hacer el cálculo de estas medidas, podría considerar usar describe
para obtener un resumen de las medidas de tendencia central y dispersión.
Importante
Los datos aquí cargados son bastante buenos, por eso no estamos haciendo una limpieza de datos. Sin embargo, en un caso real, es importante hacer una limpieza antes de hacer un análisis. Entre los pasos comunes para hacer este prtocesamiento previo, se encuentran:
la eliminación de datos faltantes,
la eliminación de datos duplicados,
la eliminación de datos atípicos, entre otros.
df['Recency'].describe()
count 2205.000000
mean 49.009070
std 28.932111
min 0.000000
25% 24.000000
50% 49.000000
75% 74.000000
max 99.000000
Name: Recency, dtype: float64
## Adicionar estadísticas descriptivas en describe
df['Recency'].describe(percentiles=[.01, .05, .10, .25, .50, .75, .90, .95, .99])
count 2205.000000
mean 49.009070
std 28.932111
min 0.000000
1% 0.000000
5% 4.000000
10% 9.000000
25% 24.000000
50% 49.000000
75% 74.000000
90% 89.000000
95% 94.000000
99% 98.000000
max 99.000000
Name: Recency, dtype: float64