Introducción

El calentamiento global es sin duda, el mayor desafío ambiental que hoy enfrenta la humanidad, y las ciudades deben ser parte fundamental de la respuesta que debemos dar ante este riesgo. Ante esto, la Ciudad de Buenos Aires cuenta con un Plan de Acción frente al Cambio Climático (publicado en 2015 y que debe actualizarse cada cinco años) donde se establecieron el conjunto de estrategias, medidas, políticas, e instrumentos desarrollados para dar cumplimiento al objeto de la Ley 3871 .

Ante este escenario, es fundamental contar con la capacidad poder cuantificar las medidas que realiza gobierno día a día. Por lo mencionado, en este trabajo, se busca mejorar la herramienta de cálculo del stock de carbono almacenado en los arboles de la Ciudad de Buenos Aires.

Presentación de los datos

En el siguiente trabajo, utilizaremos los siguientes dataset:

Procedimiento

Basandonós en los datos del portal de datos abiertos y siguiendo la metodologia de la CDM ( Clean Development Mechanism ) realizaremos los cálculos necesarios para poder obtener el stock de carbono del arbolado público lineal de la ciudad.

Librerias utilizadas
  • Vamos a utilizar la libreria tidyverse para el análisis de datos.
  • Vamos a utilizar la libreria sf para poder trabajar con mapas.

Metodologia utilizada

La metodología utilizada fue realizada por el Mecanismo de Desarrollo Limpio y se puede encontrar en la web. El cálculo se basa en estimar la biomasa de un árbol y siguiendo algunos factores de corrección, poder establecer la cantidad de dióxido de carbono que contiene un árbol. La fórmula utilizada es la siguiente:

\(\ C_{tree,t} = \frac{44}{12}*B_{tree,t}*CF_{tree}\)

Siendo:

  • \(\ C_{tree,t}\) : El carbono almacenado por árbol en un tiempo.

  • \(\frac{44}{12}\) : Factor que relaciona el peso de dioxido de carbono y el carbono

  • \(B_{tree,t}\) : Cantidad de biomasa por árbol

  • \(CF_{tree}\) : Fracción de carbono en la biomasa de un árbol

La biomasa la calculamos de la siguiente forma:

\(\ B_{tree,t}={V_{tree}}*D_{j}*{BEF_{j}}*\left ( 1+{R_{j}} \right )\)

  • \(V_{tree}\) : Volumen del vastago

  • \(D_{j}\) : Densidad de la madera

  • \({BEF_{j}}\) : Factor de conversión de la biomasa

  • \({R_{j}}\) : Relación de raiz-tallo

Carga del dataset

Con el dataset que cuenta el portal de datos abiertos vamos a poder realizar el cálculo del volumen de cada árbol.

Lo primero que vamos a realizar es la codificación en UTF-8 para que no surgan errores con los caracteres especiales.

Luego, vamos a observar los datos que tiene cargado el dataset, y verificar si cuenta con los datos que necesitamos de fuente para el cálculo. Para poder ver un resumen de la información que contiene el dataset, utilizamos el comando summary.

##       long             lat         tipo_sitio        id_arbol        
##  Min.   :-58.53   Min.   :-34.70   Árbol:372699   Min.   :     2430  
##  1st Qu.:-58.49   1st Qu.:-34.64                  1st Qu.:   166161  
##  Median :-58.47   Median :-34.62                  Median : 17003139  
##  Mean   :-58.46   Mean   :-34.61                  Mean   : 27107132  
##  3rd Qu.:-58.43   3rd Qu.:-34.59                  3rd Qu.: 38102044  
##  Max.   :-58.34   Max.   :-34.53                  Max.   :938000243  
##                                                                      
##    altura_tot        diametro        inclinacio      id_especie   
##  Min.   : 0.000   Min.   :  0.00   Min.   : 0.00   Min.   :  1.0  
##  1st Qu.: 5.000   1st Qu.: 17.00   1st Qu.: 0.00   1st Qu.:  1.0  
##  Median : 8.000   Median : 28.00   Median : 0.00   Median :  3.0  
##  Mean   : 8.473   Mean   : 31.94   Mean   : 3.07   Mean   : 38.7  
##  3rd Qu.:11.000   3rd Qu.: 43.00   3rd Qu.: 5.00   3rd Qu.: 10.0  
##  Max.   :60.000   Max.   :426.00   Max.   :60.00   Max.   :999.0  
##                                                                   
##        nombre_fam         nombre_gen    
##  Oleáceas   :175247   Fraxinus :155373  
##  Platanaceae: 35152   Platanus : 35152  
##  Moráceas   : 27064   Ficus    : 26108  
##  Meliáceas  : 24681   Melia    : 24641  
##  Leguminosas: 22355   Ligustrum: 19611  
##  Tiliaceas  : 17486   Tilia    : 17477  
##  (Other)    : 70714   (Other)  : 94337  
##                           nombre_cie                nombre_com    
##  Fraxinus pennsylvanica        :141825   Fresno americano:141825  
##  Platanus x acerifolia         : 34786   Plátano         : 34786  
##  Melia azeradach               : 24558   Paraíso         : 24558  
##  Ficus benjamina               : 23907   Ficus           : 24076  
##  Tilia viridis subsp. x moltkei: 16472   Tilo            : 17477  
##  Jacarandá mimosifolia         : 11046   Jacarandá       : 11046  
##  (Other)                       :120105   (Other)         :118931  
##                          tipo_folla                  origen      
##  Árbol Latifoliado Caducifolio:296880   Exótico         :334503  
##  Árbol Latifoliado Perenne    : 56061   Nativo/Autóctono: 30410  
##  No Determinado               : 12766   No Determinado  :  7786  
##  Palmera                      :  2908                            
##  Árbol Conífero Perenne       :  1431                            
##  Arbusto Perenne              :  1246                            
##  (Other)                      :  1407                            
##    codigo_man               barrio           comuna      
##  84-001B:   734   PALERMO      : 22483   Min.   : 1.000  
##  58-053Z:   373   MATADEROS    : 18289   1st Qu.: 6.000  
##  84-001Z:   363   VILLA DEVOTO : 17538   Median :10.000  
##  49-027 :   338   CABALLITO    : 15660   Mean   : 9.125  
##  23-158 :   308   FLORES       : 15278   3rd Qu.:12.000  
##  27-147 :   292   VILLA URQUIZA: 14493   Max.   :15.000  
##  (Other):370291   (Other)      :268958                   
##                         calle            chapa1          chapa2        
##  Suarez, Jose Leon         :  1175   Min.   :    0   Min.   :    0.00  
##  Alberdi, Juan Bautista Av.:  1162   1st Qu.:    0   1st Qu.:    0.00  
##  Yerbal                    :  1146   Median : 1449   Median :    0.00  
##  Montiel                   :  1140   Mean   : 1895   Mean   :   40.59  
##  Del Libertador Av.        :  1119   3rd Qu.: 3181   3rd Qu.:    0.00  
##  Cosquin                   :  1118   Max.   :16392   Max.   :14038.00  
##  (Other)                   :365839

Luego de asegurarnos que la base de datos tiene los valores que queremos (altura, diamétro, especie y ubicación para realizar una análisis espacial) vamos a ver si la base de datos cuenta con vacios. Estos vacíos podrían complicarnos los procesamientos posteriores.

##   long lat tipo_sitio id_arbol altura_tot diametro inclinacio id_especie
## 1    0   0          0        0          0        0          0          0
##   nombre_fam nombre_gen nombre_cie nombre_com tipo_folla origen codigo_man
## 1          0          0          0          0          0      0          0
##   barrio comuna calle chapa1 chapa2
## 1      0      0     0      0      0

De esta manera, podemos ver en la tabla que el dataset no cuenta con vacios y podremos usarlo sin problemas.

Histograma de alturas de árbol

Por último, vamos a chequear la distribución de los valores que quiero utilizar, que van a ser la altura y el diametro del árbol. Esto me sirve, para tener un orden de magnitud de la información que estamos manejando y como se distribuye.

Por el momento, vamos a realizar el análisis con todo el dataset, pero luego analizaremos si las alturas mayores a 40 metros pueden ser viables para especies de arbolado publico lineal.

Coeficientes a estimar

La metodologia utilizada, utiliza dos factores denominados BEF y R que depende de la altura del arbol. Para eso, vamos a sumar dos columnas a nuestra base de datos donde se generen estos valores. Para realizar dicha acción usamos la función mutate, que me genera una nueva columna con la condición que le voy a pedir en cada caso.

Factor BEF

Primero calculo el factor BEF, que depende de la altura del arbol y se usará para calcular la biomasa, como indica la siguiente tabla:

Rango altura Valor de BEF
1 a 5 3.2
5 a 10 3.0
mayor a 11 2.7
Factor Rj

Luego calculo el factor Rj, que también depende de la altura del arbol y se usará para calcular la biomasa , como indica la siguiente tabla:

Rango altura Valor de Rj
1 a 5 0.45
5 a 10 0.35
mayor a 11 0.20

Procedimiento de cálculo

Al contar con todos los datos necesario, proseguimos con el cálculo de la biomasa:

\(\ B_{tree,t}={V_{tree}}*D_{j}*{BEF_{j}}*\left ( 1+{R_{j}} \right )\)

Los datos del censo de arbolado los vamos a utilizar para calcular el volumen de cada árbol.

Cálculo del volumen

El volumen del arbol lo calcularemos como un cono truncado.

\(\ V=\frac{1}{3}*\pi *h*\left ( R^{2} + R*r + r^{2} \right )\)

Para nuestros calculos, utilizaremos el radio del arbol R, por lo que debemos dividir en dos el diametro. Para esto, creamos una nueva columna en nuestra tabla de datos de arbolado.

Luego, genero el radio menor r (que sería el menor radio del tallo, como se puede observar en la figura) para el cálculo. Dicho valor lo multiplico por un factor de forma (dado por la metodologia) cuyo valor es 0.5

Finalizando, realizamos el cálculo del volumen de cada árbol:

Biomasa de cada árbol

Para calcular la biomasa de cada árbol a partir del volumen, debemos contar con la densidad de la madera de cada arbol y usar los factores de corrección BEF + Rj. En calculos anteriores, se tomo un valor conservador de densidad igual a 0.5. Para calculos futuros, se espera poder contar con la densidad de caba arbol , por lo que deberiamos contar con una tabla que contenga dicha información. Para este ejercicio, se ha creado la tabla, pero con todos los valores iguales.

Por lo tanto, cargamos la base de datos de densidad de cada arbol por especie.

Luego, vamos a utilizar el comando join, para relacionar las dos tablas y poder sumar en la base denominada arbolado público la densidad de cada árbol.

Con estos datos vamos a poder calcular, la biomasa de cada árbol.

Calculo de carbono absorbido

Siguiendo los pasos que me da la metodologia, voy a calcular el carbono que almacena cada árbol:

\(\ C_{tree,t} = \frac{44}{12}*B_{tree,t}*CF_{tree}\)

\(\ CF_{tree}\) = 0.55

Con los resultados, ya obtenidos, vamos a exportar el archivo a un csv para Excel y guardar la base de datos que genere.

Stock total en la ciudad

Si queremos saber el stock en la ciudad, vamos a sumar todas las filas de la columna calculo_co2

##   carbonoalmacenado
## 1           1014682

Por lo tanto la ciudad cuenta con un carbono acumulado en sus arboles de 1014682 TnCO2

Exploración del problema en base a los datos

A partir de los datos obtenidos, vamos a realizar algunas visualizaciones que me pertima tener mayor claridad de los resultados obtenidos.

Estimaciones

Muchas veces, el área de cambio climático es consultada acerca del stock de carbono en el arbolado actual, pero no cuenta con toda la información necesaria para poder aplicar el método de cálculo usado anteriormente (diámetro, altura y especie) . Por esta causa, a continuación se van a realizar diferentes estimaciones que van a poder predecir el stock de carbono.

Relación del diámetro con el stock de carbono

Primero que nada, vamos a hacer un gráfico, de la captura de carbono en función del diámetro del árbol.

En este caso, podemos ver una relación que a medida que crece el diametro, aumenta el stock de carbono, como nos dice la formula, pero veamos que sucede si usamos datos promedios de stock de carbono por diametro. Esta nube nos puntos, nos genera una tendencia, pero nos dificulta mucho generar una estimación.

Si trabajamos con el stock de carbono por diámetro promedio en vez de analizar cada punto, podríamos realizar otro análisis.

Para eso, creamos otra tabla con la información del stock de carbono por diámetro promedio.

Si asentamos en una tabla los resultados obtenidos, podemos observar:

En este caso, notamos que se podría asemejar a una curva hasta llegar al metro y medio de diámetro. Luego, se genera una dispersión de puntos.

Estimación del CO2 en función del diametro

A partir de los datos obtenidos, vamos a realizar una regresión lineal simple, donde podamos ver la relación entre el diametro y el stock de carbono.

Vamos a descartar aquellos valores donde el diametro supere el metro y medio, ya que se genera una dispersión muy grande y son pocas las unidades que encontramos con este valor.

Para saber si hay una relación entra las variables y se puedan relacionar entre sí, vamos a calcular la correlación de las mismas.

Los valores de referencia con los que contamos son los siguientes:

  • de 0,7 a 1: de fuerte a total
  • de 0,5 a 0,7: de moderada a fuerte
  • de 0,3 a 0,7: de débil a moderada
  • menor a 0,3: de nula a débil
## [1] 0.9126916

Siguiendo los valores de correlación de referencia, un valor de 0.912 presenta una correlación alta.

Para poder hallar una relación entre el diámetro y el stock de carbono, vamos a realizar una regresión lineal.

## 
## Call:
## lm(formula = media ~ diametro, data = diametro_co2)
## 
## Coefficients:
## (Intercept)     diametro  
##     -9.7972       0.3658
## 
## Call:
## lm(formula = media ~ diametro, data = diametro_co2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -11.777  -4.490  -1.808   2.468  44.828 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -9.79716    1.15723  -8.466 2.38e-14 ***
## diametro     0.36582    0.01351  27.079  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.104 on 147 degrees of freedom
## Multiple R-squared:  0.833,  Adjusted R-squared:  0.8319 
## F-statistic: 733.3 on 1 and 147 DF,  p-value: < 2.2e-16

Las estrellas me indican la fiabilidad de mi estimación, y en este caso tenemos lo máximo que es tres

Con estos coeficientes, podemos ver la recta que mejor aproxima a estos puntos en azul.

Si graficamos los resultados, podemos ver que la recta azul aproxima bien los resultados, pero sería necesario buscar la manera de obtener la curva roja que aproxima mejor los resultados(pero ya no estaríamos en el caso de una regresión lineal).

Estimación del CO2 en función de la altura

De la misma manera que estimamos el stock de carbono en función del diametro, vamos a realizar una estimación del carbono acumulado en función de la altura del árbol.

Primero, tenemos que crear una tabla donde se acumule la información por altura, y, para ahorrar pasos, directamente vamos a graficar la relación entre la altura y el promedio de absorción de carbono por árbol por altura.

En este caso, podemos notar que hasta los 30 metros, se obtiene una curva bastante clara y luego se genera una dispersión de puntos. Como en el caso anterior, nos vamos a limitar a donde tengamos mayor cantidad de datos y de mejor calidad.

Averiguamos la correlación de las variables, para saber si es correcto realizar una estimación.

## [1] 0.9809345

En este caso, nos da una correlación más alta. Si realizamos la regresión lineal y luego la graficamos.

## 
## Call:
## lm(formula = media ~ altura_tot, data = altura_co2)
## 
## Coefficients:
## (Intercept)   altura_tot  
##     -3.1131       0.7783
## 
## Call:
## lm(formula = media ~ altura_tot, data = altura_co2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.0858 -1.1363 -0.1908  0.9345  3.1131 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -3.11311    0.50008  -6.225  8.6e-07 ***
## altura_tot   0.77834    0.02863  27.182  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.426 on 29 degrees of freedom
## Multiple R-squared:  0.9622, Adjusted R-squared:  0.9609 
## F-statistic: 738.9 on 1 and 29 DF,  p-value: < 2.2e-16

En este caso también el modelo me da fiabilidad entre variables y las tres estrellas me demuestran dicha relación.

Si realizamos el gráfico de los realizado.

De igual manera, como surgió anteriormente, la recta en color rojo, me da la mejor curva de aproximación, pero no se asemeja a un problema lineal. La recta azul corresponde a la regresión lineal realizada y me puede servir como aproximación al carbono acumulado por altura en caso de no contar con el diámetro.

Estimación del CO2 en función de la especie

Por último, vamos a realizar una estimación del CO2 acumulado por especie. Este caso se da, cuando se saben las especies que se encuentren plantadas o van a plantarse por lo que no tenemos ningún parámetro más.

Por lo tanto, realizamos la misma agrupación que en los casos anteriores.

Vamos a realizar un summary para ver con cuanta información contamos en esta tabla.

##                                               nombre_com 
##                                                    :  1  
##  Abedul blanco                                     :  1  
##  Abedul común (Abedul de Europa o Abedul verrugoso):  1  
##  Abutilo                                           :  1  
##  Acacia                                            :  1  
##  Acacia blanca                                     :  1  
##  (Other)                                           :300  
##       freq              media              mediana         
##  Min.   :     1.0   Min.   : 0.006859   Min.   : 0.006859  
##  1st Qu.:     7.0   1st Qu.: 0.326423   1st Qu.: 0.142678  
##  Median :    33.0   Median : 0.907090   Median : 0.405251  
##  Mean   :  1218.0   Mean   : 1.758896   Mean   : 1.087497  
##  3rd Qu.:   175.5   3rd Qu.: 2.293973   3rd Qu.: 1.134366  
##  Max.   :141825.0   Max.   :20.003649   Max.   :19.158672  
##                                                            
##       min                 max               desvio       
##  Min.   : 0.000000   Min.   :  0.0069   Min.   : 0.0000  
##  1st Qu.: 0.000429   1st Qu.:  1.7414   1st Qu.: 0.5149  
##  Median : 0.003858   Median :  7.4189   Median : 1.3650  
##  Mean   : 0.248109   Mean   : 18.7712   Mean   : 2.4201  
##  3rd Qu.: 0.030009   3rd Qu.: 20.1229   3rd Qu.: 3.2973  
##  Max.   :19.158672   Max.   :335.2768   Max.   :33.0298  
##                                         NA's   :19

Podemos observar que se cuenta con más de 300 especies, por lo cual, resultaría muy dificultoso graficar todas juntas, como se observa a continuación.

Usando el comando head, vemos como se distribuye la información en la tabla.

## # A tibble: 6 x 7
##   nombre_com                        freq media mediana     min   max desvio
##   <fct>                            <int> <dbl>   <dbl>   <dbl> <dbl>  <dbl>
## 1 ""                                   5 0.999   0.429 2.32e-2  3.46   1.40
## 2 Abedul blanco                       13 1.96    0.578 2.32e-2  7.11   2.54
## 3 Abedul común (Abedul de Europa ~    75 1.12    0.220 2.57e-3 13.4    2.34
## 4 Abutilo                            150 1.54    0.594 2.14e-4 21.0    2.57
## 5 Acacia                             870 2.12    0.670 2.14e-4 27.0    3.83
## 6 Acacia blanca                     1724 1.82    0.819 0.      24.3    2.59

Por lo tanto, nos va a bastar, con descargar la tabla elaborada para consultarla cuando sea necesario.

Visualización en mapas

Por último, vamos a realizar una visualización en algunos mapas, donde podríamos analizar un análisis más segmentado del territorio. Para eso, vamos a cargar el dataset de comunas de la Ciudad de Buenos Aires.

## Reading layer `CABA_comunas' from data source `https://bitsandbricks.github.io/data/CABA_comunas.geojson' using driver `GeoJSON'
## Simple feature collection with 15 features and 4 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: -58.53152 ymin: -34.70529 xmax: -58.33514 ymax: -34.52754
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs

Si realizamos un gráfico de todos los resultados obtenidos, del carbono acumulado punto por punto, obtenemos lo siguiente:

Lo que sucede, es que al tener tanta cantidad de datos, no se puede apreciar nada. Por lo tanto, deberíamos realizar algún análisis previo.

Lo que vamos a realizar, es realizar un join, para tener por comuna el stock acumulado de carbono. En este caso además, deberíamos tener en cuenta la superficie de cada comuna.

Las dos tablas tienen un nombre diferente en el campo comunas por lo tanto, debemos unificar el nombre para poder realizar bien el join y que ambos campos sean númericos.

Por lo tanto vamos a realizar un group_by para tener la información por comunas y poder realizar un join con la capa de comunas.

Realizo el join con la capa de comunas

## Simple feature collection with 6 features and 5 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: -58.4627 ymin: -34.6625 xmax: -58.33514 ymax: -34.56935
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs
##                                                                        barrios
## 1 CONSTITUCION - MONSERRAT - PUERTO MADERO -  RETIRO - SAN NICOLAS - SAN TELMO
## 2                                                                     RECOLETA
## 3                                                    BALVANERA - SAN CRISTOBAL
## 4                           BARRACAS - BOCA - NUEVA POMPEYA - PARQUE PATRICIOS
## 5                                                              ALMAGRO - BOEDO
## 6                                                                    CABALLITO
##   perimetro     area comunas calculo_co2                       geometry
## 1  35572.65 17802807       1    32410.05 MULTIPOLYGON (((-58.36854 -...
## 2  21246.61  6140873       8    38378.95 MULTIPOLYGON (((-58.39521 -...
## 3  10486.26  6385991       9    87260.44 MULTIPOLYGON (((-58.41192 -...
## 4  36277.44 21701236      10    82158.62 MULTIPOLYGON (((-58.3552 -3...
## 5  12323.47  6660526      11   108014.81 MULTIPOLYGON (((-58.41287 -...
## 6  10990.96  6851029      12   110981.15 MULTIPOLYGON (((-58.43061 -...

Realizo el mapa de las comunas y el stock de carbono de cada uno.

Para bajarlo a una escala menor, lo podemos realizar por barrio también y para eso, vamos a trabajar con el dataset de barrios.

## Reading layer `barrios' from data source `https://data.buenosaires.gob.ar/dataset/19/resource/1c3d185b-fdc9-474b-b41b-9bd960a3806e/download/barrios.geojson' using driver `GeoJSON'
## Simple feature collection with 48 features and 4 fields
## geometry type:  POLYGON
## dimension:      XY
## bbox:           xmin: -58.53092 ymin: -34.70574 xmax: -58.33455 ymax: -34.52799
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs

Vamos a usar el comando join para realizar dicho ánalisis a escala de barrio.

Como en este caso estamos teniendo en cuenta el área total, es lógico que el barrio de Palermo cuente con los valores más altos ya que es el más grande de la ciudad.

Dificultades durante el proceso

Al final del trabajo, me gustaría agregar algunos errores con los que me encontré durante la etapa de procesamiento, sean de programación o debido a otras causas.

  • Han surgido problemas con el encoding UTF-8, que más de una vez no ha permitido realizar una operación debido a las distintas codificaciones.

  • Cuando he creado la función condicional, para crear mis estimadores BEF y Rj, había puesto los números entre comillas lo que me generaba un caracter y no un número. Esto me impedía continuar con las operaciones matemáticas.

  • RStudia ya cuenta con un dataset que se llama CO2, por lo que tuve que crear todas mis variables con otro nombre para no generar confusión.

  • No todas las tablas tienen el mismo protocolo de nombrar los mismos campos. Algunas tablas nombraban a las comunas en minisculas y otras en mayusculas, asi como en plural y singular, por lo que se tenían que renombrar para su procesamiento posterior.

  • No pude realizar cálculos con el campo area del dataset de barrios ya que el dato no se encontraba cargado como númerico y no pude convertirlo en campo númerico.

Conclusiones finales

En el trabajo práctico hemos podido realizar un análisis del stock de carbono de la ciudad y hemos podido elaborar algunas conclusiones interesantes.

De esta manera, obtenemos una herramienta que nos permite realizar un análisis tanto especial como matemático, que puede realizar muchas operaciones con solo cargar un dataset y cambiar algunas variables.