{
"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",
" t2m | \n",
" latitude | \n",
" longitude | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2022-01-01 | \n",
" 273.150000 | \n",
" 50.0 | \n",
" -1.000000e+00 | \n",
"
\n",
" \n",
" | 2022-01-02 | \n",
" 274.194737 | \n",
" 50.1 | \n",
" -9.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-03 | \n",
" 275.239474 | \n",
" 50.2 | \n",
" -8.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-04 | \n",
" 276.284211 | \n",
" 50.3 | \n",
" -7.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-05 | \n",
" 277.328947 | \n",
" 50.4 | \n",
" -6.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-06 | \n",
" 278.373684 | \n",
" 50.5 | \n",
" -5.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-07 | \n",
" 279.418421 | \n",
" 50.6 | \n",
" -4.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-08 | \n",
" 280.463158 | \n",
" 50.7 | \n",
" -3.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-09 | \n",
" 281.507895 | \n",
" 50.8 | \n",
" -2.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-10 | \n",
" 282.552632 | \n",
" 50.9 | \n",
" -1.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-11 | \n",
" 283.597368 | \n",
" 51.0 | \n",
" -2.220446e-16 | \n",
"
\n",
" \n",
" | 2022-01-12 | \n",
" 284.642105 | \n",
" 51.1 | \n",
" 1.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-13 | \n",
" 285.686842 | \n",
" 51.2 | \n",
" 2.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-14 | \n",
" 286.731579 | \n",
" 51.3 | \n",
" 3.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-15 | \n",
" 287.776316 | \n",
" 51.4 | \n",
" 4.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-16 | \n",
" 288.821053 | \n",
" 51.5 | \n",
" 5.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-17 | \n",
" 289.865789 | \n",
" 51.6 | \n",
" 6.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-18 | \n",
" 290.910526 | \n",
" 51.7 | \n",
" 7.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-19 | \n",
" 291.955263 | \n",
" 51.8 | \n",
" 8.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-20 | \n",
" 293.000000 | \n",
" 51.9 | \n",
" 9.000000e-01 | \n",
"
\n",
" \n",
"
\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",
" t2m | \n",
" latitude | \n",
" longitude | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2022-01-01 | \n",
" 273.150000 | \n",
" 50.0 | \n",
" -1.000000e+00 | \n",
"
\n",
" \n",
" | 2022-01-02 | \n",
" 274.194737 | \n",
" 50.1 | \n",
" -9.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-03 | \n",
" 275.239474 | \n",
" 50.2 | \n",
" -8.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-04 | \n",
" 276.284211 | \n",
" 50.3 | \n",
" -7.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-05 | \n",
" 277.328947 | \n",
" 50.4 | \n",
" -6.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-06 | \n",
" 278.373684 | \n",
" 50.5 | \n",
" -5.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-07 | \n",
" 279.418421 | \n",
" 50.6 | \n",
" -4.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-08 | \n",
" 280.463158 | \n",
" 50.7 | \n",
" -3.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-09 | \n",
" 281.507895 | \n",
" 50.8 | \n",
" -2.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-10 | \n",
" 282.552632 | \n",
" 50.9 | \n",
" -1.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-11 | \n",
" 283.597368 | \n",
" 51.0 | \n",
" -2.220446e-16 | \n",
"
\n",
" \n",
" | 2022-01-12 | \n",
" 284.642105 | \n",
" 51.1 | \n",
" 1.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-13 | \n",
" 285.686842 | \n",
" 51.2 | \n",
" 2.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-14 | \n",
" 286.731579 | \n",
" 51.3 | \n",
" 3.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-15 | \n",
" 287.776316 | \n",
" 51.4 | \n",
" 4.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-16 | \n",
" 288.821053 | \n",
" 51.5 | \n",
" 5.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-17 | \n",
" 289.865789 | \n",
" 51.6 | \n",
" 6.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-18 | \n",
" 290.910526 | \n",
" 51.7 | \n",
" 7.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-19 | \n",
" 291.955263 | \n",
" 51.8 | \n",
" 8.000000e-01 | \n",
"
\n",
" \n",
" | 2022-01-20 | \n",
" 293.000000 | \n",
" 51.9 | \n",
" 9.000000e-01 | \n",
"
\n",
" \n",
"
\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
}