Skip to content

Instantly share code, notes, and snippets.

@asberk
Last active June 16, 2018 19:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asberk/8d769f602a55f0f81e289db6822ef58e to your computer and use it in GitHub Desktop.
Save asberk/8d769f602a55f0f81e289db6822ef58e to your computer and use it in GitHub Desktop.
bcdata workshop CloudPBX project code
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# Notebook for getting a nice table for graphing data\n\nThis notebook takes in the dataset and returns a table containing all unique pairs of people calling each other with relavent data necessary for creating a graph-like object visualized over a map of Canada. That is, it filters the cdr table for unique a_saddr and b_saddr pairs (unique rtp pairings). It then feeds this table through geolite (and ipaddress) to obtain human readable information such as ASN information and latitude/longitude.\n\nIt also creates smaller tables centered around Vancouver, Toronto, and Montreal (where CloudPBX has servers) in the instance that smaller graph-like objects and maps desire to be created."
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "import numpy as np\nimport pandas as pd\nimport geoip2.database\nimport ipaddress\nimport os\nimport dask.dataframe as dd",
"execution_count": 4,
"outputs": []
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "DATA_ROOT = 'files/'\nCSV_FILE_PATH = os.path.join(DATA_ROOT + 'cdr_from_2018-05-01-order-calldate-asc.csv')\nCSV_SUB_FILE_PATH = os.path.join(DATA_ROOT + 'distinct_subrip_cpbxip.csv')\nGEOLITE_ASN_PATH = os.path.join(DATA_ROOT + 'GeoLite2-ASN.mmdb')\nGEOLITE_CITY_PATH = os.path.join(DATA_ROOT + 'GeoLite2-City.mmdb')",
"execution_count": 3,
"outputs": []
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "HEADER = [\"ID\",\"calldate\",\"callend\",\"duration\",\"connect_duration\",\"progress_time\",\"first_rtp_time\",\"caller\",\n \"caller_domain\",\"caller_reverse\",\"callername\",\"callername_reverse\",\"called\",\"called_domain\",\"called_reverse\",\n \"sipcallerip\",\"sipcallerport\",\"sipcalledip\",\"sipcalledport\",\"whohanged\",\"bye\",\"lastSIPresponse_id\",\n \"lastSIPresponseNum\",\"sighup\",\"dscp\",\"a_index\",\"b_index\",\"a_payload\",\"b_payload\",\"a_saddr\",\"b_saddr\",\n \"a_received\",\"b_received\",\"a_lost\",\"b_lost\",\"a_ua_id\",\"b_ua_id\",\"a_avgjitter_mult10\",\"b_avgjitter_mult10\",\n \"a_maxjitter\",\"b_maxjitter\",\"a_sl1\",\"a_sl2\",\"a_sl3\",\"a_sl4\",\"a_sl5\",\"a_sl6\",\"a_sl7\",\"a_sl8\",\"a_sl9\",\"a_sl10\",\n \"a_d50\",\"a_d70\",\"a_d90\",\"a_d120\",\"a_d150\",\"a_d200\",\"a_d300\",\"b_sl1\",\"b_sl2\",\"b_sl3\",\"b_sl4\",\"b_sl5\",\"b_sl6\",\"b_sl7\",\n \"b_sl8\",\"b_sl9\",\"b_sl10\",\"b_d50\",\"b_d70\",\"b_d90\",\"b_d120\",\"b_d150\",\"b_d200\",\"b_d300\",\"a_mos_lqo_mult10\",\n \"b_mos_lqo_mult10\",\"a_mos_f1_mult10\",\"a_mos_f2_mult10\",\"a_mos_adapt_mult10\",\"b_mos_f1_mult10\",\"b_mos_f2_mult10\",\n \"b_mos_adapt_mult10\",\"a_rtcp_loss\",\"a_rtcp_maxfr\",\"a_rtcp_avgfr_mult10\",\"a_rtcp_maxjitter\",\"a_rtcp_avgjitter_mult10\",\n \"b_rtcp_loss\",\"b_rtcp_maxfr\",\"b_rtcp_avgfr_mult10\",\"b_rtcp_maxjitter\",\"b_rtcp_avgjitter_mult10\",\"a_last_rtp_from_end\",\n \"b_last_rtp_from_end\",\"payload\",\"jitter_mult10\",\"mos_min_mult10\",\"a_mos_min_mult10\",\"b_mos_min_mult10\",\n \"packet_loss_perc_mult1000\",\"a_packet_loss_perc_mult1000\",\"b_packet_loss_perc_mult1000\",\"delay_sum\",\"a_delay_sum\",\n \"b_delay_sum\",\"delay_avg_mult100\",\"a_delay_avg_mult100\",\"b_delay_avg_mult100\",\"delay_cnt\",\"a_delay_cnt\",\n \"b_delay_cnt\",\"rtcp_avgfr_mult10\",\"rtcp_avgjitter_mult10\",\"lost\",\"id_sensor\",\"price_operator_mult100\",\n \"price_operator_currency_id\",\"price_customer_mult100\",\"price_customer_currency_id\",\"reason_sip_cause\",\n \"reason_sip_text_id\",\"reason_q850_cause\",\"reason_q850_text_id\",\"caller_silence\",\"called_silence\",\n \"caller_silence_end\",\"called_silence_end\",\"a_mos_xr_min_mult10\",\"b_mos_xr_min_mult10\",\"a_mos_xr_mult10\",\n \"b_mos_xr_mult10\",\"response_time_100\",\"response_time_xxx\",\"a_mos_f1_min_mult10\",\"a_mos_f2_min_mult10\",\n \"a_mos_adapt_min_mult10\",\"b_mos_f1_min_mult10\",\"b_mos_f2_min_mult10\",\"b_mos_adapt_min_mult10\",\"a_rtp_ptime\",\n \"b_rtp_ptime\",\"flags\"]",
"execution_count": 3,
"outputs": []
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "# read dataframe\ndf = pd.read_csv(CSV_FILE_PATH, names=HEADER)\ndf_sub = pd.read_csv(CSV_SUB_FILE_PATH)",
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": "/opt/conda/lib/python3.6/site-packages/IPython/core/interactiveshell.py:2785: DtypeWarning: Columns (95,97,98,99,132) have mixed types. Specify dtype option on import or set low_memory=False.\n interactivity=interactivity, compiler=compiler, result=result)\n"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### make a table containing only rtp ip information"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "DESCRIBED_COLUMNS = [\"a_saddr\",\"b_saddr\"]\ndf_geo = df[DESCRIBED_COLUMNS]\ndf_geo.shape",
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "(1374842, 2)"
},
"execution_count": 9,
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "filtering out the carrier ips, keep only the subscriber ips"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_geo = df_geo.loc[df['a_saddr'].isin(df_sub['subsriber_reg_ip']) | df['b_saddr'].isin(df_sub['subsriber_reg_ip'])]\ndf_geo.shape",
"execution_count": 10,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "(601169, 2)"
},
"execution_count": 10,
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "get rid of duplicate pairs"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_geo_unique_ip = df_geo.drop_duplicates()\ndf_geo_unique_ip.shape",
"execution_count": 16,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "(4072, 2)"
},
"execution_count": 16,
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Link IP addresses to ASN"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "# initiate geoip client\nreaderASN = geoip2.database.Reader(GEOLITE_ASN_PATH)\nreaderCITY = geoip2.database.Reader(GEOLITE_CITY_PATH)",
"execution_count": 17,
"outputs": []
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "# functions to get AS info\ndef getASobject(x):\n ip = ipaddress.ip_address(x)\n try: return readerASN.asn(str(ip))\n except: return \"The address {} is not in the database.\".format(ip)\ndef getIP(x):\n if type(x) == str: return x\n return x.ip_address\ndef getASN(x):\n if type(x) == str: return x\n return x.autonomous_system_number\ndef getASorg(x):\n if type(x) == str: return x\n return x.autonomous_system_organization\ndef getLat(x):\n try: return readerCITY.city(str(x)).location.latitude\n except: return 0.0\ndef getLong(x):\n try: return readerCITY.city(str(x)).location.longitude\n except: return 0.0\ndef sendA(x):\n if x == \"CloudPBX\": return False\n return True",
"execution_count": 49,
"outputs": []
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "# making a vector of AS objects for a_saddr\nV = df_geo_unique_ip['a_saddr'].apply(getASobject)\n# adding columns to the data frame\ndf_geo_unique_ip['a_saddr_asn'] = V.apply(getASN)\ndf_geo_unique_ip['a_saddr_asorg'] = V.apply(getASorg)\ndf_geo_unique_ip['a_saddr_as_ip'] = V.apply(getIP)\ndf_geo_unique_ip['a_saddr_lat'] = df_geo_unique_ip['a_saddr_as_ip'].apply(getLat)\ndf_geo_unique_ip['a_saddr_long'] = df_geo_unique_ip['a_saddr_as_ip'].apply(getLong)",
"execution_count": 19,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:4: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n after removing the cwd from sys.path.\n/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n \"\"\"\n/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:6: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n \n/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:7: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n import sys\n/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:8: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n \n"
}
]
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "# making a vector of AS objects for b_saddr\nV = df_geo_unique_ip['b_saddr'].apply(getASobject)\n# adding columns to the data frame\ndf_geo_unique_ip['b_saddr_asn'] = V.apply(getASN)\ndf_geo_unique_ip['b_saddr_asorg'] = V.apply(getASorg)\ndf_geo_unique_ip['b_saddr_as_ip'] = V.apply(getIP)\ndf_geo_unique_ip['b_saddr_lat'] = df_geo_unique_ip['b_saddr_as_ip'].apply(getLat)\ndf_geo_unique_ip['b_saddr_long'] = df_geo_unique_ip['b_saddr_as_ip'].apply(getLong)",
"execution_count": 20,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:4: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n after removing the cwd from sys.path.\n/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n \"\"\"\n/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:6: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n \n/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:7: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n import sys\n/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:8: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n \n"
}
]
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_geo_unique_ip.head()",
"execution_count": 22,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": " a_saddr b_saddr a_saddr_asn a_saddr_asorg \\\n1 3227975250 1176778026 395152 CloudPBX \n2 1614226523 3227975250 6327 Shaw Communications Inc. \n9 3227975251 1268628388 395152 CloudPBX \n10 1268497742 3227975250 852 TELUS Communications Inc. \n14 3227975250 3330677851 395152 CloudPBX \n\n a_saddr_as_ip a_saddr_lat a_saddr_long b_saddr_asn \\\n1 192.102.254.82 43.6319 -79.3716 40029 \n2 96.55.36.91 49.1889 -122.8730 395152 \n9 192.102.254.83 43.6319 -79.3716 852 \n10 75.155.189.78 49.2475 -123.1210 395152 \n14 192.102.254.82 43.6319 -79.3716 30500 \n\n b_saddr_asorg b_saddr_as_ip b_saddr_lat b_saddr_long \n1 Novus Entertainment Inc. 70.36.53.42 49.2788 -123.1139 \n2 CloudPBX 192.102.254.82 43.6319 -79.3716 \n9 TELUS Communications Inc. 75.157.187.164 49.8928 -119.4852 \n10 CloudPBX 192.102.254.82 43.6319 -79.3716 \n14 Wolfpaw Data Centres Inc 198.134.28.91 55.3333 -115.4167 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>a_saddr</th>\n <th>b_saddr</th>\n <th>a_saddr_asn</th>\n <th>a_saddr_asorg</th>\n <th>a_saddr_as_ip</th>\n <th>a_saddr_lat</th>\n <th>a_saddr_long</th>\n <th>b_saddr_asn</th>\n <th>b_saddr_asorg</th>\n <th>b_saddr_as_ip</th>\n <th>b_saddr_lat</th>\n <th>b_saddr_long</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1</th>\n <td>3227975250</td>\n <td>1176778026</td>\n <td>395152</td>\n <td>CloudPBX</td>\n <td>192.102.254.82</td>\n <td>43.6319</td>\n <td>-79.3716</td>\n <td>40029</td>\n <td>Novus Entertainment Inc.</td>\n <td>70.36.53.42</td>\n <td>49.2788</td>\n <td>-123.1139</td>\n </tr>\n <tr>\n <th>2</th>\n <td>1614226523</td>\n <td>3227975250</td>\n <td>6327</td>\n <td>Shaw Communications Inc.</td>\n <td>96.55.36.91</td>\n <td>49.1889</td>\n <td>-122.8730</td>\n <td>395152</td>\n <td>CloudPBX</td>\n <td>192.102.254.82</td>\n <td>43.6319</td>\n <td>-79.3716</td>\n </tr>\n <tr>\n <th>9</th>\n <td>3227975251</td>\n <td>1268628388</td>\n <td>395152</td>\n <td>CloudPBX</td>\n <td>192.102.254.83</td>\n <td>43.6319</td>\n <td>-79.3716</td>\n <td>852</td>\n <td>TELUS Communications Inc.</td>\n <td>75.157.187.164</td>\n <td>49.8928</td>\n <td>-119.4852</td>\n </tr>\n <tr>\n <th>10</th>\n <td>1268497742</td>\n <td>3227975250</td>\n <td>852</td>\n <td>TELUS Communications Inc.</td>\n <td>75.155.189.78</td>\n <td>49.2475</td>\n <td>-123.1210</td>\n <td>395152</td>\n <td>CloudPBX</td>\n <td>192.102.254.82</td>\n <td>43.6319</td>\n <td>-79.3716</td>\n </tr>\n <tr>\n <th>14</th>\n <td>3227975250</td>\n <td>3330677851</td>\n <td>395152</td>\n <td>CloudPBX</td>\n <td>192.102.254.82</td>\n <td>43.6319</td>\n <td>-79.3716</td>\n <td>30500</td>\n <td>Wolfpaw Data Centres Inc</td>\n <td>198.134.28.91</td>\n <td>55.3333</td>\n <td>-115.4167</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 22,
"metadata": {}
}
]
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_geo_unique_ip.shape",
"execution_count": 23,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "(4072, 12)"
},
"execution_count": 23,
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "we want the rtp data from the leg of the call that is not CloudPBX"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_geo_unique_ip['send_A'] = df_geo_unique_ip['a_saddr_asorg'].apply(sendA)",
"execution_count": 50,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n \"\"\"Entry point for launching an IPython kernel.\n"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "write table to file"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_geo_unique_ip.to_csv('rtp_unique_ip.csv')",
"execution_count": 57,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## df_geo_unique_ip holds the table with unique ip pairings but some of these pairings have the same locational data\nif we want to filter further for unique lat/long continue on..."
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_geo_unique_latlong = df_geo_unique_ip[['a_saddr_asn','a_saddr_asorg','a_saddr_lat','a_saddr_long',\n 'b_saddr_asn','b_saddr_asorg','b_saddr_lat','b_saddr_long']].drop_duplicates()",
"execution_count": 58,
"outputs": []
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_geo_unique_latlong.shape",
"execution_count": 59,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "(1440, 8)"
},
"execution_count": 59,
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "write table to file"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_geo_unique_latlong.to_csv('rtp_unique_latlong.csv')",
"execution_count": 60,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Split into cities"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_van_ip = df_geo_unique_ip[(df_geo_unique_ip['a_saddr_asn']==395152) | \n (df_geo_unique_ip['b_saddr_asn']==395152)]\ndf_van_latlong = df_geo_unique_latlong[(df_geo_unique_latlong['a_saddr_asn']==395152) | \n (df_geo_unique_latlong['b_saddr_asn']==395152)]\ndf_tor_ip = df_geo_unique_ip[(df_geo_unique_ip['a_saddr_asn']==393755) | \n (df_geo_unique_ip['b_saddr_asn']==393755)]\ndf_tor_latlong = df_geo_unique_latlong[(df_geo_unique_latlong['a_saddr_asn']==393755) | \n (df_geo_unique_latlong['b_saddr_asn']==393755)]\ndf_mtl_ip = df_geo_unique_ip[(df_geo_unique_ip['a_saddr_asn']==395766) | \n (df_geo_unique_ip['b_saddr_asn']==395766)]\ndf_mtl_latlong = df_geo_unique_latlong[(df_geo_unique_latlong['a_saddr_asn']==395766) | \n (df_geo_unique_latlong['b_saddr_asn']==395766)]",
"execution_count": 52,
"outputs": []
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "print(df_van_ip.shape,\ndf_tor_ip.shape,\ndf_mtl_ip.shape)",
"execution_count": 53,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": "(1390, 13) (1496, 13) (1186, 13)\n"
}
]
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "print(df_van_latlong.shape,\ndf_tor_latlong.shape,\ndf_mtl_latlong.shape)",
"execution_count": 54,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": "(1390, 10) (1496, 10) (1186, 10)\n"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "moar files"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_van_ip.to_csv('van_rtp_unique_ip.csv')\ndf_tor_ip.to_csv('tor_rtp_unique_ip.csv')\ndf_mtl_ip.to_csv('mtl_rtp_unique_ip.csv')\ndf_van_latlong.to_csv('van_rtp_unique_latlong.csv')\ndf_tor_latlong.to_csv('tor_rtp_unique_latlong.csv')\ndf_mtl_latlong.to_csv('mtl_rtp_unique_latlong.csv')",
"execution_count": 55,
"outputs": []
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "df_mtl_ip",
"execution_count": 61,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": " a_saddr b_saddr a_saddr_asn \\\n111 1654599251 1818172010 395766 \n775 2393257217 1654599251 855 \n994 1654599251 417208700 395766 \n1107 417208700 1654599250 11260 \n1321 417208698 1654599251 11260 \n1466 417208698 1654599250 11260 \n1467 1654599250 417208698 395766 \n1607 417208700 1654599251 11260 \n1701 1654599251 417208698 395766 \n1749 1676539840 1654599250 812 \n1768 3514832870 1654599251 855 \n1855 1654599251 2393257259 395766 \n1878 2904576785 1654599250 812 \n1937 1654599251 2904575889 395766 \n1941 2393990862 1654599251 855 \n1942 1654599251 2393990862 395766 \n1947 1676535575 1654599251 812 \n1979 3638379076 1654599251 7992 \n2023 1676535575 1654599250 812 \n2034 2393257259 1654599250 855 \n2076 2393257259 1654599251 855 \n2080 2393277605 1654599251 855 \n2105 2393990862 1654599250 855 \n2106 1654599250 2393990862 395766 \n2120 3514832870 1654599250 855 \n2134 1654599250 1599332522 395766 \n2199 2393314675 1654599250 855 \n2231 2904576785 1654599251 812 \n2319 1654599250 1676539840 395766 \n2399 1654599251 3507478250 395766 \n... ... ... ... \n1241331 2392981597 1654599250 855 \n1241961 2392981597 1654599251 855 \n1244036 3096949733 1654599251 36522 \n1244108 1654599250 2621001610 395766 \n1244419 410143289 1654599250 812 \n1244813 410143289 1654599251 812 \n1272740 1654599251 1675964981 395766 \n1273614 1654599250 1675964981 395766 \n1280755 1654599250 1632558126 395766 \n1290419 3096966898 1654599250 36522 \n1291858 1654599251 2393257102 395766 \n1292107 3349638544 1654599251 22652 \n1296084 1616135001 1654599250 7922 \n1298954 1088895481 1654599251 577 \n1303462 845530229 1654599250 577 \n1304637 1616135001 1654599251 7922 \n1307247 3096949263 1654599250 36522 \n1308004 2393990864 1654599250 855 \n1310038 2393990864 1654599251 855 \n1319442 3096966898 1654599251 36522 \n1321139 845530229 1654599251 577 \n1340749 2392989317 1654599251 855 \n1341406 1654599250 2392989317 395766 \n1341683 2392989317 1654599250 855 \n1348075 1654599251 845530229 395766 \n1349110 1654599251 2392989317 395766 \n1352347 1088696115 1654599250 577 \n1352944 1088696115 1654599251 577 \n1367513 407911751 1654599251 6327 \n1370882 1242347952 1654599250 577 \n\n a_saddr_asorg a_saddr_as_ip a_saddr_lat \\\n111 CloudPBX 98.159.46.83 40.7432 \n775 Bell Canada 142.166.53.1 47.5334 \n994 CloudPBX 98.159.46.83 40.7432 \n1107 EastLink 24.222.25.124 45.2000 \n1321 EastLink 24.222.25.122 45.2000 \n1466 EastLink 24.222.25.122 45.2000 \n1467 CloudPBX 98.159.46.82 40.7432 \n1607 EastLink 24.222.25.124 45.2000 \n1701 CloudPBX 98.159.46.83 40.7432 \n1749 Rogers Communications Canada Inc. 99.237.247.192 47.6333 \n1768 Bell Canada 209.128.23.230 47.5167 \n1855 CloudPBX 98.159.46.83 40.7432 \n1878 Rogers Communications Canada Inc. 173.32.83.17 47.5986 \n1937 CloudPBX 98.159.46.83 40.7432 \n1941 Bell Canada 142.177.102.206 47.5124 \n1942 CloudPBX 98.159.46.83 40.7432 \n1947 Rogers Communications Canada Inc. 99.237.231.23 47.5986 \n1979 Cogeco Cable 216.221.66.68 42.9888 \n2023 Rogers Communications Canada Inc. 99.237.231.23 47.5986 \n2034 Bell Canada 142.166.53.43 47.5334 \n2076 Bell Canada 142.166.53.43 47.5334 \n2080 Bell Canada 142.166.132.165 45.2308 \n2105 Bell Canada 142.177.102.206 47.5124 \n2106 CloudPBX 98.159.46.82 40.7432 \n2120 Bell Canada 209.128.23.230 47.5167 \n2134 CloudPBX 98.159.46.82 40.7432 \n2199 Bell Canada 142.167.21.115 47.5194 \n2231 Rogers Communications Canada Inc. 173.32.83.17 47.5986 \n2319 CloudPBX 98.159.46.82 40.7432 \n2399 CloudPBX 98.159.46.83 40.7432 \n... ... ... ... \n1241331 Bell Canada 142.162.0.93 47.5986 \n1241961 Bell Canada 142.162.0.93 47.5986 \n1244036 BELL MOBILITY INC. 184.151.179.229 43.6736 \n1244108 CloudPBX 98.159.46.82 40.7432 \n1244419 Rogers Communications Canada Inc. 24.114.74.57 43.6861 \n1244813 Rogers Communications Canada Inc. 24.114.74.57 43.6861 \n1272740 CloudPBX 98.159.46.83 40.7432 \n1273614 CloudPBX 98.159.46.82 40.7432 \n1280755 CloudPBX 98.159.46.82 40.7432 \n1290419 BELL MOBILITY INC. 184.151.246.242 45.4166 \n1291858 CloudPBX 98.159.46.83 40.7432 \n1292107 Fibrenoire Inc. 199.167.109.144 43.6564 \n1296084 Comcast Cable Communications, LLC 96.84.67.89 41.8802 \n1298954 Bell Canada 64.231.57.249 43.8769 \n1303462 Bell Canada 50.101.196.117 43.9251 \n1304637 Comcast Cable Communications, LLC 96.84.67.89 41.8802 \n1307247 BELL MOBILITY INC. 184.151.178.15 43.6736 \n1308004 Bell Canada 142.177.102.208 47.5124 \n1310038 Bell Canada 142.177.102.208 47.5124 \n1319442 BELL MOBILITY INC. 184.151.246.242 45.4166 \n1321139 Bell Canada 50.101.196.117 43.9251 \n1340749 Bell Canada 142.162.30.133 47.5986 \n1341406 CloudPBX 98.159.46.82 40.7432 \n1341683 Bell Canada 142.162.30.133 47.5986 \n1348075 CloudPBX 98.159.46.83 40.7432 \n1349110 CloudPBX 98.159.46.83 40.7432 \n1352347 Bell Canada 64.228.47.51 47.3507 \n1352944 Bell Canada 64.228.47.51 47.3507 \n1367513 Shaw Communications Inc. 24.80.61.71 49.2275 \n1370882 Bell Canada 74.12.185.176 43.9251 \n\n a_saddr_long b_saddr_asn b_saddr_asorg \\\n111 -75.2242 7018 AT&T Services, Inc. \n775 -52.7595 395766 CloudPBX \n994 -75.2242 11260 EastLink \n1107 -64.1167 395766 CloudPBX \n1321 -64.1167 395766 CloudPBX \n1466 -64.1167 395766 CloudPBX \n1467 -75.2242 11260 EastLink \n1607 -64.1167 395766 CloudPBX \n1701 -75.2242 11260 EastLink \n1749 -52.8500 395766 CloudPBX \n1768 -52.7833 395766 CloudPBX \n1855 -75.2242 855 Bell Canada \n1878 -52.6926 395766 CloudPBX \n1937 -75.2242 812 Rogers Communications Canada Inc. \n1941 -52.6729 395766 CloudPBX \n1942 -75.2242 855 Bell Canada \n1947 -52.6926 395766 CloudPBX \n1979 -82.3592 395766 CloudPBX \n2023 -52.6926 395766 CloudPBX \n2034 -52.7595 395766 CloudPBX \n2076 -52.7595 395766 CloudPBX \n2080 -66.0953 395766 CloudPBX \n2105 -52.6729 395766 CloudPBX \n2106 -75.2242 855 Bell Canada \n2120 -52.7833 395766 CloudPBX \n2134 -75.2242 13280 Three Ireland (Hutchison) limited \n2199 -52.8122 395766 CloudPBX \n2231 -52.6926 395766 CloudPBX \n2319 -75.2242 812 Rogers Communications Canada Inc. \n2399 -75.2242 13768 Cogeco Peer 1 \n... ... ... ... \n1241331 -52.6926 395766 CloudPBX \n1241961 -52.6926 395766 CloudPBX \n1244036 -79.4035 395766 CloudPBX \n1244108 -75.2242 855 Bell Canada \n1244419 -79.4025 395766 CloudPBX \n1244813 -79.4025 395766 CloudPBX \n1272740 -75.2242 812 Rogers Communications Canada Inc. \n1273614 -75.2242 812 Rogers Communications Canada Inc. \n1280755 -75.2242 33363 BRIGHT HOUSE NETWORKS, LLC \n1290419 -75.6904 395766 CloudPBX \n1291858 -75.2242 855 Bell Canada \n1292107 -79.3860 395766 CloudPBX \n1296084 -87.7566 395766 CloudPBX \n1298954 -79.2686 395766 CloudPBX \n1303462 -78.8287 395766 CloudPBX \n1304637 -87.7566 395766 CloudPBX \n1307247 -79.4035 395766 CloudPBX \n1308004 -52.6729 395766 CloudPBX \n1310038 -52.6729 395766 CloudPBX \n1319442 -75.6904 395766 CloudPBX \n1321139 -78.8287 395766 CloudPBX \n1340749 -52.6926 395766 CloudPBX \n1341406 -75.2242 855 Bell Canada \n1341683 -52.6926 395766 CloudPBX \n1348075 -75.2242 577 Bell Canada \n1349110 -75.2242 855 Bell Canada \n1352347 -71.2020 395766 CloudPBX \n1352944 -71.2020 395766 CloudPBX \n1367513 -122.9301 395766 CloudPBX \n1370882 -78.8287 395766 CloudPBX \n\n b_saddr_as_ip b_saddr_lat b_saddr_long send_A \n111 108.95.26.106 42.5038 -83.4764 False \n775 98.159.46.83 40.7432 -75.2242 True \n994 24.222.25.124 45.2000 -64.1167 False \n1107 98.159.46.82 40.7432 -75.2242 True \n1321 98.159.46.83 40.7432 -75.2242 True \n1466 98.159.46.82 40.7432 -75.2242 True \n1467 24.222.25.122 45.2000 -64.1167 False \n1607 98.159.46.83 40.7432 -75.2242 True \n1701 24.222.25.122 45.2000 -64.1167 False \n1749 98.159.46.82 40.7432 -75.2242 True \n1768 98.159.46.83 40.7432 -75.2242 True \n1855 142.166.53.43 47.5334 -52.7595 False \n1878 98.159.46.82 40.7432 -75.2242 True \n1937 173.32.79.145 47.5986 -52.6926 False \n1941 98.159.46.83 40.7432 -75.2242 True \n1942 142.177.102.206 47.5124 -52.6729 False \n1947 98.159.46.83 40.7432 -75.2242 True \n1979 98.159.46.83 40.7432 -75.2242 True \n2023 98.159.46.82 40.7432 -75.2242 True \n2034 98.159.46.82 40.7432 -75.2242 True \n2076 98.159.46.83 40.7432 -75.2242 True \n2080 98.159.46.83 40.7432 -75.2242 True \n2105 98.159.46.82 40.7432 -75.2242 True \n2106 142.177.102.206 47.5124 -52.6729 False \n2120 98.159.46.82 40.7432 -75.2242 True \n2134 95.83.224.170 53.3331 -6.2489 False \n2199 98.159.46.82 40.7432 -75.2242 True \n2231 98.159.46.83 40.7432 -75.2242 True \n2319 99.237.247.192 47.6333 -52.8500 False \n2399 209.15.222.234 43.6021 -79.5402 False \n... ... ... ... ... \n1241331 98.159.46.82 40.7432 -75.2242 True \n1241961 98.159.46.83 40.7432 -75.2242 True \n1244036 98.159.46.83 40.7432 -75.2242 True \n1244108 156.57.79.138 47.5167 -52.7833 False \n1244419 98.159.46.82 40.7432 -75.2242 True \n1244813 98.159.46.83 40.7432 -75.2242 True \n1272740 99.229.50.53 43.8156 -79.4534 False \n1273614 99.229.50.53 43.8156 -79.4534 False \n1280755 97.78.220.46 40.5099 -85.6264 False \n1290419 98.159.46.82 40.7432 -75.2242 True \n1291858 142.166.52.142 47.5334 -52.7595 False \n1292107 98.159.46.83 40.7432 -75.2242 True \n1296084 98.159.46.82 40.7432 -75.2242 True \n1298954 98.159.46.83 40.7432 -75.2242 True \n1303462 98.159.46.82 40.7432 -75.2242 True \n1304637 98.159.46.83 40.7432 -75.2242 True \n1307247 98.159.46.82 40.7432 -75.2242 True \n1308004 98.159.46.82 40.7432 -75.2242 True \n1310038 98.159.46.83 40.7432 -75.2242 True \n1319442 98.159.46.83 40.7432 -75.2242 True \n1321139 98.159.46.83 40.7432 -75.2242 True \n1340749 98.159.46.83 40.7432 -75.2242 True \n1341406 142.162.30.133 47.5986 -52.6926 False \n1341683 98.159.46.82 40.7432 -75.2242 True \n1348075 50.101.196.117 43.9251 -78.8287 False \n1349110 142.162.30.133 47.5986 -52.6926 False \n1352347 98.159.46.82 40.7432 -75.2242 True \n1352944 98.159.46.83 40.7432 -75.2242 True \n1367513 98.159.46.83 40.7432 -75.2242 True \n1370882 98.159.46.82 40.7432 -75.2242 True \n\n[1186 rows x 13 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>a_saddr</th>\n <th>b_saddr</th>\n <th>a_saddr_asn</th>\n <th>a_saddr_asorg</th>\n <th>a_saddr_as_ip</th>\n <th>a_saddr_lat</th>\n <th>a_saddr_long</th>\n <th>b_saddr_asn</th>\n <th>b_saddr_asorg</th>\n <th>b_saddr_as_ip</th>\n <th>b_saddr_lat</th>\n <th>b_saddr_long</th>\n <th>send_A</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>111</th>\n <td>1654599251</td>\n <td>1818172010</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>7018</td>\n <td>AT&amp;T Services, Inc.</td>\n <td>108.95.26.106</td>\n <td>42.5038</td>\n <td>-83.4764</td>\n <td>False</td>\n </tr>\n <tr>\n <th>775</th>\n <td>2393257217</td>\n <td>1654599251</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.166.53.1</td>\n <td>47.5334</td>\n <td>-52.7595</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>994</th>\n <td>1654599251</td>\n <td>417208700</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>11260</td>\n <td>EastLink</td>\n <td>24.222.25.124</td>\n <td>45.2000</td>\n <td>-64.1167</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1107</th>\n <td>417208700</td>\n <td>1654599250</td>\n <td>11260</td>\n <td>EastLink</td>\n <td>24.222.25.124</td>\n <td>45.2000</td>\n <td>-64.1167</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1321</th>\n <td>417208698</td>\n <td>1654599251</td>\n <td>11260</td>\n <td>EastLink</td>\n <td>24.222.25.122</td>\n <td>45.2000</td>\n <td>-64.1167</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1466</th>\n <td>417208698</td>\n <td>1654599250</td>\n <td>11260</td>\n <td>EastLink</td>\n <td>24.222.25.122</td>\n <td>45.2000</td>\n <td>-64.1167</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1467</th>\n <td>1654599250</td>\n <td>417208698</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>11260</td>\n <td>EastLink</td>\n <td>24.222.25.122</td>\n <td>45.2000</td>\n <td>-64.1167</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1607</th>\n <td>417208700</td>\n <td>1654599251</td>\n <td>11260</td>\n <td>EastLink</td>\n <td>24.222.25.124</td>\n <td>45.2000</td>\n <td>-64.1167</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1701</th>\n <td>1654599251</td>\n <td>417208698</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>11260</td>\n <td>EastLink</td>\n <td>24.222.25.122</td>\n <td>45.2000</td>\n <td>-64.1167</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1749</th>\n <td>1676539840</td>\n <td>1654599250</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>99.237.247.192</td>\n <td>47.6333</td>\n <td>-52.8500</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1768</th>\n <td>3514832870</td>\n <td>1654599251</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>209.128.23.230</td>\n <td>47.5167</td>\n <td>-52.7833</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1855</th>\n <td>1654599251</td>\n <td>2393257259</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.166.53.43</td>\n <td>47.5334</td>\n <td>-52.7595</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1878</th>\n <td>2904576785</td>\n <td>1654599250</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>173.32.83.17</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1937</th>\n <td>1654599251</td>\n <td>2904575889</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>173.32.79.145</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1941</th>\n <td>2393990862</td>\n <td>1654599251</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.177.102.206</td>\n <td>47.5124</td>\n <td>-52.6729</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1942</th>\n <td>1654599251</td>\n <td>2393990862</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.177.102.206</td>\n <td>47.5124</td>\n <td>-52.6729</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1947</th>\n <td>1676535575</td>\n <td>1654599251</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>99.237.231.23</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1979</th>\n <td>3638379076</td>\n <td>1654599251</td>\n <td>7992</td>\n <td>Cogeco Cable</td>\n <td>216.221.66.68</td>\n <td>42.9888</td>\n <td>-82.3592</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2023</th>\n <td>1676535575</td>\n <td>1654599250</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>99.237.231.23</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2034</th>\n <td>2393257259</td>\n <td>1654599250</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.166.53.43</td>\n <td>47.5334</td>\n <td>-52.7595</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2076</th>\n <td>2393257259</td>\n <td>1654599251</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.166.53.43</td>\n <td>47.5334</td>\n <td>-52.7595</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2080</th>\n <td>2393277605</td>\n <td>1654599251</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.166.132.165</td>\n <td>45.2308</td>\n <td>-66.0953</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2105</th>\n <td>2393990862</td>\n <td>1654599250</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.177.102.206</td>\n <td>47.5124</td>\n <td>-52.6729</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2106</th>\n <td>1654599250</td>\n <td>2393990862</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.177.102.206</td>\n <td>47.5124</td>\n <td>-52.6729</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2120</th>\n <td>3514832870</td>\n <td>1654599250</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>209.128.23.230</td>\n <td>47.5167</td>\n <td>-52.7833</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2134</th>\n <td>1654599250</td>\n <td>1599332522</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>13280</td>\n <td>Three Ireland (Hutchison) limited</td>\n <td>95.83.224.170</td>\n <td>53.3331</td>\n <td>-6.2489</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2199</th>\n <td>2393314675</td>\n <td>1654599250</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.167.21.115</td>\n <td>47.5194</td>\n <td>-52.8122</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2231</th>\n <td>2904576785</td>\n <td>1654599251</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>173.32.83.17</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2319</th>\n <td>1654599250</td>\n <td>1676539840</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>99.237.247.192</td>\n <td>47.6333</td>\n <td>-52.8500</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2399</th>\n <td>1654599251</td>\n <td>3507478250</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>13768</td>\n <td>Cogeco Peer 1</td>\n <td>209.15.222.234</td>\n <td>43.6021</td>\n <td>-79.5402</td>\n <td>False</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>1241331</th>\n <td>2392981597</td>\n <td>1654599250</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.162.0.93</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1241961</th>\n <td>2392981597</td>\n <td>1654599251</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.162.0.93</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1244036</th>\n <td>3096949733</td>\n <td>1654599251</td>\n <td>36522</td>\n <td>BELL MOBILITY INC.</td>\n <td>184.151.179.229</td>\n <td>43.6736</td>\n <td>-79.4035</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1244108</th>\n <td>1654599250</td>\n <td>2621001610</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>156.57.79.138</td>\n <td>47.5167</td>\n <td>-52.7833</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1244419</th>\n <td>410143289</td>\n <td>1654599250</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>24.114.74.57</td>\n <td>43.6861</td>\n <td>-79.4025</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1244813</th>\n <td>410143289</td>\n <td>1654599251</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>24.114.74.57</td>\n <td>43.6861</td>\n <td>-79.4025</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1272740</th>\n <td>1654599251</td>\n <td>1675964981</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>99.229.50.53</td>\n <td>43.8156</td>\n <td>-79.4534</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1273614</th>\n <td>1654599250</td>\n <td>1675964981</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>812</td>\n <td>Rogers Communications Canada Inc.</td>\n <td>99.229.50.53</td>\n <td>43.8156</td>\n <td>-79.4534</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1280755</th>\n <td>1654599250</td>\n <td>1632558126</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>33363</td>\n <td>BRIGHT HOUSE NETWORKS, LLC</td>\n <td>97.78.220.46</td>\n <td>40.5099</td>\n <td>-85.6264</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1290419</th>\n <td>3096966898</td>\n <td>1654599250</td>\n <td>36522</td>\n <td>BELL MOBILITY INC.</td>\n <td>184.151.246.242</td>\n <td>45.4166</td>\n <td>-75.6904</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1291858</th>\n <td>1654599251</td>\n <td>2393257102</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.166.52.142</td>\n <td>47.5334</td>\n <td>-52.7595</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1292107</th>\n <td>3349638544</td>\n <td>1654599251</td>\n <td>22652</td>\n <td>Fibrenoire Inc.</td>\n <td>199.167.109.144</td>\n <td>43.6564</td>\n <td>-79.3860</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1296084</th>\n <td>1616135001</td>\n <td>1654599250</td>\n <td>7922</td>\n <td>Comcast Cable Communications, LLC</td>\n <td>96.84.67.89</td>\n <td>41.8802</td>\n <td>-87.7566</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1298954</th>\n <td>1088895481</td>\n <td>1654599251</td>\n <td>577</td>\n <td>Bell Canada</td>\n <td>64.231.57.249</td>\n <td>43.8769</td>\n <td>-79.2686</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1303462</th>\n <td>845530229</td>\n <td>1654599250</td>\n <td>577</td>\n <td>Bell Canada</td>\n <td>50.101.196.117</td>\n <td>43.9251</td>\n <td>-78.8287</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1304637</th>\n <td>1616135001</td>\n <td>1654599251</td>\n <td>7922</td>\n <td>Comcast Cable Communications, LLC</td>\n <td>96.84.67.89</td>\n <td>41.8802</td>\n <td>-87.7566</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1307247</th>\n <td>3096949263</td>\n <td>1654599250</td>\n <td>36522</td>\n <td>BELL MOBILITY INC.</td>\n <td>184.151.178.15</td>\n <td>43.6736</td>\n <td>-79.4035</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1308004</th>\n <td>2393990864</td>\n <td>1654599250</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.177.102.208</td>\n <td>47.5124</td>\n <td>-52.6729</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1310038</th>\n <td>2393990864</td>\n <td>1654599251</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.177.102.208</td>\n <td>47.5124</td>\n <td>-52.6729</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1319442</th>\n <td>3096966898</td>\n <td>1654599251</td>\n <td>36522</td>\n <td>BELL MOBILITY INC.</td>\n <td>184.151.246.242</td>\n <td>45.4166</td>\n <td>-75.6904</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1321139</th>\n <td>845530229</td>\n <td>1654599251</td>\n <td>577</td>\n <td>Bell Canada</td>\n <td>50.101.196.117</td>\n <td>43.9251</td>\n <td>-78.8287</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1340749</th>\n <td>2392989317</td>\n <td>1654599251</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.162.30.133</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1341406</th>\n <td>1654599250</td>\n <td>2392989317</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.162.30.133</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1341683</th>\n <td>2392989317</td>\n <td>1654599250</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.162.30.133</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1348075</th>\n <td>1654599251</td>\n <td>845530229</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>577</td>\n <td>Bell Canada</td>\n <td>50.101.196.117</td>\n <td>43.9251</td>\n <td>-78.8287</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1349110</th>\n <td>1654599251</td>\n <td>2392989317</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>855</td>\n <td>Bell Canada</td>\n <td>142.162.30.133</td>\n <td>47.5986</td>\n <td>-52.6926</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1352347</th>\n <td>1088696115</td>\n <td>1654599250</td>\n <td>577</td>\n <td>Bell Canada</td>\n <td>64.228.47.51</td>\n <td>47.3507</td>\n <td>-71.2020</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1352944</th>\n <td>1088696115</td>\n <td>1654599251</td>\n <td>577</td>\n <td>Bell Canada</td>\n <td>64.228.47.51</td>\n <td>47.3507</td>\n <td>-71.2020</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1367513</th>\n <td>407911751</td>\n <td>1654599251</td>\n <td>6327</td>\n <td>Shaw Communications Inc.</td>\n <td>24.80.61.71</td>\n <td>49.2275</td>\n <td>-122.9301</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.83</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1370882</th>\n <td>1242347952</td>\n <td>1654599250</td>\n <td>577</td>\n <td>Bell Canada</td>\n <td>74.12.185.176</td>\n <td>43.9251</td>\n <td>-78.8287</td>\n <td>395766</td>\n <td>CloudPBX</td>\n <td>98.159.46.82</td>\n <td>40.7432</td>\n <td>-75.2242</td>\n <td>True</td>\n </tr>\n </tbody>\n</table>\n<p>1186 rows × 13 columns</p>\n</div>"
},
"execution_count": 61,
"metadata": {}
}
]
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python [default]",
"language": "python"
},
"language_info": {
"pygments_lexer": "ipython3",
"name": "python",
"nbconvert_exporter": "python",
"version": "3.5.5",
"file_extension": ".py",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
}
},
"toc": {
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"base_numbering": 1,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
},
"gist": {
"id": "",
"data": {
"description": "Geo Worksheet.ipynb",
"public": false
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment