Last active
December 17, 2019 00:42
-
-
Save h4t0n/b5cb77bc1377552b0fae55cb54cb565e to your computer and use it in GitHub Desktop.
gmaps hashtag jupyter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Hashtag analysis with gmaps" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"*Basic required packages*" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import pandas as pd\n", | |
"import gmaps" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# configure gmaps with your token\n", | |
"gmaps.configure(api_key='AIzaS---- your token')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Import and manipulate data" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Data from Instagram generic hashtag scraped with the crawler __[Instagram Scraper](https://github.com/h4t0n/instagram-scraper)__" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"data = pd.read_json('myrepo/scrapy_instagram/scraped/hashtag/italia/06-02-2018_12', lines=True)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# taken_at_timestamp is a unix timestamp - we add a column for the date-time\n", | |
"data['taken_at_timestamp'] = data['taken_at_timestamp'].astype(int)\n", | |
"data['time'] = pd.to_datetime(data['taken_at_timestamp'], unit='s')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# reindex the data frame by new time\n", | |
"#data = data.set_index('time')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"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>caption</th>\n", | |
" <th>display_url</th>\n", | |
" <th>id</th>\n", | |
" <th>loc_id</th>\n", | |
" <th>loc_lat</th>\n", | |
" <th>loc_lon</th>\n", | |
" <th>loc_name</th>\n", | |
" <th>owner_id</th>\n", | |
" <th>owner_name</th>\n", | |
" <th>shortcode</th>\n", | |
" <th>taken_at_timestamp</th>\n", | |
" <th>time</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>Vedi,siamo io te e il tramonto......sembra poc...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/999...</td>\n", | |
" <td>1708618308485525504</td>\n", | |
" <td>0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td></td>\n", | |
" <td>5464709204</td>\n", | |
" <td>alessandro_proietti73</td>\n", | |
" <td>Be2O0yGAi_W</td>\n", | |
" <td>1517903196</td>\n", | |
" <td>2018-02-06 07:46:36</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>San Giovanni in Laterano, Roma #roma #rome #in...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/2f8...</td>\n", | |
" <td>1708641968489071104</td>\n", | |
" <td>0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td></td>\n", | |
" <td>5893175298</td>\n", | |
" <td>trincherafederica</td>\n", | |
" <td>Be2UNFMHYIt</td>\n", | |
" <td>1517906016</td>\n", | |
" <td>2018-02-06 08:33:36</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>#sandefendente #lombardia_super_pics #lombardi...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/4ab...</td>\n", | |
" <td>1708670068328918528</td>\n", | |
" <td>0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td></td>\n", | |
" <td>292679991</td>\n", | |
" <td>tizzy181</td>\n", | |
" <td>Be2al_NFm44</td>\n", | |
" <td>1517909366</td>\n", | |
" <td>2018-02-06 09:29:26</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>GRAZIE FEDERICO! @Regranned from @fred_borro ...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/646...</td>\n", | |
" <td>1708676513338230016</td>\n", | |
" <td>0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td></td>\n", | |
" <td>6280601774</td>\n", | |
" <td>verbaniaedintorni</td>\n", | |
" <td>Be2cDxllAVP</td>\n", | |
" <td>1517910134</td>\n", | |
" <td>2018-02-06 09:42:14</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>#sandefendente #total_benches #panchina#bellav...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/f1e...</td>\n", | |
" <td>1708679529479220736</td>\n", | |
" <td>0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td></td>\n", | |
" <td>292679991</td>\n", | |
" <td>tizzy181</td>\n", | |
" <td>Be2cvqlly5a</td>\n", | |
" <td>1517910494</td>\n", | |
" <td>2018-02-06 09:48:14</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" caption \\\n", | |
"0 Vedi,siamo io te e il tramonto......sembra poc... \n", | |
"1 San Giovanni in Laterano, Roma #roma #rome #in... \n", | |
"2 #sandefendente #lombardia_super_pics #lombardi... \n", | |
"3 GRAZIE FEDERICO! @Regranned from @fred_borro ... \n", | |
"4 #sandefendente #total_benches #panchina#bellav... \n", | |
"\n", | |
" display_url id \\\n", | |
"0 https://instagram.ffco2-1.fna.fbcdn.net/vp/999... 1708618308485525504 \n", | |
"1 https://instagram.ffco2-1.fna.fbcdn.net/vp/2f8... 1708641968489071104 \n", | |
"2 https://instagram.ffco2-1.fna.fbcdn.net/vp/4ab... 1708670068328918528 \n", | |
"3 https://instagram.ffco2-1.fna.fbcdn.net/vp/646... 1708676513338230016 \n", | |
"4 https://instagram.ffco2-1.fna.fbcdn.net/vp/f1e... 1708679529479220736 \n", | |
"\n", | |
" loc_id loc_lat loc_lon loc_name owner_id owner_name \\\n", | |
"0 0 0.0 0.0 5464709204 alessandro_proietti73 \n", | |
"1 0 0.0 0.0 5893175298 trincherafederica \n", | |
"2 0 0.0 0.0 292679991 tizzy181 \n", | |
"3 0 0.0 0.0 6280601774 verbaniaedintorni \n", | |
"4 0 0.0 0.0 292679991 tizzy181 \n", | |
"\n", | |
" shortcode taken_at_timestamp time \n", | |
"0 Be2O0yGAi_W 1517903196 2018-02-06 07:46:36 \n", | |
"1 Be2UNFMHYIt 1517906016 2018-02-06 08:33:36 \n", | |
"2 Be2al_NFm44 1517909366 2018-02-06 09:29:26 \n", | |
"3 Be2cDxllAVP 1517910134 2018-02-06 09:42:14 \n", | |
"4 Be2cvqlly5a 1517910494 2018-02-06 09:48:14 " | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"data.head() #take a look at the data... But we have some post without location" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"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>caption</th>\n", | |
" <th>display_url</th>\n", | |
" <th>id</th>\n", | |
" <th>loc_id</th>\n", | |
" <th>loc_lat</th>\n", | |
" <th>loc_lon</th>\n", | |
" <th>loc_name</th>\n", | |
" <th>owner_id</th>\n", | |
" <th>owner_name</th>\n", | |
" <th>shortcode</th>\n", | |
" <th>taken_at_timestamp</th>\n", | |
" <th>time</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>10</th>\n", | |
" <td>#montecassino #albaneta #volgolazio #instacass...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/fb8...</td>\n", | |
" <td>1708649470243482368</td>\n", | |
" <td>1031235694</td>\n", | |
" <td>41.489120</td>\n", | |
" <td>13.811240</td>\n", | |
" <td>Albaneta-Farm Montecassino</td>\n", | |
" <td>1431102052</td>\n", | |
" <td>matteo_di_fazio</td>\n", | |
" <td>Be2V6PvhasG</td>\n", | |
" <td>1517906911</td>\n", | |
" <td>2018-02-06 08:48:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>11</th>\n", | |
" <td>Al di là dei sogni..🌈🌟 Buongiorno!! ☕️</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/ecf...</td>\n", | |
" <td>1708616248713049600</td>\n", | |
" <td>215712229</td>\n", | |
" <td>42.627778</td>\n", | |
" <td>12.113889</td>\n", | |
" <td>Civita di Bagnoregio</td>\n", | |
" <td>193646380</td>\n", | |
" <td>balinesegirl</td>\n", | |
" <td>Be2OWzyAHaA</td>\n", | |
" <td>1517902950</td>\n", | |
" <td>2018-02-06 07:42:30</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>12</th>\n", | |
" <td>Il cielo sopra Aosta</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/0c3...</td>\n", | |
" <td>1708641647607558400</td>\n", | |
" <td>214483300</td>\n", | |
" <td>45.733300</td>\n", | |
" <td>7.333330</td>\n", | |
" <td>Aosta, Italy</td>\n", | |
" <td>1310683511</td>\n", | |
" <td>sergiopariniphoto</td>\n", | |
" <td>Be2UIaWFjD7</td>\n", | |
" <td>1517905978</td>\n", | |
" <td>2018-02-06 08:32:58</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>13</th>\n", | |
" <td>#_click_italy\\n#italia_mania__\\n#italiainunosc...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/640...</td>\n", | |
" <td>1708637152704822016</td>\n", | |
" <td>213155205</td>\n", | |
" <td>43.066700</td>\n", | |
" <td>12.616700</td>\n", | |
" <td>Assisi, Italy</td>\n", | |
" <td>2214951089</td>\n", | |
" <td>adascopelliti</td>\n", | |
" <td>Be2THAJAXqQ</td>\n", | |
" <td>1517905442</td>\n", | |
" <td>2018-02-06 08:24:02</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>14</th>\n", | |
" <td>Photo by @mauroghizzani\\nAlla foce del Cornia ...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/3fc...</td>\n", | |
" <td>1708668056647467008</td>\n", | |
" <td>254772292</td>\n", | |
" <td>42.916700</td>\n", | |
" <td>10.533300</td>\n", | |
" <td>Piombino, Italy</td>\n", | |
" <td>2116461999</td>\n", | |
" <td>comunepiombino</td>\n", | |
" <td>Be2aItrh3-5</td>\n", | |
" <td>1517909126</td>\n", | |
" <td>2018-02-06 09:25:26</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" caption \\\n", | |
"10 #montecassino #albaneta #volgolazio #instacass... \n", | |
"11 Al di là dei sogni..🌈🌟 Buongiorno!! ☕️ \n", | |
"12 Il cielo sopra Aosta \n", | |
"13 #_click_italy\\n#italia_mania__\\n#italiainunosc... \n", | |
"14 Photo by @mauroghizzani\\nAlla foce del Cornia ... \n", | |
"\n", | |
" display_url id \\\n", | |
"10 https://instagram.ffco2-1.fna.fbcdn.net/vp/fb8... 1708649470243482368 \n", | |
"11 https://instagram.ffco2-1.fna.fbcdn.net/vp/ecf... 1708616248713049600 \n", | |
"12 https://instagram.ffco2-1.fna.fbcdn.net/vp/0c3... 1708641647607558400 \n", | |
"13 https://instagram.ffco2-1.fna.fbcdn.net/vp/640... 1708637152704822016 \n", | |
"14 https://instagram.ffco2-1.fna.fbcdn.net/vp/3fc... 1708668056647467008 \n", | |
"\n", | |
" loc_id loc_lat loc_lon loc_name owner_id \\\n", | |
"10 1031235694 41.489120 13.811240 Albaneta-Farm Montecassino 1431102052 \n", | |
"11 215712229 42.627778 12.113889 Civita di Bagnoregio 193646380 \n", | |
"12 214483300 45.733300 7.333330 Aosta, Italy 1310683511 \n", | |
"13 213155205 43.066700 12.616700 Assisi, Italy 2214951089 \n", | |
"14 254772292 42.916700 10.533300 Piombino, Italy 2116461999 \n", | |
"\n", | |
" owner_name shortcode taken_at_timestamp time \n", | |
"10 matteo_di_fazio Be2V6PvhasG 1517906911 2018-02-06 08:48:31 \n", | |
"11 balinesegirl Be2OWzyAHaA 1517902950 2018-02-06 07:42:30 \n", | |
"12 sergiopariniphoto Be2UIaWFjD7 1517905978 2018-02-06 08:32:58 \n", | |
"13 adascopelliti Be2THAJAXqQ 1517905442 2018-02-06 08:24:02 \n", | |
"14 comunepiombino Be2aItrh3-5 1517909126 2018-02-06 09:25:26 " | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"filtered = data[data['loc_id']!=0]\n", | |
"filtered.head() # now we have only post with location... we want to visualize them" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"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>caption</th>\n", | |
" <th>display_url</th>\n", | |
" <th>id</th>\n", | |
" <th>loc_id</th>\n", | |
" <th>loc_lat</th>\n", | |
" <th>loc_lon</th>\n", | |
" <th>loc_name</th>\n", | |
" <th>owner_id</th>\n", | |
" <th>owner_name</th>\n", | |
" <th>shortcode</th>\n", | |
" <th>taken_at_timestamp</th>\n", | |
" <th>time</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>13712</th>\n", | |
" <td>En Sala Consilina, un pequeño pueblo de montañ...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/9ca...</td>\n", | |
" <td>1708733863189468928</td>\n", | |
" <td>519187957</td>\n", | |
" <td>40.200000</td>\n", | |
" <td>15.200000</td>\n", | |
" <td>Parco Nazionale del Cilento, Vallo di Diano e ...</td>\n", | |
" <td>6822380622</td>\n", | |
" <td>turistaenitalia</td>\n", | |
" <td>Be2pGUzFtaf</td>\n", | |
" <td>1517916971</td>\n", | |
" <td>2018-02-06 11:36:11</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>13711</th>\n", | |
" <td>Trovate le Banane di Dulcinea Perugia presso l...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/db4...</td>\n", | |
" <td>1708733615825214208</td>\n", | |
" <td>216973655</td>\n", | |
" <td>43.110504</td>\n", | |
" <td>12.388626</td>\n", | |
" <td>Centro Storico Perugia</td>\n", | |
" <td>3570468991</td>\n", | |
" <td>dulcineaperugia</td>\n", | |
" <td>Be2pCubB9tS</td>\n", | |
" <td>1517916942</td>\n", | |
" <td>2018-02-06 11:35:42</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>13709</th>\n", | |
" <td>Far sbagliare strada al viaggiatore. ;)\\n.\\n.\\...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/be6...</td>\n", | |
" <td>1708731440524677632</td>\n", | |
" <td>499721845</td>\n", | |
" <td>41.900000</td>\n", | |
" <td>12.716667</td>\n", | |
" <td>Lazio</td>\n", | |
" <td>5706221659</td>\n", | |
" <td>scarecrow3000</td>\n", | |
" <td>Be2ojEhA9Go</td>\n", | |
" <td>1517916682</td>\n", | |
" <td>2018-02-06 11:31:22</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>13707</th>\n", | |
" <td>#piombino #visitpiombino #comunepiombino #volg...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/8e5...</td>\n", | |
" <td>1708730113598031872</td>\n", | |
" <td>254772292</td>\n", | |
" <td>42.916700</td>\n", | |
" <td>10.533300</td>\n", | |
" <td>Piombino, Italy</td>\n", | |
" <td>6232963188</td>\n", | |
" <td>alessiontheroad</td>\n", | |
" <td>Be2oPwuBggv</td>\n", | |
" <td>1517916524</td>\n", | |
" <td>2018-02-06 11:28:44</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>13710</th>\n", | |
" <td>Il Bel campanile del Duomo di Porcia •\\n📍Porci...</td>\n", | |
" <td>https://instagram.ffco2-1.fna.fbcdn.net/vp/324...</td>\n", | |
" <td>1708726365366574336</td>\n", | |
" <td>236515648</td>\n", | |
" <td>45.960000</td>\n", | |
" <td>12.607200</td>\n", | |
" <td>Porcia, Italy</td>\n", | |
" <td>209324157</td>\n", | |
" <td>igorcasapini</td>\n", | |
" <td>Be2nZN6BNz_</td>\n", | |
" <td>1517916077</td>\n", | |
" <td>2018-02-06 11:21:17</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" caption \\\n", | |
"13712 En Sala Consilina, un pequeño pueblo de montañ... \n", | |
"13711 Trovate le Banane di Dulcinea Perugia presso l... \n", | |
"13709 Far sbagliare strada al viaggiatore. ;)\\n.\\n.\\... \n", | |
"13707 #piombino #visitpiombino #comunepiombino #volg... \n", | |
"13710 Il Bel campanile del Duomo di Porcia •\\n📍Porci... \n", | |
"\n", | |
" display_url id \\\n", | |
"13712 https://instagram.ffco2-1.fna.fbcdn.net/vp/9ca... 1708733863189468928 \n", | |
"13711 https://instagram.ffco2-1.fna.fbcdn.net/vp/db4... 1708733615825214208 \n", | |
"13709 https://instagram.ffco2-1.fna.fbcdn.net/vp/be6... 1708731440524677632 \n", | |
"13707 https://instagram.ffco2-1.fna.fbcdn.net/vp/8e5... 1708730113598031872 \n", | |
"13710 https://instagram.ffco2-1.fna.fbcdn.net/vp/324... 1708726365366574336 \n", | |
"\n", | |
" loc_id loc_lat loc_lon \\\n", | |
"13712 519187957 40.200000 15.200000 \n", | |
"13711 216973655 43.110504 12.388626 \n", | |
"13709 499721845 41.900000 12.716667 \n", | |
"13707 254772292 42.916700 10.533300 \n", | |
"13710 236515648 45.960000 12.607200 \n", | |
"\n", | |
" loc_name owner_id \\\n", | |
"13712 Parco Nazionale del Cilento, Vallo di Diano e ... 6822380622 \n", | |
"13711 Centro Storico Perugia 3570468991 \n", | |
"13709 Lazio 5706221659 \n", | |
"13707 Piombino, Italy 6232963188 \n", | |
"13710 Porcia, Italy 209324157 \n", | |
"\n", | |
" owner_name shortcode taken_at_timestamp time \n", | |
"13712 turistaenitalia Be2pGUzFtaf 1517916971 2018-02-06 11:36:11 \n", | |
"13711 dulcineaperugia Be2pCubB9tS 1517916942 2018-02-06 11:35:42 \n", | |
"13709 scarecrow3000 Be2ojEhA9Go 1517916682 2018-02-06 11:31:22 \n", | |
"13707 alessiontheroad Be2oPwuBggv 1517916524 2018-02-06 11:28:44 \n", | |
"13710 igorcasapini Be2nZN6BNz_ 1517916077 2018-02-06 11:21:17 " | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"sorted = filtered.sort_values(by=['time'], ascending=False)\n", | |
"sorted.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"120" | |
] | |
}, | |
"execution_count": 14, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# get the post of the last day\n", | |
"last_day = sorted[(sorted['time'] > '2018-02-05')]\n", | |
"len(last_day) " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"120" | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# post cleaned for bad NaN on latitude longityude\n", | |
"last_day_nona = last_day.dropna()\n", | |
"len(last_day_nona)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"10797" | |
] | |
}, | |
"execution_count": 16, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"full_only_location = filtered[['loc_lat','loc_lon']]\n", | |
"len(full_only_location)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"10792" | |
] | |
}, | |
"execution_count": 17, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# post cleaned for bad NaN on latitude longityude\n", | |
"full_only_location_nona = full_only_location.dropna()\n", | |
"len(full_only_location_nona)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Play with Maps" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## heatmap" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "73d5355072ac431ea9f9620e647044b8", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/html": [ | |
"<img src='https://github.com/h4t0n/instagram-data-analysis/blob/master/images/ht-m1.png?raw=true'> " | |
], | |
"text/plain": [ | |
"Figure()" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"rome = (41.9, 12.4833)\n", | |
"fig = gmaps.figure(center=rome, zoom_level=5)\n", | |
"heatmap_layer = gmaps.heatmap_layer(full_only_location_nona)\n", | |
"fig.add_layer(heatmap_layer)\n", | |
"fig" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# playing with heatmap\n", | |
"heatmap_layer.max_intensity = 200\n", | |
"heatmap_layer.point_radius = 10" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## markers" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 52, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[(40.2, 15.2), (43.1105039482, 12.3886264287)]" | |
] | |
}, | |
"execution_count": 52, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"last_day_locations = [(elem.loc_lat, elem.loc_lon) for elem in last_day_nona.itertuples()]\n", | |
"last_day_locations[0:2] # debug location" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 69, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# a very simple template with image and owner\n", | |
"info_box_template = \"\"\"\n", | |
"<dl>\n", | |
"<dt>Owner</dt><dd>{owner_name}</dd>\n", | |
"<dd>{caption}<dd>\n", | |
"</dl>\n", | |
"<img src=\"{display_url}\">\n", | |
"\"\"\"" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 75, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"['\\n<dl>\\n<dt>Owner</dt><dd>turistaenitalia</dd>\\n<dd>En Sala Consilina, un pequeño pueblo de montaña, que forma parte del Vallo del Diano, es donde comenzó mi conexión con Italia! 💞\\n.\\n.\\n🇮🇹 A Sala Consilina, un piccolo paese in montagna, che fa parte del Vallo del Diano, lì è cominciato il mio legame con Italia 💞\\n.\\n.\\n#turistaenitalia #volgoitalia #igersitalia #igersitaly #imagesofitaly #travelsitaly #yallersitalia #italiainunoscatto #italianplaces #italiamylove #italianholiday #travel #yallerscampania #ig_italia #ig_italy #instaitalia #iconsigliati #italia #italy #italiait #ilikeitaly #danordasud #italy_online #italy_hidden_gems #shotz_of_italia #jlu2789contest #mariocuo #campania #salaconsilina<dd>\\n</dl>\\n<img src=\"https://instagram.ffco2-1.fna.fbcdn.net/vp/9ca9ce882c3080276c6ada9d995be712/5B1703E7/t51.2885-15/e35/26870801_195968737651317_8360859487610863616_n.jpg\">\\n',\n", | |
" '\\n<dl>\\n<dt>Owner</dt><dd>dulcineaperugia</dd>\\n<dd>Trovate le Banane di Dulcinea Perugia presso la nostra boutique in Corso Cavour 104 a Perugia!💛🍫✨\\U0001f929🔝 #dulcinea #dulcineaperugia #perugia #centrostorico #umbria #chocolate #chocomania #loveumbria #cioccolatoartigianale #cioccolateria #madeinumbria #cioccolatini #gifts #icoloridelbrunello #piena_co #instachocolate #italianfood #italianstyle #foodphotography #yellow #italy #iconsigliati #italia #love #waitingfortheweekend #valentinesday #visitumbria #umbriagram @dulcineaperugia<dd>\\n</dl>\\n<img src=\"https://instagram.ffco2-1.fna.fbcdn.net/vp/db4811d384c4236382b66b074028f1dc/5B15934C/t51.2885-15/e35/27578449_2001770640144546_827658713543213056_n.jpg\">\\n']" | |
] | |
}, | |
"execution_count": 75, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"location_info = [info_box_template.format(**elem) for i,elem in last_day_nona.to_dict('index').items()]\n", | |
"location_info[0:2] # debug the template" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 68, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"['\\n<dl>\\n<dt>Owner</dt><dd>turistaenitalia</dd>\\n</dl>\\n<img src=\"https://instagram.ffco2-1.fna.fbcdn.net/vp/9ca9ce882c3080276c6ada9d995be712/5B1703E7/t51.2885-15/e35/26870801_195968737651317_8360859487610863616_n.jpg\">\\n',\n", | |
" '\\n<dl>\\n<dt>Owner</dt><dd>dulcineaperugia</dd>\\n</dl>\\n<img src=\"https://instagram.ffco2-1.fna.fbcdn.net/vp/db4811d384c4236382b66b074028f1dc/5B15934C/t51.2885-15/e35/27578449_2001770640144546_827658713543213056_n.jpg\">\\n']" | |
] | |
}, | |
"execution_count": 68, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# another way to interpolate the template by using itertuples\n", | |
"location_info_2 = [info_box_template.format(**elem._asdict()) for elem in last_day_nona.itertuples()]\n", | |
"location_info_2[0:2] # debug the template" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 71, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"marker_layer = gmaps.marker_layer(last_day_locations, info_box_content=location_info)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 73, | |
"metadata": { | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "2dbb4a2e5fdd4069b78cb44349c783ec", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/html": [ | |
"<img src='https://github.com/h4t0n/instagram-data-analysis/blob/master/images/ht-m2.png?raw=true'> ", | |
"<img src='https://github.com/h4t0n/instagram-data-analysis/blob/master/images/ht-m3.png?raw=true'> " | |
], | |
"text/plain": [ | |
"Figure()" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"fig2 = gmaps.figure()\n", | |
"fig2.add_layer(marker_layer)\n", | |
"fig2" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment