ChatGPT ha cambiado la forma de relacionarlos con la inteligencia artificial. Se trata de un chat que podemos preguntar cualquier cosa que mediante un lenguaje escrito nos ofrece una respuesta. En este artículo vamos a explorar algunas de las posibilidades que ofrece ChatGPT para trabajar con datos climáticos.
en este artículo se va a comentar como conseguir datos climtáticos utilizando ChatGPT como proveedor del código y el API de OpenWeatherMap como origen de los datos.
Introducción
ChatGPT todo el mundo está hablando sobre él, y en algunas ocasiones se dice que su uso va a llevarse consigo miles de puestos de trabajo. Aun sin saber el futuro, siempre en la historia de la humanidad los grandes avances tecnológicos han ido acompañados por nubes negras. El trabajo para las personas no acabó cuando llegó la máquina de coser o las máquinas de motor. Por definición la inteligencia artificial se basa en que su desarrollo es para ayudar a las personas y eso es lo que tenemos que tener en mente. Por tanto, el mundo se va a adaptar a esta tecnología, como lo ha hecho anteriormente.
Escribir código de forma rápida en ChatGPT
Después de trabajar en ChatGPT te das cuenta que no te va a quitar trabajo, te va a mejorar lo que haces. A la hora de programar es una herramienta que te va a solucionar muchos problemas. Seguimos este ejemplo desarrollado por mí en el cual le pido a ChatGPT que me ayude a trabajar con datos del clima y tenemos esta conversación:
puedes explicar como hacer en Python para poder trabajar con datos funcionales del clima de una región
Si estás interesado en obtener datos climáticos utilizando la biblioteca `pyowm` y la API de OpenWeatherMap, aquí tienes el código corregido: ```python import pyowm def obtener_datos_climaticos(ciudad): try: owm = pyowm.OWM('TU_CLAVE_DE_API') observacion = owm.weather_manager().weather_at_place(ciudad) clima = observacion.weather ubicacion = observacion.location.name temperatura = clima.temperature('celsius')["temp"] humedad = clima.humidity viento = clima.wind()["speed"] estado_cielo = clima.status return { 'ubicacion': ubicacion, 'temperatura': temperatura, 'humedad': humedad, 'viento': viento, 'estado_cielo': estado_cielo } except pyowm.exceptions.api_response_error.NotFoundError: return None ciudad = 'Nombre_de_la_ciudad, Nombre_del_pais' datos_climaticos = obtener_datos_climaticos(ciudad) if datos_climaticos: print('Datos climáticos para', datos_climaticos['ubicacion']) print('Temperatura:', datos_climaticos['temperatura'], '°C') print('Humedad:', datos_climaticos['humedad'], '%') print('Viento:', datos_climaticos['viento'], 'km/h') print('Estado del cielo:', datos_climaticos['estado_cielo']) else: print('No se encontraron datos climáticos para la ubicación especificada.') ``` Asegúrate de reemplazar `'TU_CLAVE_DE_API'` con tu propia clave de API de OpenWeatherMap. Además, cambia `'Nombre_de_la_ciudad, Nombre_del_pais'` por la ubicación para la cual deseas obtener los datos climáticos. Recuerda que este código asume que tienes instalada la biblioteca `pyowm` correctamente. Si no la tienes instalada, puedes ejecutar `pip install pyowm` para instalarla. Espero que esta vez el código funcione correctamente para ti. Si tienes más preguntas o necesitas más ayuda, por favor avísame. Estoy aquí para ayudarte.
Mejorando la codificación para obtener los datos climáticos
Codificación, si estás aprendiendo a codificar, te ayudará a codificar más rápido. Incluso escribirá el código por ti. Solo tienes que decirle lo que quieras y él te lo facilita y si te da algún error, el mismo te lo corrije y te dice el motivo. Hago la siguiente pregunta “¿Si quisiera ver los datos de un mes entero de temperatura en una ciudad y crear un gráfico con los datos 10 minutales como podría hacerlo en python?” y me responde de este modo:
Para visualizar los datos de temperatura en un gráfico a lo largo de un mes en intervalos de 10 minutos, puedes utilizar la biblioteca `matplotlib` en Python. Aquí tienes un ejemplo de cómo podrías realizarlo: ```python import pyowm import matplotlib.pyplot as plt import matplotlib.dates as mdates from datetime import timedelta def obtener_datos_climaticos(ciudad, fecha_inicio, dias): try: owm = pyowm.OWM('TU_CLAVE_DE_API') observacion = owm.weather_manager().weather_at_place(ciudad) clima = observacion.weather fechas = [] temperaturas = [] fecha_actual = fecha_inicio fecha_fin = fecha_inicio + timedelta(days=dias) while fecha_actual <= fecha_fin: observacion = owm.weather_manager().weather_at_place(ciudad, interval='10') clima = observacion.weather fechas.append(fecha_actual) temperaturas.append(clima.temperature('celsius')["temp"]) fecha_actual += timedelta(minutes=10) return fechas, temperaturas ciudad = 'Nombre_de_la_ciudad, Nombre_del_pais' fecha_inicio = datetime(2023, 6, 1) dias = 30 fechas, temperaturas = obtener_datos_climaticos(ciudad, fecha_inicio, dias) # Configuración del gráfico plt.figure(figsize=(12, 6)) plt.plot(fechas, temperaturas) plt.title('Temperatura en {}'.format(ciudad)) plt.xlabel('Fecha y Hora') plt.ylabel('Temperatura (°C)') # Formato de las fechas en el eje x plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y %H:%M')) plt.gca().xaxis.set_major_locator(mdates.DayLocator()) # Rotación de las etiquetas de fechas plt.xticks(rotation=45) plt.tight_layout() plt.show() ``` Asegúrate de reemplazar `'TU_CLAVE_DE_API'` con tu propia clave de API de OpenWeatherMap. Además, cambia `'Nombre_de_la_ciudad, Nombre_del_pais'` por la ubicación para la cual deseas obtener los datos climáticos. Establece `fecha_inicio` como la fecha de inicio del mes y `dias` como el número de días que deseas obtener los datos. Este código obtendrá los datos climáticos de la ciudad especificada en intervalos de 10 minutos a lo largo del mes y los graficará utilizando `matplotlib`. El eje x del gráfico mostrará las fechas y horas, y el eje y mostrará las temperaturas en °C. Espero que esto te ayude a crear el gráfico con los datos de temperatura a lo largo de un mes. Si tienes más preguntas, no dudes en hacerlas. ¡Buena suerte!
El código anterior hay que rellenarlo con el API que permite obtener los datos y el lugar (localización) que quieres visualizar. Da un error y ChatGPT me proporciona este código corregido:
Lamento los errores adicionales que has encontrado. Parece que hay un problema con la versión de la biblioteca PyOWM que estás utilizando. En versiones más recientes de PyOWM, el argumento `interval` no está disponible en el método `weather_at_place()`. Para solucionar esto, podemos realizar algunas modificaciones en el código para obtener los datos climáticos en intervalos de 10 minutos utilizando una aproximación diferente. En lugar de utilizar el argumento `interval`, podemos ajustar la fecha y hora manualmente en incrementos de 10 minutos. Aquí tienes el código modificado: ```python import pyowm import matplotlib.pyplot as plt import matplotlib.dates as mdates from datetime import datetime, timedelta def obtener_datos_climaticos(ciudad, fecha_inicio, fecha_fin): try: owm = pyowm.OWM('TU_CLAVE_DE_API') fechas = [] temperaturas = [] fecha_actual = fecha_inicio while fecha_actual <= fecha_fin: observacion = owm.weather_manager().weather_at_place(ciudad) clima = observacion.weather fechas.append(fecha_actual) temperaturas.append(clima.temperature('celsius')["temp"]) fecha_actual += timedelta(minutes=10) return fechas, temperaturas except pyowm.exceptions.api_response_error.NotFoundError: return None ciudad = 'Oia, Spain' fecha_inicio = datetime(2023, 5, 1) fecha_fin = datetime(2023, 6, 1, 23, 59) fechas, temperaturas = obtener_datos_climaticos(ciudad, fecha_inicio, fecha_fin) if fechas is not None: # Configuración del gráfico plt.figure(figsize=(12, 6)) plt.plot(fechas, temperaturas) plt.title('Temperatura en {}'.format(ciudad)) plt.xlabel('Fecha y Hora') plt.ylabel('Temperatura (°C)') # Formato de las fechas en el eje x plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y %H:%M')) plt.gca().xaxis.set_major_locator(mdates.DayLocator()) # Rotación de las etiquetas de fechas plt.xticks(rotation=45) plt.tight_layout() plt.show() else: print('No se encontraron datos climáticos para la ubicación especificada.') ``` Recuerda reemplazar `'TU_CLAVE_DE_API'` con tu propia clave de API de OpenWeatherMap y ajustar la variable `ciudad` según la ubicación deseada. Espero que este código modificado resuelva el problema y te permita generar el gráfico con los datos de temperatura a lo largo del mes especificado. Si tienes más preguntas, no dudes en hacerlas. ¡Buena suerte!
Al final el resultado se obtuvo de este código:
import pyowm def obtener_datos_climaticos(ciudad): try: owm = pyowm.OWM('tu-api-key') observacion = owm.weather_manager().weather_at_place(ciudad) clima = observacion.weather ubicacion = observacion.location.name temperatura = clima.temperature('celsius')["temp"] humedad = clima.humidity viento = clima.wind()["speed"] estado_cielo = clima.status return { 'ubicacion': ubicacion, 'temperatura': temperatura, 'humedad': humedad, 'viento': viento, 'estado_cielo': estado_cielo } except pyowm.exceptions.api_response_error.NotFoundError: return None ciudad = 'Oia, Spain' datos_climaticos = obtener_datos_climaticos(ciudad) if datos_climaticos: print('Datos climáticos para', datos_climaticos['ubicacion']) print('Temperatura:', datos_climaticos['temperatura'], '°C') print('Humedad:', datos_climaticos['humedad'], '%') print('Viento:', datos_climaticos['viento'], 'km/h') print('Estado del cielo:', datos_climaticos['estado_cielo']) else: print('No se encontraron datos climáticos para la ubicación especificada.')
Y se obtuvo este resultado:
Datos climáticos para Oiã Temperatura: 29.9 °C Humedad: 45 % Viento: 3.34 km/h Estado del cielo: Clear
El poder de las indicaciones (prompts)
Usar ChatGPT es todo sobre las indicaciones (prompts), el poder está en las indicaciones, cuanto mejor sean los prompts mejor serán los resultados que vas a obtener. Para que ChatGPT te ayude a crear un código tienes que darle unas instrucciones precisas, y a partir de sus respuestas, volver a repreguntar para de este modo conseguir lo que quieres. Google te da información de páginas que te pueden servir para encontrar algo que buscas, pero no te va a ayudar a crear código y tallarlo hasta obtener el resultado que quieres.
Además, no tienes que saber Python u otro lenguaje de programación, simplemente lo hizo por ti. Y tú únicamente utilizas un programa intérprete del lenguaje que estas utilizando para desarrollar el resultado obtenido.
Resumen
ChatGPT te va a permitir genera código que puede ayudarte a resolver problemas que quieras resolver, es por tanto una guía para tu trabajo o estudio. Si quieres aprender Python te va a guiar paso a paso de cómo hacer. En este artículo se emplea como fuente de datos OpenWeatherMap que nos proporciona una API (una pasarela para obtener datos) y ChatGPT nos facilita el código en Python para manejar datos climáticos que se puede utilizar para cualquier localidad que esté en la base de datos de OpenWeatherMap.