Los gráficos son una herramienta esencial en el análisis de datos y la visualización de información. Permiten representar de manera visual la relación entre diferentes variables y facilitan la comprensión de patrones, tendencias y comparaciones. Además, los gráficos pueden transmitir información compleja de manera clara y concisa, lo que los convierte en una valiosa herramienta de comunicación.
En el contexto de aprender Python, crear gráficos es una excelente manera de aplicar y consolidar los conocimientos adquiridos. Al utilizar librerías como Matplotlib, Seaborn o Plotly, podemos generar gráficos de barras, gráficos de líneas, gráficos de dispersión y muchos otros tipos de visualizaciones. Estas librerías ofrecen una amplia gama de opciones de personalización y configuración, lo que nos permite adaptar los gráficos a nuestras necesidades específicas.
Gráficos en ChaGPT
La creación de gráficos en ChatGPT nos brinda varias ventajas para aprender Python. En primer lugar, nos permite practicar la sintaxis y las funciones necesarias para generar gráficos en el lenguaje Python. A medida que exploramos diferentes tipos de gráficos y ajustamos sus parámetros, estamos aplicando los conceptos aprendidos en programación, como la manipulación de listas, la indexación, los bucles y las estructuras de control.
Además, al crear gráficos en ChatGPT, estamos trabajando con datos reales o ficticios, lo que nos permite desarrollar habilidades de manipulación y análisis de datos. Podemos aplicar técnicas de limpieza y transformación de datos antes de visualizarlos, lo que nos ayuda a comprender mejor cómo se manejan los datos en el contexto de la visualización.
Por otro lado, los gráficos generados en ChatGPT nos proporcionan un feedback visual inmediato sobre los resultados de nuestro código. Podemos observar los gráficos en tiempo real y verificar si se representan correctamente los datos y si cumplen con nuestros objetivos de visualización. Esto nos ayuda a identificar posibles errores y a realizar ajustes en nuestro código para mejorar la presentación visual de los datos.
Creando datos que nos proporciona ChatGPT para los gráficos
Se va a analizar la Distribución del gasto turístico realizado según país de destino. El dataset no los proporciona el propio ChatGPT. No he revisado si son datos correcto o no.
Se utiliza el siguiente código:
import matplotlib.pyplot as plt import numpy as np # Datos del gasto turístico de los países years = [2019, 2020, 2021, 2022] countries = ['Spain', 'France', 'Italy', 'Germany', 'UK', 'Greece'] spain = [92.278, 19.723, 22.961, 24.520] france = [55.674, 17.312, 24.751, 28.157] italy = [45.150, 17.720, 23.532, 27.613] germany = [38.861, 16.361, 21.181, 24.553] uk = [41.861, 8.542, 14.852, 16.963] greece = [18.198, 4.370, 7.712, 9.628] # Configuración del gráfico plt.figure(figsize=(10, 6)) # Tamaño del gráfico bar_width = 0.1 opacity = 0.8 index = np.arange(len(years)) # Colores para cada país colors = ['blue', 'orange', 'green', 'red', 'purple', 'brown'] # Dibujar las barras para cada país y año for i, country in enumerate(countries): plt.bar(index + i * bar_width, eval(country.lower()), bar_width, alpha=opacity, color=colors[i], label=country) # Mostrar el valor encima de cada columna for j, value in enumerate(eval(country.lower())): plt.text(j + i * bar_width, value + 0.5, str(value), ha='center', va='bottom', fontsize=5) plt.xlabel('Años') plt.ylabel('Gasto Turístico (miles de millones de euros)') plt.title('Gasto Turístico de países europeos (2019-2022)') plt.xticks(index + bar_width * (len(countries) / 2 - 0.5), years) plt.legend() # Mostrar el gráfico plt.show() # Guardar el gráfico en formato PNG plt.savefig('nombre_del_archivo.png', dpi=300, bbox_inches='tight')
Se obtiene el siguiente gráfico:
Comprobando el porcentaje de cambio de año a año
Ahora le vamos a pedir a ChatGPT que cree una tabla que muestre el porcentaje de cambio de año a año para cada país y luego un gráfico similar al anterior que muestre ese cambio porcentual. Se utiliza este código:
import matplotlib.pyplot as plt import numpy as np # Datos del gasto turístico de los países years = [2019, 2020, 2021, 2022] countries = ['Spain', 'France', 'Italy', 'Germany', 'UK', 'Greece'] spain = [92.278, 19.723, 22.961, 24.520] france = [55.674, 17.312, 24.751, 28.157] italy = [45.150, 17.720, 23.532, 27.613] germany = [38.861, 16.361, 21.181, 24.553] uk = [41.861, 8.542, 14.852, 16.963] greece = [18.198, 4.370, 7.712, 9.628] # Calcular el porcentaje de cambio de año a año para cada país spain_pct_change = [(spain[i+1] - spain[i]) / spain[i] * 100 for i in range(len(spain)-1)] france_pct_change = [(france[i+1] - france[i]) / france[i] * 100 for i in range(len(france)-1)] italy_pct_change = [(italy[i+1] - italy[i]) / italy[i] * 100 for i in range(len(italy)-1)] germany_pct_change = [(germany[i+1] - germany[i]) / germany[i] * 100 for i in range(len(germany)-1)] uk_pct_change = [(uk[i+1] - uk[i]) / uk[i] * 100 for i in range(len(uk)-1)] greece_pct_change = [(greece[i+1] - greece[i]) / greece[i] * 100 for i in range(len(greece)-1)] # Crear una tabla que muestra el porcentaje de cambio de año a año table_data = np.vstack((spain_pct_change, france_pct_change, italy_pct_change, germany_pct_change, uk_pct_change, greece_pct_change)) # Configuración del formato de la tabla row_labels = ['Spain', 'France', 'Italy', 'Germany', 'UK', 'Greece'] col_labels = ['2019-2020', '2020-2021', '2021-2022'] table_title = 'Porcentaje de Cambio de Año a Año del Gasto Turístico' cell_text = [['{:.2f}%'.format(value) for value in row] for row in table_data] colors = plt.cm.get_cmap('Set2', len(countries))(np.arange(len(countries))) # Configuración del gráfico de barras plt.figure(figsize=(10, 6)) # Tamaño del gráfico bar_width = 0.1 # Modifica el valor para ajustar el tamaño de las barras opacity = 0.8 index = np.arange(len(years)-1) # Dibujar las barras para cada país y año for i, country in enumerate(countries): values = table_data[i] pos_values = [value if value >= 0 else 0 for value in values] neg_values = [value if value < 0 else 0 for value in values] plt.bar(index + i * bar_width, pos_values, bar_width, alpha=opacity, color=colors[i], label=country) plt.bar(index + i * bar_width, neg_values, bar_width, alpha=opacity, color=colors[i]) # Mostrar el valor en cada barra for j, value in enumerate(values): if value >= 0: plt.text(index[j] + i * bar_width, value + 0.5, '{:.2f}%'.format(value), ha='center', va='bottom', fontsize=8) else: plt.text(index[j] + i * bar_width, value - 0.5, '{:.2f}%'.format(value), ha='center', va='top', fontsize=8) plt.xlabel('Años') plt.ylabel('Cambio Porcentual del Gasto Turístico') plt.title('Cambio Porcentual de los Gastos Turísticos de países europeos (2019-2022)') plt.xticks(index + bar_width * (len(countries) / 2 - 0.5), col_labels) plt.legend() # Guardar el gráfico en formato PNG plt.savefig('porcentual.png', dpi=300, bbox_inches='tight') # Mostrar el gráfico plt.show()
Los datos vienen de la siguiente tabla:
Country | 2019-2020 | 2020-2021 | 2021-2022 |
Spain | -78,6265 | 16,41738 | 6,789774 |
France | -68,9047 | 42,97019 | 13,76106 |
Italy | -60,753 | 32,7991 | 17,34234 |
Germany | -57,8987 | 29,4603 | 15,91993 |
UK | -79,5944 | 73,87029 | 14,21357 |
Greece | -75,9864 | 76,47597 | 24,8444 |
Y dan lugar a la siguiente gráfica:
Resumen
En resumen, la creación de gráficos en ChatGPT es una excelente manera de aprender Python y consolidar los conceptos de programación y análisis de datos. Nos permite aplicar la sintaxis y las funciones de Python en el contexto de la visualización de datos, desarrollar habilidades de manipulación y análisis de datos, y obtener un feedback visual inmediato sobre nuestros resultados. Además, al generar gráficos, podemos comunicar y transmitir información de manera efectiva, lo que es esencial en el análisis de datos y la toma de decisiones informadas.
En muchas ocasiones el resultado que obtenemos no es correcto. La manera más adecuada de resolverlo es decirle exactamente a ChatGPT que está mal y él solo va a ir depurando el código poco a poco. El resultado obtenido en este artículo ha sido tras varios intentos, haciendo las preguntas adecuadas para conseguir lo que se busca.