Análisis geográfico en Jupyterlab para sistemas de agua potable rural en la región de los Ríos¶

Indice 🛣¶

Inicio ▲

  1. Carga de librerias
  2. Mapas
  3. Análisis de beneficiarios

Carga de librerias ♻¶

Inicio ▲

In [9]:
# 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)

Mapas 🌎¶

Inicio ▲

In [17]:
# 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
Out[17]:
Make this Notebook Trusted to load map: File -> Trust Notebook
In [18]:
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
Out[18]:
Make this Notebook Trusted to load map: File -> Trust Notebook
In [25]:
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
Out[25]:
Make this Notebook Trusted to load map: File -> Trust Notebook
In [20]:
#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)

Análisis de beneficiarios 👨‍👩‍👧¶

Inicio ▲

In [21]:
#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()
In [22]:
#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()
In [ ]: