{ "cells": [ { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Using pandas data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "import earthkit.data as ekd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Construct a sample pandas objects for demonstration" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "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", "
t2mlatitudelongitude
date
2022-01-01273.15000050.0-1.000000e+00
2022-01-02274.19473750.1-9.000000e-01
2022-01-03275.23947450.2-8.000000e-01
2022-01-04276.28421150.3-7.000000e-01
2022-01-05277.32894750.4-6.000000e-01
2022-01-06278.37368450.5-5.000000e-01
2022-01-07279.41842150.6-4.000000e-01
2022-01-08280.46315850.7-3.000000e-01
2022-01-09281.50789550.8-2.000000e-01
2022-01-10282.55263250.9-1.000000e-01
2022-01-11283.59736851.0-2.220446e-16
2022-01-12284.64210551.11.000000e-01
2022-01-13285.68684251.22.000000e-01
2022-01-14286.73157951.33.000000e-01
2022-01-15287.77631651.44.000000e-01
2022-01-16288.82105351.55.000000e-01
2022-01-17289.86578951.66.000000e-01
2022-01-18290.91052651.77.000000e-01
2022-01-19291.95526351.88.000000e-01
2022-01-20293.00000051.99.000000e-01
\n", "
" ], "text/plain": [ " t2m latitude longitude\n", "date \n", "2022-01-01 273.150000 50.0 -1.000000e+00\n", "2022-01-02 274.194737 50.1 -9.000000e-01\n", "2022-01-03 275.239474 50.2 -8.000000e-01\n", "2022-01-04 276.284211 50.3 -7.000000e-01\n", "2022-01-05 277.328947 50.4 -6.000000e-01\n", "2022-01-06 278.373684 50.5 -5.000000e-01\n", "2022-01-07 279.418421 50.6 -4.000000e-01\n", "2022-01-08 280.463158 50.7 -3.000000e-01\n", "2022-01-09 281.507895 50.8 -2.000000e-01\n", "2022-01-10 282.552632 50.9 -1.000000e-01\n", "2022-01-11 283.597368 51.0 -2.220446e-16\n", "2022-01-12 284.642105 51.1 1.000000e-01\n", "2022-01-13 285.686842 51.2 2.000000e-01\n", "2022-01-14 286.731579 51.3 3.000000e-01\n", "2022-01-15 287.776316 51.4 4.000000e-01\n", "2022-01-16 288.821053 51.5 5.000000e-01\n", "2022-01-17 289.865789 51.6 6.000000e-01\n", "2022-01-18 290.910526 51.7 7.000000e-01\n", "2022-01-19 291.955263 51.8 8.000000e-01\n", "2022-01-20 293.000000 51.9 9.000000e-01" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t2m_series = pd.Series(np.linspace(273.15,293,20), name='t2m')\n", "lat_series = pd.Series(np.arange(50,52,0.1), name='latitude')\n", "lon_series = pd.Series(np.arange(-1,1,0.1), name='longitude')\n", "date_series = pd.Series(pd.date_range('2022-01-01', '2022-01-20'), name='date')\n", "\n", "date_series\n", "t2m_df = pd.concat([t2m_series, lat_series, lon_series], axis=1).set_index(date_series)\n", "t2m_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create an earthkit object from the pandas object, and use earthkit methods" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "t2m\n", "latitude\n" ] }, { "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", "
t2mlatitudelongitude
date
2022-01-01273.15000050.0-1.000000e+00
2022-01-02274.19473750.1-9.000000e-01
2022-01-03275.23947450.2-8.000000e-01
2022-01-04276.28421150.3-7.000000e-01
2022-01-05277.32894750.4-6.000000e-01
2022-01-06278.37368450.5-5.000000e-01
2022-01-07279.41842150.6-4.000000e-01
2022-01-08280.46315850.7-3.000000e-01
2022-01-09281.50789550.8-2.000000e-01
2022-01-10282.55263250.9-1.000000e-01
2022-01-11283.59736851.0-2.220446e-16
2022-01-12284.64210551.11.000000e-01
2022-01-13285.68684251.22.000000e-01
2022-01-14286.73157951.33.000000e-01
2022-01-15287.77631651.44.000000e-01
2022-01-16288.82105351.55.000000e-01
2022-01-17289.86578951.66.000000e-01
2022-01-18290.91052651.77.000000e-01
2022-01-19291.95526351.88.000000e-01
2022-01-20293.00000051.99.000000e-01
\n", "
" ], "text/plain": [ " t2m latitude longitude\n", "date \n", "2022-01-01 273.150000 50.0 -1.000000e+00\n", "2022-01-02 274.194737 50.1 -9.000000e-01\n", "2022-01-03 275.239474 50.2 -8.000000e-01\n", "2022-01-04 276.284211 50.3 -7.000000e-01\n", "2022-01-05 277.328947 50.4 -6.000000e-01\n", "2022-01-06 278.373684 50.5 -5.000000e-01\n", "2022-01-07 279.418421 50.6 -4.000000e-01\n", "2022-01-08 280.463158 50.7 -3.000000e-01\n", "2022-01-09 281.507895 50.8 -2.000000e-01\n", "2022-01-10 282.552632 50.9 -1.000000e-01\n", "2022-01-11 283.597368 51.0 -2.220446e-16\n", "2022-01-12 284.642105 51.1 1.000000e-01\n", "2022-01-13 285.686842 51.2 2.000000e-01\n", "2022-01-14 286.731579 51.3 3.000000e-01\n", "2022-01-15 287.776316 51.4 4.000000e-01\n", "2022-01-16 288.821053 51.5 5.000000e-01\n", "2022-01-17 289.865789 51.6 6.000000e-01\n", "2022-01-18 290.910526 51.7 7.000000e-01\n", "2022-01-19 291.955263 51.8 8.000000e-01\n", "2022-01-20 293.000000 51.9 9.000000e-01" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ek_pandas = ekd.from_object(t2m_df)\n", "# iterating behaves as a pandas DF\n", "for thing in ek_pandas[:2]:\n", " print(thing)\n", "\n", "# Describe representation is a pandas dataframe\n", "ek_pandas.describe()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "dev_ecc", "language": "python", "name": "dev_ecc" }, "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.10.13" } }, "nbformat": 4, "nbformat_minor": 4 }