Saltar al contenido

Analizando el calentamiento global con Python

Siguiendo con el tema del calentamiento global (otros artículos aquí y aquí) voy a analizar muy por encima unos datos de temperatura superficial alrededor de Mallorca. Esta vez voy a usar unos datos que provienen de un reanálisis, en este caso el ERA5-Land, hecho por el Centro Europeo de Predicción a Medio Plazo (ECMWF). Mi idea principal con este ejercicio era ver si habían aumentado las noches tropicales. Este término de noche tropical todavía no está muy extendido pero cada vez se empieza a escuchar más y algún centro meteorológico como el MetOffice del Reino Unido ya empieza a hacer seguimiento de este tipo de cosas.

¿Una noche tropical?

Se define como la noche en que la temperatura no baja de los 20ºC en toda la noche. Son noches en las que se hace complicado dormir y en las que la mortalidad y la morbilidad entre la gente mayor aumenta.

¿Qué es un reanálisis?

Cuando se hace predicción meteorológica se usa una cantidad ingente de datos pero muchos otros no pueden ser usados debido a la inmediatez y a la necesidad de tener la predicción lista en muy poco tiempo para que sea útil. Muchos de los datos que no entran en la predicción operativa que se hace cada día no dejan de ser útiles y nos sirven para, por ejemplo, hacer reanálisis.

Hacer un reanálisis es similar a coger un modelo de los que se usan para predecir el tiempo pero usando datos que están mucho mejor analizados, filtrados, post-procesados, etc, y que son mucho más cuantiosos. Estos datos se usand como condiciones iniciales y de contorno de esos modelos meteorológicos. De esa forma se consigue tener una imagen más fidedigna de la atmósfera y/o el océano que cuando hacemos una predicción operativa.

Existen muchos reanálisis. Por ejemplo, entre los más modernos para la atmósfera tenemos ERA5, CFSR, MERRA2,… En este caso vamos a usar ERA5-Land que nos permite disponer de datos en la superficie del planeta cada hora desde 1981 hasta ahora a una resolución espacial de 0.1ºx0.1º de longitud y de latitud.

¿Cómo me descargo los datos?

Estos datos los podéis descargar del Climate Data Store del programa Copernicus de la UE. Para hacerlo necesitáis tener una cuenta e instalarte una biblioteca que se llama cdsapi.

Cuando ya la tengas instalada podrás descargarte los datos de la siguiente forma:

En el anterior código estoy pidiendo la variable 2m_temperature durante todo el periodo de datos disponible del reanálisis reanalysis-era5-land en formato NetCDF. La petición la tengo que hacer en varias veces por una limitación de volumen que existe. Esa petición puede tardar horas por lo que a veces es más sencillo hacerlo directamente desde la página web. Los datos, una vez descargados, ocupan alrededor de 120 Mb. Solo es una variable a un nivel y para una región muy pequeñita.

Jugando con los datos

Una vez que ya tenemos los datos descargados vamos a empezar a jugar un poco con ellos. Para esta parte necesitarás tener instalado xarray, dask, matplotlib, numpy, pandas y Pillow.

Empezamos importando lo que vamos a necesitar:

Y leemos los datos que nos hemos descargado usando xarray y dask (lo segundo se usa por debajo por lo que no lo vemos):

Si muestro la variable ds tengo un objeto xarray.Dataset con una serie de dimensiones y variables:

Los datos de temperatura están en Kelvin. Para pasar de grados Celsius a grados Kelvin hay que sumar 273.15 y para pasar de Kelvin a Celsius hay que restar esos 273.15.

Vamos a quedarnos solo con un nodo de datos, el que está más cerca de la ciudad de Palma, y lo convertimos a un pandas.DataFrame:

Como hemos descargado datos hasta 2020 me voy a quedar solo con datos de años completos, es decir, desde 1981 hasta 2019. Creo también medias mensuales:

Y voy a empezar dibujando como ha ido evolucionando la temperatura media mensual para cada mes del año desde 1981 hasta 2019:

El código anterior os debería crear un gráfico como el siguiente:

En el gráfico anterior se ven las medias mensuales de enero desde 1981 a 2019, lo mismo para febrero, marzo, etc (corresponde a las líneas azules). Luego se muestran también medias móviles de 3 años (líneas grises) y de 5 años (líneas negras).

En general se ve como hay una tendencia ascendente, sobre todo en la última década, y se ve para todos los meses, en unos más claramente y en otros no tanto.

Voy a crear ahora una espiral del clima con las medias anuales para ver si se ve el efecto del calentamiento de forma más clara. Aquí voy a hacer uso de Pillow para crear una animación (aquí tenéis un ejemplo de creación de GIF animado con Pillow):

El resultado se muestra a continuación:

En la anterior imagen se ve el valor promedio anual desde 1981 hasta 2019. El color y el tamaño de cada círculo proporciona similar información. Los colores más azulados son más fríos. Los tamaños más pequeños son más fríos. Se puede observar que los últimos años están siendo bastante cálidos. Al dibujarse todos los años se ve que entre 1981 y 2019 hay prácticamente 1ºC de diferencia (eso no quiere decir que haya aumentado 1ºC la temperatura promedio).

Voy a ahora a ver lo de las noches tropicales pero voy a simplificarlo viendo los días en que en ningún momento se baja de 20ºC.

El resultado debería ser algo como lo siguiente:

En el gráfico de la izquierda se muestra un cuadrado por cada día en que la temperatura no baja de 20ºC. El color solo indica el año. Los más claros son los años más antiguos y los más oscuros son los años más cercanos a la actualidad. A la derecha se ve el número de días por año. En los últimos 8 años hay 5 años en los que durante más de 100 días se ha estado por encima de 20ºC. En los 31 años anteriores solo se superan los 100 días dos veces.

Conclusiones

Hemos visto como descargar unos datos, los hemos leido, tratado y visualizado de distintas formas.

Estos datos son datos de modelo, no son datos medidos. Por tanto, las conclusiones hay que verlas con cierta cautela pero, en general, se ve como las temperaturas van aumentando y parece que en los últimos ocho o diez años este calentamiento ha sido más pronunciado. Las noches en las que vamos a poder dormir parece que van menguando y eso no es bueno ni para jóvenes ni para mayores.

Espero que os haya gustado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

fifty seven − = 53

Pybonacci