Cómo acceder a los datos climáticos de la NASA y cómo está impulsando la lucha contra el cambio climático PT. 1

No puedo pensar en un conjunto de datos más importante. Justo hoy, vi un titular como este: “Las olas de calor se están volviendo más peligrosas con el cambio climático”. No se puede decir que no nos hayan advertido. En 1988, vimos titulares como este: ‘El calentamiento global ha comenzado, el experto le dice al Senado. ‘ Y aunque la ciencia de datos ha desempeñado su papel en revelar que probablemente superaremos el objetivo de 1.5 ° C establecido por el Acuerdo de París, hay mucho más que podríamos estar haciendo. Por un lado, la gente no lo cree, sin embargo, los datos están disponibles, gratuitos y fáciles de acceder. ¡Puedes comprobarlo tú mismo! Entonces, en este episodio, lo haremos. También hablaremos sobre las sorprendentes e interesantes formas en que estos datos se están utilizando actualmente para combatir los efectos del cambio climático.

Pero los datos climáticos también son increíblemente interesantes. Probablemente también hayas visto titulares como: El lanzamiento de origen azul de 6 personas al espacio suborbital se retrasó nuevamente debido al clima. Lo que te hace pensar, si podemos enviar a alguien a la luna, ¿por qué no podemos estar seguros del clima? Si es difícil no lo describe, entonces un proceso estocástico multidimensional podría. Desde una perspectiva de ciencia de datos, esta es nuestra hipótesis de Riemann, nuestro problema P vs NP. Qué tan bien podemos modelar y comprender los datos del clima dará forma a nuestras próximas décadas en esta tierra. Este es el problema más importante en el que podríamos estar trabajando.

Y aunque Nueva York simplemente pasó por una ola de calor, es necesario tener en cuenta que el cambio climático es peor que solo un clima más cálido.

  • Las cosechas de falla socavan la seguridad alimentaria global, especialmente en regiones vulnerables.
  • Las enfermedades transmitidas por vectores se expanden a nuevas regiones a medida que aumentan las temperaturas.
  • Las extinciones masivas interrumpen los ecosistemas y se erosionaron la resiliencia planetaria.
  • La acidificación del océano desentraña cadenas de alimentos marinos, amenazantes de pesca y biodiversidad.
  • Los suministros de agua dulce disminuyen bajo la presión de la sequía, la contaminación y el uso excesivo.

Pero no todo está perdido; Hablaremos sobre algunas de las formas en que se han utilizado datos para abordar estos problemas. Aquí hay un resumen de algunos de los datos de los que la NASA realiza un seguimiento. Accederemos a algunos de estos parámetros.

Imagen del autor

Obtener los datos

Comenzaremos por elegir algunas ubicaciones interesantes que examinaremos en esta serie. Todo lo que necesitamos son sus coordenadas, a un clic de distancia en Google Maps. Utilizo un poco de decimales aquí, pero la resolución de la fuente de datos meteorológicas es de ½ ° X ⅝ °, por lo que no es necesario ser tan precisa.

interesting_climate_sites = {
    "Barrow, Alaska (Utqiaġvik)": (71.2906, -156.7886),    # Arctic warming, permafrost melt
    "Greenland Ice Sheet": (72.0000, -40.0000),            # Glacial melt, sea level rise
    "Amazon Rainforest (Manaus)": (-3.1190, -60.0217),     # Carbon sink, deforestation impact
    "Sahara Desert (Tamanrasset, Algeria)": (22.7850, 5.5228),  # Heat extremes, desertification
    "Sahel (Niamey, Niger)": (13.5128, 2.1127),            # Precipitation shifts, droughts
    "Sydney, Australia": (-33.8688, 151.2093),             # Heatwaves, bushfires, El Niño sensitivity
    "Mumbai, India": (19.0760, 72.8777),                   # Monsoon variability, coastal flooding
    "Bangkok, Thailand": (13.7563, 100.5018),              # Sea-level rise, heat + humidity
    "Svalbard, Norway": (78.2232, 15.6469),                # Fastest Arctic warming
    "McMurdo Station, Antarctica": (-77.8419, 166.6863),   # Ice loss, ozone hole proximity
    "Cape Town, South Africa": (-33.9249, 18.4241),        # Water scarcity, shifting rainfall
    "Mexico City, Mexico": (19.4326, -99.1332),            # Air pollution, altitude-driven weather
    "Reykjavík, Iceland": (64.1355, -21.8954),             # Glacial melt, geothermal dynamics
}

A continuación, seleccionemos algunos parámetros. Puedes hojearlos en el diccionario de parámetros https://power.larc.nasa.gov/parameters/

Imagen del autor

Solo puede solicitar una comunidad a la vez, por lo que agrupamos los parámetros de la comunidad.

community_params = {
    "AG": ["T2M","T2M_MAX","T2M_MIN","WS2M","ALLSKY_SFC_SW_DWN","ALLSKY_SFC_LW_DWN",
           "CLRSKY_SFC_SW_DWN","T2MDEW","T2MWET","PS","RAIN","TS","RH2M","QV2M","CLOUD_AMT"],
    "RE": ["WD2M","WD50M","WS50M"],
    "SB": ["IMERG_PRECTOT"]
}

¿Cómo se utilizan estos datos?

  • AG = Agrícola. Los agroeconomistas generalmente usan esta comunidad en los modelos de crecimiento de cultivos, como DSSAT y APSIM, así como en planificadores de riego como FAO CropWat. También se utiliza para la evaluación del estrés por calor del ganado y en la construcción Sistemas de advertencia temprana de seguridad alimentaria. Esto ayuda a mitigar la inseguridad alimentaria debido al cambio climático. Estos datos siguen las convenciones agroeconómicas, lo que permite ser ingerido directamente por las herramientas de soporte de decisiones agrícolas.
  • Re = Energía renovable. Dado el nombre y el hecho de que puede obtener datos de Windspeed desde aquí, es posible que pueda adivinar su uso. Estos datos se utilizan principalmente para pronosticar rendimientos de energía a largo plazo. Velocidad del viento para turbinas, radiación solar para granjas solares. Estos datos se pueden alimentar a PVSYST, NREL-SAM y WINDPRO para estimar los rendimientos y costos de energía anual. Estos datos admiten todo, desde el diseño de la matriz de la azotea hasta los objetivos nacionales de energía limpia.
  • SB = edificios sostenibles. Los arquitectos e ingenieros de HVAC utilizan estos datos para garantizar que sus edificios cumplan con las regulaciones de rendimiento energético, como IECC o ASHRAE 90.1. Se puede dejar directamente en EnergyPlus, OpenStudio, RetScreen o LEED/ASHRAE CONMISIÓN CALCULADORES para verificar que los edificios estén a la altura del código.

Ahora elegimos una fecha de inicio y finalización.

start_date = "19810101"
end_date   = "20241231"

Para que la API llame a algo repetible, usamos una función. Trabajaremos con datos diarios, pero si prefiere datos anuales, mensuales o incluso por hora, solo necesita cambiar la URL a

…/Temporal/{resolución}/punto.

import requests
import pandas as pd

def get_nasa_power_data(lat, lon, parameters, community, start, end):
    """
    Fetch daily data from NASA POWER API for given parameters and location.
    Dates must be in YYYYMMDD format (e.g., "20100101", "20201231").
    """
    url = "https://power.larc.nasa.gov/api/temporal/daily/point"
    params = {
        "parameters": ",".join(parameters),
        "community": community,
        "latitude": lat,
        "longitude": lon,
        "start": start,
        "end": end,
        "format": "JSON"
    }
    response = requests.get(url, params=params)
    data = response.json()

    if "properties" not in data:
        print(f"Error fetching {community} data for lat={lat}, lon={lon}: {data}")
        return pd.DataFrame()

    # Build one DataFrame per parameter, then combine
    param_data = data["properties"]["parameter"]
    dfs = [
        pd.DataFrame.from_dict(values, orient="index", columns=[param])
        for param, values in param_data.items()
    ]
    df_combined = pd.concat(dfs, axis=1)
    df_combined.index.name = "Date"
    return df_combined.sort_index().astype(float)

