Análisis de Anomalías Climáticas con Python
Introducción
El cambio climático es uno de los desafíos más grandes de nuestra era. En este post, exploraremos cómo utilizar Python y Pandas para analizar datos históricos de temperatura y visualizar anomalías.
Preparación de los Datos
Primero, importamos las librerías necesarias. Utilizaremos pandas para la manipulación de datos y matplotlib junto con seaborn para las visualizaciones.
Generamos algunos datos sintéticos para este ejemplo, simulando temperaturas mensuales a lo largo de 20 años.
# Generar datos de ejemplo
np.random.seed(42)
dates = pd.date_range(start='2000-01-01', end='2020-12-31', freq='M')
base_temp = 15 + np.sin(np.linspace(0, 20*np.pi, len(dates))) * 10 # Ciclo estacional
trend = np.linspace(0, 1.5, len(dates)) # Tendencia de calentamiento
noise = np.random.normal(0, 1, len(dates)) # Variabilidad natural
temps = base_temp + trend + noise
df = pd.DataFrame({'Fecha': dates, 'Temperatura': temps})
df.set_index('Fecha', inplace=True)
print(df.head())Visualización de la Serie Temporal
Vamos a visualizar la serie completa para ver la tendencia y la estacionalidad.
plt.figure(figsize=(12, 6))
plt.plot(df.index, df['Temperatura'], label='Temperatura Mensual', color='steelblue', alpha=0.7)
plt.plot(df.index, df['Temperatura'].rolling(window=12).mean(), label='Media Móvil (12 meses)', color='darkorange', linewidth=2)
plt.title('Evolución de la Temperatura Simulada (2000-2020)')
plt.xlabel('Año')
plt.ylabel('Temperatura (°C)')
plt.legend()
plt.show()Análisis de Anomalías
Una forma común de ver el cambio climático es a través de las anomalías, es decir, cuánto se desvía la temperatura de un promedio base.
# Calcular promedio base (ej. primeros 10 años)
baseline = df.loc['2000':'2010', 'Temperatura'].mean()
df['Anomalia'] = df['Temperatura'] - baseline
# Visualizar anomalías
plt.figure(figsize=(12, 6))
colors = ['red' if x > 0 else 'blue' for x in df['Anomalia']]
plt.bar(df.index, df['Anomalia'], color=colors, width=20)
plt.title('Anomalías de Temperatura respecto al periodo 2000-2010')
plt.xlabel('Año')
plt.ylabel('Anomalía (°C)')
plt.show()Como podemos observar en el gráfico de barras, los últimos años muestran una predominancia de anomalías positivas, indicando una tendencia al calentamiento en nuestros datos simulados.