{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Data Preprocessor\n",
    "In this notebook I will preprocess the data for visualisation in d3.js"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Load data\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>volume</th>\n",
       "      <th>market</th>\n",
       "      <th>symbol</th>\n",
       "      <th>coin</th>\n",
       "      <th>variance</th>\n",
       "      <th>volatility</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2017-10-20</td>\n",
       "      <td>5708.11</td>\n",
       "      <td>6060.11</td>\n",
       "      <td>5627.23</td>\n",
       "      <td>6011.45</td>\n",
       "      <td>2.354430e+09</td>\n",
       "      <td>9.494790e+10</td>\n",
       "      <td>BTC</td>\n",
       "      <td>Bitcoin</td>\n",
       "      <td>0.050460</td>\n",
       "      <td>0.072009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2017-10-19</td>\n",
       "      <td>5583.74</td>\n",
       "      <td>5744.35</td>\n",
       "      <td>5531.06</td>\n",
       "      <td>5708.52</td>\n",
       "      <td>1.780540e+09</td>\n",
       "      <td>9.286700e+10</td>\n",
       "      <td>BTC</td>\n",
       "      <td>Bitcoin</td>\n",
       "      <td>0.021859</td>\n",
       "      <td>0.037363</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2017-10-18</td>\n",
       "      <td>5603.82</td>\n",
       "      <td>5603.82</td>\n",
       "      <td>5151.44</td>\n",
       "      <td>5590.69</td>\n",
       "      <td>2.399270e+09</td>\n",
       "      <td>9.319020e+10</td>\n",
       "      <td>BTC</td>\n",
       "      <td>Bitcoin</td>\n",
       "      <td>-0.002349</td>\n",
       "      <td>0.080917</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2017-10-17</td>\n",
       "      <td>5741.58</td>\n",
       "      <td>5800.35</td>\n",
       "      <td>5472.72</td>\n",
       "      <td>5605.51</td>\n",
       "      <td>1.821570e+09</td>\n",
       "      <td>9.546930e+10</td>\n",
       "      <td>BTC</td>\n",
       "      <td>Bitcoin</td>\n",
       "      <td>-0.024274</td>\n",
       "      <td>0.058448</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2017-10-16</td>\n",
       "      <td>5687.57</td>\n",
       "      <td>5776.23</td>\n",
       "      <td>5544.21</td>\n",
       "      <td>5725.59</td>\n",
       "      <td>2.008070e+09</td>\n",
       "      <td>9.455900e+10</td>\n",
       "      <td>BTC</td>\n",
       "      <td>Bitcoin</td>\n",
       "      <td>0.006640</td>\n",
       "      <td>0.040523</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2017-10-15</td>\n",
       "      <td>5835.96</td>\n",
       "      <td>5852.48</td>\n",
       "      <td>5478.61</td>\n",
       "      <td>5678.19</td>\n",
       "      <td>1.976040e+09</td>\n",
       "      <td>9.701190e+10</td>\n",
       "      <td>BTC</td>\n",
       "      <td>Bitcoin</td>\n",
       "      <td>-0.027785</td>\n",
       "      <td>0.065843</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2017-10-14</td>\n",
       "      <td>5643.53</td>\n",
       "      <td>5837.70</td>\n",
       "      <td>5591.64</td>\n",
       "      <td>5831.79</td>\n",
       "      <td>1.669030e+09</td>\n",
       "      <td>9.380300e+10</td>\n",
       "      <td>BTC</td>\n",
       "      <td>Bitcoin</td>\n",
       "      <td>0.032282</td>\n",
       "      <td>0.042193</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2017-10-13</td>\n",
       "      <td>5464.16</td>\n",
       "      <td>5840.30</td>\n",
       "      <td>5436.85</td>\n",
       "      <td>5647.21</td>\n",
       "      <td>3.615480e+09</td>\n",
       "      <td>9.081240e+10</td>\n",
       "      <td>BTC</td>\n",
       "      <td>Bitcoin</td>\n",
       "      <td>0.032414</td>\n",
       "      <td>0.071442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2017-10-12</td>\n",
       "      <td>4829.58</td>\n",
       "      <td>5446.91</td>\n",
       "      <td>4822.00</td>\n",
       "      <td>5446.91</td>\n",
       "      <td>2.791610e+09</td>\n",
       "      <td>8.025670e+10</td>\n",
       "      <td>BTC</td>\n",
       "      <td>Bitcoin</td>\n",
       "      <td>0.113336</td>\n",
       "      <td>0.114727</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2017-10-11</td>\n",
       "      <td>4789.25</td>\n",
       "      <td>4873.73</td>\n",
       "      <td>4751.63</td>\n",
       "      <td>4826.48</td>\n",
       "      <td>1.222280e+09</td>\n",
       "      <td>7.957820e+10</td>\n",
       "      <td>BTC</td>\n",
       "      <td>Bitcoin</td>\n",
       "      <td>0.007714</td>\n",
       "      <td>0.025298</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        date     open     high      low    close        volume        market  \\\n",
       "0 2017-10-20  5708.11  6060.11  5627.23  6011.45  2.354430e+09  9.494790e+10   \n",
       "1 2017-10-19  5583.74  5744.35  5531.06  5708.52  1.780540e+09  9.286700e+10   \n",
       "2 2017-10-18  5603.82  5603.82  5151.44  5590.69  2.399270e+09  9.319020e+10   \n",
       "3 2017-10-17  5741.58  5800.35  5472.72  5605.51  1.821570e+09  9.546930e+10   \n",
       "4 2017-10-16  5687.57  5776.23  5544.21  5725.59  2.008070e+09  9.455900e+10   \n",
       "5 2017-10-15  5835.96  5852.48  5478.61  5678.19  1.976040e+09  9.701190e+10   \n",
       "6 2017-10-14  5643.53  5837.70  5591.64  5831.79  1.669030e+09  9.380300e+10   \n",
       "7 2017-10-13  5464.16  5840.30  5436.85  5647.21  3.615480e+09  9.081240e+10   \n",
       "8 2017-10-12  4829.58  5446.91  4822.00  5446.91  2.791610e+09  8.025670e+10   \n",
       "9 2017-10-11  4789.25  4873.73  4751.63  4826.48  1.222280e+09  7.957820e+10   \n",
       "\n",
       "  symbol     coin  variance  volatility  \n",
       "0    BTC  Bitcoin  0.050460    0.072009  \n",
       "1    BTC  Bitcoin  0.021859    0.037363  \n",
       "2    BTC  Bitcoin -0.002349    0.080917  \n",
       "3    BTC  Bitcoin -0.024274    0.058448  \n",
       "4    BTC  Bitcoin  0.006640    0.040523  \n",
       "5    BTC  Bitcoin -0.027785    0.065843  \n",
       "6    BTC  Bitcoin  0.032282    0.042193  \n",
       "7    BTC  Bitcoin  0.032414    0.071442  \n",
       "8    BTC  Bitcoin  0.113336    0.114727  \n",
       "9    BTC  Bitcoin  0.007714    0.025298  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('crypto-markets.csv')\n",
    "data['date'] = pd.to_datetime(data['date'], format='%Y-%m-%d', errors='coerce')\n",
    "\n",
    "data[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Create volume chart\n",
    "vol = data.groupby(['date'])['date','volume'].sum()\n",
    "vol = vol[vol['volume'] != 0]\n",
    "vol.to_csv('volume.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# bar chart\n",
    "bar = data[['date', 'volume', 'coin']].copy()\n",
    "all_bar = bar[['volume', 'coin']]\n",
    "\n",
    "not_top2 = all_bar.groupby('coin').sum().sort_values('volume', ascending=False).index[10:]\n",
    "bar['coin'] = bar['coin'].replace(not_top2, 'other')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "bar_proc = bar.groupby([bar['date'].dt.to_period('M'), 'coin'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nauJ/Acz2XLpusNoKAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe52ecde208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe52b3a8710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "bar_result = bar_proc.sum()\n",
    "bar_result = bar_result.unstack(level=-1)\n",
    "bar_result.columns = bar_result.columns.droplevel(0)\n",
    "\n",
    "\n",
    "plt.cla()\n",
    "bar_result.plot.bar(stacked=True)\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "bar_result.to_csv('volume_per_coin_per_month.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pizza's per BTC\n",
    "pizzas = data[data['symbol'] == 'BTC'][['date', 'low', 'high']]\n",
    "pizza_price = 10.0  # USD\n",
    "pizzas['low'] = pizzas['low'] / pizza_price\n",
    "pizzas['high'] = pizzas['high'] / pizza_price\n",
    "pizzas = pizzas.set_index('date').sort_index()\n",
    "pizzas.to_csv('pizzas_per_btc.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "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.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