Esta función recupera los parámetros que solicitamos a la comunidad que especificamos. También convierte a JSON en un marcado de datos. Cada respuesta siempre contiene una clave de propiedad: si falta, imprimimos un error.

Llamemos a esta función en un bucle para obtener los datos para todas nuestras ubicaciones.

all_data = {}
for city, (lat, lon) in interesting_climate_sites.items():
    print(f"Fetching daily data for {city}...")
    city_data = {}
    for community, params in community_params.items():
        df = get_nasa_power_data(lat, lon, params, community, start_date, end_date)
        city_data[community] = df
    all_data[city] = city_data

En este momento, nuestros datos son un diccionario donde los valores también son diccionarios. Se parece a esto:

Esto hace que el uso de los datos sea complicado. A continuación, los combinamos en un marco de datos. Nos unimos a los datos y luego concatenamos. Como no había valores faltantes, una unión interna produciría el mismo resultado.

# 1) For each city, join its communities on the date index
city_dfs = {
    city: comms["AG"]
                .join(comms["RE"], how="outer")
                .join(comms["SB"], how="outer")
    for city, comms in all_data.items()
}

# 2) Concatenate into one MultiIndexed DF: index = (City, Date)
combined_df = pd.concat(city_dfs, names=["City", "Date"])

# 3) Reset the index so City and Date become columns
combined_df = combined_df.reset_index()

# 4) Bring latitude/longitude in as columns
coords = pd.DataFrame.from_dict(
    interesting_climate_sites, orient="index", columns=["Latitude", "Longitude"]
).reset_index().rename(columns={"index": "City"})

combined_df = combined_df.merge(coords, on="City", how="left")

# then save into your Drive folder
combined_df.to_csv('/content/drive/MyDrive/climate_data.csv', index=False)

Si estás cansado de codificar el día, también puedes usar su Herramienta de acceso a datos. Simplemente haga clic en cualquier lugar del mapa para recuperar los datos. Aquí hice clic en Venecia. Luego, simplemente seleccione una comunidad, un promedio temporal y su tipo de archivo preferido, CSV, JSON, ASCII, NETCDF y BUCHE SENT. Un par de clics y puede obtener todos los datos meteorológicos del mundo.

https://power.larc.nasa.gov/data-access-viewer

Imagen del autor

Cheque de cordura

Ahora, realicemos una verificación de cordura rápida para verificar que los datos que tenemos tienen sentido.

import matplotlib.pyplot as plt
import seaborn as sns # Import seaborn

# Load data
climate_df = pd.read_csv('/content/drive/MyDrive/TDS/Climate/climate_data.csv')
climate_df['Date'] = pd.to_datetime(climate_df['Date'].astype(str), format='%Y%m%d')

# Filter for the specified cities
selected_cities = [
    'McMurdo Station, Antarctica',
    'Bangkok, Thailand',
]
df_selected_cities = climate_df[climate_df['City'].isin(selected_cities)].copy()

# Create a scatter plot with different colors for each city
plt.figure(figsize=(12, 8))

# Use a colormap for more aesthetic colors
colors = sns.color_palette("Set2", len(selected_cities)) # Using a seaborn color palette

for i, city in enumerate(selected_cities):
    df_city = df_selected_cities[df_selected_cities['City'] == city]
    plt.scatter(df_city['Date'], df_city['T2M'], label=city, s=2, color=colors[i]) # Using T2M for temperature and smaller dots

plt.xlabel('Date')
plt.ylabel('Temperature (°C)')
plt.title('Daily Temperature (°C) for Selected Cities')
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()

Sí, las temperaturas en Bangkok son bastante más calientes que en el Ártico.

