Exploración de datos impulsada por ChatGPT desbloquea conocimientos ocultos en tu conjunto de datos

ChatGPT impulsa la exploración de datos para desbloquear conocimientos ocultos en tu conjunto de datos

 

Analizar un conjunto de datos para comprenderlo mejor y obtener información relevante es un paso importante en cualquier proyecto de ciencia de datos. Y ChatGPT puede ayudar a simplificar y acelerar dicho análisis.

Aquí realizaremos un análisis exploratorio de datos en un conjunto de datos de muestra utilizando ChatGPT. Comprenderemos las distribuciones de las características, cómo varía una característica de interés con otras características y mucho más.

Para seguir y acceder a ChatGPT, necesitas una cuenta de OpenAI. Si no tienes una, puedes registrarte para obtener una cuenta gratuita.

 

Cargando el conjunto de datos y obteniendo información básica

 

La biblioteca seaborn tiene algunos conjuntos de datos listos para usar que podemos analizar. Utilizaremos el conjunto de datos tips.

Prompt: Cuéntame más sobre el conjunto de datos `tips` incorporado en la biblioteca seaborn.

   

Saber de qué se trata el conjunto de datos es un buen punto de partida. Comencemos haciendo lo siguiente:

  • Cargar el conjunto de datos en un dataframe de pandas y
  • Obtener información básica y estadísticas resumidas de las columnas para comprender más sobre el conjunto de datos.

Prompt: Utilicemos el conjunto de datos `tips`. Escribe el código para leer el conjunto de datos en un dataframe de pandas y obtener información básica y estadísticas resumidas de los campos disponibles.

   

import seaborn as sns
import pandas as pd

# Cargar el conjunto de datos 'tips' desde Seaborn
tips_data = sns.load_dataset('tips')

# Crear un dataframe de Pandas a partir del conjunto de datos cargado
tips_df = pd.DataFrame(tips_data)

# Mostrar las primeras filas del dataframe
print("Primeras filas del conjunto de datos 'tips':")
print(tips_df.head())

# Obtener información básica sobre los campos
print("\nInformación sobre el conjunto de datos 'tips':")
print(tips_df.info())

# Obtener estadísticas resumidas de los campos numéricos
print("\nEstadísticas resumidas de los campos numéricos:")
print(tips_df.describe())

 

Vemos que tenemos un resumen bastante informativo del conjunto de datos:

Primeras filas del conjunto de datos 'tips':
   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

Información sobre el conjunto de datos 'tips':

RangeIndex: 244 entries, 0 to 243
Data columns (total 7 columns):
 #   Column      Non-Null Count  Dtype   
---  ------      --------------  -----   
 0   total_bill  244 non-null    float64 
 1   tip         244 non-null    float64 
 2   sex         244 non-null    category
 3   smoker      244 non-null    category
 4   day         244 non-null    category
 5   time        244 non-null    category
 6   size        244 non-null    int64   
dtypes: category(4), float64(2), int64(1)
memory usage: 7.4 KB
None

Estadísticas resumidas de los campos numéricos:
       total_bill         tip        size
count  244.000000  244.000000  244.000000
mean    19.785943    2.998279    2.569672
std      8.902412    1.383638    0.951100
min      3.070000    1.000000    1.000000
25%     13.347500    2.000000    2.000000
50%     17.795000    2.900000    2.000000
75%     24.127500    3.562500    3.000000
max     50.810000   10.000000    6.000000

 

A partir de las estadísticas resumidas, tenemos una idea de las características numéricas en el conjunto de datos. Conocemos los valores mínimo y máximo, los valores medios y medianos, y los valores percentiles para las características numéricas. No hay valores faltantes, por lo que podemos proceder con los siguientes pasos.

 

Explorando el Conjunto de Datos – El Qué, el Porqué y el Cómo

 

Ahora que tenemos una idea del conjunto de datos, vamos más a fondo.

El objetivo de este análisis exploratorio de datos es comprender mejor el comportamiento de las propinas. Para esto, podemos crear visualizaciones útiles. Estas deberían ayudarnos a comprender la relación del monto de la propina con las diversas variables categóricas en el conjunto de datos.

Dado que este es un conjunto de datos simple de analizar, vamos a pedirle a ChatGPT que nos dé un conjunto de pasos para analizar aún más este conjunto de datos.

Prompt: El objetivo del análisis es obtener información sobre el comportamiento de las propinas, comenzando con algunas visualizaciones simples. Sugiere pasos para lo mismo.

   

Los pasos de exploración de datos sugeridos por ChatGPT parecen válidos. Por lo tanto, utilizaremos estos pasos, para comprender mejor un conjunto de datos, uno a la vez. Pediremos a ChatGPT que genere código, intentaremos ejecutar el código generado y lo modificaremos según sea necesario.

 

Explorando la Distribución de los Montos de Propina

 

Como primer paso, visualicemos la distribución del monto de propina.

Prompt: Escribe el código para trazar la distribución de los montos de propina.

   

ChatGPT proporcionó el siguiente código para generar un histograma y un gráfico de densidad de kernel que nos ayudan a tener una idea de la distribución de los montos de propina:

import matplotlib.pyplot as plt

# Crear un histograma de los montos de propina
plt.figure(figsize=(8, 6))
sns.histplot(data=tips_data, x='tip', kde=True)
plt.title("Distribución de los Montos de Propina")
plt.xlabel("Monto de Propina")
plt.ylabel("Frecuencia")
plt.show()

 

 

Analizando el Comportamiento de las Propinas Basado en Variables Categóricas

 

Tenemos muchas variables categóricas en el conjunto de datos. Será útil tener un gráfico de barras simple que muestre el monto promedio de propina para los diferentes valores de estas variables categóricas.

Prompt: Utiliza todas las variables categóricas disponibles (‘sexo’, ‘fumador’, ‘día’ y ‘hora’). Escribe el código para generar gráficos de barras y comprender el comportamiento de las propinas. Utiliza subgráficos para tener los cuatro gráficos de barras en una sola figura.

   

Y aquí está el código. El código se ejecutó sin errores; solo tuve que modificar el tamaño de la figura:

# Definir las variables categóricas a analizar
categorical_vars = ['sexo', 'fumador', 'día', 'hora']

# Crear subgráficos para cada variable categórica
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(8, 5))
fig.suptitle("Comportamiento de las Propinas basado en Variables Categóricas", fontsize=16)

# Generar gráficos de barras para cada variable categórica
for ax, var in zip(axes.flatten(), categorical_vars):
    sns.barplot(data=tips_data, x=var, y='tip', ax=ax)
    ax.set_xlabel(var.capitalize())
    ax.set_ylabel("Monto Promedio de Propina")

plt.tight_layout()
plt.show()

 

 

Desde los gráficos, vemos que características como el sexo y el comportamiento de fumar no influyen en el comportamiento de dar propina (lo cual es esperado). Mientras que los días y las horas parecen hacerlo. La cantidad promedio de propina los fines de semana y en la cena parece ser ligeramente más alta.

 

Visualizando la Relación Entre el Total de la Cuenta y la Cantidad de Propina 

 

Ahora, veamos cómo el total de la cuenta influye en la cantidad de propina pagada.

Prompt: Me gustaría entender la relación entre el total de la cuenta y la cantidad de propina. Por favor, dame el código para generar un gráfico adecuado para esto. Creo que un simple gráfico de dispersión será útil.

   

Aquí está el código para generar el gráfico de dispersión requerido:

# Crear un gráfico de dispersión del total de la cuenta vs. la cantidad de propina
plt.figure(figsize=(6, 4))
sns.scatterplot(data=tips_data, x='total_bill', y='tip')
plt.title("Total de la Cuenta vs. Cantidad de Propina")
plt.xlabel("Total de la Cuenta")
plt.ylabel("Cantidad de Propina")
plt.show()

 

 

Vemos que hay cierta correlación positiva entre el total de la cuenta y la cantidad de propina.

 

Visualizando la Relación Entre el Tamaño del Grupo y la Cantidad de Propina 

 

Como siguiente paso, intentemos visualizar la relación entre el tamaño del grupo y la cantidad de propina. 

Prompt: Ahora, me gustaría entender cómo varía la cantidad de propina con el número de personas que comen (tamaño del grupo). ¿Cuál es una mejor opción: un gráfico de barras o un gráfico de violín?

   

Como también nos gustaría entender la distribución de las cantidades de propina, sigamos adelante y creemos un gráfico de violín.

Prompt: ¡Genial! Por favor, escribe el código para generar un gráfico de violín para esta visualización.

Y aquí está el código:

# Crear un gráfico de violín para la cantidad de propina según el tamaño del grupo
plt.figure(figsize=(6, 4))
sns.violinplot(data=tips_data, x='size', y='tip')
plt.title("Cantidad de Propina según el Tamaño del Grupo")
plt.xlabel("Tamaño del Grupo")
plt.ylabel("Cantidad de Propina")
plt.show()

 

 

Comprendiendo el Comportamiento de Dar Propina Basado en el Tiempo y el Día

 

