Bilbao, today

Bilbao, August 1983

more photos

On Friday, August 26, 1983, Bilbao was celebrating its Aste Nagusia or Great Week, the main annual festivity in the city, when it and other municipalities of the Basque Country, Burgos, and Cantabria suffered devastating flooding due to heavy rains. In 24 hours, the volume of water registered 600 liters per square meter. Across all the affected areas, the weather service recorded 1.5 billion tons of water. In areas of Bilbao, the water reached a height of 5 meters (15 feet). Transportation, electricity and gas services, drinking water, food, telephone, and many other basic services were severely affected. 32 people died in Biscay, 4 people died in Cantabria, 2 people died in Alava, and 2 people died Burgos. 5 more people went missing.

How often will such rainfall happen?

How often does it rain 50 mm in 1 day? What about 100 mm in 1 day? How big is a "once-in-a-century event"?

Let's examine Bilbao's daily rainfall (mm), between 1950 to 2020

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from functools import reduce
import re
import probscale
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
%matplotlib notebook
fig, ax = plt.subplots(figsize=(10,6))
df = pd.read_csv("hydrology_figures/BILBAO-parsed" + ".csv", sep=",")
df['full-date'] = pd.to_datetime(df['full-date'])
df = df.set_index('full-date')
ax.plot(df['rain (mm)'], '-o', label="daily rain (mm)")
ax.set_xlabel("date")
ax.set_ylabel("daily rainfall (mm)")
ax.set_title("Hyetograph -- Bilbao, Spain")
plt.gcf().autofmt_xdate()
df2 = df.copy()
df2['rain (mm)'] = df2['rain (mm)'].replace({0.0:np.nan})
df2.dropna(subset=['rain (mm)'])
Tmin (C) rain (mm) Tmax (C) Tavg (C)
full-date
1947-03-02 NaN 0.5 NaN NaN
1947-03-04 NaN 3.3 NaN NaN
1947-03-05 NaN 1.5 NaN NaN
1947-03-07 NaN 8.5 NaN NaN
1947-03-08 NaN 0.3 NaN NaN
... ... ... ... ...
1958-11-15 NaN 1.2 10.8 NaN
1958-11-24 NaN 5.4 12.5 NaN
1958-11-25 NaN 1.0 12.6 NaN
1958-11-26 NaN 0.2 13.0 NaN
1958-11-27 NaN 0.5 12.0 NaN

12243 rows × 4 columns

%matplotlib notebook
import altair as alt
alt.data_transformers.disable_max_rows()
df2 = df.copy()
df2['data'] = pd.to_datetime(df2.index)
df2['rain (mm)'] = df2['rain (mm)'].replace({0.0:np.nan})
df2.dropna(subset=['rain (mm)'])

df3 = df2['1948-01-01':'1965-01-01']
alt.Chart(df2).mark_line().encode(
    x='data:T',
    y='rain (mm):Q'
).interactive()