Skip to content

Instantly share code, notes, and snippets.

@acherrera
Last active August 20, 2019 16:23
Show Gist options
  • Save acherrera/1a6770b8e3c5def237b9d369e1442453 to your computer and use it in GitHub Desktop.
Save acherrera/1a6770b8e3c5def237b9d369e1442453 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Resampling Time Series Data\n",
"\n",
"In the last post, which can be found here: http://www.anthony-herrera.com/2019/08/17/bike-trail-soil-moisture-01/, we plotted some data and made a simple first order differential equation decay graph out of it - IE: take the last reading and divide by a number to get the current reading. This allowed us to reduce large values quickly and small values would persist for some time. Kind of like soil moisture. Kind of. I think. Okay, I'm just making this up but it's working toward a full fledged model. \n",
"\n",
"Now, the issue we had was that the data was sporadic. We would have some data that was sampled every 5 minutes and some data that was every hour. We want to make consistent hourly sums of data. This is actually a fairly difficult task that I will try to make as simple as possible. Part of the issue is that we are dropping the NaN values and the other part of the issue is that we have no guarantee the sample interval is consistant. \n",
"\n",
"## Creating some sample data to show the issue\n",
"\n",
"Let's go ahead and create a sample set of data to figure out what kind of issue we might see"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from datetime import datetime, timedelta"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Bring out your data!\n",
"file_name ='./raw_data/kdsm_2019_partial.txt'\n",
"asdf = pd.read_csv(file_name)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"asdf.valid = pd.to_datetime(asdf.valid) # convert to actual datetime object. Better for everyone\n",
"asdf = asdf.set_index('valid') # need this to resample data - very good idea regardless."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>station</th>\n",
" <th>tmpf</th>\n",
" <th>dwpf</th>\n",
" <th>relh</th>\n",
" <th>drct</th>\n",
" <th>sknt</th>\n",
" <th>p01i</th>\n",
" <th>alti</th>\n",
" <th>mslp</th>\n",
" <th>vsby</th>\n",
" <th>...</th>\n",
" <th>skyl4</th>\n",
" <th>wxcodes</th>\n",
" <th>ice_accretion_1hr</th>\n",
" <th>ice_accretion_3hr</th>\n",
" <th>ice_accretion_6hr</th>\n",
" <th>peak_wind_gust</th>\n",
" <th>peak_wind_drct</th>\n",
" <th>peak_wind_time</th>\n",
" <th>feel</th>\n",
" <th>metar</th>\n",
" </tr>\n",
" <tr>\n",
" <th>valid</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2019-01-01 00:00:00</th>\n",
" <td>DSM</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>350.0</td>\n",
" <td>13.0</td>\n",
" <td>NaN</td>\n",
" <td>29.86</td>\n",
" <td>NaN</td>\n",
" <td>9.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>KDSM 010000Z AUTO 35013KT 9SM OVC009 00/M02 A2...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-01-01 00:05:00</th>\n",
" <td>DSM</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>340.0</td>\n",
" <td>14.0</td>\n",
" <td>NaN</td>\n",
" <td>29.87</td>\n",
" <td>NaN</td>\n",
" <td>9.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>KDSM 010005Z AUTO 34014KT 9SM OVC009 00/M02 A2...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-01-01 00:10:00</th>\n",
" <td>DSM</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>340.0</td>\n",
" <td>10.0</td>\n",
" <td>NaN</td>\n",
" <td>29.88</td>\n",
" <td>NaN</td>\n",
" <td>9.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>KDSM 010010Z AUTO 34010KT 9SM OVC011 00/M02 A2...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-01-01 00:15:00</th>\n",
" <td>DSM</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>340.0</td>\n",
" <td>12.0</td>\n",
" <td>NaN</td>\n",
" <td>29.88</td>\n",
" <td>NaN</td>\n",
" <td>9.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>KDSM 010015Z AUTO 34012KT 9SM OVC011 00/M02 A2...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-01-01 00:20:00</th>\n",
" <td>DSM</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>340.0</td>\n",
" <td>14.0</td>\n",
" <td>NaN</td>\n",
" <td>29.90</td>\n",
" <td>NaN</td>\n",
" <td>9.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>KDSM 010020Z AUTO 34014G20KT 9SM OVC011 00/M02...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 28 columns</p>\n",
"</div>"
],
"text/plain": [
" station tmpf dwpf relh drct sknt p01i alti mslp \\\n",
"valid \n",
"2019-01-01 00:00:00 DSM NaN NaN NaN 350.0 13.0 NaN 29.86 NaN \n",
"2019-01-01 00:05:00 DSM NaN NaN NaN 340.0 14.0 NaN 29.87 NaN \n",
"2019-01-01 00:10:00 DSM NaN NaN NaN 340.0 10.0 NaN 29.88 NaN \n",
"2019-01-01 00:15:00 DSM NaN NaN NaN 340.0 12.0 NaN 29.88 NaN \n",
"2019-01-01 00:20:00 DSM NaN NaN NaN 340.0 14.0 NaN 29.90 NaN \n",
"\n",
" vsby ... skyl4 wxcodes ice_accretion_1hr \\\n",
"valid ... \n",
"2019-01-01 00:00:00 9.0 ... NaN NaN NaN \n",
"2019-01-01 00:05:00 9.0 ... NaN NaN NaN \n",
"2019-01-01 00:10:00 9.0 ... NaN NaN NaN \n",
"2019-01-01 00:15:00 9.0 ... NaN NaN NaN \n",
"2019-01-01 00:20:00 9.0 ... NaN NaN NaN \n",
"\n",
" ice_accretion_3hr ice_accretion_6hr peak_wind_gust \\\n",
"valid \n",
"2019-01-01 00:00:00 NaN NaN NaN \n",
"2019-01-01 00:05:00 NaN NaN NaN \n",
"2019-01-01 00:10:00 NaN NaN NaN \n",
"2019-01-01 00:15:00 NaN NaN NaN \n",
"2019-01-01 00:20:00 NaN NaN NaN \n",
"\n",
" peak_wind_drct peak_wind_time feel \\\n",
"valid \n",
"2019-01-01 00:00:00 NaN NaN NaN \n",
"2019-01-01 00:05:00 NaN NaN NaN \n",
"2019-01-01 00:10:00 NaN NaN NaN \n",
"2019-01-01 00:15:00 NaN NaN NaN \n",
"2019-01-01 00:20:00 NaN NaN NaN \n",
"\n",
" metar \n",
"valid \n",
"2019-01-01 00:00:00 KDSM 010000Z AUTO 35013KT 9SM OVC009 00/M02 A2... \n",
"2019-01-01 00:05:00 KDSM 010005Z AUTO 34014KT 9SM OVC009 00/M02 A2... \n",
"2019-01-01 00:10:00 KDSM 010010Z AUTO 34010KT 9SM OVC011 00/M02 A2... \n",
"2019-01-01 00:15:00 KDSM 010015Z AUTO 34012KT 9SM OVC011 00/M02 A2... \n",
"2019-01-01 00:20:00 KDSM 010020Z AUTO 34014G20KT 9SM OVC011 00/M02... \n",
"\n",
"[5 rows x 28 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"asdf.head() # Check the data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see from the above table, data is being read in every 5 mintes or so but these readings are only wind speed, wind direction and altimeter. While we will be concerned with those values, let's concentrate just on precipitation."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"9198"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Pare down the data to see how much we are getting\n",
"precip_vals = asdf\n",
"start_date = datetime(2019, 5, 1)\n",
"end_date = datetime(2019, 5, 31)\n",
"precip_vals = precip_vals[precip_vals.index > start_date]\n",
"precip_vals = precip_vals[precip_vals.index < end_date]\n",
"len(precip_vals)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In a given month we can expect around 9000 readings to come in. I'm going to make this real simple. Pandas has a method to resample based on the week, day, hour, etc. We are going to resample based on the hour and we are going to resample based on the day and see which one give us what we want. "
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DatetimeIndex(['2019-01-01 00:00:00', '2019-01-01 00:05:00',\n",
" '2019-01-01 00:10:00', '2019-01-01 00:15:00',\n",
" '2019-01-01 00:20:00', '2019-01-01 00:25:00',\n",
" '2019-01-01 00:30:00', '2019-01-01 00:35:00',\n",
" '2019-01-01 00:40:00', '2019-01-01 00:45:00',\n",
" ...\n",
" '2019-08-16 23:10:00', '2019-08-16 23:15:00',\n",
" '2019-08-16 23:20:00', '2019-08-16 23:25:00',\n",
" '2019-08-16 23:30:00', '2019-08-16 23:35:00',\n",
" '2019-08-16 23:45:00', '2019-08-16 23:50:00',\n",
" '2019-08-16 23:54:00', '2019-08-16 23:55:00'],\n",
" dtype='datetime64[ns]', name='valid', length=69524, freq=None)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"asdf.index # Checking for proper index - VERY important for the next step. Must be datetime objects"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"resampled_data = pd.DataFrame() # Build a better way - Weitz Construction.\n",
"resampled_data['precip'] = asdf.p01i.resample('M').sum() # M - month, D - day, H - hour\n",
"resampled_data['temperature'] = asdf.tmpf.resample('M').mean()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>precip</th>\n",
" </tr>\n",
" <tr>\n",
" <th>valid</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2019-01-31</th>\n",
" <td>10.0842</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-02-28</th>\n",
" <td>16.3093</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-03-31</th>\n",
" <td>15.5310</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-04-30</th>\n",
" <td>14.0757</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-05-31</th>\n",
" <td>75.6524</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" precip\n",
"valid \n",
"2019-01-31 10.0842\n",
"2019-02-28 16.3093\n",
"2019-03-31 15.5310\n",
"2019-04-30 14.0757\n",
"2019-05-31 75.6524"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resampled_data.head() # WOW - Now we have monthly sums. Let's plot that"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Total Rain Per Month')"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from pandas.plotting import register_matplotlib_converters\n",
"register_matplotlib_converters\n",
"\n",
"plt.plot(resampled_data.precip)\n",
"plt.xticks(rotation=45)\n",
"plt.xlabel(\"Date\")\n",
"plt.ylabel(\"Total Rain Amount\")\n",
"plt.title(\"Total Rain Per Month\")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Average Temperature Per Month')"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(resampled_data.temperature)\n",
"plt.xticks(rotation=45)\n",
"plt.xlabel(\"Date\")\n",
"plt.ylabel(\"Average Temperature (F)\")\n",
"plt.title(\"Average Temperature Per Month\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"That's all that I wanted to do with this post - take the data we had and turn it into uniform sampled data. I had anticipated that would be much hard but pandas appears to make this pretty simple. In the next post I'll go through and update the code from post one so we get better moisture reduction curves. I showed here how to do it in monthly increment,s but\n",
"\n",
"## Thanks for reading!"
]
}
],
"metadata": {
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment