Skip to content

Instantly share code, notes, and snippets.

@drorata
Last active January 19, 2016 08:44
Show Gist options
  • Save drorata/e58b673fd87edfc92960 to your computer and use it in GitHub Desktop.
Save drorata/e58b673fd87edfc92960 to your computer and use it in GitHub Desktop.
Multi-type frequency count
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Assume you have events log with two event types `foo` and `bar`. The goal is to obtain a frequency bar plot of the events per some predescribed time interval."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline\n",
"import pandas as pd\n",
"import numpy as np\n",
"from matplotlib import pylab\n",
"matplotlib.style.use('ggplot')\n",
"np.random.seed(1234)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Simple case. One event type. Days resolution"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To start with, here's a simple data set. 3 days appearing "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"days = pd.date_range(pd.to_datetime('2015-01-14'), periods=3, freq='d')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"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>date</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2015-01-14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2015-01-14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2015-01-14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2015-01-15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2015-01-15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2015-01-15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2015-01-15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2015-01-16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>2015-01-16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>2015-01-16</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" date\n",
"2 2015-01-14\n",
"3 2015-01-14\n",
"4 2015-01-14\n",
"1 2015-01-15\n",
"5 2015-01-15\n",
"6 2015-01-15\n",
"7 2015-01-15\n",
"0 2015-01-16\n",
"8 2015-01-16\n",
"9 2015-01-16"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(np.random.choice(days,10), \n",
" columns=['date'])\n",
"df.sort_values('date',inplace=True)\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Following shows how many events (in total) happened each day."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x10929e668>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10929e550>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = df.groupby([df['date'].dt.to_period('1d')]).count().plot(kind='bar')\n",
"ax.set_xlabel('Date')\n",
"ax.legend([\"Events\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Adding different event types"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we assign randomly events to the dates."
]
},
{
"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>date</th>\n",
" <th>type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2015-01-14</td>\n",
" <td>xxx</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2015-01-14</td>\n",
" <td>bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2015-01-14</td>\n",
" <td>bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2015-01-15</td>\n",
" <td>xxx</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2015-01-15</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2015-01-15</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2015-01-15</td>\n",
" <td>xxx</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2015-01-16</td>\n",
" <td>bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>2015-01-16</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>2015-01-16</td>\n",
" <td>bar</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" date type\n",
"2 2015-01-14 xxx\n",
"3 2015-01-14 bar\n",
"4 2015-01-14 bar\n",
"1 2015-01-15 xxx\n",
"5 2015-01-15 foo\n",
"6 2015-01-15 foo\n",
"7 2015-01-15 xxx\n",
"0 2015-01-16 bar\n",
"8 2015-01-16 foo\n",
"9 2015-01-16 bar"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.random.seed(12)\n",
"df['type'] = np.random.choice(['foo','bar','xxx'],10)\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x109f419e8>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x109f3c908>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = pd.DataFrame([\n",
" pd.Series((df[df.type==str(x)]).groupby(['date']).count()['type']) for x in np.sort(df.type.unique())\n",
"]).transpose().plot(kind='bar')\n",
"ax.legend(sort(df.type.unique()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Denser events stream"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"DatetimeIndex(['2015-01-10 00:00:00', '2015-01-10 00:01:00',\n",
" '2015-01-10 00:02:00', '2015-01-10 00:03:00',\n",
" '2015-01-10 00:04:00', '2015-01-10 00:05:00',\n",
" '2015-01-10 00:06:00', '2015-01-10 00:07:00',\n",
" '2015-01-10 00:08:00', '2015-01-10 00:09:00',\n",
" ...\n",
" '2015-01-17 23:51:00', '2015-01-17 23:52:00',\n",
" '2015-01-17 23:53:00', '2015-01-17 23:54:00',\n",
" '2015-01-17 23:55:00', '2015-01-17 23:56:00',\n",
" '2015-01-17 23:57:00', '2015-01-17 23:58:00',\n",
" '2015-01-17 23:59:00', '2015-01-18 00:00:00'],\n",
" dtype='datetime64[ns]', length=11521, freq='T')"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"timeRange = pd.date_range(pd.to_datetime('2015-01-10'), pd.to_datetime('2015-01-18'), freq='T')\n",
"timeRange "
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df = pd.DataFrame(np.random.choice(timeRange,500), \n",
" columns=['date'])\n",
"df.sort_values('date',inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x10d2bcdd8>"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nccQDvKqqihNOOIG+ffuSmprKuHHjqKystLJNREQO44gHeE1NDb169YpczsnJoaamxpIoERGJTk9i\niogYyhYOh8NHcsOvvvqKN998k/vuuw+AJUuWYLPZ2jyR6ff78fv9kcter/coc0VEjk+lpaWRr91u\nN263G8JHqKWlJTx9+vRwdXV1uLm5OXznnXeGf/zxxyO9uyP2xhtvdPk+j4QJnSY0hsPqtJo6rdWV\nnUd8GqHdbue6667jb3/7W+Q0wpNOOsmS3zQiIhLdUZ0HPmrUKEaNGmVVi4iIdILxT2K63e5EJ8TE\nhE4TGkGdVlOntbqy84ifxBQRkcQy/ghcROR4pQEuImIoDXAREUMZNcAbGxtZuXIly5YtY9myZaxa\ntYrGxsZEZ8Vsw4YNiU6I2LVrF7/88ku77d9//30Cag6trq6Ouro6AILBIGvWrOHHH39McFV0ixcv\nTnRCVNXV1axZs4affvop0SltbN++nb179wL73jTvww8/5MUXX+S9994jFAoluO6AysrKSGei2GfP\nnj07oQUxKi8v58knn8Rms5Genk4oFOL7779n0aJFZGZmMmjQoEQnRjV79mwuvvjiRGewatUq5s6d\ny2effcby5csZMmQIOTk5APzf//0fkyZNSnDhPu+//z7PPvssH3zwAd26dWPRokXs2rWLpUuXkpaW\nxsknn5zoRABeeukl1q1b1+Y/H3zwAbW1taxbty5pTrV99NFHGTduHAAVFRUsWLCAUCjE0qVLycjI\nYPDgwQku3Ke4uJjzzz+f1NRUFi1aRFVVFWeccQZffvkla9eupaCgINGJANx1110sX76cH374gW7d\nutGvXz9sNluXNhzVeeBd6e2332bOnDlkZWW12d7Q0MC9995LUVFRYsJ+Zc6cOYe8rr6+vgtLDm3J\nkiXMmTOH7OxsqqqqePrpp/nDH/7A2LFjE53WxvLly5k/fz579+7l5ptv5sknnyQ7O5uGhgYefPBB\nzj///EQnAvDpp58ybNgw8vPzI9tWrlyZNL9g9gsEApGvfT4fs2bNom/fvuzcuZOHHnqIc889N4F1\nB4TDYdLT0wHYuHEjjzzyCCkpKUyYMIE777wzwXUHDBgwgAceeIA1a9awbNkynn32WcaMGcP48eMZ\nNmxYlzQYM8APpat/40WzZcsWpk+fTkZGRmSbzWYjHA5TVVWVwLIDWltbyc7OBiAvL49Zs2YxZ84c\nduzYkeCytux2OxkZGWRkZNCvX79Ic48ePRJc1tbjjz/OG2+8wfr167nmmmvIycnhzTffTJqDio60\ntLTQt29fAHr27JlU/z/q1asXGzdu5IwzzqBPnz4EAoHIL5pk6oR9/1ucOHEiEydOpLa2ltWrV7No\n0SJqamp47rnn4r5/Ywb4pZdeysyZM8nPz4+8jW0gEGDDhg1cdtllCa47IC8vj/T09A5P5u/fv38C\nitrr3r07v/zyCyeccAIA2dnZzJo1i8ceeyyp1pdtNhstLS2kpqZyzz33RLYnet3x1zIzM7n22mv5\n5ptveOqppxg1ahTJ+PKK77//nmuuuQaA5uZmamtryc7Oprm5Oal6b7zxRp5++mnefPNNMjMzufvu\nuxk0aBCNjY1cffXVic47pOzsbC688EIuvPBCtm3b1iX7NOqFPA0NDaxfv57a2lpg33uQjxgxIumO\nyJLdd999R3p6OieeeGKb7S0tLaxatYoJEyYkqKyt7du3k52dTWpq2+OMmpoatm7d2mbJIlm0trby\n3nvv8dVXX3HrrbcmOicmjY2NbN26ldNOOy3RKW1s3bqVn3/+mdbWVnr16sWQIUNISUme8y42bdrE\n8OHDE9pg1AAXEZEDkufX2VG44447Ep0QExM6TWgEdVpNndbqqk5j1sDXrFnTbtv+Jwf3nyecDEzo\nNKER1Gk1dVorGTqNGeALFixg3Lhx7dbAwuFwUj2pZUKnCY2gTqup01rJ0GnMAM/NzeX3v/89ubm5\n7a7btGlTAoo6ZkKnCY2gTqup01rJ0GnMKzEHDBiA0+ls90IegNNPPz3ySsJEM6HThEZQp9XUaa1k\n6NRZKCIihjL6LJQZM2YkOiEmJnSa0AjqtJo6rdXVnUYPcFP+eDCh04RGUKfV1Gmtru40eoCfeeaZ\niU6IiQmdJjSCOq2mTmt1dafWwEVEDGX0Efh+enWWdUxoBHVaTZ3W0isxfyUZXvUUCxM6TWgEdVpN\nndZKhk5jBngyvOopFiZ0mtAI6rSaOq2VDJ3GDPBkeNVTLEzoNKER1Gk1dVorGTr1SkyLmdBpQiOo\n02rqtFYydOosFBERQxmzhAKwfv16Pv30U2pqaoB9n8gzZswYRo4cmeCytkzoNKER1Gk1dVor0Z3G\nHIG//PLL/PLLL0yYMCHyp8mOHTv4+OOP6devH9ddd12CC/cxodOERlCn1dRpraToDBvilltu6XB7\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d2c4b70>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = df.groupby([df['date'].dt.to_period('D')]).count().plot(kind='bar')\n",
"ax.set_xlabel('Date')\n",
"ax.legend([\"Events\"])"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"np.random.seed(12)\n",
"df['type'] = np.random.choice(['foo','bar','xxx'],df.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1116ca550>"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10ede3fd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = pd.DataFrame([\n",
" pd.Series((df[df.type==str(x)]).groupby(\n",
" df['date'].dt.to_period('d')).count()['type']) for x in np.sort(df.type.unique())\n",
"]).transpose().plot(kind='bar')\n",
"ax.legend(sort(df.type.unique()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fancier solution"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Courtusy to [Romain X](http://stackoverflow.com/a/34820891/671013)."
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x11036a710>"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10f8bddd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df2 = df.groupby([df['date'].dt.to_period('D'), 'type']).count().unstack()\n",
"df2.columns = df2.columns.droplevel(0)\n",
"df2.plot(kind='bar')"
]
}
],
"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.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment