Skip to content

Instantly share code, notes, and snippets.

@mythmon
Created September 10, 2015 14:50
Show Gist options
  • Save mythmon/f58861481047c1d179ed to your computer and use it in GitHub Desktop.
Save mythmon/f58861481047c1d179ed to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "data = [\n ('7/14/2015', 177),\n ('7/17/2015', 176),\n ('7/19/2015', 178),\n ('7/20/2015', 175.8),\n ('7/21/2015', 176.2),\n ('7/22/2015', 176.6),\n ('7/23/2015', 175.8),\n ('7/24/2015', 174.4),\n ('7/25/2015', 175),\n ('7/27/2015', 174.6),\n ('7/28/2015', 174.6),\n ('7/29/2015', 174.8),\n ('7/30/2015', 174.8),\n ('7/31/2015', 174.4),\n ('8/3/2015', 175.4),\n ('8/4/2015', 175.8),\n ('8/7/2015', 176.6),\n ('8/8/2015', 175.4),\n ('8/9/2015', 175.8),\n ('8/10/2015', 175.4),\n]",
"execution_count": 7,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "from datetime import datetime\n\nformat = '%m/%d/%Y'\ndata = [{'date': datetime.strptime(d[0], format), 'value': d[1]} for d in data]\ndata",
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 8,
"data": {
"text/plain": "[{'date': datetime.datetime(2015, 7, 14, 0, 0), 'value': 177},\n {'date': datetime.datetime(2015, 7, 17, 0, 0), 'value': 176},\n {'date': datetime.datetime(2015, 7, 19, 0, 0), 'value': 178},\n {'date': datetime.datetime(2015, 7, 20, 0, 0), 'value': 175.8},\n {'date': datetime.datetime(2015, 7, 21, 0, 0), 'value': 176.2},\n {'date': datetime.datetime(2015, 7, 22, 0, 0), 'value': 176.6},\n {'date': datetime.datetime(2015, 7, 23, 0, 0), 'value': 175.8},\n {'date': datetime.datetime(2015, 7, 24, 0, 0), 'value': 174.4},\n {'date': datetime.datetime(2015, 7, 25, 0, 0), 'value': 175},\n {'date': datetime.datetime(2015, 7, 27, 0, 0), 'value': 174.6},\n {'date': datetime.datetime(2015, 7, 28, 0, 0), 'value': 174.6},\n {'date': datetime.datetime(2015, 7, 29, 0, 0), 'value': 174.8},\n {'date': datetime.datetime(2015, 7, 30, 0, 0), 'value': 174.8},\n {'date': datetime.datetime(2015, 7, 31, 0, 0), 'value': 174.4},\n {'date': datetime.datetime(2015, 8, 3, 0, 0), 'value': 175.4},\n {'date': datetime.datetime(2015, 8, 4, 0, 0), 'value': 175.8},\n {'date': datetime.datetime(2015, 8, 7, 0, 0), 'value': 176.6},\n {'date': datetime.datetime(2015, 8, 8, 0, 0), 'value': 175.4},\n {'date': datetime.datetime(2015, 8, 9, 0, 0), 'value': 175.8},\n {'date': datetime.datetime(2015, 8, 10, 0, 0), 'value': 175.4}]"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "exp_base = 0.995\n\ndef timedelta_to_hours(td):\n return td.days * 24 + int(td.seconds / 60.0 / 60.0)\n\nfor i, obj1 in enumerate(data):\n acc = 0\n div = 0\n cur_date = obj1['date']\n for obj2 in data[:i + 1]:\n offset = timedelta_to_hours(cur_date - obj2['date'])\n factor = exp_base ** offset\n acc += obj2['value'] * factor\n div += factor\n obj1['smoothed'] = acc / div",
"execution_count": 9,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "%matplotlib inline\nfrom matplotlib import pyplot\nfrom datetime import timedelta\n\npadding_x = timedelta(hours=24)\npadding_y = 2\n\npyplot.title('Weight')\npyplot.xlim([min(d['date'] for d in data) - padding_x, max(d['date'] for d in data) + padding_x])\npyplot.ylim([min(d['value'] for d in data) - padding_y, max(d['value'] for d in data) + padding_y])\n#pyplot.ylim([155, 190])\npyplot.xticks(rotation=25)\n\npyplot.scatter([d['date'] for d in data], [d['value'] for d in data])\npyplot.plot([d['date'] for d in data], [d['smoothed'] for d in data])",
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 11,
"data": {
"text/plain": "[<matplotlib.lines.Line2D at 0x7f9d5239dd68>]"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x7f9d52701fd0>",
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"language_info": {
"mimetype": "text/x-python",
"version": "3.4.3",
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"codemirror_mode": {
"version": 3,
"name": "ipython"
},
"file_extension": ".py",
"name": "python"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment