Несколько вещей, которые вы хотите сделать: убедитесь, что ваш столбец "utc_timestamp" имеет формат datetime. Затем вы можете легко сгруппировать в год, месяц, ... все, что вы хотите. Это не ясно из вопроса, но я предполагаю, что вы хотите сгруппировать данные по годам, регионам и «переменным» и получить среднее значение по группе. Сделайте простой групповой вызов, включая функцию pd.grouper. Затем, используйте команду unstack для «variable», это поместит различные значения в столбцы.
import pandas as pd
df = pd.read_csv('time_series_30min_stacked.csv')
df["utc_timestamp"] = pd.to_datetime(df["utc_timestamp"])
df_perYear = df.groupby(["region", "variable", pd.Grouper(key='utc_timestamp', freq="Y")]).mean()["data"]
df_unstack = df_perYear.unstack("variable")