Capítulo 1: Proyectos de Análisis de Datos del Mundo Real
1.3 Ejercicios prácticos para el Capítulo 1
Estos ejercicios proporcionan práctica práctica para técnicas de segmentación de clientes y análisis de datos en datos minoristas y de atención médica. Cada ejercicio está diseñado para fortalecer su comprensión de la preparación de datos, exploración y técnicas de agrupamiento. Se incluyen soluciones con código para orientación.
Ejercicio 1: Manejo de valores faltantes en datos minoristas
Tiene un conjunto de datos minoristas con columnas como CustomerID, Age, Total Spend, y Purchase Frequency. Su tarea es manejar los valores faltantes de la siguiente manera:
- Eliminar filas con CustomerID faltante.
- Llenar los valores faltantes de Age con la edad mediana.
- Eliminar columnas con más del 50% de valores faltantes.
import pandas as pd
# Sample retail data with missing values
data = {'CustomerID': [1, 2, None, 4, 5],
'Age': [25, 34, None, 45, 28],
'Total Spend': [2000, 1500, 3000, None, 1800],
'Purchase Frequency': [15, 10, 8, 5, None]}
df = pd.DataFrame(data)
# Solution: Handle missing values
df.dropna(subset=['CustomerID'], inplace=True)
df['Age'].fillna(df['Age'].median(), inplace=True)
df = df.dropna(thresh=len(df) * 0.5, axis=1)
print("Data after handling missing values:")
print(df)
En esta solución:
Las filas con CustomerID faltante se eliminan, los valores de Age se rellenan con la mediana, y las columnas con más del 50% de datos faltantes se descartan.
Ejercicio 2: Codificación de variables categóricas en datos de atención médica
Dado un conjunto de datos de atención médica con columnas como Gender y Diagnosis, aplique la codificación one-hot para convertir estas variables categóricas en variables dummy.
# Sample healthcare data
data = {'PatientID': [1, 2, 3, 4],
'Gender': ['Male', 'Female', 'Female', 'Male'],
'Diagnosis': ['Diabetes', 'Hypertension', 'Diabetes', 'Heart Disease']}
df = pd.DataFrame(data)
# Solution: Apply one-hot encoding
df_encoded = pd.get_dummies(df, columns=['Gender', 'Diagnosis'], drop_first=True)
print("Data after encoding categorical variables:")
print(df_encoded)
En esta solución:
La codificación one-hot convierte Gender y Diagnosis en variables dummy, eliminando la primera categoría para evitar la multicolinealidad.
Ejercicio 3: Estandarización de características para el agrupamiento
Utilizando un conjunto de datos minoristas con columnas Total Spend, Purchase Frequency y Age, estandariza estas características para preparar el agrupamiento.
from sklearn.preprocessing import StandardScaler
# Sample retail data
data = {'Total Spend': [2000, 3000, 2500, 1800, 3500],
'Purchase Frequency': [15, 10, 20, 5, 12],
'Age': [25, 30, 35, 40, 29]}
df = pd.DataFrame(data)
# Solution: Standardize features
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df)
print("Standardized Features:")
print(scaled_features)
En esta solución:
StandardScaler se utiliza para estandarizar Total Spend (Gasto Total), Purchase Frequency (Frecuencia de Compra) y Age (Edad), asegurando que contribuyan de manera equitativa al agrupamiento.
Ejercicio 4: Aplicación de K-means para la Segmentación de Clientes
Utilizando un conjunto de datos con las columnas Total Spend (Gasto Total), Purchase Frequency (Frecuencia de Compra) y Age (Edad), aplica el agrupamiento K-means con tres clústeres para segmentar a los clientes.
from sklearn.cluster import KMeans
# Sample retail data
data = {'Total Spend': [2000, 3000, 2500, 1800, 3500],
'Purchase Frequency': [15, 10, 20, 5, 12],
'Age': [25, 30, 35, 40, 29]}
df = pd.DataFrame(data)
# Standardize features before clustering
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df)
# Solution: Apply K-means with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
df['Cluster'] = kmeans.fit_predict(scaled_features)
print("Clustered Data with K-means:")
print(df)
En esta solución:
El agrupamiento K-means con n_clusters=3
segmenta a los clientes, y cada cliente se asigna a un clúster en función de su gasto, frecuencia y edad.
Ejercicio 5: Uso del Método del Codo para Seleccionar el K Óptimo
Utilizando el mismo conjunto de datos de retail, aplica el Método del Codo para determinar el número óptimo de clústeres (K) para el agrupamiento K-means.
inertia_values = []
K_range = range(1, 6)
# Calculate inertia for each K
for k in K_range:
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(scaled_features)
inertia_values.append(kmeans.inertia_)
# Plot inertia values
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 4))
plt.plot(K_range, inertia_values, marker='o')
plt.xlabel('Number of Clusters (K)')
plt.ylabel('Inertia')
plt.title('Elbow Method for Optimal K')
plt.show()
En esta solución:
El Método del Codo se utiliza para graficar los valores de inercia, permitiendo observar el punto donde agregar más clústeres deja de reducir significativamente la inercia.
Estos ejercicios abarcan la preparación de datos, codificación de características, estandarización, agrupamiento K-means y la selección del número óptimo de clústeres. Al practicar estos pasos, adquirirás un sólido entendimiento de técnicas de análisis de datos y segmentación en los contextos de retail y atención médica.
1.3 Ejercicios prácticos para el Capítulo 1
Estos ejercicios proporcionan práctica práctica para técnicas de segmentación de clientes y análisis de datos en datos minoristas y de atención médica. Cada ejercicio está diseñado para fortalecer su comprensión de la preparación de datos, exploración y técnicas de agrupamiento. Se incluyen soluciones con código para orientación.
Ejercicio 1: Manejo de valores faltantes en datos minoristas
Tiene un conjunto de datos minoristas con columnas como CustomerID, Age, Total Spend, y Purchase Frequency. Su tarea es manejar los valores faltantes de la siguiente manera:
- Eliminar filas con CustomerID faltante.
- Llenar los valores faltantes de Age con la edad mediana.
- Eliminar columnas con más del 50% de valores faltantes.
import pandas as pd
# Sample retail data with missing values
data = {'CustomerID': [1, 2, None, 4, 5],
'Age': [25, 34, None, 45, 28],
'Total Spend': [2000, 1500, 3000, None, 1800],
'Purchase Frequency': [15, 10, 8, 5, None]}
df = pd.DataFrame(data)
# Solution: Handle missing values
df.dropna(subset=['CustomerID'], inplace=True)
df['Age'].fillna(df['Age'].median(), inplace=True)
df = df.dropna(thresh=len(df) * 0.5, axis=1)
print("Data after handling missing values:")
print(df)
En esta solución:
Las filas con CustomerID faltante se eliminan, los valores de Age se rellenan con la mediana, y las columnas con más del 50% de datos faltantes se descartan.
Ejercicio 2: Codificación de variables categóricas en datos de atención médica
Dado un conjunto de datos de atención médica con columnas como Gender y Diagnosis, aplique la codificación one-hot para convertir estas variables categóricas en variables dummy.
# Sample healthcare data
data = {'PatientID': [1, 2, 3, 4],
'Gender': ['Male', 'Female', 'Female', 'Male'],
'Diagnosis': ['Diabetes', 'Hypertension', 'Diabetes', 'Heart Disease']}
df = pd.DataFrame(data)
# Solution: Apply one-hot encoding
df_encoded = pd.get_dummies(df, columns=['Gender', 'Diagnosis'], drop_first=True)
print("Data after encoding categorical variables:")
print(df_encoded)
En esta solución:
La codificación one-hot convierte Gender y Diagnosis en variables dummy, eliminando la primera categoría para evitar la multicolinealidad.
Ejercicio 3: Estandarización de características para el agrupamiento
Utilizando un conjunto de datos minoristas con columnas Total Spend, Purchase Frequency y Age, estandariza estas características para preparar el agrupamiento.
from sklearn.preprocessing import StandardScaler
# Sample retail data
data = {'Total Spend': [2000, 3000, 2500, 1800, 3500],
'Purchase Frequency': [15, 10, 20, 5, 12],
'Age': [25, 30, 35, 40, 29]}
df = pd.DataFrame(data)
# Solution: Standardize features
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df)
print("Standardized Features:")
print(scaled_features)
En esta solución:
StandardScaler se utiliza para estandarizar Total Spend (Gasto Total), Purchase Frequency (Frecuencia de Compra) y Age (Edad), asegurando que contribuyan de manera equitativa al agrupamiento.
Ejercicio 4: Aplicación de K-means para la Segmentación de Clientes
Utilizando un conjunto de datos con las columnas Total Spend (Gasto Total), Purchase Frequency (Frecuencia de Compra) y Age (Edad), aplica el agrupamiento K-means con tres clústeres para segmentar a los clientes.
from sklearn.cluster import KMeans
# Sample retail data
data = {'Total Spend': [2000, 3000, 2500, 1800, 3500],
'Purchase Frequency': [15, 10, 20, 5, 12],
'Age': [25, 30, 35, 40, 29]}
df = pd.DataFrame(data)
# Standardize features before clustering
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df)
# Solution: Apply K-means with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
df['Cluster'] = kmeans.fit_predict(scaled_features)
print("Clustered Data with K-means:")
print(df)
En esta solución:
El agrupamiento K-means con n_clusters=3
segmenta a los clientes, y cada cliente se asigna a un clúster en función de su gasto, frecuencia y edad.
Ejercicio 5: Uso del Método del Codo para Seleccionar el K Óptimo
Utilizando el mismo conjunto de datos de retail, aplica el Método del Codo para determinar el número óptimo de clústeres (K) para el agrupamiento K-means.
inertia_values = []
K_range = range(1, 6)
# Calculate inertia for each K
for k in K_range:
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(scaled_features)
inertia_values.append(kmeans.inertia_)
# Plot inertia values
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 4))
plt.plot(K_range, inertia_values, marker='o')
plt.xlabel('Number of Clusters (K)')
plt.ylabel('Inertia')
plt.title('Elbow Method for Optimal K')
plt.show()
En esta solución:
El Método del Codo se utiliza para graficar los valores de inercia, permitiendo observar el punto donde agregar más clústeres deja de reducir significativamente la inercia.
Estos ejercicios abarcan la preparación de datos, codificación de características, estandarización, agrupamiento K-means y la selección del número óptimo de clústeres. Al practicar estos pasos, adquirirás un sólido entendimiento de técnicas de análisis de datos y segmentación en los contextos de retail y atención médica.
1.3 Ejercicios prácticos para el Capítulo 1
Estos ejercicios proporcionan práctica práctica para técnicas de segmentación de clientes y análisis de datos en datos minoristas y de atención médica. Cada ejercicio está diseñado para fortalecer su comprensión de la preparación de datos, exploración y técnicas de agrupamiento. Se incluyen soluciones con código para orientación.
Ejercicio 1: Manejo de valores faltantes en datos minoristas
Tiene un conjunto de datos minoristas con columnas como CustomerID, Age, Total Spend, y Purchase Frequency. Su tarea es manejar los valores faltantes de la siguiente manera:
- Eliminar filas con CustomerID faltante.
- Llenar los valores faltantes de Age con la edad mediana.
- Eliminar columnas con más del 50% de valores faltantes.
import pandas as pd
# Sample retail data with missing values
data = {'CustomerID': [1, 2, None, 4, 5],
'Age': [25, 34, None, 45, 28],
'Total Spend': [2000, 1500, 3000, None, 1800],
'Purchase Frequency': [15, 10, 8, 5, None]}
df = pd.DataFrame(data)
# Solution: Handle missing values
df.dropna(subset=['CustomerID'], inplace=True)
df['Age'].fillna(df['Age'].median(), inplace=True)
df = df.dropna(thresh=len(df) * 0.5, axis=1)
print("Data after handling missing values:")
print(df)
En esta solución:
Las filas con CustomerID faltante se eliminan, los valores de Age se rellenan con la mediana, y las columnas con más del 50% de datos faltantes se descartan.
Ejercicio 2: Codificación de variables categóricas en datos de atención médica
Dado un conjunto de datos de atención médica con columnas como Gender y Diagnosis, aplique la codificación one-hot para convertir estas variables categóricas en variables dummy.
# Sample healthcare data
data = {'PatientID': [1, 2, 3, 4],
'Gender': ['Male', 'Female', 'Female', 'Male'],
'Diagnosis': ['Diabetes', 'Hypertension', 'Diabetes', 'Heart Disease']}
df = pd.DataFrame(data)
# Solution: Apply one-hot encoding
df_encoded = pd.get_dummies(df, columns=['Gender', 'Diagnosis'], drop_first=True)
print("Data after encoding categorical variables:")
print(df_encoded)
En esta solución:
La codificación one-hot convierte Gender y Diagnosis en variables dummy, eliminando la primera categoría para evitar la multicolinealidad.
Ejercicio 3: Estandarización de características para el agrupamiento
Utilizando un conjunto de datos minoristas con columnas Total Spend, Purchase Frequency y Age, estandariza estas características para preparar el agrupamiento.
from sklearn.preprocessing import StandardScaler
# Sample retail data
data = {'Total Spend': [2000, 3000, 2500, 1800, 3500],
'Purchase Frequency': [15, 10, 20, 5, 12],
'Age': [25, 30, 35, 40, 29]}
df = pd.DataFrame(data)
# Solution: Standardize features
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df)
print("Standardized Features:")
print(scaled_features)
En esta solución:
StandardScaler se utiliza para estandarizar Total Spend (Gasto Total), Purchase Frequency (Frecuencia de Compra) y Age (Edad), asegurando que contribuyan de manera equitativa al agrupamiento.
Ejercicio 4: Aplicación de K-means para la Segmentación de Clientes
Utilizando un conjunto de datos con las columnas Total Spend (Gasto Total), Purchase Frequency (Frecuencia de Compra) y Age (Edad), aplica el agrupamiento K-means con tres clústeres para segmentar a los clientes.
from sklearn.cluster import KMeans
# Sample retail data
data = {'Total Spend': [2000, 3000, 2500, 1800, 3500],
'Purchase Frequency': [15, 10, 20, 5, 12],
'Age': [25, 30, 35, 40, 29]}
df = pd.DataFrame(data)
# Standardize features before clustering
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df)
# Solution: Apply K-means with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
df['Cluster'] = kmeans.fit_predict(scaled_features)
print("Clustered Data with K-means:")
print(df)
En esta solución:
El agrupamiento K-means con n_clusters=3
segmenta a los clientes, y cada cliente se asigna a un clúster en función de su gasto, frecuencia y edad.
Ejercicio 5: Uso del Método del Codo para Seleccionar el K Óptimo
Utilizando el mismo conjunto de datos de retail, aplica el Método del Codo para determinar el número óptimo de clústeres (K) para el agrupamiento K-means.
inertia_values = []
K_range = range(1, 6)
# Calculate inertia for each K
for k in K_range:
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(scaled_features)
inertia_values.append(kmeans.inertia_)
# Plot inertia values
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 4))
plt.plot(K_range, inertia_values, marker='o')
plt.xlabel('Number of Clusters (K)')
plt.ylabel('Inertia')
plt.title('Elbow Method for Optimal K')
plt.show()
En esta solución:
El Método del Codo se utiliza para graficar los valores de inercia, permitiendo observar el punto donde agregar más clústeres deja de reducir significativamente la inercia.
Estos ejercicios abarcan la preparación de datos, codificación de características, estandarización, agrupamiento K-means y la selección del número óptimo de clústeres. Al practicar estos pasos, adquirirás un sólido entendimiento de técnicas de análisis de datos y segmentación en los contextos de retail y atención médica.
1.3 Ejercicios prácticos para el Capítulo 1
Estos ejercicios proporcionan práctica práctica para técnicas de segmentación de clientes y análisis de datos en datos minoristas y de atención médica. Cada ejercicio está diseñado para fortalecer su comprensión de la preparación de datos, exploración y técnicas de agrupamiento. Se incluyen soluciones con código para orientación.
Ejercicio 1: Manejo de valores faltantes en datos minoristas
Tiene un conjunto de datos minoristas con columnas como CustomerID, Age, Total Spend, y Purchase Frequency. Su tarea es manejar los valores faltantes de la siguiente manera:
- Eliminar filas con CustomerID faltante.
- Llenar los valores faltantes de Age con la edad mediana.
- Eliminar columnas con más del 50% de valores faltantes.
import pandas as pd
# Sample retail data with missing values
data = {'CustomerID': [1, 2, None, 4, 5],
'Age': [25, 34, None, 45, 28],
'Total Spend': [2000, 1500, 3000, None, 1800],
'Purchase Frequency': [15, 10, 8, 5, None]}
df = pd.DataFrame(data)
# Solution: Handle missing values
df.dropna(subset=['CustomerID'], inplace=True)
df['Age'].fillna(df['Age'].median(), inplace=True)
df = df.dropna(thresh=len(df) * 0.5, axis=1)
print("Data after handling missing values:")
print(df)
En esta solución:
Las filas con CustomerID faltante se eliminan, los valores de Age se rellenan con la mediana, y las columnas con más del 50% de datos faltantes se descartan.
Ejercicio 2: Codificación de variables categóricas en datos de atención médica
Dado un conjunto de datos de atención médica con columnas como Gender y Diagnosis, aplique la codificación one-hot para convertir estas variables categóricas en variables dummy.
# Sample healthcare data
data = {'PatientID': [1, 2, 3, 4],
'Gender': ['Male', 'Female', 'Female', 'Male'],
'Diagnosis': ['Diabetes', 'Hypertension', 'Diabetes', 'Heart Disease']}
df = pd.DataFrame(data)
# Solution: Apply one-hot encoding
df_encoded = pd.get_dummies(df, columns=['Gender', 'Diagnosis'], drop_first=True)
print("Data after encoding categorical variables:")
print(df_encoded)
En esta solución:
La codificación one-hot convierte Gender y Diagnosis en variables dummy, eliminando la primera categoría para evitar la multicolinealidad.
Ejercicio 3: Estandarización de características para el agrupamiento
Utilizando un conjunto de datos minoristas con columnas Total Spend, Purchase Frequency y Age, estandariza estas características para preparar el agrupamiento.
from sklearn.preprocessing import StandardScaler
# Sample retail data
data = {'Total Spend': [2000, 3000, 2500, 1800, 3500],
'Purchase Frequency': [15, 10, 20, 5, 12],
'Age': [25, 30, 35, 40, 29]}
df = pd.DataFrame(data)
# Solution: Standardize features
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df)
print("Standardized Features:")
print(scaled_features)
En esta solución:
StandardScaler se utiliza para estandarizar Total Spend (Gasto Total), Purchase Frequency (Frecuencia de Compra) y Age (Edad), asegurando que contribuyan de manera equitativa al agrupamiento.
Ejercicio 4: Aplicación de K-means para la Segmentación de Clientes
Utilizando un conjunto de datos con las columnas Total Spend (Gasto Total), Purchase Frequency (Frecuencia de Compra) y Age (Edad), aplica el agrupamiento K-means con tres clústeres para segmentar a los clientes.
from sklearn.cluster import KMeans
# Sample retail data
data = {'Total Spend': [2000, 3000, 2500, 1800, 3500],
'Purchase Frequency': [15, 10, 20, 5, 12],
'Age': [25, 30, 35, 40, 29]}
df = pd.DataFrame(data)
# Standardize features before clustering
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df)
# Solution: Apply K-means with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
df['Cluster'] = kmeans.fit_predict(scaled_features)
print("Clustered Data with K-means:")
print(df)
En esta solución:
El agrupamiento K-means con n_clusters=3
segmenta a los clientes, y cada cliente se asigna a un clúster en función de su gasto, frecuencia y edad.
Ejercicio 5: Uso del Método del Codo para Seleccionar el K Óptimo
Utilizando el mismo conjunto de datos de retail, aplica el Método del Codo para determinar el número óptimo de clústeres (K) para el agrupamiento K-means.
inertia_values = []
K_range = range(1, 6)
# Calculate inertia for each K
for k in K_range:
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(scaled_features)
inertia_values.append(kmeans.inertia_)
# Plot inertia values
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 4))
plt.plot(K_range, inertia_values, marker='o')
plt.xlabel('Number of Clusters (K)')
plt.ylabel('Inertia')
plt.title('Elbow Method for Optimal K')
plt.show()
En esta solución:
El Método del Codo se utiliza para graficar los valores de inercia, permitiendo observar el punto donde agregar más clústeres deja de reducir significativamente la inercia.
Estos ejercicios abarcan la preparación de datos, codificación de características, estandarización, agrupamiento K-means y la selección del número óptimo de clústeres. Al practicar estos pasos, adquirirás un sólido entendimiento de técnicas de análisis de datos y segmentación en los contextos de retail y atención médica.