Imagen del autor
# Filter for the specified cities
selected_cities = [
    'Cape Town, South Africa',
    'Amazon Rainforest (Manaus)',
]
df_selected_cities = climate_df[climate_df['City'].isin(selected_cities)].copy()

# Set up the color palette
colors = sns.color_palette("Set1", len(selected_cities))

# Create vertically stacked subplots
fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(12, 10), sharex=True)

for i, city in enumerate(selected_cities):
    df_city = df_selected_cities[df_selected_cities['City'] == city]
    axes[i].scatter(df_city['Date'], df_city['PRECTOTCORR'], s=2, color=colors[i])
    axes[i].set_title(f'Daily Precipitation in {city}')
    axes[i].set_ylabel('Precipitation (mm)')
    axes[i].grid(alpha=0.3)

# Label x-axis only on the bottom subplot
axes[-1].set_xlabel('Date')

plt.tight_layout()
plt.show()

Sí, está lloviendo más en la selva amazónica que en Sudáfrica.

Sudáfrica experimenta sequías, que imponen una carga significativa para el sector agrícola.

Imagen del autor
# Filter for Mexico City
df_mexico = climate_df[climate_df['City'] == 'Mexico City, Mexico'].copy()

# Create the plot
plt.figure(figsize=(12, 6))
sns.set_palette("husl")

plt.scatter(df_mexico['Date'], df_mexico['WS2M'], s=2, label='WS2M (2m Wind Speed)')
plt.scatter(df_mexico['Date'], df_mexico['WS50M'], s=2, label='WS50M (50m Wind Speed)')

plt.xlabel('Date')
plt.ylabel('Wind Speed (m/s)')
plt.title('Daily Wind Speeds at 2m and 50m in Mexico City')
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()

Sí, las velocidades del viento a 50 metros son mucho más rápidas que a 2 metros.

Por lo general, cuanto más alto vaya, más rápido se mueve el viento. A la altitud de vuelo, el viento puede alcanzar velocidades de 200 km/h. Es decir, hasta que alcanzas el espacio a 100,000 metros.

Imagen del autor

Echaremos un vistazo mucho más de cerca a estos datos en los siguientes capítulos.

Se está calentando

Simplemente pasamos por una ola de calor aquí en Toronto. Por los sonidos que hizo mi AC, creo que casi se rompió. Pero en un gráfico de temperatura, debe verse con bastante cuidado para ver que están aumentando. Esto se debe a que hay estacionalidad y variabilidad significativa. Las cosas se vuelven más claras cuando miramos el promedio anual. Llamamos a una anomalía la diferencia entre el promedio para un año específico y la línea de base. La línea de base es la temperatura promedio durante 1981-2024, podemos ver que el promedio anual reciente es significativamente más alto que la línea de base, principalmente debido a las temperaturas más frías presentes en años anteriores. Lo contrario es igualmente cierto; El promedio anual temprano es significativamente más bajo que la línea de base debido a temperaturas más calientes en los últimos años.

Con todos los artículos técnicos presentes aquí, titulares como ‘Gramática como inyectable: un caballo troyano para el procesamiento del lenguaje natural de la PNL ‘. Espero que no te decepcione una regresión lineal simple. Pero eso es todo lo que se necesita para demostrar que las temperaturas están aumentando. Sin embargo, la gente no cree.

# 1) Filter for Sahara Desert and exclude 2024
city = 'Sahara Desert (Tamanrasset, Algeria)'
df = (
    climate_df
    .loc[climate_df['City'] == city]
    .set_index('Date')
    .sort_index()
)

# 2) Compute annual mean & anomaly
annual = df['T2M'].resample('Y').mean()
baseline = annual.mean()
anomaly = annual - baseline

# 3) 5-year rolling mean
roll5 = anomaly.rolling(window=5, center=True, min_periods=3).mean()

# 4) Linear trend
years = anomaly.index.year
slope, intercept = np.polyfit(years, anomaly.values, 1)
trend = slope * years + intercept

# 5) Plot
plt.figure(figsize=(10, 6))
plt.bar(years, anomaly, color='lightgray', label='Annual Anomaly')
plt.plot(years, roll5, color='C0', linewidth=2, label='5-yr Rolling Mean')
plt.plot(years, trend, color='C3', linestyle='--', linewidth=2,
         label=f'Trend: {slope:.3f}°C/yr')
plt.axhline(0, color='k', linewidth=0.8, alpha=0.6)

plt.xlabel('Year')
plt.ylabel('Temperature Anomaly (°C)')
plt.title(f'{city} Annual Temperature Anomaly')
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()
Imagen del autor

El Sahara se está poniendo más caliente a 0.03 ° C por año. Ese es el desierto más caliente del mundo. Incluso podemos verificar cada ubicación que elegimos y ver que ni una sola tiene una tendencia negativa.

Imagen del autor

Entonces sí, las temperaturas están aumentando.

El bosque para los árboles

Una gran razón por la que la NASA hace que estos datos sean de código abierto es combatir los efectos del cambio climático. Hemos mencionado modelar los rendimientos de los cultivos, la energía renovable y el cumplimiento de la construcción sostenible. Sin embargo, hay formas adicionales en que los datos se pueden utilizar para abordar el cambio climático de manera científica y matemáticamente fundada. Si está interesado en este tema, este video de Luis Seco cubre cosas que no pude abordar en este artículo, como

  • El comercio de carbono y el precio del carbono
  • Herramienta de biomasa predictiva optimización de plantación de árboles
  • Agua potable segura en Kenia
  • Los costos socioeconómicos de las emisiones
  • Quema controlada de bosques

https://www.youtube.com/watch?v=ooj1qjjl2hm

Espero que te unas a mí en este viaje. En el próximo episodio, discutiremos cómo ecuaciones diferenciales se han utilizado para modelar el clima. Y aunque se está haciendo mucho para abordar el cambio climático, la lista anterior de efectos no fue exhaustiva.

  • Las capas de hielo derretidas desestabilizan la regulación climática global y aceleran el aumento del nivel del mar.
  • Los daños relacionados con el clima paralizan las economías a través de la creciente infraestructura y los costos de salud.
  • El creciente número de refugiados climáticos tensa las fronteras y el combustible de la inestabilidad geopolítica.
  • Las ciudades costeras enfrentan la inmersión a medida que los mares se elevan implacablemente
  • Los eventos meteorológicos extremos rompen los registros, desplazando a millones.

Pero hay ruido, y hay señal, y pueden separarse.

Fuentes

  • Impactos del cambio climático | Administración Nacional Oceánica y Atmosférica. (Dakota del Norte). https://www.noaa.gov/education/resource-collections/climate/climate-change-impacts
  • Freedman, A. (2025, 23 de junio). Las ondas de calor se están volviendo más peligrosas con el cambio climático, y aún podemos estar subestimando las. CNN. https://www.cnn.com/2025/06/23/climate/heat-wave-global-warming-links
  • Las predicciones climáticas globales muestran temperaturas que se espera que permanezcan en los niveles récord o cerca de los 5 años. Organización Meteorológica Mundial. (2025, 26 de mayo). https://wmo.int/news/media-centre/global-climate-predictions-show-temperatures-expected-remain-or-near-record-selvels-coming-5 años
  • Global Warming ha comenzado, experto le dice al Senado (publicado en 1988). El New York Times. (1988, 24 de junio). https://web.archive.org/web/20201202103915/https:/www.nytimes.com/1988/06/24/us/global-warming-has-begun-expert-tells-senate.html
  • NASA. (Dakota del Norte). Proyecto de energía LARC de la NASA. NASA. https://power.larc.nasa.gov/
  • Wall, M. (2025, 20 de junio). Blue Origin para lanzar 6 personas al espacio suborbital el 29 de junio después del retraso del clima. Espacio. https://www.space.com/space-exploration/private-spaceflight/watch-blue-origin-launch-6-people-to-suborbital-space-on-june-21

Código disponible aquí

LinkedIn