Skip to content

Instantly share code, notes, and snippets.

@hellais
Last active December 28, 2016 05:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save hellais/190780782d920e1d8523f37c002cc952 to your computer and use it in GitHub Desktop.
Save hellais/190780782d920e1d8523f37c002cc952 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import os\n",
"from tqdm import tqdm\n",
"import json\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"import dask.bag as db\n",
"import datetime as dt\n",
"from dateutil.parser import parse as parse_date\n",
"import requests\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Load the web connectivity measurements by parsing the JSON records line by line\n",
"web_conn = db.read_text('../ocli/my-reports/*web_connectivity*.json',\n",
" linedelimiter=b'\\n').map(json.loads)"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# If we see cloudflare CAPTCHA, mark the blocking reason as \"cloudflare\"\n",
"def get_blocking_reason(test_keys):\n",
" CLOUDFLARE_STRING = 'Attention Required! | CloudFlare'\n",
" for session in test_keys['requests']:\n",
" if session['response'] is None:\n",
" continue\n",
" if isinstance(session['response']['body'], unicode):\n",
" if CLOUDFLARE_STRING in session['response']['body']:\n",
" return 'cloudflare'\n",
" return test_keys['blocking']"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"CENSOR_IPS = [\n",
" \"175.139.142.25\"\n",
"]\n",
"BLOCKPAGE_FINGERPRINTS = [\n",
" \"This website is not available in Malaysia as it violate\"\n",
"]\n",
"def known_for_blocking(test_keys):\n",
" for query in test_keys['queries']:\n",
" for answer in query['answers']:\n",
" if answer.get('ipv4', None) in CENSOR_IPS:\n",
" return 'blkdns'\n",
" for session in test_keys['requests']:\n",
" if session['response'] is None:\n",
" continue\n",
" body = session['response']['body']\n",
" if isinstance(body, unicode):\n",
" if any([fp in body for fp in BLOCKPAGE_FINGERPRINTS]):\n",
" return 'blkpage'\n",
" return 'none'"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"blk_i_tstmp_asn = web_conn.map(\n",
" lambda x: (\n",
" get_blocking_reason(x['test_keys']),\n",
" known_for_blocking(x['test_keys']),\n",
" x['input'],\n",
" parse_date(x['measurement_start_time']) if x['measurement_start_time'] else parse_date(x['test_start_time']), \n",
" x['probe_asn'],\n",
" x['test_keys']['http_experiment_failure']\n",
" )\n",
").compute()"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"blk_i_t = pd.DataFrame(\n",
" blk_i_tstmp_asn,\n",
" columns=['blocking', 'confirmed', 'input', 'measurement_start_time', 'probe_asn', 'http_experiment_failure'])"
]
},
{
"cell_type": "code",
"execution_count": 141,
"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>blocking</th>\n",
" <th>confirmed</th>\n",
" <th>input</th>\n",
" <th>measurement_start_time</th>\n",
" <th>probe_asn</th>\n",
" <th>http_experiment_failure</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>False</td>\n",
" <td>none</td>\n",
" <td>http://bbs.buysell.net.my</td>\n",
" <td>2016-09-24 03:32:08</td>\n",
" <td>AS17971</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>False</td>\n",
" <td>none</td>\n",
" <td>http://asiafriendfinder.com</td>\n",
" <td>2016-09-24 03:32:08</td>\n",
" <td>AS17971</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>False</td>\n",
" <td>none</td>\n",
" <td>http://anwaribrahimblog.com</td>\n",
" <td>2016-09-24 03:32:08</td>\n",
" <td>AS17971</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>False</td>\n",
" <td>none</td>\n",
" <td>http://adb.org</td>\n",
" <td>2016-09-24 03:32:08</td>\n",
" <td>AS17971</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>False</td>\n",
" <td>none</td>\n",
" <td>http://bebasmedia.tripod.com</td>\n",
" <td>2016-09-24 03:32:12</td>\n",
" <td>AS17971</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" blocking confirmed input measurement_start_time \\\n",
"0 False none http://bbs.buysell.net.my 2016-09-24 03:32:08 \n",
"1 False none http://asiafriendfinder.com 2016-09-24 03:32:08 \n",
"2 False none http://anwaribrahimblog.com 2016-09-24 03:32:08 \n",
"3 False none http://adb.org 2016-09-24 03:32:08 \n",
"4 False none http://bebasmedia.tripod.com 2016-09-24 03:32:12 \n",
"\n",
" probe_asn http_experiment_failure \n",
"0 AS17971 None \n",
"1 AS17971 None \n",
"2 AS17971 None \n",
"3 AS17971 None \n",
"4 AS17971 None "
]
},
"execution_count": 141,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"blk_i_t.head()"
]
},
{
"cell_type": "code",
"execution_count": 142,
"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>blocking</th>\n",
" <th>confirmed</th>\n",
" <th>input</th>\n",
" <th>measurement_start_time</th>\n",
" <th>probe_asn</th>\n",
" <th>http_experiment_failure</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>189040</th>\n",
" <td>tcp_ip</td>\n",
" <td>none</td>\n",
" <td>http://www.xanga.com</td>\n",
" <td>2016-11-13 23:06:31</td>\n",
" <td>AS4788</td>\n",
" <td>generic_timeout_error</td>\n",
" </tr>\n",
" <tr>\n",
" <th>189041</th>\n",
" <td>dns</td>\n",
" <td>blkdns</td>\n",
" <td>https://thepiratebay.se</td>\n",
" <td>2016-11-13 23:07:28</td>\n",
" <td>AS4788</td>\n",
" <td>generic_timeout_error</td>\n",
" </tr>\n",
" <tr>\n",
" <th>189042</th>\n",
" <td>False</td>\n",
" <td>none</td>\n",
" <td>http://www.truecrypt.org</td>\n",
" <td>2016-11-13 23:03:41</td>\n",
" <td>AS4788</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>189043</th>\n",
" <td>None</td>\n",
" <td>none</td>\n",
" <td>http://www.wallpapergate.com</td>\n",
" <td>2016-11-13 23:05:09</td>\n",
" <td>AS4788</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>189044</th>\n",
" <td>False</td>\n",
" <td>none</td>\n",
" <td>https://web.whatsapp.com/</td>\n",
" <td>2016-11-14 00:00:50</td>\n",
" <td>AS4788</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" blocking confirmed input \\\n",
"189040 tcp_ip none http://www.xanga.com \n",
"189041 dns blkdns https://thepiratebay.se \n",
"189042 False none http://www.truecrypt.org \n",
"189043 None none http://www.wallpapergate.com \n",
"189044 False none https://web.whatsapp.com/ \n",
"\n",
" measurement_start_time probe_asn http_experiment_failure \n",
"189040 2016-11-13 23:06:31 AS4788 generic_timeout_error \n",
"189041 2016-11-13 23:07:28 AS4788 generic_timeout_error \n",
"189042 2016-11-13 23:03:41 AS4788 None \n",
"189043 2016-11-13 23:05:09 AS4788 None \n",
"189044 2016-11-14 00:00:50 AS4788 None "
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"blk_i_t.tail()"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"blk_i_t['day'] = blk_i_t['measurement_start_time'].apply(lambda x: x.strftime(\"%Y-%m-%d\"))"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"by_day = blk_i_t[['blocking', 'input', 'day', 'http_experiment_failure']]"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x11ab63450>"
]
},
"execution_count": 150,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1132e8550>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"by_day[by_day['blocking'] != False].groupby(['day', 'blocking'], as_index=False) \\\n",
" .count() \\\n",
" .pivot(index='day', columns='blocking', values='input') \\\n",
" .plot(kind='bar', stacked=True)"
]
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"anomaly_counts = by_day.groupby(['input', 'blocking'],\n",
" as_index=False).count()\\\n",
" .pivot(index='input', columns='blocking', values='day')\\\n",
" .fillna(0).reset_index()"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>blocking</th>\n",
" <th>input</th>\n",
" <th>False</th>\n",
" <th>cloudflare</th>\n",
" <th>dns</th>\n",
" <th>http-diff</th>\n",
" <th>http-failure</th>\n",
" <th>tcp_ip</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>http://666games.net</td>\n",
" <td>127.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>http://7rangers.blogspot.com/</td>\n",
" <td>56.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>http://8thstreetlatinas.com</td>\n",
" <td>127.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>http://911lies.org</td>\n",
" <td>127.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>http://a1408.g.akamai.net/5/1408/1388/20051104...</td>\n",
" <td>127.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"blocking input False \\\n",
"0 http://666games.net 127.0 \n",
"1 http://7rangers.blogspot.com/ 56.0 \n",
"2 http://8thstreetlatinas.com 127.0 \n",
"3 http://911lies.org 127.0 \n",
"4 http://a1408.g.akamai.net/5/1408/1388/20051104... 127.0 \n",
"\n",
"blocking cloudflare dns http-diff http-failure tcp_ip \n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 2.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 "
]
},
"execution_count": 152,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"anomaly_counts.head()"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"anomaly_counts.columns = ['input', 'false', 'cloudflare', 'dns', 'http-diff', 'http-failure', 'tcp_ip']"
]
},
{
"cell_type": "code",
"execution_count": 154,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"anomaly_counts['anomalies'] = (anomaly_counts['dns'] + anomaly_counts['http-diff'] +\n",
" anomaly_counts['http-failure'] + anomaly_counts['tcp_ip'])\n",
"srt_anmly = anomaly_counts.sort_values('anomalies', ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 155,
"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>input</th>\n",
" <th>false</th>\n",
" <th>cloudflare</th>\n",
" <th>dns</th>\n",
" <th>http-diff</th>\n",
" <th>http-failure</th>\n",
" <th>tcp_ip</th>\n",
" <th>anomalies</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>158</th>\n",
" <td>http://internet-haganah.com</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>0.0</td>\n",
" <td>123.0</td>\n",
" <td>0.0</td>\n",
" <td>127.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>249</th>\n",
" <td>http://pornhub.com</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>55.0</td>\n",
" <td>67.0</td>\n",
" <td>4.0</td>\n",
" <td>0.0</td>\n",
" <td>126.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1337</th>\n",
" <td>http://www.stormfront.org</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>3.0</td>\n",
" <td>122.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>125.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1450</th>\n",
" <td>http://www.venusswimwear.com</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>14.0</td>\n",
" <td>111.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>125.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1612</th>\n",
" <td>https://www.paypal.com</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>123.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>125.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" input false cloudflare dns http-diff \\\n",
"158 http://internet-haganah.com 0.0 0.0 4.0 0.0 \n",
"249 http://pornhub.com 0.0 0.0 55.0 67.0 \n",
"1337 http://www.stormfront.org 0.0 0.0 3.0 122.0 \n",
"1450 http://www.venusswimwear.com 0.0 0.0 14.0 111.0 \n",
"1612 https://www.paypal.com 0.0 0.0 2.0 123.0 \n",
"\n",
" http-failure tcp_ip anomalies \n",
"158 123.0 0.0 127.0 \n",
"249 4.0 0.0 126.0 \n",
"1337 0.0 0.0 125.0 \n",
"1450 0.0 0.0 125.0 \n",
"1612 0.0 0.0 125.0 "
]
},
"execution_count": 155,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"srt_anmly.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 156,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"dns_blocked = pd.DataFrame(blk_i_t[\n",
" (blk_i_t['confirmed'] == 'blkdns')\n",
"]['input'].unique())\n",
"\n",
"http_blocked = pd.DataFrame(blk_i_t[\n",
" (blk_i_t['confirmed'] == 'blkpage')\n",
"]['input'].unique())\n",
"# Remove from HTTP Blocked the rows that are identified as being part of dns blocked.\n",
"http_blocked = http_blocked[http_blocked.isin(dns_blocked)].dropna()"
]
},
{
"cell_type": "code",
"execution_count": 157,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"TEST_LISTS = \"../test-lists/\"\n",
"g_lst = pd.read_csv(os.path.join(TEST_LISTS, 'lists', 'global.csv'))\n",
"my_lst = pd.read_csv(os.path.join(TEST_LISTS, 'lists', 'my.csv'))\n",
"all_lst = pd.concat([g_lst, my_lst])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 158,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"http_blocked_cats = http_blocked.set_index(0).join(all_lst.set_index('url')).fillna(\"unknown\")\n",
"dns_blocked_cats = dns_blocked.set_index(0).join(all_lst.set_index('url')).fillna(\"unknown\")"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([<matplotlib.axes._subplots.AxesSubplot object at 0x11479c090>], dtype=object)"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nl/9KmtR+AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11ad7ff90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dns_blocked_cats['category_description'].value_counts().plot.pie(subplots=True)"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#http_blocked_cats['category_description'].value_counts().plot.pie(subplots=True)"
]
},
{
"cell_type": "code",
"execution_count": 162,
"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>category_code</th>\n",
" <th>category_description</th>\n",
" <th>date_added</th>\n",
" <th>source</th>\n",
" <th>notes</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [category_code, category_description, date_added, source, notes]\n",
"Index: []"
]
},
"execution_count": 162,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"http_blocked_cats"
]
},
{
"cell_type": "code",
"execution_count": 165,
"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>category_code</th>\n",
" <th>category_description</th>\n",
" <th>date_added</th>\n",
" <th>source</th>\n",
" <th>notes</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>http://adultfriendfinder.com</th>\n",
" <td>DATE</td>\n",
" <td>Dating</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://beeg.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://extratorrent.cc</th>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://jinggo-fotopages.blogspot.my/</th>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://kat.cr</th>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://malaysia-chronicle.com</th>\n",
" <td>FEXP</td>\n",
" <td>Free expression and media freedom</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://manhub.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://pornhub.com</th>\n",
" <td>FEXP</td>\n",
" <td>Free expression and media freedom</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://redtube.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://syedsoutsidethebox.blogspot.my/</th>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://tabunginsider.blogspot.my/</th>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://thepiratebay.org</th>\n",
" <td>P2P</td>\n",
" <td>Peer-to-peer computing</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.888casino.com</th>\n",
" <td>GMB</td>\n",
" <td>Gambling</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.89.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.ashemaletube.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.asiasentinel.com</th>\n",
" <td>FEXP</td>\n",
" <td>Freedom of expression and media freedom</td>\n",
" <td>2016-03-30</td>\n",
" <td>sinarproject</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.belmont.ag</th>\n",
" <td>GMB</td>\n",
" <td>Gambling</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.betfair.com</th>\n",
" <td>GMB</td>\n",
" <td>Gambling</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.carnivalcasino.com</th>\n",
" <td>GMB</td>\n",
" <td>Gambling</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.casinotropez.com</th>\n",
" <td>GMB</td>\n",
" <td>Gambling</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.clubdicecasino.com</th>\n",
" <td>GMB</td>\n",
" <td>Gambling</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.europacasino.com</th>\n",
" <td>GMB</td>\n",
" <td>Gambling</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.goldenrivieracasino.com</th>\n",
" <td>GMB</td>\n",
" <td>Gambling</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.hustler.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.livejasmin.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.roxypalace.com</th>\n",
" <td>GMB</td>\n",
" <td>Gambling</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.sarawakreport.org</th>\n",
" <td>FEXP</td>\n",
" <td>Freedom of expression and media freedom</td>\n",
" <td>2016-03-30</td>\n",
" <td>sinarproject</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.sarawakreport.org/2016/04/the-simple-silver-bullet-solution-to-1mdb-malaysias-financial-woes-sack-najib/</th>\n",
" <td>POLR</td>\n",
" <td>Political Criticism</td>\n",
" <td>2016-06-10</td>\n",
" <td>OONI</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.sarawakreport.org/tag/1mdb</th>\n",
" <td>POLR</td>\n",
" <td>Political Criticism</td>\n",
" <td>2016-06-10</td>\n",
" <td>OONI</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.sex.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.spinpalace.com</th>\n",
" <td>GMB</td>\n",
" <td>Gambling</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.themalaysianinsider.com</th>\n",
" <td>FEXP</td>\n",
" <td>Free expression and media freedom</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.themalaysianinsider.com/</th>\n",
" <td>POLR</td>\n",
" <td>Political Criticism</td>\n",
" <td>2016-06-10</td>\n",
" <td>OONI</td>\n",
" <td>This website was shutdown on March 15th 2016</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.thereligionofpeace.com</th>\n",
" <td>REL</td>\n",
" <td>Religious conversion, commentary and criticism</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.wetplace.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://www.worldsex.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://xhamster.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://xvideos.com</th>\n",
" <td>FEXP</td>\n",
" <td>Free expression and media freedom</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://youjizz.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>http://youporn.com</th>\n",
" <td>PORN</td>\n",
" <td>Pornography</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>https://medium.com</th>\n",
" <td>BLGSERV</td>\n",
" <td>Blogging services</td>\n",
" <td>2016-03-30</td>\n",
" <td>sinarproject</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>https://thepiratebay.se</th>\n",
" <td>P2P</td>\n",
" <td>Peer-to-peer computing</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>https://torrentz.eu</th>\n",
" <td>P2P</td>\n",
" <td>Peer-to-peer computing</td>\n",
" <td>2014-04-15</td>\n",
" <td>citizenlab</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>NaN</th>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" category_code \\\n",
"http://adultfriendfinder.com DATE \n",
"http://beeg.com PORN \n",
"http://extratorrent.cc unknown \n",
"http://jinggo-fotopages.blogspot.my/ unknown \n",
"http://kat.cr unknown \n",
"http://malaysia-chronicle.com FEXP \n",
"http://manhub.com PORN \n",
"http://pornhub.com FEXP \n",
"http://redtube.com PORN \n",
"http://syedsoutsidethebox.blogspot.my/ unknown \n",
"http://tabunginsider.blogspot.my/ unknown \n",
"http://thepiratebay.org P2P \n",
"http://www.888casino.com GMB \n",
"http://www.89.com PORN \n",
"http://www.ashemaletube.com PORN \n",
"http://www.asiasentinel.com FEXP \n",
"http://www.belmont.ag GMB \n",
"http://www.betfair.com GMB \n",
"http://www.carnivalcasino.com GMB \n",
"http://www.casinotropez.com GMB \n",
"http://www.clubdicecasino.com GMB \n",
"http://www.europacasino.com GMB \n",
"http://www.goldenrivieracasino.com GMB \n",
"http://www.hustler.com PORN \n",
"http://www.livejasmin.com PORN \n",
"http://www.roxypalace.com GMB \n",
"http://www.sarawakreport.org FEXP \n",
"http://www.sarawakreport.org/2016/04/the-simple... POLR \n",
"http://www.sarawakreport.org/tag/1mdb POLR \n",
"http://www.sex.com PORN \n",
"http://www.spinpalace.com GMB \n",
"http://www.themalaysianinsider.com FEXP \n",
"http://www.themalaysianinsider.com/ POLR \n",
"http://www.thereligionofpeace.com REL \n",
"http://www.wetplace.com PORN \n",
"http://www.worldsex.com PORN \n",
"http://xhamster.com PORN \n",
"http://xvideos.com FEXP \n",
"http://youjizz.com PORN \n",
"http://youporn.com PORN \n",
"https://medium.com BLGSERV \n",
"https://thepiratebay.se P2P \n",
"https://torrentz.eu P2P \n",
"NaN unknown \n",
"\n",
" category_description \\\n",
"http://adultfriendfinder.com Dating \n",
"http://beeg.com Pornography \n",
"http://extratorrent.cc unknown \n",
"http://jinggo-fotopages.blogspot.my/ unknown \n",
"http://kat.cr unknown \n",
"http://malaysia-chronicle.com Free expression and media freedom \n",
"http://manhub.com Pornography \n",
"http://pornhub.com Free expression and media freedom \n",
"http://redtube.com Pornography \n",
"http://syedsoutsidethebox.blogspot.my/ unknown \n",
"http://tabunginsider.blogspot.my/ unknown \n",
"http://thepiratebay.org Peer-to-peer computing \n",
"http://www.888casino.com Gambling \n",
"http://www.89.com Pornography \n",
"http://www.ashemaletube.com Pornography \n",
"http://www.asiasentinel.com Freedom of expression and media freedom \n",
"http://www.belmont.ag Gambling \n",
"http://www.betfair.com Gambling \n",
"http://www.carnivalcasino.com Gambling \n",
"http://www.casinotropez.com Gambling \n",
"http://www.clubdicecasino.com Gambling \n",
"http://www.europacasino.com Gambling \n",
"http://www.goldenrivieracasino.com Gambling \n",
"http://www.hustler.com Pornography \n",
"http://www.livejasmin.com Pornography \n",
"http://www.roxypalace.com Gambling \n",
"http://www.sarawakreport.org Freedom of expression and media freedom \n",
"http://www.sarawakreport.org/2016/04/the-simple... Political Criticism \n",
"http://www.sarawakreport.org/tag/1mdb Political Criticism \n",
"http://www.sex.com Pornography \n",
"http://www.spinpalace.com Gambling \n",
"http://www.themalaysianinsider.com Free expression and media freedom \n",
"http://www.themalaysianinsider.com/ Political Criticism \n",
"http://www.thereligionofpeace.com Religious conversion, commentary and criticism \n",
"http://www.wetplace.com Pornography \n",
"http://www.worldsex.com Pornography \n",
"http://xhamster.com Pornography \n",
"http://xvideos.com Free expression and media freedom \n",
"http://youjizz.com Pornography \n",
"http://youporn.com Pornography \n",
"https://medium.com Blogging services \n",
"https://thepiratebay.se Peer-to-peer computing \n",
"https://torrentz.eu Peer-to-peer computing \n",
"NaN unknown \n",
"\n",
" date_added source \\\n",
"http://adultfriendfinder.com 2014-04-15 citizenlab \n",
"http://beeg.com 2014-04-15 citizenlab \n",
"http://extratorrent.cc unknown unknown \n",
"http://jinggo-fotopages.blogspot.my/ unknown unknown \n",
"http://kat.cr unknown unknown \n",
"http://malaysia-chronicle.com 2014-04-15 citizenlab \n",
"http://manhub.com 2014-04-15 citizenlab \n",
"http://pornhub.com 2014-04-15 citizenlab \n",
"http://redtube.com 2014-04-15 citizenlab \n",
"http://syedsoutsidethebox.blogspot.my/ unknown unknown \n",
"http://tabunginsider.blogspot.my/ unknown unknown \n",
"http://thepiratebay.org 2014-04-15 citizenlab \n",
"http://www.888casino.com 2014-04-15 citizenlab \n",
"http://www.89.com 2014-04-15 citizenlab \n",
"http://www.ashemaletube.com 2014-04-15 citizenlab \n",
"http://www.asiasentinel.com 2016-03-30 sinarproject \n",
"http://www.belmont.ag 2014-04-15 citizenlab \n",
"http://www.betfair.com 2014-04-15 citizenlab \n",
"http://www.carnivalcasino.com 2014-04-15 citizenlab \n",
"http://www.casinotropez.com 2014-04-15 citizenlab \n",
"http://www.clubdicecasino.com 2014-04-15 citizenlab \n",
"http://www.europacasino.com 2014-04-15 citizenlab \n",
"http://www.goldenrivieracasino.com 2014-04-15 citizenlab \n",
"http://www.hustler.com 2014-04-15 citizenlab \n",
"http://www.livejasmin.com 2014-04-15 citizenlab \n",
"http://www.roxypalace.com 2014-04-15 citizenlab \n",
"http://www.sarawakreport.org 2016-03-30 sinarproject \n",
"http://www.sarawakreport.org/2016/04/the-simple... 2016-06-10 OONI \n",
"http://www.sarawakreport.org/tag/1mdb 2016-06-10 OONI \n",
"http://www.sex.com 2014-04-15 citizenlab \n",
"http://www.spinpalace.com 2014-04-15 citizenlab \n",
"http://www.themalaysianinsider.com 2014-04-15 citizenlab \n",
"http://www.themalaysianinsider.com/ 2016-06-10 OONI \n",
"http://www.thereligionofpeace.com 2014-04-15 citizenlab \n",
"http://www.wetplace.com 2014-04-15 citizenlab \n",
"http://www.worldsex.com 2014-04-15 citizenlab \n",
"http://xhamster.com 2014-04-15 citizenlab \n",
"http://xvideos.com 2014-04-15 citizenlab \n",
"http://youjizz.com 2014-04-15 citizenlab \n",
"http://youporn.com 2014-04-15 citizenlab \n",
"https://medium.com 2016-03-30 sinarproject \n",
"https://thepiratebay.se 2014-04-15 citizenlab \n",
"https://torrentz.eu 2014-04-15 citizenlab \n",
"NaN unknown unknown \n",
"\n",
" notes \n",
"http://adultfriendfinder.com unknown \n",
"http://beeg.com unknown \n",
"http://extratorrent.cc unknown \n",
"http://jinggo-fotopages.blogspot.my/ unknown \n",
"http://kat.cr unknown \n",
"http://malaysia-chronicle.com unknown \n",
"http://manhub.com unknown \n",
"http://pornhub.com unknown \n",
"http://redtube.com unknown \n",
"http://syedsoutsidethebox.blogspot.my/ unknown \n",
"http://tabunginsider.blogspot.my/ unknown \n",
"http://thepiratebay.org unknown \n",
"http://www.888casino.com unknown \n",
"http://www.89.com unknown \n",
"http://www.ashemaletube.com unknown \n",
"http://www.asiasentinel.com unknown \n",
"http://www.belmont.ag unknown \n",
"http://www.betfair.com unknown \n",
"http://www.carnivalcasino.com unknown \n",
"http://www.casinotropez.com unknown \n",
"http://www.clubdicecasino.com unknown \n",
"http://www.europacasino.com unknown \n",
"http://www.goldenrivieracasino.com unknown \n",
"http://www.hustler.com unknown \n",
"http://www.livejasmin.com unknown \n",
"http://www.roxypalace.com unknown \n",
"http://www.sarawakreport.org unknown \n",
"http://www.sarawakreport.org/2016/04/the-simple... unknown \n",
"http://www.sarawakreport.org/tag/1mdb unknown \n",
"http://www.sex.com unknown \n",
"http://www.spinpalace.com unknown \n",
"http://www.themalaysianinsider.com unknown \n",
"http://www.themalaysianinsider.com/ This website was shutdown on March 15th 2016 \n",
"http://www.thereligionofpeace.com unknown \n",
"http://www.wetplace.com unknown \n",
"http://www.worldsex.com unknown \n",
"http://xhamster.com unknown \n",
"http://xvideos.com unknown \n",
"http://youjizz.com unknown \n",
"http://youporn.com unknown \n",
"https://medium.com unknown \n",
"https://thepiratebay.se unknown \n",
"https://torrentz.eu unknown \n",
"NaN unknown "
]
},
"execution_count": 165,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dns_blocked_cats"
]
},
{
"cell_type": "code",
"execution_count": 172,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"blkd_measures = blk_i_t[blk_i_t['input'].isin(dns_blocked[0])]"
]
},
{
"cell_type": "code",
"execution_count": 173,
"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>blocking</th>\n",
" <th>confirmed</th>\n",
" <th>input</th>\n",
" <th>measurement_start_time</th>\n",
" <th>probe_asn</th>\n",
" <th>http_experiment_failure</th>\n",
" <th>day</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>dns</td>\n",
" <td>blkdns</td>\n",
" <td>http://malaysia-chronicle.com</td>\n",
" <td>2016-09-24 03:32:58</td>\n",
" <td>AS17971</td>\n",
" <td>None</td>\n",
" <td>2016-09-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>251</th>\n",
" <td>dns</td>\n",
" <td>blkdns</td>\n",
" <td>http://www.themalaysianinsider.com</td>\n",
" <td>2016-09-24 03:47:22</td>\n",
" <td>AS17971</td>\n",
" <td>None</td>\n",
" <td>2016-09-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>253</th>\n",
" <td>False</td>\n",
" <td>none</td>\n",
" <td>http://www.thereligionofpeace.com</td>\n",
" <td>2016-09-24 03:47:24</td>\n",
" <td>AS17971</td>\n",
" <td>None</td>\n",
" <td>2016-09-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>292</th>\n",
" <td>dns</td>\n",
" <td>blkdns</td>\n",
" <td>http://www.asiasentinel.com</td>\n",
" <td>2016-09-24 03:49:08</td>\n",
" <td>AS17971</td>\n",
" <td>None</td>\n",
" <td>2016-09-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>293</th>\n",
" <td>http-diff</td>\n",
" <td>blkdns</td>\n",
" <td>http://www.sarawakreport.org</td>\n",
" <td>2016-09-24 03:49:15</td>\n",
" <td>AS17971</td>\n",
" <td>None</td>\n",
" <td>2016-09-24</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" blocking confirmed input \\\n",
"27 dns blkdns http://malaysia-chronicle.com \n",
"251 dns blkdns http://www.themalaysianinsider.com \n",
"253 False none http://www.thereligionofpeace.com \n",
"292 dns blkdns http://www.asiasentinel.com \n",
"293 http-diff blkdns http://www.sarawakreport.org \n",
"\n",
" measurement_start_time probe_asn http_experiment_failure day \n",
"27 2016-09-24 03:32:58 AS17971 None 2016-09-24 \n",
"251 2016-09-24 03:47:22 AS17971 None 2016-09-24 \n",
"253 2016-09-24 03:47:24 AS17971 None 2016-09-24 \n",
"292 2016-09-24 03:49:08 AS17971 None 2016-09-24 \n",
"293 2016-09-24 03:49:15 AS17971 None 2016-09-24 "
]
},
"execution_count": 173,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"blkd_measures.head()"
]
},
{
"cell_type": "code",
"execution_count": 204,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"first_measured = blkd_measures.loc[blkd_measures.groupby('input')['measurement_start_time']\\\n",
" .idxmin()][['input', 'measurement_start_time']]\n",
"first_measured.columns = ['input', 'first_measured']"
]
},
{
"cell_type": "code",
"execution_count": 205,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"first_blocked = blkd_measures.loc[blkd_measures[\n",
" (blkd_measures['confirmed'] == 'blkdns') |\n",
" (blkd_measures['confirmed'] == 'blkpage')\n",
" ].groupby('input')['measurement_start_time']\\\n",
" .idxmin()][['input', 'measurement_start_time']]\n",
"first_blocked.columns = ['input', 'first_blocked']"
]
},
{
"cell_type": "code",
"execution_count": 206,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"last_blocked = blkd_measures.loc[blkd_measures[\n",
" (blkd_measures['confirmed'] == 'blkdns') |\n",
" (blkd_measures['confirmed'] == 'blkpage') \n",
" ].groupby('input')['measurement_start_time']\\\n",
" .idxmax()][['input', 'measurement_start_time']]\n",
"last_blocked.columns = ['input', 'last_blocked']"
]
},
{
"cell_type": "code",
"execution_count": 207,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"last_measured = blkd_measures.loc[blkd_measures.groupby('input')['measurement_start_time']\\\n",
" .idxmax()][['input', 'measurement_start_time']]\n",
"last_measured.columns = ['input', 'last_measured']"
]
},
{
"cell_type": "code",
"execution_count": 208,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"blk_timeline = first_measured.set_index('input')\\\n",
" .join(first_blocked.set_index('input'))\\\n",
" .join(last_blocked.set_index('input'))\\\n",
" .join(last_measured.set_index('input'))"
]
},
{
"cell_type": "code",
"execution_count": 209,
"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>input</th>\n",
" <th>first_measured</th>\n",
" <th>first_blocked</th>\n",
" <th>last_blocked</th>\n",
" <th>last_measured</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>http://adultfriendfinder.com</td>\n",
" <td>2016-09-24 03:55:08</td>\n",
" <td>2016-09-24 03:55:08</td>\n",
" <td>2016-11-13 22:39:44</td>\n",
" <td>2016-11-13 22:39:44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>http://beeg.com</td>\n",
" <td>2016-09-24 03:55:26</td>\n",
" <td>2016-09-24 03:55:26</td>\n",
" <td>2016-11-13 22:39:53</td>\n",
" <td>2016-11-13 22:39:53</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>http://extratorrent.cc</td>\n",
" <td>2016-11-10 00:02:37</td>\n",
" <td>2016-11-10 00:03:42</td>\n",
" <td>2016-11-13 00:03:34</td>\n",
" <td>2016-11-13 00:03:34</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>http://jinggo-fotopages.blogspot.my/</td>\n",
" <td>2016-11-10 01:11:18</td>\n",
" <td>2016-11-10 01:11:18</td>\n",
" <td>2016-11-13 01:18:17</td>\n",
" <td>2016-11-13 01:18:17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>http://kat.cr</td>\n",
" <td>2016-11-10 00:03:58</td>\n",
" <td>2016-11-10 00:03:58</td>\n",
" <td>2016-11-11 00:04:19</td>\n",
" <td>2016-11-13 00:05:00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>http://malaysia-chronicle.com</td>\n",
" <td>2016-09-24 03:32:58</td>\n",
" <td>2016-09-24 03:32:58</td>\n",
" <td>2016-11-13 22:26:26</td>\n",
" <td>2016-11-13 22:26:26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>http://manhub.com</td>\n",
" <td>2016-09-24 03:59:53</td>\n",
" <td>2016-09-24 03:59:53</td>\n",
" <td>2016-11-13 22:41:46</td>\n",
" <td>2016-11-13 22:41:46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>http://pornhub.com</td>\n",
" <td>2016-09-24 04:01:41</td>\n",
" <td>2016-09-24 04:01:41</td>\n",
" <td>2016-11-12 22:42:19</td>\n",
" <td>2016-11-13 22:42:16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>http://redtube.com</td>\n",
" <td>2016-09-24 04:02:06</td>\n",
" <td>2016-09-24 04:02:06</td>\n",
" <td>2016-11-13 22:42:28</td>\n",
" <td>2016-11-13 22:42:28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>http://syedsoutsidethebox.blogspot.my/</td>\n",
" <td>2016-11-10 01:11:16</td>\n",
" <td>2016-11-10 01:11:16</td>\n",
" <td>2016-11-13 01:18:14</td>\n",
" <td>2016-11-13 01:18:14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>http://tabunginsider.blogspot.my/</td>\n",
" <td>2016-11-10 01:11:13</td>\n",
" <td>2016-11-10 01:11:13</td>\n",
" <td>2016-11-13 01:18:13</td>\n",
" <td>2016-11-13 01:18:13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>http://thepiratebay.org</td>\n",
" <td>2016-09-24 04:03:00</td>\n",
" <td>2016-09-24 04:03:00</td>\n",
" <td>2016-11-13 22:42:44</td>\n",
" <td>2016-11-13 22:42:44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>http://www.888casino.com</td>\n",
" <td>2016-09-24 04:05:18</td>\n",
" <td>2016-09-24 04:05:18</td>\n",
" <td>2016-11-13 00:08:58</td>\n",
" <td>2016-11-13 22:43:49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>http://www.89.com</td>\n",
" <td>2016-09-24 04:05:19</td>\n",
" <td>2016-09-25 04:05:11</td>\n",
" <td>2016-11-13 22:43:49</td>\n",
" <td>2016-11-13 22:43:49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>http://www.ashemaletube.com</td>\n",
" <td>2016-09-24 04:07:28</td>\n",
" <td>2016-09-24 04:07:28</td>\n",
" <td>2016-11-13 22:44:57</td>\n",
" <td>2016-11-13 22:44:57</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>http://www.asiasentinel.com</td>\n",
" <td>2016-09-24 03:49:08</td>\n",
" <td>2016-09-24 03:49:08</td>\n",
" <td>2016-11-13 22:33:31</td>\n",
" <td>2016-11-13 22:33:31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>http://www.belmont.ag</td>\n",
" <td>2016-09-24 04:10:13</td>\n",
" <td>2016-09-24 04:10:13</td>\n",
" <td>2016-11-13 22:45:27</td>\n",
" <td>2016-11-13 22:45:27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>http://www.betfair.com</td>\n",
" <td>2016-09-24 04:10:23</td>\n",
" <td>2016-09-24 04:10:23</td>\n",
" <td>2016-11-13 22:45:29</td>\n",
" <td>2016-11-13 22:45:29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>http://www.carnivalcasino.com</td>\n",
" <td>2016-09-24 04:13:39</td>\n",
" <td>2016-09-24 04:13:39</td>\n",
" <td>2016-11-12 22:46:31</td>\n",
" <td>2016-11-13 22:46:36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>http://www.casinotropez.com</td>\n",
" <td>2016-09-24 04:13:41</td>\n",
" <td>2016-09-24 04:13:41</td>\n",
" <td>2016-11-13 22:46:41</td>\n",
" <td>2016-11-13 22:46:41</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>http://www.clubdicecasino.com</td>\n",
" <td>2016-09-24 04:14:34</td>\n",
" <td>2016-09-24 04:14:34</td>\n",
" <td>2016-11-13 22:47:19</td>\n",
" <td>2016-11-13 22:47:19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>http://www.europacasino.com</td>\n",
" <td>2016-09-24 04:17:45</td>\n",
" <td>2016-09-24 04:17:45</td>\n",
" <td>2016-11-13 22:49:53</td>\n",
" <td>2016-11-13 22:49:53</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>http://www.goldenrivieracasino.com</td>\n",
" <td>2016-09-24 04:20:34</td>\n",
" <td>2016-09-24 04:20:34</td>\n",
" <td>2016-11-13 22:52:00</td>\n",
" <td>2016-11-13 22:52:00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>http://www.hustler.com</td>\n",
" <td>2016-09-24 04:21:36</td>\n",
" <td>2016-09-24 04:21:36</td>\n",
" <td>2016-11-13 22:52:34</td>\n",
" <td>2016-11-13 22:52:34</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>http://www.livejasmin.com</td>\n",
" <td>2016-09-24 04:32:04</td>\n",
" <td>2016-09-24 04:32:04</td>\n",
" <td>2016-11-13 22:55:28</td>\n",
" <td>2016-11-13 22:55:28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>http://www.roxypalace.com</td>\n",
" <td>2016-09-24 04:41:19</td>\n",
" <td>2016-09-24 04:41:19</td>\n",
" <td>2016-11-13 23:01:30</td>\n",
" <td>2016-11-13 23:01:30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>http://www.sarawakreport.org</td>\n",
" <td>2016-09-24 03:49:15</td>\n",
" <td>2016-09-24 03:49:15</td>\n",
" <td>2016-11-13 22:33:33</td>\n",
" <td>2016-11-13 22:33:33</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>http://www.sarawakreport.org/2016/04/the-simpl...</td>\n",
" <td>2016-09-24 03:51:03</td>\n",
" <td>2016-09-24 03:51:03</td>\n",
" <td>2016-11-13 01:15:58</td>\n",
" <td>2016-11-13 01:15:58</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>http://www.sarawakreport.org/tag/1mdb</td>\n",
" <td>2016-09-24 03:51:00</td>\n",
" <td>2016-09-24 03:51:00</td>\n",
" <td>2016-11-13 01:15:57</td>\n",
" <td>2016-11-13 01:15:57</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>http://www.sex.com</td>\n",
" <td>2016-09-24 04:42:12</td>\n",
" <td>2016-09-24 04:42:12</td>\n",
" <td>2016-11-13 23:02:11</td>\n",
" <td>2016-11-13 23:02:11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>http://www.spinpalace.com</td>\n",
" <td>2016-09-24 04:43:02</td>\n",
" <td>2016-09-24 23:02:44</td>\n",
" <td>2016-11-13 23:02:49</td>\n",
" <td>2016-11-13 23:02:49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>http://www.themalaysianinsider.com</td>\n",
" <td>2016-09-24 03:47:22</td>\n",
" <td>2016-09-24 03:47:22</td>\n",
" <td>2016-11-13 22:32:39</td>\n",
" <td>2016-11-13 22:32:39</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>http://www.themalaysianinsider.com/</td>\n",
" <td>2016-09-24 03:49:29</td>\n",
" <td>2016-09-24 03:49:29</td>\n",
" <td>2016-11-13 01:14:02</td>\n",
" <td>2016-11-13 01:14:02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>http://www.thereligionofpeace.com</td>\n",
" <td>2016-09-24 03:47:24</td>\n",
" <td>2016-10-17 03:51:25</td>\n",
" <td>2016-11-13 22:32:41</td>\n",
" <td>2016-11-13 22:32:41</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>http://www.wetplace.com</td>\n",
" <td>2016-09-24 04:48:34</td>\n",
" <td>2016-09-24 04:48:34</td>\n",
" <td>2016-11-13 23:05:43</td>\n",
" <td>2016-11-13 23:05:43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>http://www.worldsex.com</td>\n",
" <td>2016-09-24 04:49:57</td>\n",
" <td>2016-09-24 04:49:57</td>\n",
" <td>2016-11-13 23:06:26</td>\n",
" <td>2016-11-13 23:06:26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>http://xhamster.com</td>\n",
" <td>2016-09-24 04:50:56</td>\n",
" <td>2016-09-24 04:50:56</td>\n",
" <td>2016-11-13 23:06:59</td>\n",
" <td>2016-11-13 23:06:59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>http://xvideos.com</td>\n",
" <td>2016-09-24 04:50:56</td>\n",
" <td>2016-09-24 23:06:57</td>\n",
" <td>2016-11-13 00:49:33</td>\n",
" <td>2016-11-13 23:06:59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>http://youjizz.com</td>\n",
" <td>2016-09-24 04:51:03</td>\n",
" <td>2016-09-24 04:51:03</td>\n",
" <td>2016-11-13 23:07:06</td>\n",
" <td>2016-11-13 23:07:06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>http://youporn.com</td>\n",
" <td>2016-09-24 04:51:07</td>\n",
" <td>2016-09-24 04:51:07</td>\n",
" <td>2016-11-13 23:07:07</td>\n",
" <td>2016-11-13 23:07:07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>https://medium.com</td>\n",
" <td>2016-09-24 03:49:13</td>\n",
" <td>2016-09-24 03:49:13</td>\n",
" <td>2016-11-13 22:33:33</td>\n",
" <td>2016-11-13 22:33:33</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>https://thepiratebay.se</td>\n",
" <td>2016-09-24 04:51:47</td>\n",
" <td>2016-09-24 23:07:17</td>\n",
" <td>2016-11-13 23:07:28</td>\n",
" <td>2016-11-13 23:07:28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>https://torrentz.eu</td>\n",
" <td>2016-09-24 04:51:49</td>\n",
" <td>2016-09-25 06:06:53</td>\n",
" <td>2016-11-12 23:07:42</td>\n",
" <td>2016-11-13 23:07:29</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" input first_measured \\\n",
"0 http://adultfriendfinder.com 2016-09-24 03:55:08 \n",
"1 http://beeg.com 2016-09-24 03:55:26 \n",
"2 http://extratorrent.cc 2016-11-10 00:02:37 \n",
"3 http://jinggo-fotopages.blogspot.my/ 2016-11-10 01:11:18 \n",
"4 http://kat.cr 2016-11-10 00:03:58 \n",
"5 http://malaysia-chronicle.com 2016-09-24 03:32:58 \n",
"6 http://manhub.com 2016-09-24 03:59:53 \n",
"7 http://pornhub.com 2016-09-24 04:01:41 \n",
"8 http://redtube.com 2016-09-24 04:02:06 \n",
"9 http://syedsoutsidethebox.blogspot.my/ 2016-11-10 01:11:16 \n",
"10 http://tabunginsider.blogspot.my/ 2016-11-10 01:11:13 \n",
"11 http://thepiratebay.org 2016-09-24 04:03:00 \n",
"12 http://www.888casino.com 2016-09-24 04:05:18 \n",
"13 http://www.89.com 2016-09-24 04:05:19 \n",
"14 http://www.ashemaletube.com 2016-09-24 04:07:28 \n",
"15 http://www.asiasentinel.com 2016-09-24 03:49:08 \n",
"16 http://www.belmont.ag 2016-09-24 04:10:13 \n",
"17 http://www.betfair.com 2016-09-24 04:10:23 \n",
"18 http://www.carnivalcasino.com 2016-09-24 04:13:39 \n",
"19 http://www.casinotropez.com 2016-09-24 04:13:41 \n",
"20 http://www.clubdicecasino.com 2016-09-24 04:14:34 \n",
"21 http://www.europacasino.com 2016-09-24 04:17:45 \n",
"22 http://www.goldenrivieracasino.com 2016-09-24 04:20:34 \n",
"23 http://www.hustler.com 2016-09-24 04:21:36 \n",
"24 http://www.livejasmin.com 2016-09-24 04:32:04 \n",
"25 http://www.roxypalace.com 2016-09-24 04:41:19 \n",
"26 http://www.sarawakreport.org 2016-09-24 03:49:15 \n",
"27 http://www.sarawakreport.org/2016/04/the-simpl... 2016-09-24 03:51:03 \n",
"28 http://www.sarawakreport.org/tag/1mdb 2016-09-24 03:51:00 \n",
"29 http://www.sex.com 2016-09-24 04:42:12 \n",
"30 http://www.spinpalace.com 2016-09-24 04:43:02 \n",
"31 http://www.themalaysianinsider.com 2016-09-24 03:47:22 \n",
"32 http://www.themalaysianinsider.com/ 2016-09-24 03:49:29 \n",
"33 http://www.thereligionofpeace.com 2016-09-24 03:47:24 \n",
"34 http://www.wetplace.com 2016-09-24 04:48:34 \n",
"35 http://www.worldsex.com 2016-09-24 04:49:57 \n",
"36 http://xhamster.com 2016-09-24 04:50:56 \n",
"37 http://xvideos.com 2016-09-24 04:50:56 \n",
"38 http://youjizz.com 2016-09-24 04:51:03 \n",
"39 http://youporn.com 2016-09-24 04:51:07 \n",
"40 https://medium.com 2016-09-24 03:49:13 \n",
"41 https://thepiratebay.se 2016-09-24 04:51:47 \n",
"42 https://torrentz.eu 2016-09-24 04:51:49 \n",
"\n",
" first_blocked last_blocked last_measured \n",
"0 2016-09-24 03:55:08 2016-11-13 22:39:44 2016-11-13 22:39:44 \n",
"1 2016-09-24 03:55:26 2016-11-13 22:39:53 2016-11-13 22:39:53 \n",
"2 2016-11-10 00:03:42 2016-11-13 00:03:34 2016-11-13 00:03:34 \n",
"3 2016-11-10 01:11:18 2016-11-13 01:18:17 2016-11-13 01:18:17 \n",
"4 2016-11-10 00:03:58 2016-11-11 00:04:19 2016-11-13 00:05:00 \n",
"5 2016-09-24 03:32:58 2016-11-13 22:26:26 2016-11-13 22:26:26 \n",
"6 2016-09-24 03:59:53 2016-11-13 22:41:46 2016-11-13 22:41:46 \n",
"7 2016-09-24 04:01:41 2016-11-12 22:42:19 2016-11-13 22:42:16 \n",
"8 2016-09-24 04:02:06 2016-11-13 22:42:28 2016-11-13 22:42:28 \n",
"9 2016-11-10 01:11:16 2016-11-13 01:18:14 2016-11-13 01:18:14 \n",
"10 2016-11-10 01:11:13 2016-11-13 01:18:13 2016-11-13 01:18:13 \n",
"11 2016-09-24 04:03:00 2016-11-13 22:42:44 2016-11-13 22:42:44 \n",
"12 2016-09-24 04:05:18 2016-11-13 00:08:58 2016-11-13 22:43:49 \n",
"13 2016-09-25 04:05:11 2016-11-13 22:43:49 2016-11-13 22:43:49 \n",
"14 2016-09-24 04:07:28 2016-11-13 22:44:57 2016-11-13 22:44:57 \n",
"15 2016-09-24 03:49:08 2016-11-13 22:33:31 2016-11-13 22:33:31 \n",
"16 2016-09-24 04:10:13 2016-11-13 22:45:27 2016-11-13 22:45:27 \n",
"17 2016-09-24 04:10:23 2016-11-13 22:45:29 2016-11-13 22:45:29 \n",
"18 2016-09-24 04:13:39 2016-11-12 22:46:31 2016-11-13 22:46:36 \n",
"19 2016-09-24 04:13:41 2016-11-13 22:46:41 2016-11-13 22:46:41 \n",
"20 2016-09-24 04:14:34 2016-11-13 22:47:19 2016-11-13 22:47:19 \n",
"21 2016-09-24 04:17:45 2016-11-13 22:49:53 2016-11-13 22:49:53 \n",
"22 2016-09-24 04:20:34 2016-11-13 22:52:00 2016-11-13 22:52:00 \n",
"23 2016-09-24 04:21:36 2016-11-13 22:52:34 2016-11-13 22:52:34 \n",
"24 2016-09-24 04:32:04 2016-11-13 22:55:28 2016-11-13 22:55:28 \n",
"25 2016-09-24 04:41:19 2016-11-13 23:01:30 2016-11-13 23:01:30 \n",
"26 2016-09-24 03:49:15 2016-11-13 22:33:33 2016-11-13 22:33:33 \n",
"27 2016-09-24 03:51:03 2016-11-13 01:15:58 2016-11-13 01:15:58 \n",
"28 2016-09-24 03:51:00 2016-11-13 01:15:57 2016-11-13 01:15:57 \n",
"29 2016-09-24 04:42:12 2016-11-13 23:02:11 2016-11-13 23:02:11 \n",
"30 2016-09-24 23:02:44 2016-11-13 23:02:49 2016-11-13 23:02:49 \n",
"31 2016-09-24 03:47:22 2016-11-13 22:32:39 2016-11-13 22:32:39 \n",
"32 2016-09-24 03:49:29 2016-11-13 01:14:02 2016-11-13 01:14:02 \n",
"33 2016-10-17 03:51:25 2016-11-13 22:32:41 2016-11-13 22:32:41 \n",
"34 2016-09-24 04:48:34 2016-11-13 23:05:43 2016-11-13 23:05:43 \n",
"35 2016-09-24 04:49:57 2016-11-13 23:06:26 2016-11-13 23:06:26 \n",
"36 2016-09-24 04:50:56 2016-11-13 23:06:59 2016-11-13 23:06:59 \n",
"37 2016-09-24 23:06:57 2016-11-13 00:49:33 2016-11-13 23:06:59 \n",
"38 2016-09-24 04:51:03 2016-11-13 23:07:06 2016-11-13 23:07:06 \n",
"39 2016-09-24 04:51:07 2016-11-13 23:07:07 2016-11-13 23:07:07 \n",
"40 2016-09-24 03:49:13 2016-11-13 22:33:33 2016-11-13 22:33:33 \n",
"41 2016-09-24 23:07:17 2016-11-13 23:07:28 2016-11-13 23:07:28 \n",
"42 2016-09-25 06:06:53 2016-11-12 23:07:42 2016-11-13 23:07:29 "
]
},
"execution_count": 209,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"blk_timeline.reset_index()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "matplotlib",
"language": "python",
"name": "matplotlib"
},
"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.10"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment