{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Folium - Mapas de coropletas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Importación de módulos de Python" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import folium\n", "import pandas as pd\n", "\n", "import json" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.11.0\n" ] } ], "source": [ "# Impresión de la versión de Folium\n", "print(folium.__version__)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.1.3\n" ] } ], "source": [ "# Impresión de la versión de Pandas\n", "print(pd.__version__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Clase [Choropleth](https://python-visualization.github.io/folium/modules.html#folium.features.Choropleth)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Esta clase de Folium crea un [mapa de coropletas](https://en.wikipedia.org/wiki/Choropleth_map) y lo colorea de acuerdo al valor de un campo de datos.\n", "\n", "El método constructor de Choropleth recibe como parámetros la ubicación de los datos geoespaciales en formato GeoJSON (ej. en un archivo) y puede recibir también un conjunto de datos tabulares en un dataframe de [pandas](https://pandas.pydata.org/). Otros parámetros se utilizan para especificar los campos de datos según los que se colorea el mapa, así como los campos que se utilizan para enlazar los datos espaciales y tabulares.\n", "\n", "En el siguiente ejemplo, se crea un mapa de coropletas que refleja la cantidad de casos positivos de COVID-19 en los cantones de Costa Rica, de acuerdo con los [datos publicados por el Ministerio de Salud](http://geovision.uned.ac.cr/oges/). El archivo GeoJSON de cantones proviene de la capa publicada por el Instituto Geográfico Nacional (IGN) en el [Sistema Nacional de Información Territorial (SNIT)](https://www.snitcr.go.cr/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La función [read_csv()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html) carga un archivo CSV en un [dataframe](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html) de pandas." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Carga de datos tabulares de casos positivos de COVID-19 en un dataframe\n", "df_positivos = pd.read_csv('datos/10_07_CSV_POSITIVOS_ULTIMA_FECHA.csv', sep=',')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | Unnamed: 0 | \n", "cod_canton | \n", "positivos | \n", "
|---|---|---|---|
| 0 | \n", "1 | \n", "112 | \n", "490 | \n", "
| 1 | \n", "2 | \n", "110 | \n", "3943 | \n", "
| 2 | \n", "3 | \n", "106 | \n", "1149 | \n", "
| 3 | \n", "4 | \n", "118 | \n", "2078 | \n", "
| 4 | \n", "5 | \n", "103 | \n", "6111 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "
| 78 | \n", "79 | \n", "705 | \n", "389 | \n", "
| 79 | \n", "80 | \n", "702 | \n", "1234 | \n", "
| 80 | \n", "81 | \n", "703 | \n", "830 | \n", "
| 81 | \n", "82 | \n", "704 | \n", "602 | \n", "
| 82 | \n", "83 | \n", "999 | \n", "532 | \n", "
83 rows × 3 columns
\n", "| \n", " | id | \n", "cod_canton | \n", "positivos | \n", "
|---|---|---|---|
| 73 | \n", "74 | \n", "609 | \n", "126 | \n", "
| 74 | \n", "75 | \n", "601 | \n", "2017 | \n", "
| 75 | \n", "76 | \n", "606 | \n", "328 | \n", "
| 76 | \n", "77 | \n", "706 | \n", "440 | \n", "
| 77 | \n", "78 | \n", "701 | \n", "1843 | \n", "
| 78 | \n", "79 | \n", "705 | \n", "389 | \n", "
| 79 | \n", "80 | \n", "702 | \n", "1234 | \n", "
| 80 | \n", "81 | \n", "703 | \n", "830 | \n", "
| 81 | \n", "82 | \n", "704 | \n", "602 | \n", "
| 82 | \n", "83 | \n", "999 | \n", "532 | \n", "