{ "cells": [ { "cell_type": "markdown", "id": "5ac8f107-17a2-4a76-9867-7d4f3eb6e17e", "metadata": { "tags": [] }, "source": [ "Resample\n", "========" ] }, { "cell_type": "code", "execution_count": 1, "id": "0635b77c-ac32-4018-8ff5-4cdd48c9f3e3", "metadata": { "jupyter": { "source_hidden": true }, "tags": [ "hide-input" ] }, "outputs": [], "source": [ "import xarray\n", "import climtas\n", "import dask.array\n", "import pandas\n", "import numpy" ] }, { "cell_type": "markdown", "id": "d40d0ab9-acc9-404b-9527-7f508b3a2e02", "metadata": {}, "source": [ "Say we have hourly input data for a year that we want to convert to daily data" ] }, { "cell_type": "code", "execution_count": 2, "id": "420b86c6-d774-4c16-a865-db614f4849ab", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.DataArray 'temperature' (time: 8760, lat: 50, lon: 100)>\n", "dask.array<random_sample, shape=(8760, 50, 100), dtype=float64, chunksize=(1440, 25, 25), chunktype=numpy.ndarray>\n", "Coordinates:\n", " * time (time) datetime64[ns] 2001-01-01 ... 2001-12-31T23:00:00\n", " * lat (lat) float64 -90.0 -86.33 -82.65 -78.98 ... 78.98 82.65 86.33 90.0\n", " * lon (lon) float64 -180.0 -176.4 -172.8 -169.2 ... 169.2 172.8 176.4
\n",
"
| \n",
"\n", "\n", " | \n", "
array(['2001-01-01T00:00:00.000000000', '2001-01-01T01:00:00.000000000',\n", " '2001-01-01T02:00:00.000000000', ..., '2001-12-31T21:00:00.000000000',\n", " '2001-12-31T22:00:00.000000000', '2001-12-31T23:00:00.000000000'],\n", " dtype='datetime64[ns]')
array([-90. , -86.326531, -82.653061, -78.979592, -75.306122, -71.632653,\n", " -67.959184, -64.285714, -60.612245, -56.938776, -53.265306, -49.591837,\n", " -45.918367, -42.244898, -38.571429, -34.897959, -31.22449 , -27.55102 ,\n", " -23.877551, -20.204082, -16.530612, -12.857143, -9.183673, -5.510204,\n", " -1.836735, 1.836735, 5.510204, 9.183673, 12.857143, 16.530612,\n", " 20.204082, 23.877551, 27.55102 , 31.22449 , 34.897959, 38.571429,\n", " 42.244898, 45.918367, 49.591837, 53.265306, 56.938776, 60.612245,\n", " 64.285714, 67.959184, 71.632653, 75.306122, 78.979592, 82.653061,\n", " 86.326531, 90. ])
array([-180. , -176.4, -172.8, -169.2, -165.6, -162. , -158.4, -154.8, -151.2,\n", " -147.6, -144. , -140.4, -136.8, -133.2, -129.6, -126. , -122.4, -118.8,\n", " -115.2, -111.6, -108. , -104.4, -100.8, -97.2, -93.6, -90. , -86.4,\n", " -82.8, -79.2, -75.6, -72. , -68.4, -64.8, -61.2, -57.6, -54. ,\n", " -50.4, -46.8, -43.2, -39.6, -36. , -32.4, -28.8, -25.2, -21.6,\n", " -18. , -14.4, -10.8, -7.2, -3.6, 0. , 3.6, 7.2, 10.8,\n", " 14.4, 18. , 21.6, 25.2, 28.8, 32.4, 36. , 39.6, 43.2,\n", " 46.8, 50.4, 54. , 57.6, 61.2, 64.8, 68.4, 72. , 75.6,\n", " 79.2, 82.8, 86.4, 90. , 93.6, 97.2, 100.8, 104.4, 108. ,\n", " 111.6, 115.2, 118.8, 122.4, 126. , 129.6, 133.2, 136.8, 140.4,\n", " 144. , 147.6, 151.2, 154.8, 158.4, 162. , 165.6, 169.2, 172.8,\n", " 176.4])
<xarray.DataArray 'temperature' (time: 365, lat: 50, lon: 100)>\n", "dask.array<stack, shape=(365, 50, 100), dtype=float64, chunksize=(1, 25, 25), chunktype=numpy.ndarray>\n", "Coordinates:\n", " * time (time) datetime64[ns] 2001-01-01 2001-01-02 ... 2001-12-31\n", " * lat (lat) float64 -90.0 -86.33 -82.65 -78.98 ... 78.98 82.65 86.33 90.0\n", " * lon (lon) float64 -180.0 -176.4 -172.8 -169.2 ... 169.2 172.8 176.4
\n",
"
| \n",
"\n", "\n", " | \n", "
array(['2001-01-01T00:00:00.000000000', '2001-01-02T00:00:00.000000000',\n", " '2001-01-03T00:00:00.000000000', ..., '2001-12-29T00:00:00.000000000',\n", " '2001-12-30T00:00:00.000000000', '2001-12-31T00:00:00.000000000'],\n", " dtype='datetime64[ns]')
array([-90. , -86.326531, -82.653061, -78.979592, -75.306122, -71.632653,\n", " -67.959184, -64.285714, -60.612245, -56.938776, -53.265306, -49.591837,\n", " -45.918367, -42.244898, -38.571429, -34.897959, -31.22449 , -27.55102 ,\n", " -23.877551, -20.204082, -16.530612, -12.857143, -9.183673, -5.510204,\n", " -1.836735, 1.836735, 5.510204, 9.183673, 12.857143, 16.530612,\n", " 20.204082, 23.877551, 27.55102 , 31.22449 , 34.897959, 38.571429,\n", " 42.244898, 45.918367, 49.591837, 53.265306, 56.938776, 60.612245,\n", " 64.285714, 67.959184, 71.632653, 75.306122, 78.979592, 82.653061,\n", " 86.326531, 90. ])
array([-180. , -176.4, -172.8, -169.2, -165.6, -162. , -158.4, -154.8, -151.2,\n", " -147.6, -144. , -140.4, -136.8, -133.2, -129.6, -126. , -122.4, -118.8,\n", " -115.2, -111.6, -108. , -104.4, -100.8, -97.2, -93.6, -90. , -86.4,\n", " -82.8, -79.2, -75.6, -72. , -68.4, -64.8, -61.2, -57.6, -54. ,\n", " -50.4, -46.8, -43.2, -39.6, -36. , -32.4, -28.8, -25.2, -21.6,\n", " -18. , -14.4, -10.8, -7.2, -3.6, 0. , 3.6, 7.2, 10.8,\n", " 14.4, 18. , 21.6, 25.2, 28.8, 32.4, 36. , 39.6, 43.2,\n", " 46.8, 50.4, 54. , 57.6, 61.2, 64.8, 68.4, 72. , 75.6,\n", " 79.2, 82.8, 86.4, 90. , 93.6, 97.2, 100.8, 104.4, 108. ,\n", " 111.6, 115.2, 118.8, 122.4, 126. , 129.6, 133.2, 136.8, 140.4,\n", " 144. , 147.6, 151.2, 154.8, 158.4, 162. , 165.6, 169.2, 172.8,\n", " 176.4])
<xarray.DataArray 'temperature' (time: 365, lat: 50, lon: 100)>\n", "dask.array<mean_agg-aggregate, shape=(365, 50, 100), dtype=float64, chunksize=(60, 25, 25), chunktype=numpy.ndarray>\n", "Coordinates:\n", " * time (time) datetime64[ns] 2001-01-01T11:30:00 ... 2001-12-31T11:30:00\n", " * lat (lat) float64 -90.0 -86.33 -82.65 -78.98 ... 78.98 82.65 86.33 90.0\n", " * lon (lon) float64 -180.0 -176.4 -172.8 -169.2 ... 169.2 172.8 176.4
\n",
"
| \n",
"\n", "\n", " | \n", "
array(['2001-01-01T11:30:00.000000000', '2001-01-02T11:30:00.000000000',\n", " '2001-01-03T11:30:00.000000000', ..., '2001-12-29T11:30:00.000000000',\n", " '2001-12-30T11:30:00.000000000', '2001-12-31T11:30:00.000000000'],\n", " dtype='datetime64[ns]')
array([-90. , -86.326531, -82.653061, -78.979592, -75.306122, -71.632653,\n", " -67.959184, -64.285714, -60.612245, -56.938776, -53.265306, -49.591837,\n", " -45.918367, -42.244898, -38.571429, -34.897959, -31.22449 , -27.55102 ,\n", " -23.877551, -20.204082, -16.530612, -12.857143, -9.183673, -5.510204,\n", " -1.836735, 1.836735, 5.510204, 9.183673, 12.857143, 16.530612,\n", " 20.204082, 23.877551, 27.55102 , 31.22449 , 34.897959, 38.571429,\n", " 42.244898, 45.918367, 49.591837, 53.265306, 56.938776, 60.612245,\n", " 64.285714, 67.959184, 71.632653, 75.306122, 78.979592, 82.653061,\n", " 86.326531, 90. ])
array([-180. , -176.4, -172.8, -169.2, -165.6, -162. , -158.4, -154.8, -151.2,\n", " -147.6, -144. , -140.4, -136.8, -133.2, -129.6, -126. , -122.4, -118.8,\n", " -115.2, -111.6, -108. , -104.4, -100.8, -97.2, -93.6, -90. , -86.4,\n", " -82.8, -79.2, -75.6, -72. , -68.4, -64.8, -61.2, -57.6, -54. ,\n", " -50.4, -46.8, -43.2, -39.6, -36. , -32.4, -28.8, -25.2, -21.6,\n", " -18. , -14.4, -10.8, -7.2, -3.6, 0. , 3.6, 7.2, 10.8,\n", " 14.4, 18. , 21.6, 25.2, 28.8, 32.4, 36. , 39.6, 43.2,\n", " 46.8, 50.4, 54. , 57.6, 61.2, 64.8, 68.4, 72. , 75.6,\n", " 79.2, 82.8, 86.4, 90. , 93.6, 97.2, 100.8, 104.4, 108. ,\n", " 111.6, 115.2, 118.8, 122.4, 126. , 129.6, 133.2, 136.8, 140.4,\n", " 144. , 147.6, 151.2, 154.8, 158.4, 162. , 165.6, 169.2, 172.8,\n", " 176.4])
<xarray.DataArray 'temperature' (time: 365, lat: 50, lon: 100)>\n", "dask.array<resample_op, shape=(365, 50, 100), dtype=float64, chunksize=(60, 25, 25), chunktype=numpy.ndarray>\n", "Coordinates:\n", " * time (time) datetime64[ns] 2001-01-01 2001-01-02 ... 2001-12-31\n", " * lat (lat) float64 -90.0 -86.33 -82.65 -78.98 ... 78.98 82.65 86.33 90.0\n", " * lon (lon) float64 -180.0 -176.4 -172.8 -169.2 ... 169.2 172.8 176.4
\n",
"
| \n",
"\n", "\n", " | \n", "
array(['2001-01-01T00:00:00.000000000', '2001-01-02T00:00:00.000000000',\n", " '2001-01-03T00:00:00.000000000', ..., '2001-12-29T00:00:00.000000000',\n", " '2001-12-30T00:00:00.000000000', '2001-12-31T00:00:00.000000000'],\n", " dtype='datetime64[ns]')
array([-90. , -86.326531, -82.653061, -78.979592, -75.306122, -71.632653,\n", " -67.959184, -64.285714, -60.612245, -56.938776, -53.265306, -49.591837,\n", " -45.918367, -42.244898, -38.571429, -34.897959, -31.22449 , -27.55102 ,\n", " -23.877551, -20.204082, -16.530612, -12.857143, -9.183673, -5.510204,\n", " -1.836735, 1.836735, 5.510204, 9.183673, 12.857143, 16.530612,\n", " 20.204082, 23.877551, 27.55102 , 31.22449 , 34.897959, 38.571429,\n", " 42.244898, 45.918367, 49.591837, 53.265306, 56.938776, 60.612245,\n", " 64.285714, 67.959184, 71.632653, 75.306122, 78.979592, 82.653061,\n", " 86.326531, 90. ])
array([-180. , -176.4, -172.8, -169.2, -165.6, -162. , -158.4, -154.8, -151.2,\n", " -147.6, -144. , -140.4, -136.8, -133.2, -129.6, -126. , -122.4, -118.8,\n", " -115.2, -111.6, -108. , -104.4, -100.8, -97.2, -93.6, -90. , -86.4,\n", " -82.8, -79.2, -75.6, -72. , -68.4, -64.8, -61.2, -57.6, -54. ,\n", " -50.4, -46.8, -43.2, -39.6, -36. , -32.4, -28.8, -25.2, -21.6,\n", " -18. , -14.4, -10.8, -7.2, -3.6, 0. , 3.6, 7.2, 10.8,\n", " 14.4, 18. , 21.6, 25.2, 28.8, 32.4, 36. , 39.6, 43.2,\n", " 46.8, 50.4, 54. , 57.6, 61.2, 64.8, 68.4, 72. , 75.6,\n", " 79.2, 82.8, 86.4, 90. , 93.6, 97.2, 100.8, 104.4, 108. ,\n", " 111.6, 115.2, 118.8, 122.4, 126. , 129.6, 133.2, 136.8, 140.4,\n", " 144. , 147.6, 151.2, 154.8, 158.4, 162. , 165.6, 169.2, 172.8,\n", " 176.4])