Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Se presenta hasta el lunes 12 hasta las 9.00 pm, enviar por correo al IGC)
Calcule:
- el número productos diferentes que se vende: 4,070
- el rango de fechas de ventas: 2010-12-01 al 2011-12-09
- el número clientes: 4,372
# import libraries
import pandas as pd
SOLUCIÓN 2
SOLUCIÓN 3
# import libraries
import pandas as pd
import libraries
import pandas as pd
import numpy as np
import sys
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
def order_cluster(cluster_field_name, target_field_name,df,ascending):
new_cluster_field_name = 'new_' + cluster_field_name
df_new = df.groupby(cluster_field_name)[target_field_name].mean().reset_index()
df_new =
df_new.sort_values(by=target_field_name,ascending=ascending).reset_index(drop=Tr
ue)
df_new['index'] = df_new.index
df_final = pd.merge(df,df_new[[cluster_field_name,'index']], on=cluster_field_name)
df_final = df_final.drop([cluster_field_name],axis=1)
df_final = df_final.rename(columns={"index":cluster_field_name})
return df_final
# lee los datos y crea
tx_data = pd.read_csv('./data/customer_segmentation.csv', encoding='cp1252')
tx_data['InvoiceDate'] = pd.to_datetime(tx_data['InvoiceDate'])
tx_data['InvoiceYearMonth'] = tx_data['InvoiceDate'].map(lambda date: 100*date.year +
date.month)
tx_uk = tx_data.query("Country=='United Kingdom'").reset_index(drop=True)
# creando una dataframe generico para capturar el CustomerID y nuevos escores de
segmentación
tx_user = pd.DataFrame(tx_data['CustomerID'].unique())
tx_user.columns = ['CustomerID']
# 5. Revenue
# calcula el ingreso por cada cliente
tx_uk['Revenue'] = tx_uk['UnitPrice'] * tx_uk['Quantity']
tx_revenue = tx_uk.groupby('CustomerID').Revenue.sum().reset_index()
# pasa estos datos a tx_user
tx_user = pd.merge(tx_user, tx_revenue, on='CustomerID')
tx_user.Revenue.plot.hist(bins=100)
plt.show()
# 5.1. Asigna score de revenue
# construye 4 grupos para frecuencia y adiciona a tx_user
kmeans = KMeans(n_clusters=4)
tx_user['RevenueCluster'] = kmeans.fit_predict(tx_user[['Revenue']])
SOLUCIÓN 4
tx_user = tx_user[tx_user['Revenue']<tx_user['Revenue'].quantile(0.98)]
Esta nueva transacción nos permite ampliar el detalle para borrar los datos extremos
Para este caso uso FRECUENCY en vez de revenue para darle otra visualización
tx_user = tx_user[tx_user['FRECUENCY']<tx_user['FRECUENCY'].quantile(0.98)]
SOLUCIÓN 5
Se asigna el número de grupos, para los casos que revisamos en clases son 4.
SOLUCIÓN 6
SOLUCIÓN 7
Calcule:
- el número productos diferentes que se vende: 4,070
- el rango de fechas de ventas: 2010-12-01 al 2011-12-09
- el número clientes: 4,372
SOLUCIÓN 8