Skip to content

Instantly share code, notes, and snippets.

@shahifaqeer
Created August 5, 2015 02:59
Show Gist options
  • Save shahifaqeer/1d11d8a733ec2d1a1072 to your computer and use it in GitHub Desktop.
Save shahifaqeer/1d11d8a733ec2d1a1072 to your computer and use it in GitHub Desktop.
Prelim analysis of myspeedtest data for 3 months (Jan-Mar 2015)
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:abbc5b349d3891bfa98892dc8fc77b0f3e03706d5d4c0416e1ccbf255f987651"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#MYSPEEDTEST data\n",
"\n",
"- Jan 2015 - Mar 2015\n",
"- Related Doc: https://docs.google.com/document/d/17Ut6ovlCyaJfKnKeZ-DyBjdP6pKixovT6FXbjoWnDG8/edit?usp=sharing"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from __future__ import division\n",
"\n",
"import pandas as pd\n",
"from collections import defaultdict"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from sqlalchemy import create_engine\n",
"engine = create_engine('postgresql:///androidperformance3')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"measurement = pd.read_sql_query('SELECT * from measurement_010115_040115',con=engine)\n",
"battery = pd.read_sql_query('SELECT * from battery_010115_040115',con=engine)\n",
"device = pd.read_sql_query('SELECT * from device_010115_040115',con=engine)\n",
"distinct_device_list =pd.read_sql_query('SELECT * from distinct_device_010115_040115',con=engine)\n",
"network = pd.read_sql_query('SELECT * from network_010115_040115',con=engine)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#application_use = pd.read_sql_query('SELECT * from application_use_010115_040115',con=engine)\n",
"#application = pd.read_sql_query('SELECT * from application',con=engine)\n",
"#ping = pd.read_sql_query('SELECT * from ping_010115_040115',con=engine)\n",
"#state = pd.read_sql_query('SELECT * from state_010115_040115',con=engine)\n",
"#usage = pd.read_sql_query('SELECT * from usage_010115_040115',con=engine)\n",
"#traceroute = pd.read_sql_query('SELECT * from traceroute_010115_040115',con=engine)\n",
"#hop = pd.read_sql_query('SELECT * from hop_010115_040115',con=engine)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Explore tables"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"measurement.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>measurementid</th>\n",
" <th>time</th>\n",
" <th>localtime</th>\n",
" <th>deviceid</th>\n",
" <th>ismanual</th>\n",
" <th>applicationversion</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>72455</td>\n",
" <td>2015-01-08 19:35:00</td>\n",
" <td>2015-01-08 23:05:00</td>\n",
" <td>92d9359d30b4ab6d3867e51782edf2238e2a3eed</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>72781</td>\n",
" <td>2015-01-08 19:50:59</td>\n",
" <td>2015-01-08 23:20:59</td>\n",
" <td>92d9359d30b4ab6d3867e51782edf2238e2a3eed</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>72988</td>\n",
" <td>2015-01-08 20:14:22</td>\n",
" <td>2015-01-08 23:44:22</td>\n",
" <td>92d9359d30b4ab6d3867e51782edf2238e2a3eed</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>73024</td>\n",
" <td>2015-01-08 20:15:26</td>\n",
" <td>2015-01-08 23:45:26</td>\n",
" <td>92d9359d30b4ab6d3867e51782edf2238e2a3eed</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>73111</td>\n",
" <td>2015-01-08 20:23:10</td>\n",
" <td>2015-01-08 23:53:10</td>\n",
" <td>92d9359d30b4ab6d3867e51782edf2238e2a3eed</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 31,
"text": [
" measurementid time localtime \\\n",
"0 72455 2015-01-08 19:35:00 2015-01-08 23:05:00 \n",
"1 72781 2015-01-08 19:50:59 2015-01-08 23:20:59 \n",
"2 72988 2015-01-08 20:14:22 2015-01-08 23:44:22 \n",
"3 73024 2015-01-08 20:15:26 2015-01-08 23:45:26 \n",
"4 73111 2015-01-08 20:23:10 2015-01-08 23:53:10 \n",
"\n",
" deviceid ismanual applicationversion \n",
"0 92d9359d30b4ab6d3867e51782edf2238e2a3eed False NaN \n",
"1 92d9359d30b4ab6d3867e51782edf2238e2a3eed False NaN \n",
"2 92d9359d30b4ab6d3867e51782edf2238e2a3eed False NaN \n",
"3 92d9359d30b4ab6d3867e51782edf2238e2a3eed False NaN \n",
"4 92d9359d30b4ab6d3867e51782edf2238e2a3eed False NaN "
]
}
],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"device.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>deviceid</th>\n",
" <th>phonetype</th>\n",
" <th>phonenumber</th>\n",
" <th>softwareversion</th>\n",
" <th>phonemodel</th>\n",
" <th>androidversion</th>\n",
" <th>phonebrand</th>\n",
" <th>devicedesign</th>\n",
" <th>manufacturer</th>\n",
" <th>productname</th>\n",
" <th>radioversion</th>\n",
" <th>boardname</th>\n",
" <th>serialnumber</th>\n",
" <th>networkcountry</th>\n",
" <th>networkname</th>\n",
" <th>datacap</th>\n",
" <th>billingcycle</th>\n",
" <th>emailaddress</th>\n",
" <th>applicationversion</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>8ce82934d61b8ed62c48e8bbc3b06604d6b94bc0</td>\n",
" <td>GSM</td>\n",
" <td>776e42dd87685f1c8c3ba35ca0850f376cf1cf70</td>\n",
" <td>01</td>\n",
" <td>GT-I9300</td>\n",
" <td>4.3</td>\n",
" <td>samsung</td>\n",
" <td>m0</td>\n",
" <td>samsung</td>\n",
" <td>m0xx</td>\n",
" <td>unknown</td>\n",
" <td>smdk4x12</td>\n",
" <td>None</td>\n",
" <td>it</td>\n",
" <td>I TIM</td>\n",
" <td>2000</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>92d9359d30b4ab6d3867e51782edf2238e2a3eed</td>\n",
" <td>GSM</td>\n",
" <td>da39a3ee5e6b4b0d3255bfef95601890afd80709</td>\n",
" <td>64</td>\n",
" <td>WT19i</td>\n",
" <td>2.3.4</td>\n",
" <td>SEMC</td>\n",
" <td>WT19i</td>\n",
" <td>Sony Ericsson</td>\n",
" <td>WT19i_1254-1848</td>\n",
" <td>unknown</td>\n",
" <td>unknown</td>\n",
" <td>8c0759ae68c563ed418f2561462747c3cfa59d47</td>\n",
" <td>ir</td>\n",
" <td>IR-TCI</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>a155626da1d64d5dc4e568d32f1fb20ab457d8b8</td>\n",
" <td>NONE</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>A3-A10</td>\n",
" <td>4.2.2</td>\n",
" <td>acer</td>\n",
" <td>zara</td>\n",
" <td>Acer</td>\n",
" <td>A3-A10_ww_gen1</td>\n",
" <td>unknown</td>\n",
" <td>A3-A10_ww_gen1</td>\n",
" <td>da39a3ee5e6b4b0d3255bfef95601890afd80709</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>-1</td>\n",
" <td>NaN</td>\n",
" <td>N/A</td>\n",
" <td>336</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13974ec789de093a7a44694b7af376f69ea90a60</td>\n",
" <td>NONE</td>\n",
" <td>da39a3ee5e6b4b0d3255bfef95601890afd80709</td>\n",
" <td></td>\n",
" <td>GT-P5110</td>\n",
" <td>4.2.2</td>\n",
" <td>samsung</td>\n",
" <td>espresso10wifi</td>\n",
" <td>samsung</td>\n",
" <td>espresso10wifixx</td>\n",
" <td>unknown</td>\n",
" <td>piranha</td>\n",
" <td>da39a3ee5e6b4b0d3255bfef95601890afd80709</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>-1</td>\n",
" <td>NaN</td>\n",
" <td>fmontangero@gmail.com</td>\n",
" <td>336</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1e2eb514811f8677a1adb7e180eb7f53f9217595</td>\n",
" <td>GSM</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>GT-I9105</td>\n",
" <td>4.1.2</td>\n",
" <td>samsung</td>\n",
" <td>s2ve</td>\n",
" <td>samsung</td>\n",
" <td>s2vexx</td>\n",
" <td>unknown</td>\n",
" <td>capri</td>\n",
" <td>None</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 32,
"text": [
" deviceid phonetype \\\n",
"0 8ce82934d61b8ed62c48e8bbc3b06604d6b94bc0 GSM \n",
"1 92d9359d30b4ab6d3867e51782edf2238e2a3eed GSM \n",
"2 a155626da1d64d5dc4e568d32f1fb20ab457d8b8 NONE \n",
"3 13974ec789de093a7a44694b7af376f69ea90a60 NONE \n",
"4 1e2eb514811f8677a1adb7e180eb7f53f9217595 GSM \n",
"\n",
" phonenumber softwareversion phonemodel \\\n",
"0 776e42dd87685f1c8c3ba35ca0850f376cf1cf70 01 GT-I9300 \n",
"1 da39a3ee5e6b4b0d3255bfef95601890afd80709 64 WT19i \n",
"2 A3-A10 \n",
"3 da39a3ee5e6b4b0d3255bfef95601890afd80709 GT-P5110 \n",
"4 GT-I9105 \n",
"\n",
" androidversion phonebrand devicedesign manufacturer productname \\\n",
"0 4.3 samsung m0 samsung m0xx \n",
"1 2.3.4 SEMC WT19i Sony Ericsson WT19i_1254-1848 \n",
"2 4.2.2 acer zara Acer A3-A10_ww_gen1 \n",
"3 4.2.2 samsung espresso10wifi samsung espresso10wifixx \n",
"4 4.1.2 samsung s2ve samsung s2vexx \n",
"\n",
" radioversion boardname serialnumber \\\n",
"0 unknown smdk4x12 None \n",
"1 unknown unknown 8c0759ae68c563ed418f2561462747c3cfa59d47 \n",
"2 unknown A3-A10_ww_gen1 da39a3ee5e6b4b0d3255bfef95601890afd80709 \n",
"3 unknown piranha da39a3ee5e6b4b0d3255bfef95601890afd80709 \n",
"4 unknown capri None \n",
"\n",
" networkcountry networkname datacap billingcycle emailaddress \\\n",
"0 it I TIM 2000 0 None \n",
"1 ir IR-TCI -1 0 None \n",
"2 -1 NaN N/A \n",
"3 -1 NaN fmontangero@gmail.com \n",
"4 -1 0 None \n",
"\n",
" applicationversion \n",
"0 NaN \n",
"1 NaN \n",
"2 336 \n",
"3 336 \n",
"4 NaN "
]
}
],
"prompt_number": 32
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"battery.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>measurementid</th>\n",
" <th>technology</th>\n",
" <th>ispresent</th>\n",
" <th>plugged</th>\n",
" <th>scale</th>\n",
" <th>health</th>\n",
" <th>voltage</th>\n",
" <th>level</th>\n",
" <th>temperature</th>\n",
" <th>status</th>\n",
" <th>time</th>\n",
" <th>localtime</th>\n",
" <th>deviceid</th>\n",
" <th>ismanual</th>\n",
" <th>applicationversion</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>17480773</td>\n",
" <td>Li-ion</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>2</td>\n",
" <td>4012</td>\n",
" <td>41</td>\n",
" <td>368</td>\n",
" <td>2</td>\n",
" <td>2015-01-17 18:23:47</td>\n",
" <td>2015-01-17 21:53:47</td>\n",
" <td>17f913052f9bc2d0a2d2fa42627a4f92efcb7426</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>17481081</td>\n",
" <td>Li-ion</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>100</td>\n",
" <td>2</td>\n",
" <td>3808</td>\n",
" <td>53</td>\n",
" <td>291</td>\n",
" <td>3</td>\n",
" <td>2015-01-17 18:55:19</td>\n",
" <td>2015-01-17 22:25:19</td>\n",
" <td>6b336df45dcafb11865121f877913a5dcf9f1077</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>17480380</td>\n",
" <td>Li-ion</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>100</td>\n",
" <td>2</td>\n",
" <td>3931</td>\n",
" <td>66</td>\n",
" <td>195</td>\n",
" <td>3</td>\n",
" <td>2015-01-17 17:41:55</td>\n",
" <td>2015-01-18 01:41:55</td>\n",
" <td>09c25216d15965f0097f0767543799389bcfc0cc</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17480434</td>\n",
" <td>Li-ion</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>100</td>\n",
" <td>2</td>\n",
" <td>3649</td>\n",
" <td>10</td>\n",
" <td>256</td>\n",
" <td>3</td>\n",
" <td>2015-01-17 17:45:40</td>\n",
" <td>2015-01-17 23:15:40</td>\n",
" <td>33c9d1677b146345a07daa0dc4086fec52747b6d</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>17480432</td>\n",
" <td>Li-ion</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>50</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>2015-01-17 17:47:16</td>\n",
" <td>2015-01-17 22:47:16</td>\n",
" <td>62d6371ea003bfd7bc3248d0c39ca3cb1ee65e6d</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 33,
"text": [
" measurementid technology ispresent plugged scale health voltage \\\n",
"0 17480773 Li-ion 1 1 100 2 4012 \n",
"1 17481081 Li-ion 1 0 100 2 3808 \n",
"2 17480380 Li-ion 1 0 100 2 3931 \n",
"3 17480434 Li-ion 1 0 100 2 3649 \n",
"4 17480432 Li-ion 1 1 100 2 0 \n",
"\n",
" level temperature status time localtime \\\n",
"0 41 368 2 2015-01-17 18:23:47 2015-01-17 21:53:47 \n",
"1 53 291 3 2015-01-17 18:55:19 2015-01-17 22:25:19 \n",
"2 66 195 3 2015-01-17 17:41:55 2015-01-18 01:41:55 \n",
"3 10 256 3 2015-01-17 17:45:40 2015-01-17 23:15:40 \n",
"4 50 0 3 2015-01-17 17:47:16 2015-01-17 22:47:16 \n",
"\n",
" deviceid ismanual applicationversion \n",
"0 17f913052f9bc2d0a2d2fa42627a4f92efcb7426 False NaN \n",
"1 6b336df45dcafb11865121f877913a5dcf9f1077 False NaN \n",
"2 09c25216d15965f0097f0767543799389bcfc0cc False NaN \n",
"3 33c9d1677b146345a07daa0dc4086fec52747b6d False NaN \n",
"4 62d6371ea003bfd7bc3248d0c39ca3cb1ee65e6d False NaN "
]
}
],
"prompt_number": 33
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"network.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>measurementid</th>\n",
" <th>networktype</th>\n",
" <th>connectiontype</th>\n",
" <th>wifistate</th>\n",
" <th>datastate</th>\n",
" <th>dataactivity</th>\n",
" <th>signalstrength</th>\n",
" <th>cellid</th>\n",
" <th>celltype</th>\n",
" <th>celllac</th>\n",
" <th>longitude</th>\n",
" <th>latitude</th>\n",
" <th>systemid</th>\n",
" <th>networkid</th>\n",
" <th>time</th>\n",
" <th>localtime</th>\n",
" <th>deviceid</th>\n",
" <th>ismanual</th>\n",
" <th>applicationversion</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>17480434</td>\n",
" <td></td>\n",
" <td>Mobile:</td>\n",
" <td></td>\n",
" <td>DATA_CONNECTED</td>\n",
" <td>DATA_ACTIVITY_NONE</td>\n",
" <td>16</td>\n",
" <td>31423</td>\n",
" <td>GSM</td>\n",
" <td>3029</td>\n",
" <td>-99</td>\n",
" <td>-99</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2015-01-17 17:45:40</td>\n",
" <td>2015-01-17 23:15:40</td>\n",
" <td>33c9d1677b146345a07daa0dc4086fec52747b6d</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>17482023</td>\n",
" <td>HSDPA</td>\n",
" <td>Wifi</td>\n",
" <td></td>\n",
" <td>DATA_DISCONNECTED</td>\n",
" <td>DATA_ACTIVITY_NONE</td>\n",
" <td>8</td>\n",
" <td>9391</td>\n",
" <td>GSM</td>\n",
" <td>10502</td>\n",
" <td>-99</td>\n",
" <td>-99</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2015-01-17 20:34:39</td>\n",
" <td>2015-01-17 14:34:39</td>\n",
" <td>b0b1fecb6269efa4a9396c7f80c32d48dd73b709</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>17481013</td>\n",
" <td>LTE</td>\n",
" <td>Mobile: 4G</td>\n",
" <td></td>\n",
" <td>DATA_CONNECTED</td>\n",
" <td>DATA_ACTIVITY_INOUT</td>\n",
" <td>11</td>\n",
" <td>52737</td>\n",
" <td>GSM</td>\n",
" <td>24023</td>\n",
" <td>-99</td>\n",
" <td>-99</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2015-01-17 18:47:25</td>\n",
" <td>2015-01-17 19:47:25</td>\n",
" <td>9ada76268cef5a7c2cab6dd8ac03af4c58324719</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17481460</td>\n",
" <td>EDGE</td>\n",
" <td>Mobile: 2G</td>\n",
" <td></td>\n",
" <td>DATA_CONNECTED</td>\n",
" <td>DATA_ACTIVITY_INOUT</td>\n",
" <td>8</td>\n",
" <td>47299</td>\n",
" <td>GSM</td>\n",
" <td>18453</td>\n",
" <td>-99</td>\n",
" <td>-99</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2015-01-17 19:33:27</td>\n",
" <td>2015-01-17 20:33:27</td>\n",
" <td>282e3d04272a276f583180c66f17d833616e56e0</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>17481908</td>\n",
" <td></td>\n",
" <td>Mobile:</td>\n",
" <td></td>\n",
" <td>DATA_CONNECTED</td>\n",
" <td>DATA_ACTIVITY_NONE</td>\n",
" <td>22</td>\n",
" <td>55874</td>\n",
" <td>GSM</td>\n",
" <td>78</td>\n",
" <td>-99</td>\n",
" <td>-99</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2015-01-18 05:18:57</td>\n",
" <td>2015-01-17 22:18:57</td>\n",
" <td>6b6fd8f60b3b770899d0aa9e008f714946ee5202</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 34,
"text": [
" measurementid networktype connectiontype wifistate datastate \\\n",
"0 17480434 Mobile: DATA_CONNECTED \n",
"1 17482023 HSDPA Wifi DATA_DISCONNECTED \n",
"2 17481013 LTE Mobile: 4G DATA_CONNECTED \n",
"3 17481460 EDGE Mobile: 2G DATA_CONNECTED \n",
"4 17481908 Mobile: DATA_CONNECTED \n",
"\n",
" dataactivity signalstrength cellid celltype celllac longitude \\\n",
"0 DATA_ACTIVITY_NONE 16 31423 GSM 3029 -99 \n",
"1 DATA_ACTIVITY_NONE 8 9391 GSM 10502 -99 \n",
"2 DATA_ACTIVITY_INOUT 11 52737 GSM 24023 -99 \n",
"3 DATA_ACTIVITY_INOUT 8 47299 GSM 18453 -99 \n",
"4 DATA_ACTIVITY_NONE 22 55874 GSM 78 -99 \n",
"\n",
" latitude systemid networkid time localtime \\\n",
"0 -99 -1 -1 2015-01-17 17:45:40 2015-01-17 23:15:40 \n",
"1 -99 -1 -1 2015-01-17 20:34:39 2015-01-17 14:34:39 \n",
"2 -99 -1 -1 2015-01-17 18:47:25 2015-01-17 19:47:25 \n",
"3 -99 -1 -1 2015-01-17 19:33:27 2015-01-17 20:33:27 \n",
"4 -99 -1 -1 2015-01-18 05:18:57 2015-01-17 22:18:57 \n",
"\n",
" deviceid ismanual applicationversion \n",
"0 33c9d1677b146345a07daa0dc4086fec52747b6d False NaN \n",
"1 b0b1fecb6269efa4a9396c7f80c32d48dd73b709 False NaN \n",
"2 9ada76268cef5a7c2cab6dd8ac03af4c58324719 False NaN \n",
"3 282e3d04272a276f583180c66f17d833616e56e0 False NaN \n",
"4 6b6fd8f60b3b770899d0aa9e008f714946ee5202 False NaN "
]
}
],
"prompt_number": 34
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### device table\n",
"- Number of distinct devices per countries for top 20 countries"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"device.groupby('networkcountry').count()['deviceid'].order(ascending=False).head(20)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 29,
"text": [
"networkcountry\n",
"ir 177\n",
" 143\n",
"us 62\n",
"de 25\n",
"it 25\n",
"in 24\n",
"za 22\n",
"my 12\n",
"ru 12\n",
"cn 12\n",
"fr 11\n",
"br 11\n",
"kr 11\n",
"ca 8\n",
"pk 8\n",
"jp 7\n",
"pl 7\n",
"at 7\n",
"mx 7\n",
"th 7\n",
"Name: deviceid, dtype: int64"
]
}
],
"prompt_number": 29
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### measurement\n",
"- are measurements unique?\n",
"- number of unique devices?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print len(measurement['measurementid'].unique())\n",
"print len(measurement)\n",
"print len(measurement['deviceid'].unique())"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"711498\n",
"711498\n",
"725"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
}
],
"prompt_number": 43
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- distribution of number of measurements per distinct device"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"measurement.groupby('deviceid')['measurementid'].count().order(ascending=False).reset_index().plot()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 42,
"text": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fcbfc5b8710>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEACAYAAABWLgY0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8FPW9//HXh5vcgglYEpBgUKAQi8ZyWhBvqQJGa4Fq\ny6WVGqW/qmhB26pg6+30HAQVj1jvVS7tERRbURAIIIJ6vEWtUQRSiBiQAEEkCIIgl8/vj5lNlhiS\nDWxmZ3Y+z8djHzvzndnd967xs8NnZmdEVTHGGJOcGiU6gDHGmIZjRd4YY5KYFXljjEliVuSNMSaJ\nWZE3xpgkZkXeGGOSWJ1FXkTGisgKEflYRMa6Y21FZImIrBGRxSKSGrX+eBFZKyLFIjIwary3+zxr\nRWRKw7wdY4wx0Wot8iLyPeDXwA+A04FLROQUYBywRFW7A0vdeUQkGxgGZAN5wCMiIu7TPQqMUtVu\nQDcRyWuA92OMMSZKXVvyPYB3VHWvqh4EXgUuAwYBM9x1ZgBD3OnBwCxV3a+qpUAJ0EdEOgApqlro\nrve3qMcYY4xpIHUV+Y+Bc9z2TEvgYqATkK6q5e465UC6O90R2Bj1+I3AiTWMl7njxhhjGlCT2haq\narGITAIWA7uBIuBgtXVUROzcCMYY40O1FnkAVZ0KTAUQkf/G2SIvF5EMVd3itmK2uquXAZlRD+/k\nrl/mTkePl9X0evaFYYwx9aeqUtN4LEfXtHfvOwOXAjOBucAV7ipXAC+403OB4SLSTES6AN2AQlXd\nAuwUkT7ujtiRUY+pKWzgbnfccUfCM1hu/9+CmjvI2cOQuzZ1bskD/xCRdsB+YLSqfikiE4HZIjIK\nKAWGusV5lYjMBlYBB9z1IwlGA9OBFsACVS2I4bUDo7S0NNERjorl9lZQc0Nws4c9dyztmnNrGNsO\n9D/C+hOACTWMvw/0OoqMxhhjjpL94jVO8vPzEx3hqFhubwU1NwQ3e9hzS139HK+JiPotkzHG+JmI\noEe749XEZvny5YmOcFQst7fqyi0idrNbrbf6imXHqzHGQ/YvWXMkR1PkrV1jjI+IiBV5c0RH+vtw\nx61dY4wxYWNFPk6StUfsV5bbmNhYkTfGGA9de+21/Nd//dcRlzdq1Ih169bF7fWsJ2+Mj1hPPrlM\nnz6dp556itdffz3mxzRq1IiSkhJOPvnkby2znrwxJvQOHDiQ6Ai+YkU+ToLaa7Xc3gpq7qysLO67\n7z5OO+00UlJSGDVqFOXl5Vx00UUcf/zxDBgwgB07dgDw9ttv069fP9LS0sjJyeHVV1+tfJ5p06aR\nnZ1NmzZtOOWUU3jiiScql23bto1LLrmEtLQ02rVrx7nnVp1RpXoLIz8/n9tuuw1wPtNOnTpxzz33\n0KFDB0aNGoWqMnHiRLp27coJJ5zAsGHDqKioAJxzwjRq1Ijp06fTuXNn2rVrx2OPPca7777Laaed\nRlpaGr/97W8Pe/9Tp04lOzubtm3bkpeXx4YNGw7L9vjjj9O9e3fS0tK4/vrrAVi9ejXXXnstb731\nFikpKbRt2/Zb2QHuvfdeOnbsSKdOnZg6deqx/YeqgRV5Y0ydRITnn3+epUuX8u9//5uXXnqJiy66\niIkTJ7J161YOHTrEgw8+SFlZGZdccgm33347FRUV3HfffVx22WV88cUXAKSnpzN//nx27tzJtGnT\nuPHGGykqKgJg8uTJZGZmsm3bNrZu3crdd99da57oY8bLy8upqKhgw4YNPP744zz44IPMnTuX1157\njc2bN5OWlsZ111132HMUFhZSUlLCM888w9ixY5kwYQKvvPIKK1euZPbs2bz22msAvPjii9x9993M\nmTOHbdu2cc455zBixIjDnmv+/Pm89957fPTRR8yePZtFixbRs2dPHnvsMc4880x27drF9u3bv5W9\noKCAyZMn8/LLL7NmzRpefvnlY/wvVYNEn06zhlNmqjFhVdffP8TnVl9ZWVk6c+bMyvnLLrtMR48e\nXTn/l7/8RYcMGaKTJk3SkSNHHvbYCy+8UGfMmFHj8w4ZMkSnTJmiqqq33367Dh48WEtKSr61nojo\nJ598Ujmfn5+vf/rTn1RVddmyZdqsWTPdt29f5fKePXvq0qVLK+c3bdqkTZs21YMHD+qnn36qIqKb\nNm2qXN6uXTudPXv2Ye8vkisvL0+feuqpymUHDx7Uli1b6oYNGyqzvfHGG5XLhw4dqhMnTlRV1WnT\npunZZ5992HvJz8/X2267TVVVr7zySh0/fnzlsjVr1nzrvUY70t+HO15jTbUteWMCJF5l/mikp6dX\nTrdo0eKw+ebNm/PVV1+xfv16nnvuOdLS0ipvb7zxBlu2bAFg4cKF9O3bl3bt2pGWlsaCBQsqt/Jv\nuukmunbtysCBAznllFOYNGlSzNm+853v0KxZs8r50tJSfvrTn1ZmyM7OpkmTJpSXl1euU9v7adGi\n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\nQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x7fcbfd16acd0>"
]
}
],
"prompt_number": 42
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- data is sparse\n",
"- less than 10% of 725 devices have more than 50% of max measurements possible "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment