Making sense of the data¶
Let’s now see how we could use this API to answer a basic question aimed to get more insight of the data.
What’s the per-event daily mean temperature?
import numpy as np
import pandas as pd
import xarray as xr
import xarray_events
tmin_values = [13, 10, 8, 10, 10, 8, 7]
tmax_values = [21, 18, 17, 16, 19, 17, 18]
ds = xr.Dataset(
data_vars={
'tmin': ('time', tmin_values),
'tmax': ('time', tmax_values),
},
coords={'time': np.arange(1, 8)},
attrs={'temperature_system': 'celsius', 'location': 'BCN'}
)
events = pd.DataFrame(
{
'event_type': ['light-rain-shower', 'patchy-rain-possible'],
'initial_timestamp': [1, 4],
'final_timestamp': [3, 5]
}
)
mapping = {'time': ('initial_timestamp', 'final_timestamp')}
ds = ds.events.load(events, mapping)
per_event_min = ds.events.groupby_events('tmin').min()
per_event_max = ds.events.groupby_events('tmax').max()
per_event_mean = ((per_event_min + per_event_max) / 2)
ax = (
per_event_mean
.rename('per-event mean temp')
.to_dataframe()
.reset_index()
.set_index(ds.events.df.event_type)
['per-event mean temp']
.plot
.bar(x=0, rot=0)
)
ax.set_xlabel("Event")
ax.set_ylabel("Temperature (Celsius)")
ax.set_title("Per-event daily mean temperature.")
Text(0.5, 1.0, 'Per-event daily mean temperature.')