# libreria para trabajar con mapas
import folium
import pandas as pd
from folium import plugins
import plotly.figure_factory as ff
import plotly as plt
import plotly.express as px
plt.offline.init_notebook_mode(connected=True)
# Primero creamos el mapa con la libreria folium y la funcion Map, tiles es el proveedor del mapa.
#El mapa esta centrado en Valdivia
map = folium.Map(location = [-39.925826, -73.114501], tiles = "OpenStreetMap", zoom_start = 10)
#Acá estoy cargando el set de datos de la carpeta de documentos.
datos = pd.read_excel('base_ssr.xlsx', sheet_name='Sistemas_APR',usecols="B:U",skiprows=2)
#Valdivia
datos_nombres_valdivia=list(datos.iloc[1963:1977,12])
datos_lat_valdivia=datos.iloc[1963:1977,19]
datos_long_valdivia=datos.iloc[1963:1977,18]
#Paillaco
datos_nombres_paillaco=list(datos.iloc[1919:1930,12])
datos_lat_paillaco=datos.iloc[1919:1930,19]
datos_long_paillaco=datos.iloc[1919:1930,18]
#Los Lagos
datos_nombres_loslagos=list(datos.iloc[1885:1903,12])
datos_lat_loslagos=datos.iloc[1885:1903,19]
datos_long_loslagos=datos.iloc[1885:1903,18]
#Corral
datos_nombres_corral=list(datos.iloc[1873:1879,12])
datos_lat_corral=datos.iloc[1873:1879,19]
datos_long_corral=datos.iloc[1873:1879,18]
#Creación del par de coordenadas
locations_valdivia = list(zip(datos_lat_valdivia, datos_long_valdivia))
locations_paillaco = list(zip(datos_lat_paillaco, datos_long_paillaco))
locations_loslagos = list(zip(datos_lat_loslagos, datos_long_loslagos))
locations_corral = list(zip(datos_lat_corral, datos_long_corral))
#Creación de las listas
nombres = datos_nombres_valdivia+datos_nombres_paillaco+datos_nombres_loslagos+datos_nombres_corral
locations=locations_valdivia+locations_paillaco+locations_loslagos+locations_corral
#Acá agregamos un marcador con la ubicación de los punto APR
for i in range(len(locations)):
nombre=nombres[i]
folium.Marker(location=locations[i],tooltip=nombre).add_to(map)
for i in range(len(locations)):
folium.CircleMarker(location=locations[i],radius=5).add_to(map)
map
# Aáa estoy agregando un minimap en la esquina,para esto hay que cargar la función plugins desde la libreria folium
minimap = plugins.MiniMap(position="bottomleft",toggle_display=True)
map.add_child(minimap)
map
map = folium.Map(location = [-39.925826, -73.114501], tiles = "OpenStreetMap", zoom_start = 9.5)
#Recopilación de datos de los beneficiarios de cada comuna
datos_beneficiarios_valdivia=list(datos.iloc[1963:1977,9])
datos_beneficiarios_paillaco=list(datos.iloc[1919:1930,9])
datos_beneficiarios_loslagos=list(datos.iloc[1885:1903,9])
datos_beneficiarios_corral=list(datos.iloc[1873:1879,9])
#Creación de la lista de los beneficiarios
beneficiarios = datos_beneficiarios_valdivia+datos_beneficiarios_paillaco+datos_beneficiarios_loslagos+datos_beneficiarios_corral
#Creación del mapa de color según cuartiles
colormap = folium.StepColormap(colors=['blue','green','orange','red','purple'] ,
index=[71,292.5,434,732.5,1327,4021],
vmin= 71,
vmax=4021)
map = folium.Map(location = [-39.925826, -73.114501], tiles = "OpenStreetMap", zoom_start = 9.5)
#Agrego un marcador según el mapa de color
for i in range(len(locations)):
nombre=nombres[i]
folium.Circle(location=locations[i],tooltip=nombre,radius=450,color=colormap(beneficiarios[i])).add_to(map)
map
map = folium.Map(location = [-39.925826, -73.114501], tiles = "OpenStreetMap", zoom_start = 9.5)
#Recopilación de datos de años de puesta en marcha de cada comuna
datos_agno_valdivia=list(datos.iloc[1963:1977,5])
datos_agno_paillaco=list(datos.iloc[1919:1930,5])
datos_agno_loslagos=list(datos.iloc[1885:1903,5])
datos_agno_corral=list(datos.iloc[1873:1879,5])
#Creación de la lista de años
datos_agno=datos_agno_valdivia+datos_agno_paillaco+datos_agno_loslagos+datos_agno_corral
#Creación de la lista del color del beneficiario
color_beneficiario=[]
#Recopilación de información de colores y creación de marcador con información de la localidad
for j in range(len(locations)):
nombre=nombres[j]
u=beneficiarios[j]
if u<292.5:
colores='blue'
if u>=292.5 and u<434:
colores='green'
if u>=434 and u<732.5:
colores='orange'
if u>=732.5 and u<1327:
colores='red'
if u>=1327:
colores='purple'
color_beneficiario.append(colores)
folium.Marker(
location=locations[j],
popup=('<b>Nombre: </b>' + str(nombre)+
" <b>Número de personas beneficiadas: </b>"+str(int(beneficiarios[j]))+
" <b>Año de puesta en marcha: </b>"+str(datos_agno[j])),
tooltip=nombres[j],
icon=folium.Icon(color=colores),
).add_to(map)
map
#Creación de tabla
tabla = pd.DataFrame()
#Creación de las columnas de la tabla
tabla['Nombre Ubicación'] = None
tabla['Beneficiarios']=None
tabla['Color']=None
tabla['Comunas']=None
#Recopilación de datos del nombre de las comunas
datos_comunas_valdivia=list(datos.iloc[1963:1977,3])
datos_comunas_paillaco=list(datos.iloc[1919:1930,3])
datos_comunas_loslagos=list(datos.iloc[1885:1903,3])
datos_comunas_corral=list(datos.iloc[1873:1879,3])
#Creación de lista de comunas
datos_comunas=datos_comunas_valdivia+datos_comunas_paillaco+datos_comunas_loslagos+datos_comunas_corral
#Se agregan datos a la tabla
tabla['Nombre Ubicación'] = nombres
tabla['Beneficiarios'] = beneficiarios
tabla['Color'] = color_beneficiario
tabla['Comunas'] = datos_comunas
ff.create_table(tabla)
#Creación del diagrama de caja
df = px.data.tips()
fig = px.box(tabla, x="Beneficiarios", points="all")
fig.update_layout(title_text="Distribución de sistemas de Agua Potable Rural")
fig.show()
#Acá estamos llamando al set de datos de la tabla,que viene precargado en la librería
fig = px.bar(tabla, x="Nombre Ubicación", y="Beneficiarios",color="Nombre Ubicación",
title="Beneficiarios por sector de instalación de APR",
color_discrete_sequence=color_beneficiario)
fig.show()