Skip to content

Instantly share code, notes, and snippets.

@rbiswas4
Last active January 1, 2016 02:30
Show Gist options
  • Save rbiswas4/3e55b899f5b6d4aa182f to your computer and use it in GitHub Desktop.
Save rbiswas4/3e55b899f5b6d4aa182f to your computer and use it in GitHub Desktop.
Notebook illustrating the usage of rolling computations in pandas.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": []
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x = np.random.randint(low=0, high=1000, size=10)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x.sort()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 31, 129, 273, 275, 545, 573, 708, 781, 784, 847])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"d = pd.Index(x)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ss = pd.Series(x, index=x)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df = pd.DataFrame({'time':ss, 'count': np.ones(len(ss))})"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df['timeDiffs'] = df.time.diff()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>count</th>\n",
" <th>time</th>\n",
" <th>timeDiffs</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>1</td>\n",
" <td>31</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>129</th>\n",
" <td>1</td>\n",
" <td>129</td>\n",
" <td>98</td>\n",
" </tr>\n",
" <tr>\n",
" <th>273</th>\n",
" <td>1</td>\n",
" <td>273</td>\n",
" <td>144</td>\n",
" </tr>\n",
" <tr>\n",
" <th>275</th>\n",
" <td>1</td>\n",
" <td>275</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>545</th>\n",
" <td>1</td>\n",
" <td>545</td>\n",
" <td>270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>573</th>\n",
" <td>1</td>\n",
" <td>573</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>708</th>\n",
" <td>1</td>\n",
" <td>708</td>\n",
" <td>135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>781</th>\n",
" <td>1</td>\n",
" <td>781</td>\n",
" <td>73</td>\n",
" </tr>\n",
" <tr>\n",
" <th>784</th>\n",
" <td>1</td>\n",
" <td>784</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>847</th>\n",
" <td>1</td>\n",
" <td>847</td>\n",
" <td>63</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count time timeDiffs\n",
"31 1 31 NaN\n",
"129 1 129 98\n",
"273 1 273 144\n",
"275 1 275 2\n",
"545 1 545 270\n",
"573 1 573 28\n",
"708 1 708 135\n",
"781 1 781 73\n",
"784 1 784 3\n",
"847 1 847 63"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df['weights'] = (1 - np.exp(-df['timeDiffs']/100.))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>count</th>\n",
" <th>time</th>\n",
" <th>timeDiffs</th>\n",
" <th>weights</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>1</td>\n",
" <td>31</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>129</th>\n",
" <td>1</td>\n",
" <td>129</td>\n",
" <td>98</td>\n",
" <td>0.624689</td>\n",
" </tr>\n",
" <tr>\n",
" <th>273</th>\n",
" <td>1</td>\n",
" <td>273</td>\n",
" <td>144</td>\n",
" <td>0.763072</td>\n",
" </tr>\n",
" <tr>\n",
" <th>275</th>\n",
" <td>1</td>\n",
" <td>275</td>\n",
" <td>2</td>\n",
" <td>0.019801</td>\n",
" </tr>\n",
" <tr>\n",
" <th>545</th>\n",
" <td>1</td>\n",
" <td>545</td>\n",
" <td>270</td>\n",
" <td>0.932794</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count time timeDiffs weights\n",
"31 1 31 NaN NaN\n",
"129 1 129 98 0.624689\n",
"273 1 273 144 0.763072\n",
"275 1 275 2 0.019801\n",
"545 1 545 270 0.932794"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>count</th>\n",
" <th>time</th>\n",
" <th>timeDiffs</th>\n",
" <th>weights</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count time timeDiffs weights\n",
"0 NaN NaN NaN NaN\n",
"1 NaN NaN NaN NaN\n",
"2 NaN NaN NaN NaN\n",
"3 NaN NaN NaN NaN\n",
"4 NaN NaN NaN NaN"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = df.reindex(np.arange(0, 1000)); df.head()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df.weights.fillna(0, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>count</th>\n",
" <th>time</th>\n",
" <th>timeDiffs</th>\n",
" <th>weights</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count time timeDiffs weights\n",
"0 NaN NaN NaN 0\n",
"1 NaN NaN NaN 0\n",
"2 NaN NaN NaN 0\n",
"3 NaN NaN NaN 0\n",
"4 NaN NaN NaN 0"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x107e339d0>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nqQKBX8IOg8Vin1m8uZrt2SMdPlzf9nEsAj8zjPBRhaZG+DfdJN18c/XbZf8fjMCfR+o7zMsvT7oF\n+SNcqvHcc9Vti/dkYUMD3/aM7d2299jeOM861xXLd9o+v/pmYlRzO/o73jHZdiBtqV5FQ+AvbMHA\nt71M0mZJM5LOkbTe9tmldS6R9LqIWCvp/ZKur6mtjWhih+l2u/VtPDEp16LqfSXlWizWsJqNWwsC\nf2HDRvjrJO2NiEcj4qCkbZIuK61zqaRPSVJE3CXpNNtnVt7ShqQe+Knt6G0KuWGmqRZNjvB/9KPj\nl09TLXIyLPBXStrXN72/mDdsnVVLbxqANuAYfnOWD1k+atnK96cO/L13vnPErU3Qvff2/r30UumE\nmk5pf+MbR5+nat/97tHHKdS7zlrU7amnev9u2SLdccfC67700vD3Y5pqsXNn7993vUtasaL67T//\n/NHHW7dKX/nKscvHrcXcJZ533pnG/t80xwIfhbYvlDQbETPF9NWSDkfEtX3r/L2kbkRsK6Z3S7oo\nIp4obYvPXAAYQ0RU8qUvw0b4OySttb1G0mOSLpe0vrTOdkkbJG0rPiCeKYe9VF2DAQDjWTDwI+KQ\n7Q2Sbpe0TNLWiNhl+6pi+ZaIuNX2Jbb3SnpB0pW1txoAsGgLHtIBAOSj9jttR7lxKye2V9u+0/bX\nbT9s+4+L+afbvsP2N21/yfZpfb9zdVGf3bZ/fXKtr4ftZbbvt31LMd3KWtg+zfbNtnfZfsT2m1pc\niz8p+sdDtv/V9kltqYXtG2w/YfuhvnmLfu2231jUb4/tvxnpySOith/1DgPtlbRG0gpJD0g6u87n\nnPSPpNdIOq94fIqkb0g6W9JfSvpgMX+jpL8oHp9T1GVFUae9kk6Y9OuouCZ/KulfJG0vpltZC/Xu\nV3lv8Xi5pFPbWAv1LuX+tqSTiul/k/R7bamFpDdLOl/SQ33zFvPa547M3C1pXfH4Vkkzw5677hH+\nKDduZSUiHo+IB4rHz0vapd4OfuQGteLf3yweXybppog4GBGPqveGrmu00TWyvUrSJZL+UUcv321d\nLWyfKunNEXGD1Ds/FhE/VAtrUVgu6ZW2l0t6pXoXhbSiFhHxZUlPl2Yv5rW/yfZrJf1kRNxdrPfP\nfb8zr7oDf5Qbt7JVXN10vqS7JJ0ZR69eekLS3N3IP6VeXebkVqO/lvRnkvq/BLeNtThL0vdt32j7\nPtuftP0TamEtIuKApI9L+p56Qf9MRNyhFtaiz2Jfe3n+AY1Qk7oDv7VnhG2fIulzkj4QEcfcSxi9\nv8EWqk0WdbP9G5KejIj7dfzNeZLaUwv1RrQXSPq7iLhAvSvaPtS/QltqYfvV6o1o16gXXKfYfk//\nOm2pxSAjvPax1R34BySt7pterWM/lbJke4V6Yf/piPhCMfsJ268plr9W0pPF/HKNVhXzcvBLki61\n/R1JN0n6VdufVjtrsV/S/oi4p5i+Wb0PgMdbWIuLJX0nIp6KiEOSPi/pF9XOWsxZTJ/YX8xfVZo/\ntCZ1B/6RG7dsn6jejVvba37OibJtSVslPRIRn+hbtF29E1Mq/v1C3/x32z7R9lmS1qp3MiZ5EfHh\niFgdEWdJerek/46IK9TOWjwuaZ/tnytmXSzp65JuUctqIem7ki60fXLRXy6W9IjaWYs5i+oTxf70\nbHGllyVd0fc782vgjPTb1btSZa+kqyd9hryB1/sr6h2vfkDS/cXPjKTTJf2npG9K+pKk0/p+58NF\nfXZLetukX0NNdblIR6/SaWUtJJ0r6R5JO9Ub1Z7a4lrMqndBw0PqnaRc0ZZaqPfX7mOSXlbvHOeV\n47x2SW8s6rdX0nWjPDc3XgFAS/BfHAJASxD4ANASBD4AtASBDwAtQeADQEsQ+ADQEgQ+ALQEgQ8A\nLfH/NYdp6xiWGiIAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x107b32950>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.weights.plot()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x107f69110>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEACAYAAACwB81wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGulJREFUeJzt3X+sXGWdx/H3l9uCVpa2iFKgNXWXsoEoCroVf+GgRK9k\nAWNisCvERUH+2K5mTRTwD7mNQRajwTXssqUWFo1LRSRs2VCB7jJZQwAtSgvSCg0U+0OKAuWn0db7\n3T9mbhkO8/uc88x5nvm8kpvemTnzzDPPnPM53/ucc6bm7oiISPoOGHUHREQkDAW+iMiYUOCLiIwJ\nBb6IyJhQ4IuIjAkFvojImOgZ+GZ2jZntNrMHOjz+KTPbaGabzOwuMzu++G6KiEhe/VT41wKTXR5/\nFDjZ3Y8HvgZcXUTHRESkWD0D391/CjzT5fG73f3Z5s17gYUF9U1ERApU9Bz+Z4FbC25TREQKMKuo\nhszsFOAzwHuLalNERIpTSOA3D9SuAibdve30j5npS3tERIbg7lZEO7mndMzsTcBNwNnuvrXbsu6u\nH3cuueSSkfehKj8aC42FxqL7T5F6Vvhmdj3wAeAwM9sOXALMbgb4SuCrwHzgKjMD2OvuSwvtpYiI\n5NYz8N19WY/HzwPOK6xHIom580647rrOj3/603DKKeH6I+OrsIO20r9arTbqLlTGOIzFHXfA88/D\n6ae/+rFbboH16xuBPw5j0S+NRTms6Dmiji9k5qFeS6RKLroI5s1r/Jt16aXw4ovw9a+H75fEwczw\nqhy0FZHupqfBCtlcRfJR4IuUzB0O6LClmTUeFwlBgS9SsunpzoEvEpJWQ5GSdQt8VfgSkgJfpGSq\n8KUqtBqKlEwVvlSFAl+kZKrwpSq0GoqUTBW+VIUCX6RkqvClKrQaipSs24VXqvAlJAW+SMm6XXgl\nEpJWQ5GSaQ5fqkKBL1IyzeFLVWg1FCmZKnypCgW+SMlU4UtVaDUUKZkqfKkKBb5IyVThS1VoNRQp\nmSp8qQoFvkjJVOFLVWg1FCmZe/crbUVCUeCLlKxXha8pHQlFgS9Ssl5z+CKhKPBFSqYKX6pCgS9S\nMlX4UhUKfJGSqcKXqlDgi5RMFb5URc/AN7NrzGy3mT3QZZnvmNkjZrbRzE4otosicVOFL1XRT4V/\nLTDZ6UEzOw042t2XAJ8DriqobyJJUIUvVdEz8N39p8AzXRY5A7iuuey9wDwzO7yY7onEr9uFVzOP\ni4RQxBz+UcD2lts7gIUFtCuSBFX4UhVFHbTNrraqWUSaNIcvVTGrgDZ2Aotabi9s3vcqU1NT+3+v\n1WrUarUCXl6k2lThyyDq9Tr1er2UtosI/LXAcmCNmZ0E7HH33e0WbA18kXGhCl8GkS2GV6xYUVjb\nPQPfzK4HPgAcZmbbgUuA2QDuvtLdbzWz08xsK/AicG5hvRNJgCp8qYqege/uy/pYZnkx3RFJjyp8\nqQpdaStSMlX4UhUKfJGSqcKXqlDgi5Rselr/45VUgwJfpGTuqvClGhT4IiXTHL5UhQJfpGSaw5eq\nUOCLlEwVvlRFEVfaioytxx6Dp5/uvsxLL6nCl2pQ4IvkcPLJMH8+zJ7deZkjj4TDDmv/mCp8CUmB\nL5LD3r1w++2wYMHwbajCl1A0hy+SQ96wVoUvISnwRXLKG9qq8CUUBb5IDqrwJSYKfJGcVOFLLBT4\nIjmowpeYKPBFclKFL7FQ4IvkoApfYqLAF8lJFb7EQoEvkoMqfImJAl8kJ1X4EgsFvkgOqvAlJgp8\nkZxU4UssFPgiOajCl5go8EVyUoUvsVDgi+SgCl9iosAXyUkVvsRCgS+Sgyp8iYkCXyQnVfgSCwW+\nSA6q8CUmPQPfzCbNbIuZPWJmF7Z5fK6Z3WJm95vZg2b296X0VKSiVOFLLLoGvplNAFcCk8BxwDIz\nOzaz2D8AD7r724Ea8C0z03+OLmNBFb7EpFeFvxTY6u7b3H0vsAY4M7PMNHBI8/dDgKfcfV+x3RSp\nLlX4EotegX8UsL3l9o7mfa2uBI4zs13ARuALxXVPpNpU4UtMek299LM6TwK/cPdTzOyvgDvM7G3u\n/nx2wampqf2/12o1arXaAF0VqSZV+FKker1OvV4vpW3zLmubmZ0ETLn7ZPP2xcC0u1/essx/A5e5\n+13N2/8DXOjuGzJtebfXEonR614Hu3fDwQcP9/w1a+Dmmxv/irRjZrh7IX8L9qrwNwBLzGwxsAs4\nC1iWWeY3wKnAXWZ2OPDXwKNFdE6Gs2cP3HlnvjY+9CE45JDey4kqfIlH18B3931mthy4DZgAVrv7\nZjO7oPn4SuBrwH+Y2SbAgC+7+9Ml91u6+MEP4Ior4K1vHe75GzbAZZfB2WcX268UaQ5fYtLz9El3\nXwesy9y3suX33wIfKb5rMqzf/hbOOQcuuWS4559zDkxPF9unlKnCl1joStsE7d4NCxaMuhfjQRW+\nxESBn5h9++CGG+Dww4dvw0xV5yBU4UssFPiJeeEFeO45OPXU4dtQ1dk/VfgSEwV+Ytxh7tzhTxNs\nbUf6owpfYqHAT1DeANKUTv9U4UtM9CVniVFQh5dihf/UU3D11fnO1jrwQPj85+Ggg4rrl+SjCj8x\n7qrwQ0q1wt+wAVatgpdeGv7nssvg8cdH/U6klSr8BBUR+BJOFXeu7nDMMXDppcO38aMfVfO9jTNV\n+IkpagPThtqfvH9RaecqISnwE6QpnbhUcaw1NZgmBX5itIGFl2KFr8BPkwI/MdpQwypinDTWEooC\nP0E6aBuWKvz2VDhUjwI/MTpoG1aqFX5RgS/VosBPkCqzsFKs8Iui9ahaFPiJ0QYWlir8zlQ4VI8C\nPzHaUMNThS+xUOAnSIEfjir8zrQeVY8CPzHawMJLscJX4KdJgZ8gbahx0VhLKAr8xCg8wlOF354K\nh+pR4CdGG2o4KV/zUESfqrozG2cK/AQp8ONR5VAsom9aj6pFgZ8YbWDhpF7hq3BIjwI/QdpQw9HX\nD0hMFPiJ0XeghKMKvzsVDtWjwE9MyiFURanuXFU4pEn/p23GPffAJz6RL/Be8xq47z6YO7e4fg1C\nlVkY2rn2lvJ7i1HPwDezSeDbwATwXXe/vM0yNeAKYDbwe3evFdvNcHbuhLe8BVatGr6Nd74Tnn9+\nNIGvDSysVKtgTemkqWvgm9kEcCVwKrAT+LmZrXX3zS3LzAP+FfiIu+8ws8PK7HAIc+bAwoXDP39i\nori+DEMbahgpV/g6Dz9NvebwlwJb3X2bu+8F1gBnZpb5O+DH7r4DwN1/X3w3w4m9stHca1gpj7XO\nw09Pr8A/CtjecntH875WS4BDzexOM9tgZucU2cHQUgj8KrWTspTHOvbtQNrrNYffz8c1GzgR+BAw\nB7jbzO5x90eyC05NTe3/vVarUavV+u5oKCmsoNpQw0m5wpfRqNfr1Ov1UtruFfg7gUUttxfRqPJb\nbadxoPYPwB/M7P+AtwFdA7/KYg5MBXU4qvC7U+EwnGwxvGLFisLa7jWlswFYYmaLzexA4CxgbWaZ\n/wLeZ2YTZjYHeBfwUGE9DCyFFT32/sck1Qpdx4LS1LXCd/d9ZrYcuI3GaZmr3X2zmV3QfHylu28x\ns58Am4BpYJW7K/B10DZ5RZ3JkvLONeX3FqOe5+G7+zpgXea+lZnb3wS+WWzXZBgpTzNUUao7x9gL\nH2lPX62QkcKKHnv/Y5Fyha/z8NOkwM+IPfCrGB4pSznUdB5+ehT4GbEH/szr532+NtTeUq/wtR6l\nR4GfGB20DUtjJTHRt2VmxF7Z6KBtOKrwu+vnvV1zDWzaNPxrnHYafPjDwz9/3CjwM2IP/JnXz/v8\nKoZQFaVa4Yc6aPuNb8DHPw5vfOPg7d9zD/zwhwr8QSjwM2KvkBXU4aRc4UOYg7bPPgvLl8ORRw7e\n9urVcNddw/VrXGkOv43Y58BV4Ycz6s+6LKH+0t2zB+bNK699eSUFfkbsUzo6aBtOyhV+iCmdP/4R\n9u2D1752+ParOHZVpsDPSCHwq9RO6lLeOZY9pfPkk43/bGjY11HgD06Bn5HCChTzDismqVf4Zf+l\n+MEPwutfn6/9Ko5dlSnw24g5MLUBhJVyhV+EbuvjnDlw003ltS+vpsDPiH1KZ+b18z5fG1JvqvC7\n6/Xe8r5GVceuyhT4GbEHfuz9j02qFX6Ig7YK/PAU+Bmxr0Cx9z8mKVf4UP5B2yICXwajwG8j9go5\n9v7HJNXQCfWXoir8sBT4GbFPieh7zMNJucIPNaWTt/0qjl2VKfAzYg/8mdfPSxtSf1LeOcYwpaP1\ndDAK/IzYV6AUdlixSL3CL/s8fAV+ePrytDZiDkxtAGGlXOEXYRQV/nXXwfr1w7cLcPLJcP75+dqo\nIgV+RgoVcuz9j4Uq/O5GdR7+jTfC0UfDiScO1+6DDza+dlmBPwZi/y6aFHZYMUm1wo/hPPyZNtrd\nd8opcMYZw7W5fj1s2JCvX1WlOfwMfdtkgwK/t5QrfIj3oK2ODXSmwG8j5gpZFX5YKezc24l5SkeB\n35kCPyP2wEx1Ra2ilCv8GKZ0Oj1Xgd+ZAj8j9jl8iHuHFZtUK3yo/vUcqvAHp8DPiH0OP/b+x0QV\nfnejOg9fgd+ZAr8NVcjx9z+UlHeOmsNPT8/AN7NJM9tiZo+Y2YVdlvsbM9tnZh8vtothpTCHH3P/\nY5J6hR/rWTozj+VpN1VdA9/MJoArgUngOGCZmR3bYbnLgZ8AUQ9XFTe+QcTe/9ikGg6a0hn++VXW\nq8JfCmx1923uvhdYA5zZZrl/BG4Efldw/4JLoUKOvf+xSLnCh3grfAV+Z70C/yhge8vtHc379jOz\no2jsBK5q3hX9UMUcmDpoG1aqYxXDl6fNtFF0uykHfq+vVujnbX8buMjd3cyMLlM6U1NT+3+v1WrU\narU+mg8rhQq/CLH3PxZVXVdC/PWiCr+9er1OvV4vpe1egb8TWNRyexGNKr/VO4A1jaznMOCjZrbX\n3ddmG2sN/Kqq4sY3CO2wwinqwGZVxTClU1a7o1z/s8XwihUrCmu7V+BvAJaY2WJgF3AWsKx1AXf/\ny5nfzexa4JZ2YR+TmANTQR2XUYdLJzpoO/zzq6xr4Lv7PjNbDtwGTACr3X2zmV3QfHxlgD4GlUKF\nHHv/Y6EKv/fzdaVttfT8emR3Xwesy9zXNujd/dyC+jUysX+1gg7axqWq4RLzefgK/M50pW2GArMh\n1RW+SClX+JrSGf75VabAb6Pqf8p2k8KU1Dip8lirwk+PAj8j9sAMUZlJQ+oVftXPw1fgD06BnxH7\nHD6UX5lJcaoaLjoPf/jnV5kCPyP2OfzY+x+TlCt8qP6UTqf2FfidKfDbiHlKpyix9z8WVV1XYjlo\nW1a7VfxMiqDAz0hhDj/m/sdEFX7v52tKp1oU+Bmxf9A6aBuXqoZLqPPw81DgD06Bn5FChayDtmGk\nXOGHKhxU4YelwG8j5sDXQdu4VDlcqn7QVoE/OAV+RgoVfhFi738IqvC703n41aPAz4j9g9YOKy5V\nHesQ65ECPzwFfkbsgamDtuGkXOGDpnRSpMBvI+bAn3n9vFJd4atm1OtKJzFM6cy0UXS7Vf1MiqDA\nz0ihwo+5/zFRhd/7+arwq0WBn5HqBy3VVNVwCbEz05W24SnwM2KvkGPvf0xSrvBDfXlaGe0r8DtT\n4LcRc2DqPPy4VDlcQhwL0pROWAr8jKI+6NhXmNj7H4Iq/O50Hn71KPAzYq+QNaUTl6qOtc7DH/75\nVabAz1BgSr9SrvBB5+GnSIHfRsyBrx1WXKo61prSGf75VabAz4j9g459SiomqvB7Pz/GCn+mjRTN\nGnUHqkYVckPs/Y+FGfzpT7BtW/flDjkEDj00SJeAOM7Dn2mj6HZT2H47UeBnxB74sfc/JkWM9fz5\ncOCBUKt1XubPf4aJid47hSLFctC2rHZTXf8V+G0oMCWUN7wBHn64+zK7d8Pxx4fpTysdtE2P5vAz\nYv+gVeGHE2oO/4ADYHq6/NdpFcO3rirwB6fAz4g9MHXQNj2jWJ9CbQeq8MPqK/DNbNLMtpjZI2Z2\nYZvHP2VmG81sk5ndZWYj+AO0GLEHflFi738IKVf4UO6Uzsz9Cvywega+mU0AVwKTwHHAMjM7NrPY\no8DJ7n488DXg6qI7GlLMga8dVnpSnNIp88vZFPid9VPhLwW2uvs2d98LrAHObF3A3e9292ebN+8F\nFhbbzXBS/aAHoSmd/qRc4ZddOJTZvgK/s34C/yhge8vtHc37OvkscGueTo1S7BVyUSGU6gofo1FN\n6ZRJgT8a/ZyW2fdbN7NTgM8A7x26RyOmwFeF3y9V+N2pwq+efgJ/J7Co5fYiGlX+KzQP1K4CJt39\nmXYNTU1N7f+9VqtR63a1SeRiX2Fi739KUj1oW9bOMvbAr9fr1Ov1UtruJ/A3AEvMbDGwCzgLWNa6\ngJm9CbgJONvdt3ZqqDXwqyr2Cjn2v1BiknqFn1evg7aq8NvLFsMrVqworO2ege/u+8xsOXAbMAGs\ndvfNZnZB8/GVwFeB+cBV1hjpve6+tLBeBqTA1JRO1aQ6pZNXqoFfpr6+WsHd1wHrMvetbPn9POC8\nYrs2OjEHvg7ahhOqwjfTlE47CvzB6UrbjKI+6JgDXxV+tRxwwGiutM2r13qkwA9PgZ+hwGxIdYUv\nUsgKf+b1QtFZOsM/v8oU+Bmxz+HH3n9pL7Vz8RX4o6HAb2PcAzOFv1BCCFXhQ/jAV4U//POrTIGf\nEfsHrYO2aRpFha+DtulR4GfEPiWiYxDhpF7h51X2efhlta3AHyOxB35RYu9/ajSl03/7CvzOFPht\nxBz42mGFk3KFD+W+N114NRoK/IxUP+hBaEqnekJffFVmIM+0rwo/PAV+RuwVsg7ahhO6wk/pPPyZ\nx8toX4HfmQI/Q4Gf9gofK52H/2oK/MEp8EuS6gojL0t5Dl8HbYd/fpUp8DNiP61RFX6aYj1oq8Cv\nFgV+RuyBGfsOKyapV/h5lX0evgJ/cAr8jNgDvyix9z81mtIZrP28gZ8qBX5JYq/wFfj9SbXCL5uu\ntB0NBX6GpkTi738oIUNBFX7/7RcR+KlS4GfEXiHrPPywQoXDKC68Kjvw8yor8FvbSY0CP0OBn3aF\nU6TQFX5KAVTlCr9b27FT4EtbKa7sZUh1Dn+cr7Tt1nbsFPgZsa8ssfc/JinP4cP4noffre3YKfAz\ntLJoSmcQKVf4ecV6Hn63tmOnwM+IfWXRAatwUq7wx/ksnW5tx06BnxgdtA0r1Qq/bAr80VDgZ2hl\naYi9/yGowu8uRIVfZtspbgMK/IzYV5bY+x+bVCv8GAJ/pp1Or51HqtuAAj9DgakpnX6lXOGXraiD\nws89B08/XWy7M23HvA13osBPjA7ahhXyStuQn0kMFf6cOTB7Nnzxi8W2C2Mc+GY2aWZbzOwRM7uw\nwzLfaT6+0cxOKL6b4cRe4RfV/02biulPylKv8MvcmRWxns6eDTfcAM88U2y7MKaBb2YTwJXAJHAc\nsMzMjs0scxpwtLsvAT4HXFVSX4MIEfj1ej3fC5Ts+OPh8cdf+adyWao+Fr0UGYrdxiLW8/CHvdK2\n3/Vi7lx49tmXbyvwu+tV4S8Ftrr7NnffC6wBzswscwZwHYC73wvMM7PDC+9pIEV9yKMK/CJW+MWL\n4ZhjYPfuQrrUVcyBX3QgVC3wRzml0+96MW8e7NnTf7v9GtfAPwrY3nJ7R/O+XssszN+10dF57LBg\nQZjAj12qZ+mUrahgVoU/mFk9Hu/3LWeHuNCheuIJOP/8Ilvs7L774GMfy9fGxARcfTWsX9/+8V//\nuvE6ZXj8cXj3u/O3c8QR8KUvNYK/TGWORdmeeqoxjxzCrFmNz+PQQ8O83saN8J735GtjYgK+9z24\n++5XP/bCC43H85o/H3btgtNPb9yeni6m3YkJOOuscJ9vKOZddmNmdhIw5e6TzdsXA9PufnnLMv8O\n1N19TfP2FuAD7r4701aC+0sRkfK5eyF/S/aq8DcAS8xsMbALOAtYlllmLbAcWNPcQezJhj0U12ER\nERlO18B3931mthy4DZgAVrv7ZjO7oPn4Sne/1cxOM7OtwIvAuaX3WkREBtZ1SkdERNJR+pW2/Vy4\nlRIzW2Rmd5rZr8zsQTP7fPP+Q83sDjN72MxuN7N5Lc+5uDk+W8zsw6PrfTnMbMLMfmlmtzRvj+VY\nmNk8M7vRzDab2UNm9q4xHot/am4fD5jZf5rZQeMyFmZ2jZntNrMHWu4b+L2b2Tua4/eImf1LXy/u\n7qX90JgG2gosBmYD9wPHlvmao/4BFgBvb/5+MPBr4FjgG8CXm/dfCPxz8/fjmuMyuzlOW4EDRv0+\nCh6TLwI/ANY2b4/lWNC4XuUzzd9nAXPHcSxonMr9KHBQ8/YPgU+Py1gA7wdOAB5ouW+Q9z4zM/Mz\nYGnz91uByV6vXXaF38+FW0lx9yfc/f7m7y8Am2ms4PsvUGv+O3Py55nA9e6+19230fhAlwbtdInM\nbCFwGvBdXj59d+zGwszmAu9392ugcXzM3Z9lDMeiaRYwx8xmAXNonBQyFmPh7j8FnsncPch7f5eZ\nHQH8hbv/rLnc91qe01HZgd/PhVvJap7ddAJwL3C4v3z20m5g5mrkI2mMy4zUxugK4EtA62VD4zgW\nbwZ+Z2bXmtkvzGyVmb2OMRwLd98JfAv4DY2g3+PudzCGY9Fi0PeevX8nfYxJ2YE/tkeEzexg4MfA\nF9z9+dbHvPE3WLexSWLczOxvgSfd/Ze8+uI8YHzGgkZFeyLwb+5+Io0z2i5qXWBcxsLM5tOoaBfT\nCK6Dzezs1mXGZSza6eO9D63swN8JLGq5vYhX7pWSZGazaYT999395ubdu81sQfPxI4Anm/dnx2hh\n874UvAc4w8weA64HPmhm32c8x2IHsMPdf968fSONHcATYzgWpwKPuftT7r4PuAl4N+M5FjMG2SZ2\nNO9fmLm/55iUHfj7L9wyswNpXLi1tuTXHCkzM2A18JC7f7vlobU0DkzR/Pfmlvs/aWYHmtmbgSU0\nDsZEz92/4u6L3P3NwCeB/3X3cxjPsXgC2G5mxzTvOhX4FXALYzYWwOPASWb22ub2cirwEOM5FjMG\n2iaa69NzzTO9DDin5TmdBTgi/VEaZ6psBS4e9RHyAO/3fTTmq+8Hftn8mQQOBdYDDwO3A/NanvOV\n5vhsAT4y6vdQ0rh8gJfP0hnLsQDeBvwc2Eijqp07xmMxReOEhgdoHKScPS5jQeOv3V3An2gc4zx3\nmPcOvKM5fluB7/Tz2rrwSkRkTOi/OBQRGRMKfBGRMaHAFxEZEwp8EZExocAXERkTCnwRkTGhwBcR\nGRMKfBGRMfH/VHKOUs6yxvQAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1077c1590>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pd.rolling_sum(df.weights, window=50.).plot()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ss = ss.reindex(np.arange(0, 1000))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ss.iloc[50:60]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"ss.fillna(0, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ss[50:60]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"source": [
"rr = pd.rolling_count(ss, window=10, center=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"labels = pd.rolling_sum(ss, window=10, center=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df.head(10)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df = pd.DataFrame({'time':labels, 'vals':rr})"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df.time.plot()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"rr.fil"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"pd.rolling_sum()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"fig, ax = plt.subplots()\n",
"rr.plot(ax=ax, kind='line')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ax.set_xlim(40, 60)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"fig"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment