Volviendo a nuestro proyecto de Manos a la Obra, logramos generar dos visualizaciones más con los datos de nuestros desafíos.
¿Ahora, vamos a crear otros visuales enfocados en el perfil de nuestros clientes?
Has recibido una nueva solicitud de Zoop para generar 2 visuales, siendo uno de ellos relacionado al registro de clientes para un nuevo servicio que Zoop implementará, el Zoop Pay, y el otro sobre las evaluaciones de los clientes en relación con su ubicación. Observemos las dos situaciones y construyamos con la ayuda de ChatGPT los dos gráficos solicitados:
Desafío 1:
**PROMPT para CHATGPT:
Tenemos un DataFrame llamado df_clientes que contiene una columna llamada pre_registro_zoop_pay, donde 1 indica que el cliente está pre-registrado y 0 que no. Queremos construir un gráfico de pizza (pastel) que muestre la proporción de estos dos grupos.
El gráfico debe mostrar el porcentaje de cada categoría, usar colores contrastantes (azul para pre-registrados y gris para los que no) y tener un título descriptivo: 'Proporción de Pre-registro en Zoop Pay'. Utiliza matplotlib y pandas en Python.**
url_clientes = "https://gist.githubusercontent.com/ahcamachod/d08898e1cc84c7271856e78d9558ca3d/raw/2f7e1fa53711efe6433a5c5ec79948f600591cb9/clientes_zoop.csv"
url_ventas = "https://gist.githubusercontent.com/ahcamachod/966d7162a3c3a2769b8770b35abf1bcc/raw/d79941b3fa46a450f3611589abd8663399c1277b/ventas_zoop.csv"
import pandas as pd
df_clientes = pd.read_csv(url_clientes)
df_clientes.head()
print("Unique values in 'cashback' column:")
print(df_clientes['cashback'].unique())
total_customers = len(df_clientes)
pre_registered_customers = df_clientes[df_clientes['cashback'] == 'Sí'].shape[0]
percentage_pre_registered = (pre_registered_customers / total_customers) * 100
print(f"\nTotal number of customers: {total_customers}")
print(f"Number of customers pre-registered for 'Zoop Pay': {pre_registered_customers}")
print(f"Percentage of customers pre-registered for 'Zoop Pay': {percentage_pre_registered:.2f}%")
import matplotlib.pyplot as plt
# Count the occurrences of 'Sí' and 'No' in the 'cashback' column
cashback_counts = df_clientes['cashback'].value_counts()
# Prepare data for the pie chart
labels = ['Pre-registered' if label == 'Sí' else 'Not Pre-registered' for label in cashback_counts.index]
sizes = cashback_counts.values
colors = ['#66b3ff', '#99ff99'] # Example colors for better visualization
# Create the pie chart
plt.figure(figsize=(8, 8))
plt.pie(sizes, autopct='%1.1f%%', startangle=90, colors=colors, pctdistance=0.85)
plt.title('Proportion of Customers Pre-registered for Zoop Pay', fontsize=16)
plt.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
plt.legend(labels, loc="upper right", title="Zoop Pay Status")
plt.show()
Desafío 2:
**El Prompt para ChatGPT
"Tenemos un DataFrame llamado df_clientes con las columnas edad (numérica) y region (categórica). Queremos crear un Boxplot para analizar la distribución de las edades de los clientes en cada región del país. El gráfico debe tener la region en el eje X y la edad en el eje Y. Utiliza la librería seaborn para que el visual sea estéticamente profesional, aplica una paleta de colores variada y añade un título: 'Distribución de Edades por Región - Perfil Zoop'. Por favor, ordena las regiones alfabéticamente."
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(14, 7))
sns.boxplot(x='region', y='edad', data=df_clientes)
plt.title('Age Distribution by Region')
plt.xlabel('Region')
plt.ylabel('Age')
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()