{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "
\n", " \n", "
\n", "
\n", " \n", "
\n", "
\n", " \n", " Time Series Data Analysis with Python\n", "

\n", " Deanna Spindler

\n", " IMSG at NCEP/EMC
\n", " Verification, Post-Processing and Product Generation Branch
\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

What is pandas?

\n", "

\n", "The name comes from panel data, a statistics term for multidimensional datasets.

\n", "A high-perfomance open source library for tabular data manipulation and analysis\n", " developed by Wes McKinney in 2008.

" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "

What does it do?

\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Example

\n", " \n", "

Using pandas DataFrames to validate WAVEWATCH III model output with NDBC buoy data.

\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "

\n", "Python libraries provide a complete took-kit for data science and analysis:

\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

First things first

" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy\n", "import pandas\n", "import tarfile\n", "import xarray \n", "import netCDF4\n", "from datetime import datetime,timedelta\n", "from dateutil.relativedelta import relativedelta" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "

Start by choosing a buoy and period of interest

" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "buoyID='41008'\n", "year=2018\n", "month=6" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Get the quality controlled NDBC data

" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "url='https://dods.ndbc.noaa.gov/thredds/dodsC/data/stdmet/'+buoyID+'/'+ \\\n", " buoyID+'h'+str(year)+'.nc'\n", "ncdata=xarray.open_dataset(url,decode_times=True)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "

Select the specific month of the year

" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "startat=datetime(year,month,1)\n", "stopat=startat+relativedelta(months=1)-relativedelta(days=1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "

Subset the data to this time period, and make it a DataFrame

" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "data=ncdata.sel(time=slice(startat,stopat)).to_dataframe()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Take a look at what is there

" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "Index(['wind_dir', 'wind_spd', 'gust', 'wave_height', 'dominant_wpd',\n", " 'average_wpd', 'mean_wave_dir', 'air_pressure', 'air_temperature',\n", " 'sea_surface_temperature', 'dewpt_temperature', 'visibility',\n", " 'water_level'],\n", " dtype='object')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.keys()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Another way is to look at the first few rows of the DataFrame

" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "fragment" } }, "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", "
wind_dirwind_spdgustwave_heightdominant_wpdaverage_wpdmean_wave_dirair_pressureair_temperaturesea_surface_temperaturedewpt_temperaturevisibilitywater_level
latitudelongitudetime
31.4-80.8679962018-06-01 00:50:00172.08.29.40.8000:00:07.69000000:00:03.950000100.01014.50000025.70000126.100000NaNNaNNaN
2018-06-01 01:50:00178.07.58.50.8900:00:07.14000000:00:03.940000109.01015.20001225.70000125.799999NaNNaNNaN
2018-06-01 02:50:00186.07.08.20.8000:00:07.69000000:00:03.900000113.01015.20001225.70000125.700001NaNNaNNaN
2018-06-01 03:50:00200.06.98.80.8600:00:07.69000000:00:04.160000103.01015.29998825.79999925.600000NaNNaNNaN
2018-06-01 04:50:00205.06.37.30.7900:00:03.70000000:00:04.080000171.01014.79998825.60000025.600000NaNNaNNaN
\n", "
" ], "text/plain": [ " wind_dir wind_spd gust \\\n", "latitude longitude time \n", "31.4 -80.867996 2018-06-01 00:50:00 172.0 8.2 9.4 \n", " 2018-06-01 01:50:00 178.0 7.5 8.5 \n", " 2018-06-01 02:50:00 186.0 7.0 8.2 \n", " 2018-06-01 03:50:00 200.0 6.9 8.8 \n", " 2018-06-01 04:50:00 205.0 6.3 7.3 \n", "\n", " wave_height dominant_wpd \\\n", "latitude longitude time \n", "31.4 -80.867996 2018-06-01 00:50:00 0.80 00:00:07.690000 \n", " 2018-06-01 01:50:00 0.89 00:00:07.140000 \n", " 2018-06-01 02:50:00 0.80 00:00:07.690000 \n", " 2018-06-01 03:50:00 0.86 00:00:07.690000 \n", " 2018-06-01 04:50:00 0.79 00:00:03.700000 \n", "\n", " average_wpd mean_wave_dir \\\n", "latitude longitude time \n", "31.4 -80.867996 2018-06-01 00:50:00 00:00:03.950000 100.0 \n", " 2018-06-01 01:50:00 00:00:03.940000 109.0 \n", " 2018-06-01 02:50:00 00:00:03.900000 113.0 \n", " 2018-06-01 03:50:00 00:00:04.160000 103.0 \n", " 2018-06-01 04:50:00 00:00:04.080000 171.0 \n", "\n", " air_pressure air_temperature \\\n", "latitude longitude time \n", "31.4 -80.867996 2018-06-01 00:50:00 1014.500000 25.700001 \n", " 2018-06-01 01:50:00 1015.200012 25.700001 \n", " 2018-06-01 02:50:00 1015.200012 25.700001 \n", " 2018-06-01 03:50:00 1015.299988 25.799999 \n", " 2018-06-01 04:50:00 1014.799988 25.600000 \n", "\n", " sea_surface_temperature \\\n", "latitude longitude time \n", "31.4 -80.867996 2018-06-01 00:50:00 26.100000 \n", " 2018-06-01 01:50:00 25.799999 \n", " 2018-06-01 02:50:00 25.700001 \n", " 2018-06-01 03:50:00 25.600000 \n", " 2018-06-01 04:50:00 25.600000 \n", "\n", " dewpt_temperature visibility \\\n", "latitude longitude time \n", "31.4 -80.867996 2018-06-01 00:50:00 NaN NaN \n", " 2018-06-01 01:50:00 NaN NaN \n", " 2018-06-01 02:50:00 NaN NaN \n", " 2018-06-01 03:50:00 NaN NaN \n", " 2018-06-01 04:50:00 NaN NaN \n", "\n", " water_level \n", "latitude longitude time \n", "31.4 -80.867996 2018-06-01 00:50:00 NaN \n", " 2018-06-01 01:50:00 NaN \n", " 2018-06-01 02:50:00 NaN \n", " 2018-06-01 03:50:00 NaN \n", " 2018-06-01 04:50:00 NaN " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

I like to index on a datetime stamp, so let's reset the index

" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "data=data.reset_index()\n", "data.index=data['time'].dt.round('1H')\n", "data.index.name='datetime'" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
latitudelongitudetimewind_dirwind_spdgustwave_heightdominant_wpdaverage_wpdmean_wave_dirair_pressureair_temperaturesea_surface_temperaturedewpt_temperaturevisibilitywater_level
datetime
2018-06-01 01:00:0031.4-80.8679962018-06-01 00:50:00172.08.29.40.8000:00:07.69000000:00:03.950000100.01014.50000025.70000126.100000NaNNaNNaN
2018-06-01 02:00:0031.4-80.8679962018-06-01 01:50:00178.07.58.50.8900:00:07.14000000:00:03.940000109.01015.20001225.70000125.799999NaNNaNNaN
2018-06-01 03:00:0031.4-80.8679962018-06-01 02:50:00186.07.08.20.8000:00:07.69000000:00:03.900000113.01015.20001225.70000125.700001NaNNaNNaN
2018-06-01 04:00:0031.4-80.8679962018-06-01 03:50:00200.06.98.80.8600:00:07.69000000:00:04.160000103.01015.29998825.79999925.600000NaNNaNNaN
2018-06-01 05:00:0031.4-80.8679962018-06-01 04:50:00205.06.37.30.7900:00:03.70000000:00:04.080000171.01014.79998825.60000025.600000NaNNaNNaN
\n", "
" ], "text/plain": [ " latitude longitude time wind_dir \\\n", "datetime \n", "2018-06-01 01:00:00 31.4 -80.867996 2018-06-01 00:50:00 172.0 \n", "2018-06-01 02:00:00 31.4 -80.867996 2018-06-01 01:50:00 178.0 \n", "2018-06-01 03:00:00 31.4 -80.867996 2018-06-01 02:50:00 186.0 \n", "2018-06-01 04:00:00 31.4 -80.867996 2018-06-01 03:50:00 200.0 \n", "2018-06-01 05:00:00 31.4 -80.867996 2018-06-01 04:50:00 205.0 \n", "\n", " wind_spd gust wave_height dominant_wpd \\\n", "datetime \n", "2018-06-01 01:00:00 8.2 9.4 0.80 00:00:07.690000 \n", "2018-06-01 02:00:00 7.5 8.5 0.89 00:00:07.140000 \n", "2018-06-01 03:00:00 7.0 8.2 0.80 00:00:07.690000 \n", "2018-06-01 04:00:00 6.9 8.8 0.86 00:00:07.690000 \n", "2018-06-01 05:00:00 6.3 7.3 0.79 00:00:03.700000 \n", "\n", " average_wpd mean_wave_dir air_pressure \\\n", "datetime \n", "2018-06-01 01:00:00 00:00:03.950000 100.0 1014.500000 \n", "2018-06-01 02:00:00 00:00:03.940000 109.0 1015.200012 \n", "2018-06-01 03:00:00 00:00:03.900000 113.0 1015.200012 \n", "2018-06-01 04:00:00 00:00:04.160000 103.0 1015.299988 \n", "2018-06-01 05:00:00 00:00:04.080000 171.0 1014.799988 \n", "\n", " air_temperature sea_surface_temperature \\\n", "datetime \n", "2018-06-01 01:00:00 25.700001 26.100000 \n", "2018-06-01 02:00:00 25.700001 25.799999 \n", "2018-06-01 03:00:00 25.700001 25.700001 \n", "2018-06-01 04:00:00 25.799999 25.600000 \n", "2018-06-01 05:00:00 25.600000 25.600000 \n", "\n", " dewpt_temperature visibility water_level \n", "datetime \n", "2018-06-01 01:00:00 NaN NaN NaN \n", "2018-06-01 02:00:00 NaN NaN NaN \n", "2018-06-01 03:00:00 NaN NaN NaN \n", "2018-06-01 04:00:00 NaN NaN NaN \n", "2018-06-01 05:00:00 NaN NaN NaN " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

The parameter names are long, and there are columns that are not used.

\n", "\n", "Let's fix that

" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "params={'wind_dir':'udir',\n", " 'wind_spd':'u10',\n", " 'wave_height':'Hs',\n", " 'dominant_wpd':'Tp',\n", " 'longitude':'lon',\n", " 'latitude':'lat'}\n", "dropkeys=[key for key in data if key not in params]\n", "data.drop(dropkeys,axis=1,inplace=True)\n", "data.rename(columns=params,inplace=True)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
latlonudiru10HsTp
datetime
2018-06-01 01:00:0031.4-80.867996172.08.20.8000:00:07.690000
2018-06-01 02:00:0031.4-80.867996178.07.50.8900:00:07.140000
2018-06-01 03:00:0031.4-80.867996186.07.00.8000:00:07.690000
2018-06-01 04:00:0031.4-80.867996200.06.90.8600:00:07.690000
2018-06-01 05:00:0031.4-80.867996205.06.30.7900:00:03.700000
\n", "
" ], "text/plain": [ " lat lon udir u10 Hs Tp\n", "datetime \n", "2018-06-01 01:00:00 31.4 -80.867996 172.0 8.2 0.80 00:00:07.690000\n", "2018-06-01 02:00:00 31.4 -80.867996 178.0 7.5 0.89 00:00:07.140000\n", "2018-06-01 03:00:00 31.4 -80.867996 186.0 7.0 0.80 00:00:07.690000\n", "2018-06-01 04:00:00 31.4 -80.867996 200.0 6.9 0.86 00:00:07.690000\n", "2018-06-01 05:00:00 31.4 -80.867996 205.0 6.3 0.79 00:00:03.700000" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

The Tp column does not look right...

" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Pandas represents Timedeltas in nanosecond resolution using 64 bit integers" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "data.Tp=data.Tp.astype('timedelta64[s]').astype(float)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
latlonudiru10HsTp
datetime
2018-06-01 01:00:0031.4-80.867996172.08.20.807.0
2018-06-01 02:00:0031.4-80.867996178.07.50.897.0
2018-06-01 03:00:0031.4-80.867996186.07.00.807.0
2018-06-01 04:00:0031.4-80.867996200.06.90.867.0
2018-06-01 05:00:0031.4-80.867996205.06.30.793.0
\n", "
" ], "text/plain": [ " lat lon udir u10 Hs Tp\n", "datetime \n", "2018-06-01 01:00:00 31.4 -80.867996 172.0 8.2 0.80 7.0\n", "2018-06-01 02:00:00 31.4 -80.867996 178.0 7.5 0.89 7.0\n", "2018-06-01 03:00:00 31.4 -80.867996 186.0 7.0 0.80 7.0\n", "2018-06-01 04:00:00 31.4 -80.867996 200.0 6.9 0.86 7.0\n", "2018-06-01 05:00:00 31.4 -80.867996 205.0 6.3 0.79 3.0" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Suppose we want to look at the data in a specific column,
\n", "or a Series:

" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "Hs=data['Hs']" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/export/emc-lw-tspindle/wd20ts/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py:4291: RuntimeWarning: Invalid value encountered in percentile\n", " interpolation=interpolation)\n" ] } ], "source": [ "quartiles=numpy.percentile(Hs,[25,50,75])\n", "hs_min,hs_max=Hs.min(),Hs.max()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Min: 0.290\n", "Q1: nan\n", "Median: nan\n", "Q3: nan\n", "Max: 1.130\n" ] } ], "source": [ "print('Min: %.3f' % hs_min)\n", "print('Q1: %.3f' % quartiles[0])\n", "print('Median: %.3f' % quartiles[1])\n", "print('Q3: %.3f' % quartiles[2])\n", "print('Max: %.3f' % hs_max)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Get rid of the NaN's

" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "Hs=data['Hs'].dropna()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Min: 0.290\n", "Q1: 0.460\n", "Median: 0.535\n", "Q3: 0.630\n", "Max: 1.130\n" ] } ], "source": [ "quartiles=numpy.percentile(Hs,[25,50,75])\n", "print('Min: %.3f' % Hs.min())\n", "print('Q1: %.3f' % quartiles[0])\n", "print('Median: %.3f' % quartiles[1])\n", "print('Q3: %.3f' % quartiles[2])\n", "print('Max: %.3f' % Hs.max())" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

It's nice to take a quick look at the data

" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Hs.plot(grid=True);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

In the above example, we used the OPeNDAP server to get the quality controlled NDBC data.

\n", "\n", "If we wanted near-realtime data, we could get it the same way...

" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "url='https://dods.ndbc.noaa.gov/thredds/dodsC/data/stdmet/'+buoyID+'/'+ \\\n", " buoyID+'h9999.nc'\n", "ncdata=xarray.open_dataset(url,decode_times=True)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

or another way

" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "

Unidata has been developing Siphon, a suite of easy-to-use utilities for accessing remote data sources.

" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
wind_directionwind_speedwind_gustwave_heightdominant_wave_periodaverage_wave_perioddominant_wave_directionpressureair_temperaturewater_temperaturedewpointvisibility3hr_pressure_tendencywater_level_above_meantime
080.04.05.00.812.09.1100.01017.927.529.022.0NaN0.9NaN2018-09-11 15:50:00
190.03.04.00.911.08.697.01017.927.628.921.9NaN1.4NaN2018-09-11 14:50:00
210.03.03.00.911.08.1101.01017.427.828.824.3NaN1.8NaN2018-09-11 13:50:00
3320.03.03.00.911.08.289.01017.027.828.822.9NaN2.0NaN2018-09-11 12:50:00
4340.03.03.01.011.07.888.01016.527.828.822.7NaN1.7NaN2018-09-11 11:50:00
\n", "
" ], "text/plain": [ " wind_direction wind_speed wind_gust wave_height dominant_wave_period \\\n", "0 80.0 4.0 5.0 0.8 12.0 \n", "1 90.0 3.0 4.0 0.9 11.0 \n", "2 10.0 3.0 3.0 0.9 11.0 \n", "3 320.0 3.0 3.0 0.9 11.0 \n", "4 340.0 3.0 3.0 1.0 11.0 \n", "\n", " average_wave_period dominant_wave_direction pressure air_temperature \\\n", "0 9.1 100.0 1017.9 27.5 \n", "1 8.6 97.0 1017.9 27.6 \n", "2 8.1 101.0 1017.4 27.8 \n", "3 8.2 89.0 1017.0 27.8 \n", "4 7.8 88.0 1016.5 27.8 \n", "\n", " water_temperature dewpoint visibility 3hr_pressure_tendency \\\n", "0 29.0 22.0 NaN 0.9 \n", "1 28.9 21.9 NaN 1.4 \n", "2 28.8 24.3 NaN 1.8 \n", "3 28.8 22.9 NaN 2.0 \n", "4 28.8 22.7 NaN 1.7 \n", "\n", " water_level_above_mean time \n", "0 NaN 2018-09-11 15:50:00 \n", "1 NaN 2018-09-11 14:50:00 \n", "2 NaN 2018-09-11 13:50:00 \n", "3 NaN 2018-09-11 12:50:00 \n", "4 NaN 2018-09-11 11:50:00 " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from siphon.simplewebservice.ndbc import NDBC\n", "df = NDBC.realtime_observations('41008')\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Next, we need some model data for the same time period.

\n", "In this example, we are going to use the archived monthly buoy files:

\n", "NCEP_1806.tar.gz

" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "

MemberName:

\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "ncep_cols=['id','year','month','day','hour','u10','udir','Hs','Tp']\n" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "w3data=pandas.DataFrame()\n", "tar=tarfile.open('NCEP_1806.tar.gz')" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "for fcst in range(0,169,24):\n", " memberName='NCEP_'+str(year)[2:]+\"{:02n}\".format(month)+ \\\n", " '_'+\"{:03n}\".format(fcst)\n", " member=tar.getmember(memberName)\n", " f=tar.extractfile(member)\n", " frame=pandas.read_csv(f,names=ncep_cols,\n", " sep=' ',\n", " usecols=[1,3,4,5,6,7,8,9,10],\n", " skipinitialspace=True,\n", " index_col=False)\n", " frame['datetime']=pandas.to_datetime(frame[['year','month','day','hour']])\n", " frame=frame.drop(['year','month','day','hour'],axis=1)\n", " frame=frame.set_index('datetime')\n", " frame['fcst']=fcst\n", " w3data=w3data.append(frame,ignore_index=False)\n", "tar.close()\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
idu10udirHsTpfcst
datetime
2018-06-01 00:00:00131308.4211.413.60
2018-06-01 06:00:00131308.2261.412.90
2018-06-01 12:00:00131308.3261.412.50
2018-06-01 18:00:00131308.5251.412.00
2018-06-02 00:00:00131309.7251.55.90
\n", "
" ], "text/plain": [ " id u10 udir Hs Tp fcst\n", "datetime \n", "2018-06-01 00:00:00 13130 8.4 21 1.4 13.6 0\n", "2018-06-01 06:00:00 13130 8.2 26 1.4 12.9 0\n", "2018-06-01 12:00:00 13130 8.3 26 1.4 12.5 0\n", "2018-06-01 18:00:00 13130 8.5 25 1.4 12.0 0\n", "2018-06-02 00:00:00 13130 9.7 25 1.5 5.9 0" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w3data.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

So now we have the NDBC data for buoy 41008 for June 2018, and the WW3 buoy data for all buoys for June 2018.

\n", "Our next step is to subset the w3data to just the data for buoy 41008.

" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "buoyID='41008'\n", "model=w3data[w3data.id==buoyID].copy()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
idu10udirHsTpfcst
datetime
2018-06-01 00:00:00410086.91780.97.40
2018-06-01 06:00:00410085.72270.97.40
2018-06-01 12:00:00410084.82770.77.30
2018-06-01 18:00:00410083.11820.67.30
2018-06-02 00:00:00410087.51900.77.20
\n", "
" ], "text/plain": [ " id u10 udir Hs Tp fcst\n", "datetime \n", "2018-06-01 00:00:00 41008 6.9 178 0.9 7.4 0\n", "2018-06-01 06:00:00 41008 5.7 227 0.9 7.4 0\n", "2018-06-01 12:00:00 41008 4.8 277 0.7 7.3 0\n", "2018-06-01 18:00:00 41008 3.1 182 0.6 7.3 0\n", "2018-06-02 00:00:00 41008 7.5 190 0.7 7.2 0" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.head()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "array([ 0, 24, 48, 72, 96, 120, 144, 168])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fcst.unique()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "

If interested in a single forecast:

" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "m000=model[model.fcst==0]" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
idu10udirHsTpfcst
datetime
2018-06-01 00:00:00410086.91780.97.40
2018-06-01 06:00:00410085.72270.97.40
2018-06-01 12:00:00410084.82770.77.30
2018-06-01 18:00:00410083.11820.67.30
2018-06-02 00:00:00410087.51900.77.20
\n", "
" ], "text/plain": [ " id u10 udir Hs Tp fcst\n", "datetime \n", "2018-06-01 00:00:00 41008 6.9 178 0.9 7.4 0\n", "2018-06-01 06:00:00 41008 5.7 227 0.9 7.4 0\n", "2018-06-01 12:00:00 41008 4.8 277 0.7 7.3 0\n", "2018-06-01 18:00:00 41008 3.1 182 0.6 7.3 0\n", "2018-06-02 00:00:00 41008 7.5 190 0.7 7.2 0" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m000.head()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "array([0])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m000.fcst.unique()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Recall the NDBC data

" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "slideshow": { "slide_type": "fragment" } }, "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", "
latlonudiru10HsTp
datetime
2018-06-01 01:00:0031.4-80.867996172.08.20.807.0
2018-06-01 02:00:0031.4-80.867996178.07.50.897.0
2018-06-01 03:00:0031.4-80.867996186.07.00.807.0
2018-06-01 04:00:0031.4-80.867996200.06.90.867.0
2018-06-01 05:00:0031.4-80.867996205.06.30.793.0
\n", "
" ], "text/plain": [ " lat lon udir u10 Hs Tp\n", "datetime \n", "2018-06-01 01:00:00 31.4 -80.867996 172.0 8.2 0.80 7.0\n", "2018-06-01 02:00:00 31.4 -80.867996 178.0 7.5 0.89 7.0\n", "2018-06-01 03:00:00 31.4 -80.867996 186.0 7.0 0.80 7.0\n", "2018-06-01 04:00:00 31.4 -80.867996 200.0 6.9 0.86 7.0\n", "2018-06-01 05:00:00 31.4 -80.867996 205.0 6.3 0.79 3.0" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "buoy=data.copy()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Now we can merge both the model and the NDBC data for the same buoy:

" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "both=pandas.merge(model,buoy,left_index=True,right_index=True, \\\n", " suffixes=('_m','_b'),how='inner')" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
idu10_mudir_mHs_mTp_mfcstlatlonudir_bu10_bHs_bTp_b
datetime
2018-06-01 06:00:00410085.72270.97.4031.4-80.867996216.05.60.744.0
2018-06-01 06:00:00410086.12170.97.42431.4-80.867996216.05.60.744.0
2018-06-01 06:00:00410085.32280.97.44831.4-80.867996216.05.60.744.0
2018-06-01 06:00:00410086.02140.97.47231.4-80.867996216.05.60.744.0
2018-06-01 06:00:00410086.62080.87.59631.4-80.867996216.05.60.744.0
\n", "
" ], "text/plain": [ " id u10_m udir_m Hs_m Tp_m fcst lat lon \\\n", "datetime \n", "2018-06-01 06:00:00 41008 5.7 227 0.9 7.4 0 31.4 -80.867996 \n", "2018-06-01 06:00:00 41008 6.1 217 0.9 7.4 24 31.4 -80.867996 \n", "2018-06-01 06:00:00 41008 5.3 228 0.9 7.4 48 31.4 -80.867996 \n", "2018-06-01 06:00:00 41008 6.0 214 0.9 7.4 72 31.4 -80.867996 \n", "2018-06-01 06:00:00 41008 6.6 208 0.8 7.5 96 31.4 -80.867996 \n", "\n", " udir_b u10_b Hs_b Tp_b \n", "datetime \n", "2018-06-01 06:00:00 216.0 5.6 0.74 4.0 \n", "2018-06-01 06:00:00 216.0 5.6 0.74 4.0 \n", "2018-06-01 06:00:00 216.0 5.6 0.74 4.0 \n", "2018-06-01 06:00:00 216.0 5.6 0.74 4.0 \n", "2018-06-01 06:00:00 216.0 5.6 0.74 4.0 " ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "both.head()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
idu10_mudir_mHs_mTp_mfcstlatlonudir_bu10_bHs_bTp_b
datetime
2018-06-01 06:00:00410086.12170.97.42431.4-80.867996216.05.60.744.0
2018-06-01 12:00:00410085.02750.87.32431.4-80.867996267.05.70.737.0
2018-06-01 18:00:00410083.41640.67.32431.4-80.867996161.01.50.617.0
2018-06-02 00:00:00410087.71790.77.22431.4-80.867996174.04.40.537.0
2018-06-02 06:00:00410086.92330.87.22431.4-80.867996217.04.30.623.0
\n", "
" ], "text/plain": [ " id u10_m udir_m Hs_m Tp_m fcst lat lon \\\n", "datetime \n", "2018-06-01 06:00:00 41008 6.1 217 0.9 7.4 24 31.4 -80.867996 \n", "2018-06-01 12:00:00 41008 5.0 275 0.8 7.3 24 31.4 -80.867996 \n", "2018-06-01 18:00:00 41008 3.4 164 0.6 7.3 24 31.4 -80.867996 \n", "2018-06-02 00:00:00 41008 7.7 179 0.7 7.2 24 31.4 -80.867996 \n", "2018-06-02 06:00:00 41008 6.9 233 0.8 7.2 24 31.4 -80.867996 \n", "\n", " udir_b u10_b Hs_b Tp_b \n", "datetime \n", "2018-06-01 06:00:00 216.0 5.6 0.74 4.0 \n", "2018-06-01 12:00:00 267.0 5.7 0.73 7.0 \n", "2018-06-01 18:00:00 161.0 1.5 0.61 7.0 \n", "2018-06-02 00:00:00 174.0 4.4 0.53 7.0 \n", "2018-06-02 06:00:00 217.0 4.3 0.62 3.0 " ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "both024=both[both.fcst==24]\n", "both024.head()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(dpi=100)\n", "ax=plt.axes()\n", "both[both.fcst==0].plot(ax=ax,y=['Hs_b','Hs_m'])\n", "ax.grid(which='both')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

So we have both the model and the NDBC data for the buoy

\n", "\n", "in the pandas DataFrame \"both\"

" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "Index(['id', 'u10_m', 'udir_m', 'Hs_m', 'Tp_m', 'fcst', 'lat', 'lon', 'udir_b',\n", " 'u10_b', 'Hs_b', 'Tp_b'],\n", " dtype='object')" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "both.keys()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Ready to calculate some basic stats...

\n", "First, see what methods the object has built-in

" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "['Hs_b',\n", " 'Hs_m',\n", " 'T',\n", " 'Tp_b',\n", " 'Tp_m',\n", " '_AXIS_ALIASES',\n", " '_AXIS_IALIASES',\n", " '_AXIS_LEN',\n", " '_AXIS_NAMES',\n", " '_AXIS_NUMBERS',\n", " '_AXIS_ORDERS',\n", " '_AXIS_REVERSED',\n", " '_AXIS_SLICEMAP',\n", " '__abs__',\n", " '__add__',\n", " '__and__',\n", " '__array__',\n", " '__array_wrap__',\n", " '__bool__',\n", " '__bytes__',\n", " '__class__',\n", " '__contains__',\n", " '__copy__',\n", " '__deepcopy__',\n", " '__delattr__',\n", " '__delitem__',\n", " '__dict__',\n", " '__dir__',\n", " '__div__',\n", " '__doc__',\n", " '__eq__',\n", " '__finalize__',\n", " '__floordiv__',\n", " '__format__',\n", " '__ge__',\n", " '__getattr__',\n", " '__getattribute__',\n", " '__getitem__',\n", " '__getstate__',\n", " '__gt__',\n", " '__hash__',\n", " '__iadd__',\n", " '__iand__',\n", " '__ifloordiv__',\n", " '__imod__',\n", " '__imul__',\n", " '__init__',\n", " '__init_subclass__',\n", " '__invert__',\n", " '__ior__',\n", " '__ipow__',\n", " '__isub__',\n", " '__iter__',\n", " '__itruediv__',\n", " '__ixor__',\n", " '__le__',\n", " '__len__',\n", " '__lt__',\n", " '__matmul__',\n", " '__mod__',\n", " '__module__',\n", " '__mul__',\n", " '__ne__',\n", " '__neg__',\n", " '__new__',\n", " '__nonzero__',\n", " '__or__',\n", " '__pos__',\n", " '__pow__',\n", " '__radd__',\n", " '__rand__',\n", " '__rdiv__',\n", " '__reduce__',\n", " '__reduce_ex__',\n", " '__repr__',\n", " '__rfloordiv__',\n", " '__rmatmul__',\n", " '__rmod__',\n", " '__rmul__',\n", " '__ror__',\n", " '__round__',\n", " '__rpow__',\n", " '__rsub__',\n", " '__rtruediv__',\n", " '__rxor__',\n", " '__setattr__',\n", " '__setitem__',\n", " '__setstate__',\n", " '__sizeof__',\n", " '__str__',\n", " '__sub__',\n", " '__subclasshook__',\n", " '__truediv__',\n", " '__unicode__',\n", " '__weakref__',\n", " '__xor__',\n", " '_accessors',\n", " '_add_numeric_operations',\n", " '_add_series_only_operations',\n", " '_add_series_or_dataframe_operations',\n", " '_agg_by_level',\n", " '_agg_doc',\n", " '_aggregate',\n", " '_aggregate_multiple_funcs',\n", " '_align_frame',\n", " '_align_series',\n", " '_box_col_values',\n", " '_box_item_values',\n", " '_builtin_table',\n", " '_check_inplace_setting',\n", " '_check_is_chained_assignment_possible',\n", " '_check_label_or_level_ambiguity',\n", " '_check_percentile',\n", " '_check_setitem_copy',\n", " '_clear_item_cache',\n", " '_clip_with_one_bound',\n", " '_clip_with_scalar',\n", " '_combine_const',\n", " '_combine_frame',\n", " '_combine_match_columns',\n", " '_combine_match_index',\n", " '_compare_frame',\n", " '_consolidate',\n", " '_consolidate_inplace',\n", " '_construct_axes_dict',\n", " '_construct_axes_dict_for_slice',\n", " '_construct_axes_dict_from',\n", " '_construct_axes_from_arguments',\n", " '_constructor',\n", " '_constructor_expanddim',\n", " '_constructor_sliced',\n", " '_convert',\n", " '_count_level',\n", " '_create_indexer',\n", " '_cython_table',\n", " '_deprecations',\n", " '_dir_additions',\n", " '_dir_deletions',\n", " '_drop_axis',\n", " '_drop_labels_or_levels',\n", " '_ensure_valid_index',\n", " '_expand_axes',\n", " '_find_valid_index',\n", " '_from_arrays',\n", " '_from_axes',\n", " '_get_agg_axis',\n", " '_get_axis',\n", " '_get_axis_name',\n", " '_get_axis_number',\n", " '_get_axis_resolvers',\n", " '_get_block_manager_axis',\n", " '_get_bool_data',\n", " '_get_cacher',\n", " '_get_index_resolvers',\n", " '_get_item_cache',\n", " '_get_label_or_level_values',\n", " '_get_numeric_data',\n", " '_get_value',\n", " '_get_values',\n", " '_getitem_array',\n", " '_getitem_column',\n", " '_getitem_frame',\n", " '_getitem_multilevel',\n", " '_getitem_slice',\n", " '_gotitem',\n", " '_iget_item_cache',\n", " '_indexed_same',\n", " '_info_axis',\n", " '_info_axis_name',\n", " '_info_axis_number',\n", " '_info_repr',\n", " '_init_dict',\n", " '_init_mgr',\n", " '_init_ndarray',\n", " '_internal_names',\n", " '_internal_names_set',\n", " '_is_builtin_func',\n", " '_is_cached',\n", " '_is_copy',\n", " '_is_cython_func',\n", " '_is_datelike_mixed_type',\n", " '_is_label_or_level_reference',\n", " '_is_label_reference',\n", " '_is_level_reference',\n", " '_is_mixed_type',\n", " '_is_numeric_mixed_type',\n", " '_is_view',\n", " '_ix',\n", " '_ixs',\n", " '_join_compat',\n", " '_maybe_cache_changed',\n", " '_maybe_update_cacher',\n", " '_metadata',\n", " '_needs_reindex_multi',\n", " '_obj_with_exclusions',\n", " '_protect_consolidate',\n", " '_reduce',\n", " '_reindex_axes',\n", " '_reindex_axis',\n", " '_reindex_columns',\n", " '_reindex_index',\n", " '_reindex_multi',\n", " '_reindex_with_indexers',\n", " '_repr_data_resource_',\n", " '_repr_fits_horizontal_',\n", " '_repr_fits_vertical_',\n", " '_repr_html_',\n", " '_repr_latex_',\n", " '_reset_cache',\n", " '_reset_cacher',\n", " '_sanitize_column',\n", " '_selected_obj',\n", " '_selection',\n", " '_selection_list',\n", " '_selection_name',\n", " '_series',\n", " '_set_as_cached',\n", " '_set_axis',\n", " '_set_axis_name',\n", " '_set_is_copy',\n", " '_set_item',\n", " '_set_value',\n", " '_setitem_array',\n", " '_setitem_frame',\n", " '_setitem_slice',\n", " '_setup_axes',\n", " '_shallow_copy',\n", " '_slice',\n", " '_stat_axis',\n", " '_stat_axis_name',\n", " '_stat_axis_number',\n", " '_take',\n", " '_to_dict_of_blocks',\n", " '_try_aggregate_string_function',\n", " '_typ',\n", " '_unpickle_frame_compat',\n", " '_unpickle_matrix_compat',\n", " '_update_inplace',\n", " '_validate_dtype',\n", " '_values',\n", " '_where',\n", " '_xs',\n", " 'abs',\n", " 'add',\n", " 'add_prefix',\n", " 'add_suffix',\n", " 'agg',\n", " 'aggregate',\n", " 'align',\n", " 'all',\n", " 'any',\n", " 'append',\n", " 'apply',\n", " 'applymap',\n", " 'as_matrix',\n", " 'asfreq',\n", " 'asof',\n", " 'assign',\n", " 'astype',\n", " 'at',\n", " 'at_time',\n", " 'axes',\n", " 'between_time',\n", " 'bfill',\n", " 'bool',\n", " 'boxplot',\n", " 'clip',\n", " 'clip_lower',\n", " 'clip_upper',\n", " 'columns',\n", " 'combine',\n", " 'combine_first',\n", " 'compound',\n", " 'copy',\n", " 'corr',\n", " 'corrwith',\n", " 'count',\n", " 'cov',\n", " 'cummax',\n", " 'cummin',\n", " 'cumprod',\n", " 'cumsum',\n", " 'describe',\n", " 'diff',\n", " 'div',\n", " 'divide',\n", " 'dot',\n", " 'drop',\n", " 'drop_duplicates',\n", " 'dropna',\n", " 'dtypes',\n", " 'duplicated',\n", " 'empty',\n", " 'eq',\n", " 'equals',\n", " 'eval',\n", " 'ewm',\n", " 'expanding',\n", " 'fcst',\n", " 'ffill',\n", " 'fillna',\n", " 'filter',\n", " 'first',\n", " 'first_valid_index',\n", " 'floordiv',\n", " 'from_dict',\n", " 'from_records',\n", " 'ftypes',\n", " 'ge',\n", " 'get',\n", " 'get_dtype_counts',\n", " 'get_ftype_counts',\n", " 'get_values',\n", " 'groupby',\n", " 'gt',\n", " 'head',\n", " 'hist',\n", " 'iat',\n", " 'id',\n", " 'idxmax',\n", " 'idxmin',\n", " 'iloc',\n", " 'index',\n", " 'infer_objects',\n", " 'info',\n", " 'insert',\n", " 'interpolate',\n", " 'isin',\n", " 'isna',\n", " 'isnull',\n", " 'items',\n", " 'iteritems',\n", " 'iterrows',\n", " 'itertuples',\n", " 'ix',\n", " 'join',\n", " 'keys',\n", " 'kurt',\n", " 'kurtosis',\n", " 'last',\n", " 'last_valid_index',\n", " 'lat',\n", " 'le',\n", " 'loc',\n", " 'lon',\n", " 'lookup',\n", " 'lt',\n", " 'mad',\n", " 'mask',\n", " 'max',\n", " 'mean',\n", " 'median',\n", " 'melt',\n", " 'memory_usage',\n", " 'merge',\n", " 'min',\n", " 'mod',\n", " 'mode',\n", " 'mul',\n", " 'multiply',\n", " 'ndim',\n", " 'ne',\n", " 'nlargest',\n", " 'notna',\n", " 'notnull',\n", " 'nsmallest',\n", " 'nunique',\n", " 'pct_change',\n", " 'pipe',\n", " 'pivot',\n", " 'pivot_table',\n", " 'plot',\n", " 'pop',\n", " 'pow',\n", " 'prod',\n", " 'product',\n", " 'quantile',\n", " 'query',\n", " 'radd',\n", " 'rank',\n", " 'rdiv',\n", " 'reindex',\n", " 'reindex_axis',\n", " 'reindex_like',\n", " 'rename',\n", " 'rename_axis',\n", " 'reorder_levels',\n", " 'replace',\n", " 'resample',\n", " 'reset_index',\n", " 'rfloordiv',\n", " 'rmod',\n", " 'rmul',\n", " 'rolling',\n", " 'round',\n", " 'rpow',\n", " 'rsub',\n", " 'rtruediv',\n", " 'sample',\n", " 'select',\n", " 'select_dtypes',\n", " 'sem',\n", " 'set_axis',\n", " 'set_index',\n", " 'shape',\n", " 'shift',\n", " 'size',\n", " 'skew',\n", " 'slice_shift',\n", " 'sort_index',\n", " 'sort_values',\n", " 'squeeze',\n", " 'stack',\n", " 'std',\n", " 'style',\n", " 'sub',\n", " 'subtract',\n", " 'sum',\n", " 'swapaxes',\n", " 'swaplevel',\n", " 'tail',\n", " 'take',\n", " 'to_clipboard',\n", " 'to_csv',\n", " 'to_dense',\n", " 'to_dict',\n", " 'to_excel',\n", " 'to_feather',\n", " 'to_gbq',\n", " 'to_hdf',\n", " 'to_html',\n", " 'to_json',\n", " 'to_latex',\n", " 'to_msgpack',\n", " 'to_panel',\n", " 'to_parquet',\n", " 'to_period',\n", " 'to_pickle',\n", " 'to_records',\n", " 'to_sparse',\n", " 'to_sql',\n", " 'to_stata',\n", " 'to_string',\n", " 'to_timestamp',\n", " 'to_xarray',\n", " 'transform',\n", " 'transpose',\n", " 'truediv',\n", " 'truncate',\n", " 'tshift',\n", " 'tz_convert',\n", " 'tz_localize',\n", " 'u10_b',\n", " 'u10_m',\n", " 'udir_b',\n", " 'udir_m',\n", " 'unstack',\n", " 'update',\n", " 'values',\n", " 'var',\n", " 'where',\n", " 'xs']" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dir(both)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hs_b, Hs_m, T, Tp_b, Tp_m, abs, add, add_prefix, add_suffix, agg, aggregate, align, all, any, append, apply, applymap, as_matrix, asfreq, asof, assign, astype, at, at_time, axes, between_time, bfill, bool, boxplot, clip, clip_lower, clip_upper, columns, combine, combine_first, compound, copy, corr, corrwith, count, cov, cummax, cummin, cumprod, cumsum, describe, diff, div, divide, dot, drop, drop_duplicates, dropna, dtypes, duplicated, empty, eq, equals, eval, ewm, expanding, fcst, ffill, fillna, filter, first, first_valid_index, floordiv, from_dict, from_records, ftypes, ge, get, get_dtype_counts, get_ftype_counts, get_values, groupby, gt, head, hist, iat, id, idxmax, idxmin, iloc, index, infer_objects, info, insert, interpolate, isin, isna, isnull, items, iteritems, iterrows, itertuples, ix, join, keys, kurt, kurtosis, last, last_valid_index, lat, le, loc, lon, lookup, lt, mad, mask, max, mean, median, melt, memory_usage, merge, min, mod, mode, mul, multiply, ndim, ne, nlargest, notna, notnull, nsmallest, nunique, pct_change, pipe, pivot, pivot_table, plot, pop, pow, prod, product, quantile, query, radd, rank, rdiv, reindex, reindex_axis, reindex_like, rename, rename_axis, reorder_levels, replace, resample, reset_index, rfloordiv, rmod, rmul, rolling, round, rpow, rsub, rtruediv, sample, select, select_dtypes, sem, set_axis, set_index, shape, shift, size, skew, slice_shift, sort_index, sort_values, squeeze, stack, std, style, sub, subtract, sum, swapaxes, swaplevel, tail, take, to_clipboard, to_csv, to_dense, to_dict, to_excel, to_feather, to_gbq, to_hdf, to_html, to_json, to_latex, to_msgpack, to_panel, to_parquet, to_period, to_pickle, to_records, to_sparse, to_sql, to_stata, to_string, to_timestamp, to_xarray, transform, transpose, truediv, truncate, tshift, tz_convert, tz_localize, u10_b, u10_m, udir_b, udir_m, unstack, update, values, var, where, xs\n" ] } ], "source": [ "methods=[x for x in dir(both) if not x.startswith('_')]\n", "print(', '.join(methods))" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "slideshow": { "slide_type": "slide" } }, "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", "
u10_mudir_mHs_mTp_mfcstlatlonudir_bu10_bHs_bTp_b
count116.000000116.000000116.000000116.000000116.0116.0116.000000116.000000116.000000114.000000114.000000
mean4.934483210.3793100.5465527.2948280.031.4-80.867996209.0344834.8758620.5620185.947368
std1.57392459.2331660.1379551.6705550.00.00.00000056.0277772.0015050.1440512.663560
min1.10000015.0000000.3000003.1000000.031.4-80.86799615.0000000.1000000.3100002.000000
25%3.700000170.7500000.5000007.0750000.031.4-80.867996181.0000003.5000000.4625004.000000
50%5.100000210.0000000.6000008.0000000.031.4-80.867996211.0000004.9500000.5350005.500000
75%6.125000260.2500000.6000008.4000000.031.4-80.867996244.5000006.2000000.6375008.000000
max8.700000336.0000000.9000008.9000000.031.4-80.867996356.00000010.0000000.96000014.000000
\n", "
" ], "text/plain": [ " u10_m udir_m Hs_m Tp_m fcst lat \\\n", "count 116.000000 116.000000 116.000000 116.000000 116.0 116.0 \n", "mean 4.934483 210.379310 0.546552 7.294828 0.0 31.4 \n", "std 1.573924 59.233166 0.137955 1.670555 0.0 0.0 \n", "min 1.100000 15.000000 0.300000 3.100000 0.0 31.4 \n", "25% 3.700000 170.750000 0.500000 7.075000 0.0 31.4 \n", "50% 5.100000 210.000000 0.600000 8.000000 0.0 31.4 \n", "75% 6.125000 260.250000 0.600000 8.400000 0.0 31.4 \n", "max 8.700000 336.000000 0.900000 8.900000 0.0 31.4 \n", "\n", " lon udir_b u10_b Hs_b Tp_b \n", "count 116.000000 116.000000 116.000000 114.000000 114.000000 \n", "mean -80.867996 209.034483 4.875862 0.562018 5.947368 \n", "std 0.000000 56.027777 2.001505 0.144051 2.663560 \n", "min -80.867996 15.000000 0.100000 0.310000 2.000000 \n", "25% -80.867996 181.000000 3.500000 0.462500 4.000000 \n", "50% -80.867996 211.000000 4.950000 0.535000 5.500000 \n", "75% -80.867996 244.500000 6.200000 0.637500 8.000000 \n", "max -80.867996 356.000000 10.000000 0.960000 14.000000 " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "both[both.fcst==0].describe()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Help is available for the objects bound methods

" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on method corr in module pandas.core.frame:\n", "\n", "corr(method='pearson', min_periods=1) method of pandas.core.frame.DataFrame instance\n", " Compute pairwise correlation of columns, excluding NA/null values\n", " \n", " Parameters\n", " ----------\n", " method : {'pearson', 'kendall', 'spearman'}\n", " * pearson : standard correlation coefficient\n", " * kendall : Kendall Tau correlation coefficient\n", " * spearman : Spearman rank correlation\n", " min_periods : int, optional\n", " Minimum number of observations required per pair of columns\n", " to have a valid result. Currently only available for pearson\n", " and spearman correlation\n", " \n", " Returns\n", " -------\n", " y : DataFrame\n", "\n" ] } ], "source": [ "help(both.corr)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Suppose we want to look at the correlation coefficient
\n", "for one forecast grouped by day

" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "corr=both['Hs_m'][both.fcst==0].groupby(pandas.Grouper(freq='D')).corr(both['Hs_b'])" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "datetime\n", "2018-06-01 0.799368\n", "2018-06-02 0.617802\n", "2018-06-03 0.985839\n", "2018-06-04 0.846649\n", "2018-06-05 0.310881\n", "Freq: D, Name: Hs_m, dtype: float64" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corr.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Another way, is to select a parameter and forecast to validate

" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "model=both[both.fcst==0]['Hs_m'].copy()\n", "obs=both[both.fcst==0]['Hs_b'].copy()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "

To aggregate the data by day, we need to \"group\" the data
(think of looping through and collecting your data into chunks)

" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "obsgrp=obs.groupby(pandas.Grouper(freq='D'))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Calculate some basic stats, grouped by day

" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[(Timestamp('2018-06-01 00:00:00', freq='D'), 3),\n", " (Timestamp('2018-06-02 00:00:00', freq='D'), 7),\n", " (Timestamp('2018-06-03 00:00:00', freq='D'), 11),\n", " (Timestamp('2018-06-04 00:00:00', freq='D'), 15),\n", " (Timestamp('2018-06-05 00:00:00', freq='D'), 19),\n", " (Timestamp('2018-06-06 00:00:00', freq='D'), 23),\n", " (Timestamp('2018-06-07 00:00:00', freq='D'), 27),\n", " (Timestamp('2018-06-08 00:00:00', freq='D'), 31),\n", " (Timestamp('2018-06-09 00:00:00', freq='D'), 35),\n", " (Timestamp('2018-06-10 00:00:00', freq='D'), 39)]" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "diff=model-obs\n", "diffgroup=diff.groupby(pandas.Grouper(freq='D'))\n", "[v for v in diffgroup.groups.items()][:10]" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "diff2group=(diff**2).groupby(pandas.Grouper(freq='D'))\n", "count=diffgroup.count()" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "datetime\n", "2018-06-01 0.0400\n", "2018-06-02 0.0925\n", "2018-06-03 -0.1425\n", "2018-06-04 -0.0300\n", "2018-06-05 -0.0675\n", "Freq: D, dtype: float64" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bias=diffgroup.mean()\n", "bias.head()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "datetime\n", "2018-06-01 0.094163\n", "2018-06-02 0.115866\n", "2018-06-03 0.144827\n", "2018-06-04 0.050498\n", "2018-06-05 0.092060\n", "Freq: D, dtype: float64" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rmse=diff2group.mean()**0.5\n", "rmse.head()" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "datetime\n", "2018-06-01 13.350430\n", "2018-06-02 21.144840\n", "2018-06-03 16.770537\n", "2018-06-04 9.358023\n", "2018-06-05 20.958924\n", "Freq: D, dtype: float64" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scatter_index=100.*(rmse - bias**2)/obsgrp.mean()\n", "scatter_index.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Notice these are Series

" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "

It would be nice to have a DataFrame of the statistics

" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "fcst=0\n", "agg_stats=pandas.DataFrame({'Forecast':fcst,\n", " 'Bias':bias,\n", " 'RMSE':rmse,\n", " 'Corr':corr,\n", " 'Scatter_Index':scatter_index,\n", " 'Count':count})" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
ForecastBiasRMSECorrScatter_IndexCount
datetime
2018-06-0100.04000.0941630.79936813.3504303
2018-06-0200.09250.1158660.61780221.1448404
2018-06-030-0.14250.1448270.98583916.7705374
2018-06-040-0.03000.0504980.8466499.3580234
2018-06-050-0.06750.0920600.31088120.9589244
\n", "
" ], "text/plain": [ " Forecast Bias RMSE Corr Scatter_Index Count\n", "datetime \n", "2018-06-01 0 0.0400 0.094163 0.799368 13.350430 3\n", "2018-06-02 0 0.0925 0.115866 0.617802 21.144840 4\n", "2018-06-03 0 -0.1425 0.144827 0.985839 16.770537 4\n", "2018-06-04 0 -0.0300 0.050498 0.846649 9.358023 4\n", "2018-06-05 0 -0.0675 0.092060 0.310881 20.958924 4" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "agg_stats.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Looks like something that might be nice to keep around?

" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import sqlite3" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "dbfile='my_stats_table.db'\n", "conn = sqlite3.connect(dbfile,detect_types=sqlite3.PARSE_DECLTYPES)\n", "agg_stats.to_sql('STATS',conn,if_exists='append')\n", "conn.close()\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

To read it back in later

" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "conn = sqlite3.connect(dbfile,detect_types=sqlite3.PARSE_DECLTYPES)\n", "mystats=pandas.read_sql('select * from STATS',conn)\n", "conn.close()" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
datetimeForecastBiasRMSECorrScatter_IndexCount
02018-06-0100.04000.0941630.79936813.3504303
12018-06-0200.09250.1158660.61780221.1448404
22018-06-030-0.14250.1448270.98583916.7705374
32018-06-040-0.03000.0504980.8466499.3580234
42018-06-050-0.06750.0920600.31088120.9589244
\n", "
" ], "text/plain": [ " datetime Forecast Bias RMSE Corr Scatter_Index Count\n", "0 2018-06-01 0 0.0400 0.094163 0.799368 13.350430 3\n", "1 2018-06-02 0 0.0925 0.115866 0.617802 21.144840 4\n", "2 2018-06-03 0 -0.1425 0.144827 0.985839 16.770537 4\n", "3 2018-06-04 0 -0.0300 0.050498 0.846649 9.358023 4\n", "4 2018-06-05 0 -0.0675 0.092060 0.310881 20.958924 4" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mystats.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "
\n", "

Thank You!



\n", "

Any Questions?

\n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }