{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.6.0\n"
]
}
],
"source": [
"import os\n",
"import folium\n",
"import pandas as pd\n",
"\n",
"print(folium.__version__)"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"df = pd.read_excel('res2.xlsx', sheet_name='dados')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" longitude | \n",
" latitude | \n",
" COD_LOCALIDADE_TSE | \n",
" NOM_LOCALIDADE_1 | \n",
" NOM_BAIRRO | \n",
" NUM_LOCAL | \n",
" NOM_LOCAL | \n",
" DES_ENDERECO | \n",
" CODIGO | \n",
" LQTD_SECOES | \n",
" LQTD_APTOS | \n",
" INDIGENAS | \n",
" CV | \n",
" GRUPOS | \n",
" EFETIVO | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" -56.104889 | \n",
" -15.589418 | \n",
" 90670 | \n",
" CUIABÁ | \n",
" QUILOMBO | \n",
" 2593 | \n",
" COLÉGIO MAXI | \n",
" RUA ESTEVÃO DE MENDONÇA, 1000 | \n",
" 1906702593 | \n",
" 16 | \n",
" 6309 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 2.0 | \n",
"
\n",
" \n",
" 1 | \n",
" -56.098308 | \n",
" -15.592559 | \n",
" 90670 | \n",
" CUIABÁ | \n",
" CENTRO | \n",
" 1015 | \n",
" INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNO... | \n",
" RUA ZULMIRA CANAVARROS, 95 | \n",
" 1906701015 | \n",
" 24 | \n",
" 4916 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 2.0 | \n",
"
\n",
" \n",
" 2 | \n",
" -56.081131 | \n",
" -15.579708 | \n",
" 90670 | \n",
" CUIABÁ | \n",
" ALVORADA | \n",
" 2488 | \n",
" ESCOLA MUNICIPAL CÂNDIDO MARIANO DA SILVA RONDON | \n",
" RUA PIRATININGA, 101 | \n",
" 1906702488 | \n",
" 12 | \n",
" 4571 | \n",
" 0 | \n",
" 100 | \n",
" 1 | \n",
" 2.0 | \n",
"
\n",
" \n",
" 3 | \n",
" -56.113951 | \n",
" -15.613200 | \n",
" 90670 | \n",
" CUIABÁ | \n",
" PORTO | \n",
" 2844 | \n",
" ESCOLA ESTADUAL JOSÉ BARNABÉ DE MESQUITA | \n",
" RUA BARÃO DE MELGACO, 945 | \n",
" 1906702844 | \n",
" 13 | \n",
" 4471 | \n",
" 0 | \n",
" 100 | \n",
" 2 | \n",
" 2.0 | \n",
"
\n",
" \n",
" 4 | \n",
" -56.128743 | \n",
" -15.618736 | \n",
" 90670 | \n",
" CUIABÁ | \n",
" COOPHAMIL | \n",
" 2810 | \n",
" ESCOLA MUNICIPAL DE EDUCAÇÃO BÁSICA PROFESSOR ... | \n",
" RUA JOÃO PAULO DOS SANTOS, S/N | \n",
" 1906702810 | \n",
" 12 | \n",
" 4308 | \n",
" 0 | \n",
" 0 | \n",
" 3 | \n",
" 2.0 | \n",
"
\n",
" \n",
"
\n",
"
"
]
},
"execution_count": 3,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"grupos = df.groupby('GRUPOS')['latitude', 'longitude'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" latitude | \n",
" longitude | \n",
"
\n",
" \n",
" GRUPOS | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" -15.600311 | \n",
" -56.098059 | \n",
"
\n",
" \n",
" 1 | \n",
" -15.588466 | \n",
" -56.082202 | \n",
"
\n",
" \n",
" 2 | \n",
" -15.613143 | \n",
" -56.114460 | \n",
"
\n",
" \n",
" 3 | \n",
" -15.614556 | \n",
" -56.131003 | \n",
"
\n",
" \n",
" 4 | \n",
" -15.595474 | \n",
" -56.118742 | \n",
"
\n",
" \n",
"
\n",
"
"
]
},
"execution_count": 5,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"grupos.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"grupos2 = df.groupby('GRUPOS')['EFETIVO'].sum()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"GRUPOS\n",
"0 38.653002\n",
"1 12.000000\n",
"2 3.000000\n",
"3 6.000000\n",
"4 2.000000\n",
"Name: EFETIVO, dtype: float64"
]
},
"execution_count": 7,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"grupos2.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" latitude | \n",
" longitude | \n",
" EFETIVO | \n",
"
\n",
" \n",
" GRUPOS | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" -15.600311 | \n",
" -56.098059 | \n",
" 38.653002 | \n",
"
\n",
" \n",
" 1 | \n",
" -15.588466 | \n",
" -56.082202 | \n",
" 12.000000 | \n",
"
\n",
" \n",
" 2 | \n",
" -15.613143 | \n",
" -56.114460 | \n",
" 3.000000 | \n",
"
\n",
" \n",
" 3 | \n",
" -15.614556 | \n",
" -56.131003 | \n",
" 6.000000 | \n",
"
\n",
" \n",
" 4 | \n",
" -15.595474 | \n",
" -56.118742 | \n",
" 2.000000 | \n",
"
\n",
" \n",
"
\n",
"
"
]
},
"execution_count": 8,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"grupos = pd.concat([grupos, grupos2], axis=1)\n",
"grupos.head()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" GRUPOS | \n",
" latitude | \n",
" longitude | \n",
" EFETIVO | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" -15.600311 | \n",
" -56.098059 | \n",
" 38.653002 | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" -15.588466 | \n",
" -56.082202 | \n",
" 12.000000 | \n",
"
\n",
" \n",
" 2 | \n",
" 2 | \n",
" -15.613143 | \n",
" -56.114460 | \n",
" 3.000000 | \n",
"
\n",
" \n",
" 3 | \n",
" 3 | \n",
" -15.614556 | \n",
" -56.131003 | \n",
" 6.000000 | \n",
"
\n",
" \n",
" 4 | \n",
" 4 | \n",
" -15.595474 | \n",
" -56.118742 | \n",
" 2.000000 | \n",
"
\n",
" \n",
"
\n",
"
"
]
},
"execution_count": 9,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"grupos = grupos.reset_index()\n",
"grupos.head()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"from folium.plugins import MarkerCluster\n",
"\n",
"m = folium.Map(location=[-15.6, -56.1], zoom_start=7)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"def cor(efetivo):\n",
" if efetivo < 10:\n",
" return('lightgray')\n",
" elif efetivo < 25:\n",
" return('orange')\n",
" else:\n",
" return('red')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 12,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"grupos.index[1]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"000, Efetivo: 038.7\n"
]
}
],
"source": [
"print(\"{:03.0f}, Efetivo: {:05.1f}\".format(grupos.index[0], grupos.EFETIVO[0]))"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"marker_cluster = MarkerCluster().add_to(m)\n",
"\n",
"def ad_local(coord):\n",
" # print(coord)\n",
" folium.Marker(location=coord[['latitude', 'longitude', 'EFETIVO']],\n",
" popup=\"Grupo: {:03.0f}, Efetivo: {:05.1f}\".format(coord.GRUPOS, coord.EFETIVO),\n",
" icon=folium.Icon(color=cor(coord.EFETIVO)),\n",
" ).add_to(marker_cluster)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"0 None\n",
"1 None\n",
"2 None\n",
"3 None\n",
"4 None\n",
"5 None\n",
"6 None\n",
"7 None\n",
"8 None\n",
"9 None\n",
"10 None\n",
"11 None\n",
"12 None\n",
"13 None\n",
"14 None\n",
"15 None\n",
"16 None\n",
"17 None\n",
"18 None\n",
"19 None\n",
"20 None\n",
"21 None\n",
"22 None\n",
"23 None\n",
"24 None\n",
"25 None\n",
"26 None\n",
"27 None\n",
"28 None\n",
"29 None\n",
" ... \n",
"670 None\n",
"671 None\n",
"672 None\n",
"673 None\n",
"674 None\n",
"675 None\n",
"676 None\n",
"677 None\n",
"678 None\n",
"679 None\n",
"680 None\n",
"681 None\n",
"682 None\n",
"683 None\n",
"684 None\n",
"685 None\n",
"686 None\n",
"687 None\n",
"688 None\n",
"689 None\n",
"690 None\n",
"691 None\n",
"692 None\n",
"693 None\n",
"694 None\n",
"695 None\n",
"696 None\n",
"697 None\n",
"698 None\n",
"699 None\n",
"Length: 700, dtype: object"
]
},
"execution_count": 15,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"grupos.apply(ad_local, axis = 1)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
],
"source": [
"heat_data = [[row['latitude'],row['longitude'], row['EFETIVO']] for index, row in grupos.iterrows()]"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"38.653002126533636"
]
},
"execution_count": 33,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"grupos['EFETIVO'].max()"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 34,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"from folium.plugins import HeatMap\n",
"# https://python-visualization.github.io/folium/plugins.html\n",
"HeatMap(heat_data, min_opacity=0.2, \n",
" max_val=grupos['EFETIVO'].max(),\n",
" max_zoom=1, \n",
" radius=30, \n",
" blur=15, \n",
" gradient={0: 'grey', 1: 'red'}).add_to(m)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"m.save('Mapa_de_zona_quente.html')"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (Anaconda 5)",
"language": "python",
"name": "anaconda5"
},
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}