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.
- 6 Pasos para Proteger tu Privacidad al Usar Herramientas de IA Generativa
- Investigadores de ETH Zurich y Microsoft proponen X-Avatar un modelo de avatar humano implícito animable capaz de capturar la postura del cuerpo humano y expresiones faciales.
- Herramientas de IA principales para emprendedores 2023
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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- La carta de presentación generada por IA de un graduado del IIT hace reír a todos
- Un nuevo estudio de investigación de IA de DeepMind propone dos codificaciones posicionales direccionales y estructurales para grafos dirigidos
- ChatGPT investigado por la Comisión Federal de Comercio por posibles daños
- Conoce Objaverse-XL Un conjunto de datos abierto de más de 10 millones de objetos en 3D.
- Puedes conservar tu trabajo, pero no será el mismo trabajo
- ¡No, no, no lo pongamos ahí! Este método de IA puede realizar edición de diseño continua con modelos de difusión
- Aproveche el poder de las bases de datos vectoriales influenciando los modelos de lenguaje con información personalizada.