A continuación, entendamos cómo el tiempo y el día influyen en el comportamiento de dar propina.

Prompt: Quiero entender cómo varía el comportamiento de dar propina dependiendo del tiempo y el día. ¿Cuál es una buena visualización? Además, escribe el código para generar la visualización requerida.

   

Este fragmento de código muestra cómo realizar un pivote usando el día como índice y agregar el valor promedio de las cantidades de propina para el almuerzo y la cena (el momento del día):

# Crear una tabla pivote de la cantidad promedio de propina por tiempo y día
pivot_table = tips_data.pivot_table(values='tip', index='day', columns='time', aggfunc='mean')

# Crear un mapa de calor del comportamiento de dar propina basado en el tiempo y el día
plt.figure(figsize=(8, 6))
sns.heatmap(pivot_table, cmap='YlGnBu', annot=True, fmt=".2f", cbar=True)
plt.title("Comportamiento de Dar Propina basado en el Tiempo y el Día")
plt.xlabel("Tiempo")
plt.ylabel("Día")
plt.show()

 

 

A partir del mapa de calor, vemos que los montos promedio de propina son ligeramente más altos para la cena los domingos que para otras combinaciones de día-tiempo. En general, para un día en particular, en promedio, los montos de propina para la cena parecen ser más altos que los del almuerzo.

También vemos que no hay suficientes datos para el almuerzo los sábados y domingos. Debido a que solo tenemos un total de 244 registros, es posible que no tengamos ningún registro para los almuerzos los fines de semana. Vamos a verificar esto.

Indicación: Quiero obtener el número de grupos que pidieron almuerzo los fines de semana. Escribe el código para filtrar el dataframe `tips_data` y obtener este conteo.

   

Aquí está el código para filtrar el dataframe y obtener un subconjunto que contiene los registros de los almuerzos los fines de semana:

# Filtrar los datos para el almuerzo los fines de semana
datos_almuerzo_fines_de_semana = tips_data[(tips_data['time'] == 'Almuerzo') & (tips_data['day'].isin(['Sáb', 'Dom']))]

# Obtener el conteo de grupos que pidieron almuerzo los fines de semana
conteo = datos_almuerzo_fines_de_semana['size'].count()
print("Número de grupos que pidieron almuerzo los fines de semana:", conteo)

 

Y vemos que no tenemos ningún registro para lo mismo, por lo que nuestro análisis es correcto hasta ahora:

Número de grupos que pidieron almuerzo los fines de semana: 0

 

¡Y eso es todo! Exploramos el conjunto de datos `tips` y generamos algunas visualizaciones útiles al solicitar a ChatGPT. 

 

Conclusión

 

En este artículo, aprendimos cómo aprovechar ChatGPT para la exploración de datos. Si estás interesado en integrar ChatGPT en tu flujo de trabajo de ciencia de datos, consulta esta guía. Explica un proyecto de ejemplo, junto con consejos y mejores prácticas, para utilizar eficazmente ChatGPT en experimentos de ciencia de datos.     Bala Priya C es una desarrolladora y escritora técnica de India. Le gusta trabajar en la intersección entre matemáticas, programación, ciencia de datos y creación de contenido. Sus áreas de interés y experiencia incluyen DevOps, ciencia de datos y procesamiento del lenguaje natural. Le gusta leer, escribir, programar y tomar café. Actualmente, está trabajando en aprender y compartir su conocimiento con la comunidad de desarrolladores mediante la creación de tutoriales, guías prácticas, artículos de opinión y más.  

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Kinara presenta el procesador Ara-2 revolucionando el procesamiento de IA en dispositivos para un rendimiento mejorado

Kinara, una entidad pionera en inteligencia artificial energéticamente eficiente en el dispositivo, ha presentado su ...

Inteligencia Artificial

Top 50 Herramientas de Escritura de IA para Probar (Agosto 2023)

Grammarly Grammarly es una gran herramienta para mejorar la escritura. Revisa la gramática, ortografía, puntuación y ...

Inteligencia Artificial

Simplifica la preparación de datos para la IA generativa con Amazon SageMaker Data Wrangler

Los modelos de inteligencia artificial generativa (IA generativa) han demostrado impresionantes capacidades para gene...

Inteligencia Artificial

Investigadores de la Universidad de Boston lanzan la familia Platypus de LLMs afinados para lograr un refinamiento económico, rápido y potente de los LLMs base.

Los Modelos de Lenguaje Grande (LLMs) han causado sensación en el mundo. Estos modelos súper efectivos y eficientes s...