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.')
../../_images/making_sense_of_the_data_2_1.png