{ "cells": [ { "cell_type": "markdown", "id": "50af76a8", "metadata": {}, "source": [ "\n", "# Inspecting your data in tables\n", "\n", "This tutorial shows how to leverage `xarray` and `pandas` to easily transform `xsnowDataset`s into tidy, tabular views that you can scan like a spreadsheet.\n", "\n", "In particular,\n", "1) Select an individual profile and view it as a `pandas.DataFrame`\n", "2) Keep or drop length-1 dimensions with `.squeeze()` when flattening arrays\n", "3) Inspect data points of your interest by applying a mask with `.where()`\n", "4) Export summaries to pandas `Series`/`DataFrame` or NumPy arrays\n" ] }, { "cell_type": "markdown", "id": "52ea0337", "metadata": {}, "source": [ "\n", "```{admonition} Handy helpers\n", ":class: note\n", "\n", "| Object | Method | Description |\n", "|---------|---------|-------------|\n", "| **Dataset / DataArray** | [`.squeeze()`](https://docs.xarray.dev/en/stable/generated/xarray.Dataset.squeeze.html#xarray.Dataset.squeeze) | Squeeze out all dimensions of length 1. |\n", "| **Dataset / DataArray** | [`.to_dataframe()`](https://docs.xarray.dev/en/stable/generated/xarray.Dataset.to_dataframe.html#xarray.Dataset.to_dataframe) | Convert this dataset or data array into a tidy [`pandas.DataFrame`](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html). |\n", "| **DataArray** | [`.to_pandas()`](https://docs.xarray.dev/en/stable/generated/xarray.DataArray.to_pandas.html#xarray.DataArray.to_pandas) | Convert this array into a pandas object (`1D → Series`, `2D → DataFrame`). |\n", "| **DataArray** | [`.to_numpy()`](https://docs.xarray.dev/en/stable/generated/xarray.DataArray.to_numpy.html#xarray.DataArray.to_numpy) | Coerce to a NumPy array. |\n", "```\n" ] }, { "cell_type": "code", "execution_count": null, "id": "2c520301", "metadata": {}, "outputs": [], "source": [ "\n", "import xsnow\n", "import pandas as pd\n", "\n", "xs = xsnow.single_profile_timeseries()\n", "print(xs.sizes)\n" ] }, { "cell_type": "markdown", "id": "c14fd240", "metadata": {}, "source": [ "\n", "## 1. Inspect a single profile as a table\n", "\n", "Select one timestamp/slope/realization and turn the subset of variables into a `DataFrame` for a spreadsheet-like view.\n" ] }, { "cell_type": "code", "execution_count": 13, "id": "35d4989d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Frozen({'location': 1, 'realization': 1, 'layer': 59})" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "profile = xs.isel(time=-1, slope=0, realization=[0])\n", "profile.sizes\n" ] }, { "cell_type": "markdown", "id": "dfb33bd7", "metadata": {}, "source": [ "You see that `sel` and `isel` squeeze length-1 dimensions by default when given as scalars (e.g., time and slope in the example above) unless they are given as lists (e.g., realization). " ] }, { "cell_type": "code", "execution_count": 14, "id": "2983dece", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
heightsk38densitytimeslopelatitudelongitudealtitudeinclinationazimuthz
locationrealizationlayer
Kasererwinkl_C6001.7500006.00520.2000122024-02-02 12:00:00047.1018311.617141681.016270-101.459999
13.5000003.50520.0000002024-02-02 12:00:00047.1018311.617141681.016270-99.709999
25.2500003.53519.5000002024-02-02 12:00:00047.1018311.617141681.016270-97.959999
37.0000002.51518.9000242024-02-02 12:00:00047.1018311.617141681.016270-96.209999
48.8500002.04347.7000122024-02-02 12:00:00047.1018311.617141681.016270-94.360001
510.7200002.06347.1000062024-02-02 12:00:00047.1018311.617141681.016270-92.489998
612.5800002.08346.6000062024-02-02 12:00:00047.1018311.617141681.016270-90.629997
714.4600002.10346.0000002024-02-02 12:00:00047.1018311.617141681.016270-88.750000
816.3300002.12345.3999942024-02-02 12:00:00047.1018311.617141681.016270-86.879997
918.2099992.14344.8999942024-02-02 12:00:00047.1018311.617141681.016270-85.000000
1020.0900002.16344.3999942024-02-02 12:00:00047.1018311.617141681.016270-83.119995
1121.9800002.19343.8999942024-02-02 12:00:00047.1018311.617141681.016270-81.229996
1223.8600012.21343.5000002024-02-02 12:00:00047.1018311.617141681.016270-79.349998
1325.7500002.23343.1000062024-02-02 12:00:00047.1018311.617141681.016270-77.459999
1427.6399992.25342.7999882024-02-02 12:00:00047.1018311.617141681.016270-75.570000
1529.5300012.10342.5000002024-02-02 12:00:00047.1018311.617141681.016270-73.680000
1631.2400002.15316.0000002024-02-02 12:00:00047.1018311.617141681.016270-71.970001
1732.9500012.17316.1000062024-02-02 12:00:00047.1018311.617141681.016270-70.259995
1834.4500012.39520.2000122024-02-02 12:00:00047.1018311.617141681.016270-68.759995
1936.4500012.06347.0000002024-02-02 12:00:00047.1018311.617141681.016270-66.759995
2038.4399992.08347.5000002024-02-02 12:00:00047.1018311.617141681.016270-64.770004
2140.4399992.10347.7000122024-02-02 12:00:00047.1018311.617141681.016270-62.770000
2242.4399992.11347.8999942024-02-02 12:00:00047.1018311.617141681.016270-60.770000
2344.4399992.11348.7000122024-02-02 12:00:00047.1018311.617141681.016270-58.770000
2446.4399992.81520.9000242024-02-02 12:00:00047.1018311.617141681.016270-56.770000
2548.4399991.16519.0999762024-02-02 12:00:00047.1018311.617141681.016270-54.770000
2650.4199981.44272.5000002024-02-02 12:00:00047.1018311.617141681.016270-52.790001
2752.3800011.47278.2000122024-02-02 12:00:00047.1018311.617141681.016270-50.829998
2854.3200001.45279.6000062024-02-02 12:00:00047.1018311.617141681.016270-48.889999
2956.2700001.41279.3999942024-02-02 12:00:00047.1018311.617141681.016270-46.939999
3058.2200010.75279.0000002024-02-02 12:00:00047.1018311.617141681.016270-44.989998
3159.7799990.93210.1000062024-02-02 12:00:00047.1018311.617141681.016270-43.430000
3261.3499980.91209.1999972024-02-02 12:00:00047.1018311.617141681.016270-41.860001
3362.9199980.89208.1999972024-02-02 12:00:00047.1018311.617141681.016270-40.290001
3464.5100020.86207.1000062024-02-02 12:00:00047.1018311.617141681.016270-38.699997
3566.0999980.83206.1000062024-02-02 12:00:00047.1018311.617141681.016270-37.110001
3667.6999970.79204.8999942024-02-02 12:00:00047.1018311.617141681.016270-35.510002
3769.3099980.77203.0000002024-02-02 12:00:00047.1018311.617141681.016270-33.900002
3870.9199980.73202.8000032024-02-02 12:00:00047.1018311.617141681.016270-32.290001
3971.7399981.7461.0000002024-02-02 12:00:00047.1018311.617141681.016270-31.470001
4072.4400020.68202.3999942024-02-02 12:00:00047.1018311.617141681.016270-30.769997
4173.5000000.38237.6000062024-02-02 12:00:00047.1018311.617141681.016270-29.709999
4275.5999980.58178.1000062024-02-02 12:00:00047.1018311.617141681.016270-27.610001
4376.7300030.52251.8999942024-02-02 12:00:00047.1018311.617141681.016270-26.479996
4477.8899990.37282.7000122024-02-02 12:00:00047.1018311.617141681.016270-25.320000
4579.0199970.33268.0000002024-02-02 12:00:00047.1018311.617141681.016270-24.190002
4679.5400010.21260.7999882024-02-02 12:00:00047.1018311.617141681.016270-23.669998
4781.5999980.34236.3000032024-02-02 12:00:00047.1018311.617141681.016270-21.610001
4883.6500020.09236.6000062024-02-02 12:00:00047.1018311.617141681.016270-19.559998
4985.9800036.00226.3999942024-02-02 12:00:00047.1018311.617141681.016270-17.229996
5087.1500026.00216.0000002024-02-02 12:00:00047.1018311.617141681.016270-16.059998
5189.4400026.00218.6999972024-02-02 12:00:00047.1018311.617141681.016270-13.769997
5290.5400016.00220.6000062024-02-02 12:00:00047.1018311.617141681.016270-12.669998
5393.3300026.00177.6000062024-02-02 12:00:00047.1018311.617141681.016270-9.879997
5495.2399986.00130.8000032024-02-02 12:00:00047.1018311.617141681.016270-7.970001
5596.9800036.00149.3999942024-02-02 12:00:00047.1018311.617141681.016270-6.229996
5699.0100026.00137.3999942024-02-02 12:00:00047.1018311.617141681.016270-4.199997
57101.0500036.00127.6999972024-02-02 12:00:00047.1018311.617141681.016270-2.159996
58103.2099996.0076.5000002024-02-02 12:00:00047.1018311.617141681.0162700.000000
\n", "
" ], "text/plain": [ " height sk38 density \\\n", "location realization layer \n", "Kasererwinkl_C6 0 0 1.750000 6.00 520.200012 \n", " 1 3.500000 3.50 520.000000 \n", " 2 5.250000 3.53 519.500000 \n", " 3 7.000000 2.51 518.900024 \n", " 4 8.850000 2.04 347.700012 \n", " 5 10.720000 2.06 347.100006 \n", " 6 12.580000 2.08 346.600006 \n", " 7 14.460000 2.10 346.000000 \n", " 8 16.330000 2.12 345.399994 \n", " 9 18.209999 2.14 344.899994 \n", " 10 20.090000 2.16 344.399994 \n", " 11 21.980000 2.19 343.899994 \n", " 12 23.860001 2.21 343.500000 \n", " 13 25.750000 2.23 343.100006 \n", " 14 27.639999 2.25 342.799988 \n", " 15 29.530001 2.10 342.500000 \n", " 16 31.240000 2.15 316.000000 \n", " 17 32.950001 2.17 316.100006 \n", " 18 34.450001 2.39 520.200012 \n", " 19 36.450001 2.06 347.000000 \n", " 20 38.439999 2.08 347.500000 \n", " 21 40.439999 2.10 347.700012 \n", " 22 42.439999 2.11 347.899994 \n", " 23 44.439999 2.11 348.700012 \n", " 24 46.439999 2.81 520.900024 \n", " 25 48.439999 1.16 519.099976 \n", " 26 50.419998 1.44 272.500000 \n", " 27 52.380001 1.47 278.200012 \n", " 28 54.320000 1.45 279.600006 \n", " 29 56.270000 1.41 279.399994 \n", " 30 58.220001 0.75 279.000000 \n", " 31 59.779999 0.93 210.100006 \n", " 32 61.349998 0.91 209.199997 \n", " 33 62.919998 0.89 208.199997 \n", " 34 64.510002 0.86 207.100006 \n", " 35 66.099998 0.83 206.100006 \n", " 36 67.699997 0.79 204.899994 \n", " 37 69.309998 0.77 203.000000 \n", " 38 70.919998 0.73 202.800003 \n", " 39 71.739998 1.74 61.000000 \n", " 40 72.440002 0.68 202.399994 \n", " 41 73.500000 0.38 237.600006 \n", " 42 75.599998 0.58 178.100006 \n", " 43 76.730003 0.52 251.899994 \n", " 44 77.889999 0.37 282.700012 \n", " 45 79.019997 0.33 268.000000 \n", " 46 79.540001 0.21 260.799988 \n", " 47 81.599998 0.34 236.300003 \n", " 48 83.650002 0.09 236.600006 \n", " 49 85.980003 6.00 226.399994 \n", " 50 87.150002 6.00 216.000000 \n", " 51 89.440002 6.00 218.699997 \n", " 52 90.540001 6.00 220.600006 \n", " 53 93.330002 6.00 177.600006 \n", " 54 95.239998 6.00 130.800003 \n", " 55 96.980003 6.00 149.399994 \n", " 56 99.010002 6.00 137.399994 \n", " 57 101.050003 6.00 127.699997 \n", " 58 103.209999 6.00 76.500000 \n", "\n", " time slope latitude \\\n", "location realization layer \n", "Kasererwinkl_C6 0 0 2024-02-02 12:00:00 0 47.10183 \n", " 1 2024-02-02 12:00:00 0 47.10183 \n", " 2 2024-02-02 12:00:00 0 47.10183 \n", " 3 2024-02-02 12:00:00 0 47.10183 \n", " 4 2024-02-02 12:00:00 0 47.10183 \n", " 5 2024-02-02 12:00:00 0 47.10183 \n", " 6 2024-02-02 12:00:00 0 47.10183 \n", " 7 2024-02-02 12:00:00 0 47.10183 \n", " 8 2024-02-02 12:00:00 0 47.10183 \n", " 9 2024-02-02 12:00:00 0 47.10183 \n", " 10 2024-02-02 12:00:00 0 47.10183 \n", " 11 2024-02-02 12:00:00 0 47.10183 \n", " 12 2024-02-02 12:00:00 0 47.10183 \n", " 13 2024-02-02 12:00:00 0 47.10183 \n", " 14 2024-02-02 12:00:00 0 47.10183 \n", " 15 2024-02-02 12:00:00 0 47.10183 \n", " 16 2024-02-02 12:00:00 0 47.10183 \n", " 17 2024-02-02 12:00:00 0 47.10183 \n", " 18 2024-02-02 12:00:00 0 47.10183 \n", " 19 2024-02-02 12:00:00 0 47.10183 \n", " 20 2024-02-02 12:00:00 0 47.10183 \n", " 21 2024-02-02 12:00:00 0 47.10183 \n", " 22 2024-02-02 12:00:00 0 47.10183 \n", " 23 2024-02-02 12:00:00 0 47.10183 \n", " 24 2024-02-02 12:00:00 0 47.10183 \n", " 25 2024-02-02 12:00:00 0 47.10183 \n", " 26 2024-02-02 12:00:00 0 47.10183 \n", " 27 2024-02-02 12:00:00 0 47.10183 \n", " 28 2024-02-02 12:00:00 0 47.10183 \n", " 29 2024-02-02 12:00:00 0 47.10183 \n", " 30 2024-02-02 12:00:00 0 47.10183 \n", " 31 2024-02-02 12:00:00 0 47.10183 \n", " 32 2024-02-02 12:00:00 0 47.10183 \n", " 33 2024-02-02 12:00:00 0 47.10183 \n", " 34 2024-02-02 12:00:00 0 47.10183 \n", " 35 2024-02-02 12:00:00 0 47.10183 \n", " 36 2024-02-02 12:00:00 0 47.10183 \n", " 37 2024-02-02 12:00:00 0 47.10183 \n", " 38 2024-02-02 12:00:00 0 47.10183 \n", " 39 2024-02-02 12:00:00 0 47.10183 \n", " 40 2024-02-02 12:00:00 0 47.10183 \n", " 41 2024-02-02 12:00:00 0 47.10183 \n", " 42 2024-02-02 12:00:00 0 47.10183 \n", " 43 2024-02-02 12:00:00 0 47.10183 \n", " 44 2024-02-02 12:00:00 0 47.10183 \n", " 45 2024-02-02 12:00:00 0 47.10183 \n", " 46 2024-02-02 12:00:00 0 47.10183 \n", " 47 2024-02-02 12:00:00 0 47.10183 \n", " 48 2024-02-02 12:00:00 0 47.10183 \n", " 49 2024-02-02 12:00:00 0 47.10183 \n", " 50 2024-02-02 12:00:00 0 47.10183 \n", " 51 2024-02-02 12:00:00 0 47.10183 \n", " 52 2024-02-02 12:00:00 0 47.10183 \n", " 53 2024-02-02 12:00:00 0 47.10183 \n", " 54 2024-02-02 12:00:00 0 47.10183 \n", " 55 2024-02-02 12:00:00 0 47.10183 \n", " 56 2024-02-02 12:00:00 0 47.10183 \n", " 57 2024-02-02 12:00:00 0 47.10183 \n", " 58 2024-02-02 12:00:00 0 47.10183 \n", "\n", " longitude altitude inclination azimuth \\\n", "location realization layer \n", "Kasererwinkl_C6 0 0 11.61714 1681.0 16 270 \n", " 1 11.61714 1681.0 16 270 \n", " 2 11.61714 1681.0 16 270 \n", " 3 11.61714 1681.0 16 270 \n", " 4 11.61714 1681.0 16 270 \n", " 5 11.61714 1681.0 16 270 \n", " 6 11.61714 1681.0 16 270 \n", " 7 11.61714 1681.0 16 270 \n", " 8 11.61714 1681.0 16 270 \n", " 9 11.61714 1681.0 16 270 \n", " 10 11.61714 1681.0 16 270 \n", " 11 11.61714 1681.0 16 270 \n", " 12 11.61714 1681.0 16 270 \n", " 13 11.61714 1681.0 16 270 \n", " 14 11.61714 1681.0 16 270 \n", " 15 11.61714 1681.0 16 270 \n", " 16 11.61714 1681.0 16 270 \n", " 17 11.61714 1681.0 16 270 \n", " 18 11.61714 1681.0 16 270 \n", " 19 11.61714 1681.0 16 270 \n", " 20 11.61714 1681.0 16 270 \n", " 21 11.61714 1681.0 16 270 \n", " 22 11.61714 1681.0 16 270 \n", " 23 11.61714 1681.0 16 270 \n", " 24 11.61714 1681.0 16 270 \n", " 25 11.61714 1681.0 16 270 \n", " 26 11.61714 1681.0 16 270 \n", " 27 11.61714 1681.0 16 270 \n", " 28 11.61714 1681.0 16 270 \n", " 29 11.61714 1681.0 16 270 \n", " 30 11.61714 1681.0 16 270 \n", " 31 11.61714 1681.0 16 270 \n", " 32 11.61714 1681.0 16 270 \n", " 33 11.61714 1681.0 16 270 \n", " 34 11.61714 1681.0 16 270 \n", " 35 11.61714 1681.0 16 270 \n", " 36 11.61714 1681.0 16 270 \n", " 37 11.61714 1681.0 16 270 \n", " 38 11.61714 1681.0 16 270 \n", " 39 11.61714 1681.0 16 270 \n", " 40 11.61714 1681.0 16 270 \n", " 41 11.61714 1681.0 16 270 \n", " 42 11.61714 1681.0 16 270 \n", " 43 11.61714 1681.0 16 270 \n", " 44 11.61714 1681.0 16 270 \n", " 45 11.61714 1681.0 16 270 \n", " 46 11.61714 1681.0 16 270 \n", " 47 11.61714 1681.0 16 270 \n", " 48 11.61714 1681.0 16 270 \n", " 49 11.61714 1681.0 16 270 \n", " 50 11.61714 1681.0 16 270 \n", " 51 11.61714 1681.0 16 270 \n", " 52 11.61714 1681.0 16 270 \n", " 53 11.61714 1681.0 16 270 \n", " 54 11.61714 1681.0 16 270 \n", " 55 11.61714 1681.0 16 270 \n", " 56 11.61714 1681.0 16 270 \n", " 57 11.61714 1681.0 16 270 \n", " 58 11.61714 1681.0 16 270 \n", "\n", " z \n", "location realization layer \n", "Kasererwinkl_C6 0 0 -101.459999 \n", " 1 -99.709999 \n", " 2 -97.959999 \n", " 3 -96.209999 \n", " 4 -94.360001 \n", " 5 -92.489998 \n", " 6 -90.629997 \n", " 7 -88.750000 \n", " 8 -86.879997 \n", " 9 -85.000000 \n", " 10 -83.119995 \n", " 11 -81.229996 \n", " 12 -79.349998 \n", " 13 -77.459999 \n", " 14 -75.570000 \n", " 15 -73.680000 \n", " 16 -71.970001 \n", " 17 -70.259995 \n", " 18 -68.759995 \n", " 19 -66.759995 \n", " 20 -64.770004 \n", " 21 -62.770000 \n", " 22 -60.770000 \n", " 23 -58.770000 \n", " 24 -56.770000 \n", " 25 -54.770000 \n", " 26 -52.790001 \n", " 27 -50.829998 \n", " 28 -48.889999 \n", " 29 -46.939999 \n", " 30 -44.989998 \n", " 31 -43.430000 \n", " 32 -41.860001 \n", " 33 -40.290001 \n", " 34 -38.699997 \n", " 35 -37.110001 \n", " 36 -35.510002 \n", " 37 -33.900002 \n", " 38 -32.290001 \n", " 39 -31.470001 \n", " 40 -30.769997 \n", " 41 -29.709999 \n", " 42 -27.610001 \n", " 43 -26.479996 \n", " 44 -25.320000 \n", " 45 -24.190002 \n", " 46 -23.669998 \n", " 47 -21.610001 \n", " 48 -19.559998 \n", " 49 -17.229996 \n", " 50 -16.059998 \n", " 51 -13.769997 \n", " 52 -12.669998 \n", " 53 -9.879997 \n", " 54 -7.970001 \n", " 55 -6.229996 \n", " 56 -4.199997 \n", " 57 -2.159996 \n", " 58 0.000000 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "profile[['height', 'sk38', 'density']].to_dataframe()\n" ] }, { "cell_type": "markdown", "id": "adb1293c", "metadata": {}, "source": [ "The DataFrame is indexed by the dimensions of the former dataset (unless we squeezed them out as we did for slope/time). It contains the data variables that we requested (`['height', 'sk38', 'density']`), and it contains all the coordinates (`['time', 'slope', 'latitude', 'longitude', 'altitude', 'inclination', 'azimuth', 'z']`)." ] }, { "cell_type": "markdown", "id": "4b24049a", "metadata": {}, "source": [ "\n", "## 2. Mask values before turning them into tables\n", "\n", "For larger datasets, you often want to keep only layers that pass a condition. Build a simple mask (with `where()`---see also [Subsetting and Filtering](./subsetting_filtering.ipynb)), preserve the grid shape, and inspect the remaining rows with pandas.\n" ] }, { "cell_type": "code", "execution_count": 16, "id": "6f9aec8a", "metadata": { "tags": [ "remove-input" ] }, "outputs": [], "source": [ "xs['rta'] = xs['ssi'] # need an RTA with meaningful values, this hack doesn't matter for tutorial concept" ] }, { "cell_type": "code", "execution_count": 28, "id": "edf35fe6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Before squeeze: Frozen({'location': 1, 'time': 381, 'slope': 1, 'realization': 1, 'layer': 59})\n", "After squeeze : Frozen({'time': 381, 'layer': 59})\n" ] } ], "source": [ "\n", "# Stability index across time and layer\n", "xs2d = xs.squeeze()\n", "print('Before squeeze:', xs.sizes)\n", "print('After squeeze :', xs2d.sizes)" ] }, { "cell_type": "code", "execution_count": null, "id": "c05893a7", "metadata": {}, "outputs": [], "source": [ "sk38_masked = xs2d[['sk38', 'rta']].where(xs2d['rta'] > 0.8)" ] }, { "cell_type": "code", "execution_count": 20, "id": "03d77ea4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sk38rtasloperealizationlocationlatitudelongitudealtitudeinclinationazimuthz
timelayer
2024-01-17 16:00:00192.040.8500Kasererwinkl_C647.1018311.617141681.016270-39.989998
231.580.8700Kasererwinkl_C647.1018311.617141681.016270-31.989998
260.741.0000Kasererwinkl_C647.1018311.617141681.016270-25.989998
2024-01-17 17:00:00192.040.8500Kasererwinkl_C647.1018311.617141681.016270-39.989998
231.580.8700Kasererwinkl_C647.1018311.617141681.016270-31.989998
.......................................
2024-02-02 12:00:00360.790.8100Kasererwinkl_C647.1018311.617141681.016270-35.510002
370.770.8100Kasererwinkl_C647.1018311.617141681.016270-33.900002
391.740.9600Kasererwinkl_C647.1018311.617141681.016270-31.470001
400.680.9700Kasererwinkl_C647.1018311.617141681.016270-30.769997
420.580.8900Kasererwinkl_C647.1018311.617141681.016270-27.610001
\n", "

1950 rows × 11 columns

\n", "
" ], "text/plain": [ " sk38 rta slope realization location \\\n", "time layer \n", "2024-01-17 16:00:00 19 2.04 0.85 0 0 Kasererwinkl_C6 \n", " 23 1.58 0.87 0 0 Kasererwinkl_C6 \n", " 26 0.74 1.00 0 0 Kasererwinkl_C6 \n", "2024-01-17 17:00:00 19 2.04 0.85 0 0 Kasererwinkl_C6 \n", " 23 1.58 0.87 0 0 Kasererwinkl_C6 \n", "... ... ... ... ... ... \n", "2024-02-02 12:00:00 36 0.79 0.81 0 0 Kasererwinkl_C6 \n", " 37 0.77 0.81 0 0 Kasererwinkl_C6 \n", " 39 1.74 0.96 0 0 Kasererwinkl_C6 \n", " 40 0.68 0.97 0 0 Kasererwinkl_C6 \n", " 42 0.58 0.89 0 0 Kasererwinkl_C6 \n", "\n", " latitude longitude altitude inclination \\\n", "time layer \n", "2024-01-17 16:00:00 19 47.10183 11.61714 1681.0 16 \n", " 23 47.10183 11.61714 1681.0 16 \n", " 26 47.10183 11.61714 1681.0 16 \n", "2024-01-17 17:00:00 19 47.10183 11.61714 1681.0 16 \n", " 23 47.10183 11.61714 1681.0 16 \n", "... ... ... ... ... \n", "2024-02-02 12:00:00 36 47.10183 11.61714 1681.0 16 \n", " 37 47.10183 11.61714 1681.0 16 \n", " 39 47.10183 11.61714 1681.0 16 \n", " 40 47.10183 11.61714 1681.0 16 \n", " 42 47.10183 11.61714 1681.0 16 \n", "\n", " azimuth z \n", "time layer \n", "2024-01-17 16:00:00 19 270 -39.989998 \n", " 23 270 -31.989998 \n", " 26 270 -25.989998 \n", "2024-01-17 17:00:00 19 270 -39.989998 \n", " 23 270 -31.989998 \n", "... ... ... \n", "2024-02-02 12:00:00 36 270 -35.510002 \n", " 37 270 -33.900002 \n", " 39 270 -31.470001 \n", " 40 270 -30.769997 \n", " 42 270 -27.610001 \n", "\n", "[1950 rows x 11 columns]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "sk38_masked.to_dataframe().dropna()\n" ] }, { "cell_type": "markdown", "id": "5f1cb261", "metadata": {}, "source": [ "\n", "## 3. Summaries and exports\n", "\n", "After masking, let's reduce along `layer` and export to different data structures. Note that you would mostly run computations on the `DataArray`s, no need to convert them.\n", "\n", "Here, we are interested in the minimum SK38 per timestamp:\n" ] }, { "cell_type": "code", "execution_count": 23, "id": "7f986c6d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Size: 2kB\n", "array([0.74, 0.74, 0.74, 0.74, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75,\n", " 0.75, 0.13, 0.1 , 0.1 , 0.1 , 0.1 , 0.1 , 0.11, 0.11, 0.11, 0.13,\n", " 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.11, 0.11, 0.11, 0.09, 0.09,\n", " 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.1 , 0.1 , 0.1 , 0.11, 0.11,\n", " 0.11, 0.11, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.15, 0.15, 0.15,\n", " 0.15, 0.15, 0.15, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.17, 0.17, 0.17, 0.17, 0.06, 0.05, 0.13, 0.18, 0.05, 0.05, 0.05,\n", " 0.09, 0.09, 0.1 , 0.11, 0.22, 0.23, 0.23, 0.26, 0.27, 0.27, 0.27,\n", " 0.27, 0.27, 0.28, 0.28, 0.31, 0.31, 0.25, 0.25, 0.25, 0.25, 0.25,\n", " 0.32, 0.33, 0.33, 0.34, 0.34, 0.34, 0.35, 0.35, 0.36, 0.36, 0.36,\n", " 0.36, 0.37, 0.37, 0.37, 0.37, 0.38, 0.38, 0.38, 0.39, 0.39, 0.39,\n", " 0.41, 0.41, 0.41, 0.43, 0.43, 0.46, 0.49, 0.49, 0.05, 0.05, 0.08,\n", " 0.09, 0.14, 0.14, 0.15, 0.15, 0.2 , 0.2 , 0.21, 0.21, 0.26, 0.26,\n", " 0.26, 0.26, 0.26, 0.26, 0.23, 0.23, 0.24, 0.24, 0.24, 0.24, 0.24,\n", " 0.32, 0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.33, 0.28, 0.28, 0.31,\n", " 0.31, 0.32, 0.32, 0.34, 0.35, 0.35, 0.35, 0.35, 0.35, 0.35, 0.39,\n", " 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.4 , 0.4 , 0.4 , 0.4 ,\n", " 0.4 , 0.4 , 0.4 , 0.4 , 0.4 , 0.41, 0.41, 0.41, 0.41, 0.41, 0.41,\n", " 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.51, 0.51, 0.51,\n", " 0.51, 0.51, 0.52, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.43, 0.43,\n", " 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43,\n", " 0.43, 0.43, 0.44, 0.44, 0.44, 0.44, 0.53, 0.53, 0.54, 0.54, 0.54,\n", " 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54,\n", " 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.55, 0.55,\n", " 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55,\n", " 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55,\n", " 0.55, 0.55, 0.55, 0.55, 0.55, 0.56, 0.56, 0.56, 0.56, 0.56, 0.56,\n", " 0.56, 0.56, 0.56, 0.56, 0.56, 0.59, 0.59, 0.52, 0.53, 0.53, 0.56,\n", " 0.56, 0.56, 0.56, 0.56, 0.57, 0.57, 0.57, 0.57, 0.57, 0.57, 0.57,\n", " 0.57, 0.57, 0.57, 0.57, 0.57, 0.57, 0.58], dtype=float32)\n", "Coordinates:\n", " * time (time) datetime64[ns] 3kB 2024-01-17T16:00:00 ... 2024-02-02...\n", " slope int64 8B 0\n", " realization int64 8B 0\n", " location \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sloperealizationlocationlatitudelongitudealtitudeinclinationazimuthsk38
time
2024-01-17 16:00:0000Kasererwinkl_C647.1018311.617141681.0162700.74
2024-01-17 17:00:0000Kasererwinkl_C647.1018311.617141681.0162700.74
2024-01-17 18:00:0000Kasererwinkl_C647.1018311.617141681.0162700.74
2024-01-17 19:00:0000Kasererwinkl_C647.1018311.617141681.0162700.74
2024-01-17 20:00:0000Kasererwinkl_C647.1018311.617141681.0162700.75
..............................
2024-02-02 08:00:0000Kasererwinkl_C647.1018311.617141681.0162700.57
2024-02-02 09:00:0000Kasererwinkl_C647.1018311.617141681.0162700.57
2024-02-02 10:00:0000Kasererwinkl_C647.1018311.617141681.0162700.57
2024-02-02 11:00:0000Kasererwinkl_C647.1018311.617141681.0162700.57
2024-02-02 12:00:0000Kasererwinkl_C647.1018311.617141681.0162700.58
\n", "

381 rows × 9 columns

\n", "" ], "text/plain": [ " slope realization location latitude longitude \\\n", "time \n", "2024-01-17 16:00:00 0 0 Kasererwinkl_C6 47.10183 11.61714 \n", "2024-01-17 17:00:00 0 0 Kasererwinkl_C6 47.10183 11.61714 \n", "2024-01-17 18:00:00 0 0 Kasererwinkl_C6 47.10183 11.61714 \n", "2024-01-17 19:00:00 0 0 Kasererwinkl_C6 47.10183 11.61714 \n", "2024-01-17 20:00:00 0 0 Kasererwinkl_C6 47.10183 11.61714 \n", "... ... ... ... ... ... \n", "2024-02-02 08:00:00 0 0 Kasererwinkl_C6 47.10183 11.61714 \n", "2024-02-02 09:00:00 0 0 Kasererwinkl_C6 47.10183 11.61714 \n", "2024-02-02 10:00:00 0 0 Kasererwinkl_C6 47.10183 11.61714 \n", "2024-02-02 11:00:00 0 0 Kasererwinkl_C6 47.10183 11.61714 \n", "2024-02-02 12:00:00 0 0 Kasererwinkl_C6 47.10183 11.61714 \n", "\n", " altitude inclination azimuth sk38 \n", "time \n", "2024-01-17 16:00:00 1681.0 16 270 0.74 \n", "2024-01-17 17:00:00 1681.0 16 270 0.74 \n", "2024-01-17 18:00:00 1681.0 16 270 0.74 \n", "2024-01-17 19:00:00 1681.0 16 270 0.74 \n", "2024-01-17 20:00:00 1681.0 16 270 0.75 \n", "... ... ... ... ... \n", "2024-02-02 08:00:00 1681.0 16 270 0.57 \n", "2024-02-02 09:00:00 1681.0 16 270 0.57 \n", "2024-02-02 10:00:00 1681.0 16 270 0.57 \n", "2024-02-02 11:00:00 1681.0 16 270 0.57 \n", "2024-02-02 12:00:00 1681.0 16 270 0.58 \n", "\n", "[381 rows x 9 columns]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "sk38_min.to_dataframe()\n" ] }, { "cell_type": "code", "execution_count": 25, "id": "b102624b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "time\n", "2024-01-17 16:00:00 0.74\n", "2024-01-17 17:00:00 0.74\n", "2024-01-17 18:00:00 0.74\n", "2024-01-17 19:00:00 0.74\n", "2024-01-17 20:00:00 0.75\n", " ... \n", "2024-02-02 08:00:00 0.57\n", "2024-02-02 09:00:00 0.57\n", "2024-02-02 10:00:00 0.57\n", "2024-02-02 11:00:00 0.57\n", "2024-02-02 12:00:00 0.58\n", "Freq: h, Name: sk38, Length: 381, dtype: float32" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "sk38_min.to_pandas()\n" ] }, { "cell_type": "code", "execution_count": 26, "id": "7a7fa641", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.74, 0.74, 0.74, 0.74, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75,\n", " 0.75, 0.13, 0.1 , 0.1 , 0.1 , 0.1 , 0.1 , 0.11, 0.11, 0.11, 0.13,\n", " 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.11, 0.11, 0.11, 0.09, 0.09,\n", " 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.1 , 0.1 , 0.1 , 0.11, 0.11,\n", " 0.11, 0.11, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.15, 0.15, 0.15,\n", " 0.15, 0.15, 0.15, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16,\n", " 0.17, 0.17, 0.17, 0.17, 0.06, 0.05, 0.13, 0.18, 0.05, 0.05, 0.05,\n", " 0.09, 0.09, 0.1 , 0.11, 0.22, 0.23, 0.23, 0.26, 0.27, 0.27, 0.27,\n", " 0.27, 0.27, 0.28, 0.28, 0.31, 0.31, 0.25, 0.25, 0.25, 0.25, 0.25,\n", " 0.32, 0.33, 0.33, 0.34, 0.34, 0.34, 0.35, 0.35, 0.36, 0.36, 0.36,\n", " 0.36, 0.37, 0.37, 0.37, 0.37, 0.38, 0.38, 0.38, 0.39, 0.39, 0.39,\n", " 0.41, 0.41, 0.41, 0.43, 0.43, 0.46, 0.49, 0.49, 0.05, 0.05, 0.08,\n", " 0.09, 0.14, 0.14, 0.15, 0.15, 0.2 , 0.2 , 0.21, 0.21, 0.26, 0.26,\n", " 0.26, 0.26, 0.26, 0.26, 0.23, 0.23, 0.24, 0.24, 0.24, 0.24, 0.24,\n", " 0.32, 0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.33, 0.28, 0.28, 0.31,\n", " 0.31, 0.32, 0.32, 0.34, 0.35, 0.35, 0.35, 0.35, 0.35, 0.35, 0.39,\n", " 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.4 , 0.4 , 0.4 , 0.4 ,\n", " 0.4 , 0.4 , 0.4 , 0.4 , 0.4 , 0.41, 0.41, 0.41, 0.41, 0.41, 0.41,\n", " 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.51, 0.51, 0.51,\n", " 0.51, 0.51, 0.52, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.43, 0.43,\n", " 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43,\n", " 0.43, 0.43, 0.44, 0.44, 0.44, 0.44, 0.53, 0.53, 0.54, 0.54, 0.54,\n", " 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54,\n", " 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.54, 0.55, 0.55,\n", " 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55,\n", " 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55,\n", " 0.55, 0.55, 0.55, 0.55, 0.55, 0.56, 0.56, 0.56, 0.56, 0.56, 0.56,\n", " 0.56, 0.56, 0.56, 0.56, 0.56, 0.59, 0.59, 0.52, 0.53, 0.53, 0.56,\n", " 0.56, 0.56, 0.56, 0.56, 0.57, 0.57, 0.57, 0.57, 0.57, 0.57, 0.57,\n", " 0.57, 0.57, 0.57, 0.57, 0.57, 0.57, 0.58], dtype=float32)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "sk38_min.to_numpy()\n" ] }, { "cell_type": "code", "execution_count": null, "id": "61f299bc", "metadata": {}, "outputs": [ { "data": { "image/png": "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zu0xY8YIAGLZsmVW+65cuVIAEF988YXV9j179ggAYuHChfK2lJQUodFoxLFjx6z2/euvvwQA8eGHHwohhNi+fbsAIJ577jmRlpYm7zd48GDRu3dvZ14Wv8RuKS9zww03YMWKFZgzZw527txp1d3giPTtpXbx4b333ovQ0FCbUUWdOnVC165drbaNGjUKRUVF2L9/PwDgm2++QefOnXHttdfCaDTKP0OGDLEZ+WPPo48+ij179tT742zKta4sUVNqZO6++26r37///nsYjUY89NBDVscdFBSEfv36WR13SUkJnn/+eVx11VUICAhAQEAAwsLCUFpait9//73RbcrJycHQoUORmJiItWvXQqvVyrcdOHAAd9xxB2JiYqDRaBAYGIiHHnoIVVVV+OOPPxr1fD/99BMGDhyIpKQkq+1jx45FWVmZTUbpjjvusPpdypbU1x2Xnp7u1Htiz549aNWqVb3tbq73hCVnX5sNGzagXbt2GDRoUL2PN2jQIERGRsp/v5dffhn5+fnIzc1tcPtKS0uxa9cu3HPPPQgLC5O3azQajB49GmfPnrXpMmzs3+/22293+u/nrDvuuAOFhYWYPHmyw6zQiRMnMGrUKCQkJMivmTSIQDrPoqOjceWVV+LNN9/EvHnzcODAAZvMcUPObUnt68M333yDqKgo3H777VaPce211yIhIcHmMa655hq0a9fOatuVV16J1NRUudQgMzMTXbp0wYMPPoiTJ0/i+PHj0Ov12L59e73vJ3/Gbikvs3r1asyZMwfvv/8+XnrpJYSFheGuu+7CG2+8YZOCl+Tn5yMgIABxcXFW21UqFRISEmy6tOw9jrRN2vfChQv466+/EBgYaPc58/Ly6jyOhIQEtGzZss59pDbWJyYmxm633KVLlwCgSYWjtdPgFy5cAABcf/31dvdXq2u+L4waNQo//vgjXnrpJVx//fWIiIiASqXCLbfcgvLy8ka1p7i4GLfccgsqKyuxYcMGREZGyrdlZWWhb9++aN++PRYsWIDU1FQEBQVh9+7dePzxxxv9nPn5+Xa7A6QAo/ZrHxMTY/W71GVS3/OHhYXh2muvdapN9XVrxMTE2NRSAOYPe4PB4LJiYmdfm4sXL8pdTY7s3r0bGRkZ6N+/P9577z20adMGWq0W69atwyuvvNKov9/ly5chhHDL3y86Otrq/egKL730Eq69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m6BW17/SKREREdWNwU0zWn8oG0aTgEatQoCdwEUAMBhN+ONCCcorqxCq45+DiIioqfhp2ox2nsgHAMwd0QX3dU+yub2isgodXvoOgDnQISIioqZjoUczKTMY8evZQgBAz7SYevcXguENERGRKzBz4yIVlVXYfCxX/v34xVIYTQKtIoOQFB1s9z4qi54qhjZERESuweDGRYoqKjHh4/0223tcEQOVyn6hsAo125m4ISIicg0GNy4SqFaje0oLq23BWg3+3vcKh/exinkY3BAREbkEgxsXaRGqxef/6N2g+1jHNoxuiIiIXIEFxQqy7K5itxQREZFrMLhREHuliIiIXI/BjYKsRksxdUNEROQSDG4UZNUtpWA7iIiIfAmDGw/BxA0REZFrMLhRmJS84WgpIiIi12BwozC5Y4qxDRERkUswuFGYVHfD2IaIiMg1GNwoTMrcsOaGiIjINRjcKIw1N0RERK7F4EZh0uKZzNwQERG5BoMbpcmZGyIiInIFBjcKq6m5YXhDRETkCooHNwsXLkRaWhqCgoKQnp6Obdu2Odx37NixUKlUNj+dOnVyY4tdS665YWxDRETkEooGN6tXr8bkyZMxbdo0HDhwAH379sWwYcOQlZVld/8FCxYgOztb/jlz5gyio6Nx7733urnlrqOyWj6TiIiImkrR4GbevHkYN24cxo8fj44dO2L+/PlISkrCokWL7O4fGRmJhIQE+Wfv3r24fPkyHn74YTe33HWYuSEiInItxYIbg8GAffv2ISMjw2p7RkYGduzY4dRjLF26FIMGDUJKSorDffR6PYqKiqx+PIlcc8OSYiIiIpdQLLjJy8tDVVUV4uPjrbbHx8cjJyen3vtnZ2djw4YNGD9+fJ37zZ07F5GRkfJPUlJSk9rtavIMxYxtiIiIXELxgmLpw10ihLDZZs+KFSsQFRWFO++8s879pk6disLCQvnnzJkzTWmuy9VkboiIiMgVApR64tjYWGg0GpssTW5urk02pzYhBJYtW4bRo0dDq9XWua9Op4NOp2tye5uNXHPD8IaIiMgVFMvcaLVapKenIzMz02p7ZmYmevfuXed9t2zZgr/++gvjxo1rzia6BTM3RERErqVY5gYApkyZgtGjR6N79+7o1asXlixZgqysLEyYMAGAuUvp3Llz+PDDD63ut3TpUvTo0QOdO3dWotkuxZobIiIi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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = sk38_min.plot()" ] }, { "cell_type": "markdown", "id": "53c4002a", "metadata": {}, "source": [ "\n", "## 5. Summary\n", "\n", "- Use `.squeeze()` to flatten length-1 dimensions before converting to tables.\n", "- `.to_dataframe()` yields tidy, multi-index tables you can filter further with pandas.\n", "- `.where()` keeps the dataset grid intact; use pandas utilities like `.dropna()` to focus on valid rows.\n", "- Reduce along `layer` (or other dimensions) and convert to pandas or NumPy for convenient inspection or simple plotting.\n" ] } ], "metadata": { "kernelspec": { "display_name": "xsnow-dev", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.5" } }, "nbformat": 4, "nbformat_minor": 5 }