Información de contacto
Descripción
Indicadores clave de rendimiento o KPIs: medición del éxito empresarial
Cargando y examinando nuestros datos
import pandas as pd
# Datos de los clientes
customer_data = pd.read_csv('user_demographics_v1.csv')
customer_data
uidfloat64
11116091.0 - 99996484.0
reg_dateobject
2018-03-18T00:00:00Z0.8%
2018-03-17T00:00:00Z0.5%
1055 others98.7%
0
54030035
2017-06-29T00:00:00Z
1
72574201
2018-03-05T00:00:00Z
2
64187558
2016-02-07T00:00:00Z
3
92513925
2017-05-25T00:00:00Z
4
99231338
2017-03-26T00:00:00Z
5
64229733
2017-05-17T00:00:00Z
6
16377492
2016-10-16T00:00:00Z
7
36350096
2017-04-07T00:00:00Z
8
98955454
2016-08-11T00:00:00Z
9
40461463
2017-07-16T00:00:00Z
# Datos de las compras de la aplicación
app_purchases = pd.read_csv('purchase_data_v1.csv')
app_purchases
dateobject
2018-01-130.3%
2018-03-030.3%
996 others99.4%
uidint64
11158549 - 99975039
0
2017-07-10
41195147
1
2017-07-15
41195147
2
2017-11-12
41195147
3
2017-09-26
91591874
4
2017-12-01
91591874
5
2016-12-12
90783242
6
2017-06-12
90783242
7
2017-10-11
90783242
8
2017-10-27
90783242
9
2018-01-04
90783242
Fusionar en diferentes conjuntos de campos
# Cambio de nombre a la columna reg_date debido a que también es una columna en común
customer_data.rename(columns={'reg_date':'date'}, inplace=True)
# Combinar con el campo uid
uid_combined_data = app_purchases.merge(customer_data, on=['uid'], how='inner')
uid_combined_data
date_xobject
2018-01-130.3%
2018-03-030.3%
996 others99.4%
uidint64
11158549 - 99975039
0
2017-07-10
41195147
1
2017-07-15
41195147
2
2017-11-12
41195147
3
2017-09-26
91591874
4
2017-12-01
91591874
5
2016-12-12
90783242
6
2017-06-12
90783242
7
2017-10-11
90783242
8
2017-10-27
90783242
9
2018-01-04
90783242
Descripción de variables
# Datos de compra
purchase_data = uid_combined_data
# Media y mediana del precio y la edad
purchase_summary = purchase_data.agg({'price': ['mean', 'median'], 'age': ['mean', 'median']})
print(purchase_summary.round(2))
price age
mean 406.77 23.92
median 299.00 21.00
# Agrupación de datos por dispositivo y genero
grouped_purchase_data = purchase_data.groupby(by = ['device', 'gender'])
# Media, mediana y desviación estandar del precio según la data agrupada
purchase_summary = grouped_purchase_data.agg({'price': ['mean', 'median', 'std']})
print(purchase_summary)
price
mean median std
device gender
and F 400.747504 299 179.984378
M 416.237308 499 195.001520
iOS F 404.435330 299 181.524952
M 405.272401 299 196.843197
Calculando KPIs
from datetime import timedelta
from datetime import datetime
# fecha máxima de compra
current_date = pd.Timestamp(2018, 3, 17)
max_purchase_date = current_date - timedelta(days=28)
# Usuarios que se registraron antes de la fecha máxima
purchase_data = purchase_data.rename(columns={'date_y': 'reg_date'})
purchase_data['reg_date'] = pd.to_datetime(purchase_data['reg_date']).dt.date
purchase_data_filt = purchase_data[purchase_data.reg_date < max_purchase_date]
# Compras dentro de los primeros 28 días de registro
purchase_data_filt = purchase_data_filt.rename(columns={'date_x': 'date'})
purchase_data_filt['date'] = pd.to_datetime(purchase_data_filt['date']).dt.date
purchase_data_filt = purchase_data_filt[(purchase_data_filt.date <= purchase_data_filt.reg_date + timedelta(days=28))]
# Precio promedio pagado por compra
print(purchase_data_filt.price.mean())
414.4237288135593
Precio medio de compra por grupos
import numpy as np
# Datos de compra
purchase_data = purchase_data_filt
# Fecha máxima de registro para que sea un mes antes de la fecha máxima de compra
max_reg_date = current_date - timedelta(days=28)
# Precios del primer mes
month1 = np.where((purchase_data.reg_date < max_reg_date) &
(purchase_data.date < purchase_data.reg_date + timedelta(days=28)),
purchase_data.price,
np.NaN)
# Columna month1 agregado al dataframe datos de compra
purchase_data['month1'] = month1
# Agrupación de los datos por género y dispositivo
purchase_data_upd = purchase_data.groupby(by=['gender', 'device'], as_index=False)
# Crear un resumen de los promedios de los precios del primer mes y los precios en general
purchase_summary = purchase_data_upd.agg(
{'month1': ['mean', 'median'],
'price': ['mean', 'median']})
print(purchase_summary)
gender device month1 price
mean median mean median
0 F and 388.204545 299.0 387.826816 299
1 F iOS 432.587786 499.0 435.567164 499
2 M and 413.705882 399.0 413.534884 399
3 M iOS 433.313725 499.0 434.238095 499