Skip to content

Instantly share code, notes, and snippets.

@acherrera
Last active August 20, 2019 16:21
Show Gist options
  • Save acherrera/177989126220331b42f7e32b1fadeeb5 to your computer and use it in GitHub Desktop.
Save acherrera/177989126220331b42f7e32b1fadeeb5 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Apply Equation to Data\n",
"\n",
"Article 1: http://www.anthony-herrera.com/2019/08/17/bike-trail-soil-moisture-01/\n",
"\n",
"Article 2: http://www.anthony-herrera.com/2019/08/18/bike-trail-soil-moisture-02/\n",
"\n",
"In the first article we created an equation that could be used to reduce the amount of moisture based on rainfall amount. After finding an issue with sample rate, we resampled the data in the next article. Now, we're going to put the two concepts together and apply our moisture reduction equation to the resampled data. \n",
"\n",
"The whole point of resampling was that the reduction would be consistant over time. Now, there is one **huge** potential issue - what if we didn't get any readings for an hour time period. In this case there would be nothing to resample and the proces would... well, I don't know. This is airport weather data from a larger airport so the idea of not having ANY readings for an hour is kind of rediculous. There are certainly scenarios where this may occur, but until we see this issue I'm going to not worry too much about it. If we miss an hour of data I'm not sure it would even cause a detectable issue. We'll assume we get at least one reading per hour until that assumption fails us. \n",
"\n",
"## What are we doing? \n",
"\n",
"Here we are going to load in the data, resample the data and then apply our equation. We are looking for nice uniform decay lines with no unexpected drop offs."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd \n",
"import matplotlib.pyplot as plt\n",
"from datetime import datetime, timedelta"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['station', 'tmpf', 'dwpf', 'relh', 'drct', 'sknt', 'p01i', 'alti',\n",
" 'mslp', 'vsby', 'gust', 'skyc1', 'skyc2', 'skyc3', 'skyc4', 'skyl1',\n",
" 'skyl2', 'skyl3', 'skyl4', 'wxcodes', 'ice_accretion_1hr',\n",
" 'ice_accretion_3hr', 'ice_accretion_6hr', 'peak_wind_gust',\n",
" 'peak_wind_drct', 'peak_wind_time', 'feel', 'metar'],\n",
" dtype='object')"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Bring in data and convert - covered previously\n",
"file_name = './raw_data/kdsm_2019_partial.txt'\n",
"asdf = pd.read_csv(file_name)\n",
"asdf.valid = pd.to_datetime(asdf.valid)\n",
"asdf = asdf.set_index('valid')\n",
"asdf.columns # Check column names"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"# Let's do some resampling\n",
"sample_type = 'H' # Hourly resampling\n",
"resampled_data = pd.DataFrame()\n",
"resampled_data['precip'] = asdf.p01i.resample(sample_type).sum()\n",
"resampled_data['temperature'] = asdf.tmpf.resample(sample_type).mean()\n",
"resampled_data['dwpf'] = asdf.dwpf.resample(sample_type).mean()\n",
"resampled_data['relh'] = asdf.relh.resample(sample_type).mean()\n",
"resampled_data['drct'] = asdf.drct.resample(sample_type).mean()\n",
"resampled_data['sknt'] = asdf.sknt.resample(sample_type).mean() # wind speed knots - bad column name\n",
"resampled_data['relh'] = asdf.relh.resample(sample_type).mean()\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"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",
" <th>temperature</th>\n",
" <th>dwpf</th>\n",
" <th>relh</th>\n",
" <th>drct</th>\n",
" <th>sknt</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",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2019-01-01 00:00:00</th>\n",
" <td>0.0001</td>\n",
" <td>30.90</td>\n",
" <td>28.90</td>\n",
" <td>92.180</td>\n",
" <td>341.538462</td>\n",
" <td>12.461538</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-01-01 01:00:00</th>\n",
" <td>0.0004</td>\n",
" <td>29.06</td>\n",
" <td>27.50</td>\n",
" <td>93.826</td>\n",
" <td>324.375000</td>\n",
" <td>14.375000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-01-01 02:00:00</th>\n",
" <td>0.0002</td>\n",
" <td>26.55</td>\n",
" <td>25.55</td>\n",
" <td>95.940</td>\n",
" <td>340.000000</td>\n",
" <td>15.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-01-01 03:00:00</th>\n",
" <td>0.0001</td>\n",
" <td>25.00</td>\n",
" <td>23.00</td>\n",
" <td>91.970</td>\n",
" <td>330.769231</td>\n",
" <td>14.538462</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-01-01 04:00:00</th>\n",
" <td>0.0001</td>\n",
" <td>21.00</td>\n",
" <td>19.00</td>\n",
" <td>91.830</td>\n",
" <td>317.692308</td>\n",
" <td>14.230769</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" precip temperature dwpf relh drct sknt\n",
"valid \n",
"2019-01-01 00:00:00 0.0001 30.90 28.90 92.180 341.538462 12.461538\n",
"2019-01-01 01:00:00 0.0004 29.06 27.50 93.826 324.375000 14.375000\n",
"2019-01-01 02:00:00 0.0002 26.55 25.55 95.940 340.000000 15.000000\n",
"2019-01-01 03:00:00 0.0001 25.00 23.00 91.970 330.769231 14.538462\n",
"2019-01-01 04:00:00 0.0001 21.00 19.00 91.830 317.692308 14.230769"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resampled_data.head() # LOOK HOW PRETTY IT IS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Alright, look how nice and uniform our data is now. Next, we need to create the function, apply the function and then we should be good to go. Hold on, this next step is going to pop out of pandas land for a minute so I can do this how I know to do it."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"def moisture_content(previous_value, precip_in, decay_coefficient):\n",
" \"\"\"\n",
" Simple function to do a 'Newton's Law of Cooling' type calculation for soil moisture\n",
" Args:\n",
" previous_value (float): This should be the previous moisture reading\n",
" precip_in (float): This is the precip for the current time period\n",
" decay_coefficient (float): how much to decay the moisture per reading period. Between 0-1\n",
" \"\"\"\n",
" return previous_value*decay_coefficient + precip_in"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"# strip values into their own lists\n",
"dates = resampled_data.index.values\n",
"precip = resampled_data.precip.values"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"# Fill in the values and drop those value right back into our dataframe\n",
"moisture = []\n",
"decay_rate = 0.9 # Should be between 0 and 1 unless the ground is magically making water\n",
"for index, value in enumerate(precip):\n",
" if index > 0:\n",
" moisture.append(moisture_content(moisture[index-1], value, decay_rate))\n",
" elif index == 0:\n",
" moisture.append(value)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"resampled_data['moisture'] = moisture # Add back into dataframe"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7fce8a2d30b8>"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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4AyRfcopp3DUUUex9957c9VVV9VO9/DDD9OzZ0+GDh3KhRdeWDuUdjJ4NuiciJQABwNjAFS1Aqjwoqy82j4CqxEYk3CvXQMrPk/sMtv3g6MbvotYpKqqKt566y1++tOfApCbm8tzzz1HcXExa9asYdiwYZxwwgm73NP3008/Ze7cuXTs2JERI0bwwQcfcOCBBzZYzqRJkzjppJMAqKys5LLLLuOFF16gtLSUp556it/+9rc88sgjnHLKKVx44YUAXH/99Tz88MNcdtlljB07lp///Oecd955jdZeZs2axaeffkpOTg69evXisssuIyMjg1tuuYWZM2dSVFTE4YcfzoABA6LaPong5eij3YHVwL9EZAAwAxirqlsjJxKRi4CLALp06RJXQbmWCIxJOdu3b2fgwIEsXbqUPn36MGrUKMAZBfS6665j6tSphEIhli5dysqVK2nfvv1O8w8dOpTOnTsDMHDgQBYuXFhvIrjyyiu57rrrWLJkCR999BEAX375JXPmzKkts6qqig4dOgAwZ84crr/+ejZs2MCWLVsYPXo0AB988EHtsNjnnnsuV199db3rNXLkSEpKSgDYZ599WLRoEWvWrOGQQw6hVatWAJx++ulJHdDOy0SQCewLXKaq00TkbuAa4HeRE6nqOGAcOGMNxVNQTdOQ9REY44Eoj9wTraaPYNu2bYwePZr777+fyy+/nCeeeILVq1czY8YMsrKy6Nat205DR9fIycmpfZ6RkUE4HK63nNtuu43TTjuNe++9l/PPP58ZM2agqvTt27c2MUQaM2YMzz//PAMGDGD8+PFMmTKl9rO6tZL6RBtXMnnZR7AEWKKq09zXz+IkhoSz00eNSV35+fncc8893HHHHYTDYTZu3Ejbtm3JysrinXfeYdGiRQkp59JLL6W6uprJkyfTq1cvVq9eXZsIKisrmTt3LgCbN2+mQ4cOVFZW1g6DDc5NcJ588kmAnd6PxpAhQ3j33XdZv3494XC4tmaRLJ4lAlVdASwWkV7uWyOBeV6UVXv6aNhqBMakokGDBtG/f38mTJjA2WefzfTp0+nXrx+PPfYYvXv3TkgZIsL111/PrbfeSnZ2Ns8++yxXX301AwYMYODAgbVnJN1yyy3sv//+jBgxYqey7777bu6//3769eu3U6dzNDp16sR1113H0KFDGTFiBN26dattPkoGT4eh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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot it!\n",
"days_to_plot = 22\n",
"start_date = datetime.today() - timedelta(days=days_to_plot)\n",
"recent_vals = resampled_data[resampled_data.index > start_date]\n",
"\n",
"from pandas.plotting import register_matplotlib_converters\n",
"register_matplotlib_converters()\n",
"\n",
"plt.plot(recent_vals.moisture, label='Moisture')\n",
"plt.plot(recent_vals.precip, label='Rain Reading')\n",
"plt.xticks(rotation=45)\n",
"plt.title(\"Initial Moisture Decay Testing\")\n",
"plt.xlabel(\"Dates\")\n",
"plt.ylabel(\"Moisture Amount\")\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Woo Hoo Again!\n",
"That is some nice looking data you got there. Good curves, meat in all the right places. Okay, let's try to fix that to what we see in real life - this is a great start. The consistent time sampling allows for consistent application of decay equations. Now I'm off to comb facebook and figure when the trails dried enough to ride.\n",
"\n",
"\n",
"## Let's try to plot some of those values and see what we get\n",
"For this I went through the Facebook groups for a trail and gave a numberical value to the 'dryness' of the trails based on user repost. 0 = totally dry, 10 = totally wet. I considered 6-7 to be the threshold for wetness so you see a lot of those values. Why? People don't ask how dry the trails are if it hasn't rained in two weeks, so there's very few 0-4 values."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"trail_cond_path = './raw_data/center_conditions.csv'\n",
"conditions = pd.read_csv(trail_cond_path)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"conditions.Date = pd.to_datetime(conditions.Date)\n",
"conditions = conditions.set_index('Date')"
]
},
{
"cell_type": "code",
"execution_count": 39,
"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>Rating</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2019-08-14</th>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-08-12</th>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-08-11</th>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-08-09</th>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2019-08-05</th>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Rating\n",
"Date \n",
"2019-08-14 6\n",
"2019-08-12 8\n",
"2019-08-11 9\n",
"2019-08-09 3\n",
"2019-08-05 3"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"conditions.head()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7fce88c98eb8>"
]
},
"execution_count": 40,
"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": [
"days_to_plot = 30\n",
"start_date = datetime.today() - timedelta(days=days_to_plot)\n",
"recent_vals = resampled_data[resampled_data.index > start_date]\n",
"\n",
"plt.ylim(0,5)\n",
"plt.plot(recent_vals.moisture, label='Moisture')\n",
"plt.plot(recent_vals.precip, label='Rain Reading')\n",
"plt.scatter(conditions.index, conditions.Rating/3)\n",
"plt.xticks(rotation=45)\n",
"plt.title(\"Initial Moisture Decay Testing\")\n",
"plt.xlabel(\"Dates\")\n",
"plt.ylabel(\"Moisture Amount\")\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# What Does It Mean\n",
"\n",
"The orange line is the hourly rain totals. The blue line is my estimates at how moist the soil is and the blue dots are rough estimates of how moist the trails actually were that day. I used a system from 0-10 where 0 was completely dry and dust, 10 being completely soaking wet. When I plotted those value I then divided by three so they fit on the graph. Its a very subjective scale based off user reports on Facebook, but it will work for validation of data. With the division by three, a value of 2 represents boardline conditions.\n",
"\n",
"As you can see, the graph and dots all appear to line up. This is kind of complete coincidence - the decay rate was chosen at random so that when graphed it looked nice and pretty. The fact that it lines up at all is incredible.\n",
"\n",
"# What's next?\n",
"\n",
"Next we need to make the model more accurate - including layers and run off would be a good start. We also need a way to read in this data automatically without going to the website and manually downloading the weather data. Finally there is the issue of extending the data into the future. After all, no one is really interested in how ridable the trails were two days (or weeks) ago. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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