Qualche anno fa analizzai i dati del progetto CORINE Land Cover relativi alla Campania, focalizzandomi sui tre censimenti tra il 2000 ed il 2012. Oggi invece estenderò quell'analisi inserendo sia i dati del 1990 che gli ultimi disponibili attualmente, cioè quelli del 2018.
L'analisi questa volta la farò usando Python e la estenderò al resto dell'Italia verso la fine.
Prima di iniziare¶
Librerie¶
Per raggiungere l'obiettivo userò le librerie che seguono:
from pathlib import Path
import geopandas as gpd
import pandas as pd
from functools import reduce
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
import warnings
warnings.filterwarnings('ignore')
warnings.simplefilter('ignore')
Fonti dati¶
Ho rielaborato i dati CORINE Land Cover dal 1990 al 2018 inserendoli in un unico GeoPackage che è possibile scaricare da qui. I dati sono stati processati preventivamente usando PostGIS in modo da associare ai poligoni della CLC anche quelli dei Comuni italiani al 2022 dell'ISTAT. E' stato indispensabile questo passaggio preventivo perchè ho dovuto correggere gli errori topologici sui dati ISTAT e, al momento, trovo molto più comodo correggere gli errori topologici tramite SQL piuttosto che con Python.
main_folder = Path('/home/max/Downloads/clcitalia')
dataset = main_folder.joinpath('clcitalia.gpkg')
1. Lettura e normalizzazione dei dati¶
In questa fase ho proceduto ad estrarre un po' di dati statistici che userò nei passaggi successivi. Sono perlopiu analisi mirate al calcolo delle superfici che ho espresso in ettari. Fatte queste analisi mi sono liberato dei dati geometrici perchè, non dovendoli più usare, mi alleggeriscono le analisi successive in termini di prestazioni hardware.
%%time
# CLC 1990
clc1990 = gpd.read_file(dataset, layer='clc1990')
clc1990.insert(loc=10, column='sup_com_ha', value=clc1990.sup_com_mq / 10000)
clc1990.insert(loc=11, column='surface_ha_1990', value=round(clc1990.geometry.area / 10000, 4))
clc1990.drop(columns={'sup_com_mq', 'geometry'}, inplace=True)
clc1990.head(10)
CPU times: user 1min 4s, sys: 687 ms, total: 1min 4s Wall time: 1min 4s
code_90 | label1 | label2 | label3 | pro_com | comune | provincia | regione | sup_com_ha | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 211 | Agricultural areas | Arable land | Non-irrigated arable land | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 1.1386 |
1 | 211 | Agricultural areas | Arable land | Non-irrigated arable land | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 276.7171 |
2 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 35.4001 |
3 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 2.2285 |
4 | 241 | Agricultural areas | Heterogeneous agricultural areas | Annual crops associated with permanent crops | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 1.3860 |
5 | 242 | Agricultural areas | Heterogeneous agricultural areas | Complex cultivation patterns | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 8.6550 |
6 | 243 | Agricultural areas | Heterogeneous agricultural areas | Land principally occupied by agriculture, with... | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 37.2054 |
7 | 243 | Agricultural areas | Heterogeneous agricultural areas | Land principally occupied by agriculture, with... | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 114.5143 |
8 | 311 | Forest and semi natural areas | Forests | Broad-leaved forest | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 44.3502 |
9 | 311 | Forest and semi natural areas | Forests | Broad-leaved forest | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 32.6148 |
%%time
# CLC 2000
clc2000 = gpd.read_file(dataset, layer='clc2000')
clc2000.insert(loc=10, column='sup_com_ha', value=clc2000.sup_com_mq / 10000)
clc2000.insert(loc=11, column='surface_ha_2000', value=round(clc2000.geometry.area / 10000, 4))
clc2000.drop(columns={'sup_com_mq', 'geometry'}, inplace=True)
clc2000.head(10)
CPU times: user 1min 14s, sys: 388 ms, total: 1min 14s Wall time: 1min 14s
code_00 | label1 | label2 | label3 | pro_com | comune | provincia | regione | sup_com_ha | surface_ha_2000 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 321 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Natural grasslands | 2170.0 | Alto Sermenza | Vercelli | Piemonte | 6032.586221 | 11.9494 |
1 | 321 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Natural grasslands | 2170.0 | Alto Sermenza | Vercelli | Piemonte | 6032.586221 | 42.8232 |
2 | 321 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Natural grasslands | 2170.0 | Alto Sermenza | Vercelli | Piemonte | 6032.586221 | 279.4458 |
3 | 321 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Natural grasslands | 2170.0 | Alto Sermenza | Vercelli | Piemonte | 6032.586221 | 120.3762 |
4 | 321 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Natural grasslands | 2170.0 | Alto Sermenza | Vercelli | Piemonte | 6032.586221 | 80.1545 |
5 | 311 | Forest and semi natural areas | Forests | Broad-leaved forest | 46008.0 | Careggine | Lucca | Toscana | 2408.101499 | 1664.3039 |
6 | 324 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Transitional woodland-shrub | 46008.0 | Careggine | Lucca | Toscana | 2408.101499 | 25.8278 |
7 | 324 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Transitional woodland-shrub | 46008.0 | Careggine | Lucca | Toscana | 2408.101499 | 73.5182 |
8 | 333 | Forest and semi natural areas | Open spaces with little or no vegetation | Sparsely vegetated areas | 46008.0 | Careggine | Lucca | Toscana | 2408.101499 | 34.7050 |
9 | 333 | Forest and semi natural areas | Open spaces with little or no vegetation | Sparsely vegetated areas | 46008.0 | Careggine | Lucca | Toscana | 2408.101499 | 101.5072 |
%%time
# CLC 2006
clc2006 = gpd.read_file(dataset, layer='clc2006')
clc2006.insert(loc=10, column='sup_com_ha', value=clc2006.sup_com_mq / 10000)
clc2006.insert(loc=11, column='surface_ha_2006', value=round(clc2006.geometry.area / 10000, 4))
clc2006.drop(columns={'sup_com_mq', 'geometry'}, inplace=True)
clc2006.head(10)
CPU times: user 1min 10s, sys: 328 ms, total: 1min 11s Wall time: 1min 11s
code_06 | label1 | label2 | label3 | pro_com | comune | provincia | regione | sup_com_ha | surface_ha_2006 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 211 | Agricultural areas | Arable land | Non-irrigated arable land | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 99.9449 |
1 | 211 | Agricultural areas | Arable land | Non-irrigated arable land | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 161.6097 |
2 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 35.3999 |
3 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 1.1332 |
4 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 5.0278 |
5 | 241 | Agricultural areas | Heterogeneous agricultural areas | Annual crops associated with permanent crops | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 2.8168 |
6 | 242 | Agricultural areas | Heterogeneous agricultural areas | Complex cultivation patterns | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 0.1570 |
7 | 242 | Agricultural areas | Heterogeneous agricultural areas | Complex cultivation patterns | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 165.7342 |
8 | 243 | Agricultural areas | Heterogeneous agricultural areas | Land principally occupied by agriculture, with... | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 36.2394 |
9 | 311 | Forest and semi natural areas | Forests | Broad-leaved forest | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 32.6261 |
%%time
# CLC 2012
clc2012 = gpd.read_file(dataset, layer='clc2012')
clc2012.insert(loc=10, column='sup_com_ha', value=clc2012.sup_com_mq / 10000)
clc2012.insert(loc=11, column='surface_ha_2012', value=round(clc2012.geometry.area / 10000, 4))
clc2012.drop(columns={'sup_com_mq', 'geometry'}, inplace=True)
clc2012.head(10)
CPU times: user 1min 20s, sys: 588 ms, total: 1min 21s Wall time: 1min 21s
code_12 | label1 | label2 | label3 | pro_com | comune | provincia | regione | sup_com_ha | surface_ha_2012 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 243 | Agricultural areas | Heterogeneous agricultural areas | Land principally occupied by agriculture, with... | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 0.5968 |
1 | 313 | Forest and semi natural areas | Forests | Mixed forest | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 187.4011 |
2 | 324 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Transitional woodland-shrub | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 29.7040 |
3 | 211 | Agricultural areas | Arable land | Non-irrigated arable land | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 99.9449 |
4 | 211 | Agricultural areas | Arable land | Non-irrigated arable land | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 161.6097 |
5 | 211 | Agricultural areas | Arable land | Non-irrigated arable land | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 420.1994 |
6 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 35.3999 |
7 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 1.1332 |
8 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 5.0278 |
9 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 1.6430 |
%%time
# CLC 2018
clc2018 = gpd.read_file(dataset, layer='clc2018')
clc2018.insert(loc=10, column='sup_com_ha', value=clc2018.sup_com_mq / 10000)
clc2018.insert(loc=11, column='surface_ha_2018', value=round(clc2018.geometry.area / 10000, 4))
clc2018.drop(columns={'sup_com_mq', 'geometry'}, inplace=True)
clc2018.head(10)
CPU times: user 1min 12s, sys: 560 ms, total: 1min 12s Wall time: 1min 12s
code_18 | label1 | label2 | label3 | pro_com | comune | provincia | regione | sup_com_ha | surface_ha_2018 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 242 | Agricultural areas | Heterogeneous agricultural areas | Complex cultivation patterns | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 0.1570 |
1 | 211 | Agricultural areas | Arable land | Non-irrigated arable land | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 161.6097 |
2 | 211 | Agricultural areas | Arable land | Non-irrigated arable land | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 420.1994 |
3 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 5.0278 |
4 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 1.6430 |
5 | 223 | Agricultural areas | Permanent crops | Olive groves | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 34.7345 |
6 | 241 | Agricultural areas | Heterogeneous agricultural areas | Annual crops associated with permanent crops | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 2.8168 |
7 | 241 | Agricultural areas | Heterogeneous agricultural areas | Annual crops associated with permanent crops | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 1.3899 |
8 | 241 | Agricultural areas | Heterogeneous agricultural areas | Annual crops associated with permanent crops | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 13.0463 |
9 | 243 | Agricultural areas | Heterogeneous agricultural areas | Land principally occupied by agriculture, with... | 101005.0 | Castelsilano | Crotone | Calabria | 4006.296249 | 1.1525 |
Le colonne label*
fanno riferimento alla nomenclatura delle tre classi della mappa CORINE Land Cover per ogni singolo anno. Per interpretare la nomenclatura vai qui. Come puoi vedere sono presenti le colonne relative al Comune, Provincia e Regione di apparteneza, l'estensione dell'area comunale(sup_com_ha
) e quelle relative alle superfici della CLC che mi sono calcolato in precedenza.
2. Focus sulla Campania¶
Per appartenza territoriale partirò proprio dalla Campania, lo faccio anche per riprendere parte della analisi del mio vecchio articolo.
clc1990_campania = clc1990[clc1990['regione'] == 'Campania']
clc2000_campania = clc2000[clc2000['regione'] == 'Campania']
clc2006_campania = clc2006[clc2006['regione'] == 'Campania']
clc2012_campania = clc2012[clc2012['regione'] == 'Campania']
clc2018_campania = clc2018[clc2018['regione'] == 'Campania']
Test di visualizzazione
clc2000_campania
code_00 | label1 | label2 | label3 | pro_com | comune | provincia | regione | sup_com_ha | surface_ha_2000 | |
---|---|---|---|---|---|---|---|---|---|---|
14 | 111 | Artificial surfaces | Urban fabric | Continuous urban fabric | 65134.0 | Sapri | Salerno | Campania | 1420.007490 | 82.5207 |
15 | 112 | Artificial surfaces | Urban fabric | Discontinuous urban fabric | 65134.0 | Sapri | Salerno | Campania | 1420.007490 | 36.5516 |
16 | 241 | Agricultural areas | Heterogeneous agricultural areas | Annual crops associated with permanent crops | 65134.0 | Sapri | Salerno | Campania | 1420.007490 | 17.7890 |
17 | 242 | Agricultural areas | Heterogeneous agricultural areas | Complex cultivation patterns | 65134.0 | Sapri | Salerno | Campania | 1420.007490 | 0.6866 |
18 | 242 | Agricultural areas | Heterogeneous agricultural areas | Complex cultivation patterns | 65134.0 | Sapri | Salerno | Campania | 1420.007490 | 56.9832 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
177542 | 323 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Sclerophyllous vegetation | 61072.0 | Rocchetta e Croce | Caserta | Campania | 1300.547184 | 206.0290 |
177543 | 324 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Transitional woodland-shrub | 61072.0 | Rocchetta e Croce | Caserta | Campania | 1300.547184 | 2.3093 |
177544 | 221 | Agricultural areas | Permanent crops | Vineyards | 61072.0 | Rocchetta e Croce | Caserta | Campania | 1300.547184 | 4.0201 |
177545 | 321 | Forest and semi natural areas | Scrub and/or herbaceous vegetation associations | Natural grasslands | 61072.0 | Rocchetta e Croce | Caserta | Campania | 1300.547184 | 1.8517 |
177546 | 222 | Agricultural areas | Permanent crops | Fruit trees and berry plantations | 61072.0 | Rocchetta e Croce | Caserta | Campania | 1300.547184 | 1.9998 |
11361 rows × 10 columns
2.1.1 Stato al 1990¶
Come primo step mi sono concentrato sui dati del 1990; ho pulito un po' la tabella per rendere meglio comprensibile la sua lettura ed ho estratto valori per tutte e tre le classi. Quello che ho fatto per il 1990 l'ho ripetuto per i restanti anni.
Livello 1
campania_clc1990_label1 = pd.DataFrame(clc1990_campania.groupby('label1')['surface_ha_1990'].sum())
campania_clc1990_label1.reset_index(inplace=True)
campania_clc1990_label1.rename(columns={'label1': 'CORINE Land Cover - level 1'}, inplace=True)
campania_clc1990_label1
CORINE Land Cover - level 1 | surface_ha_1990 | |
---|---|---|
0 | Agricultural areas | 761041.0303 |
1 | Artificial surfaces | 80649.9550 |
2 | Forest and semi natural areas | 522870.7142 |
3 | Water bodies | 1593.6569 |
4 | Wetlands | 608.8997 |
Livello 2
campania_clc1990_label2 = pd.DataFrame(clc1990_campania.groupby('label2')['surface_ha_1990'].sum())
campania_clc1990_label2.reset_index(inplace=True)
campania_clc1990_label2.rename(columns={'label2': 'CORINE Land Cover - level 2'}, inplace=True)
campania_clc1990_label2
CORINE Land Cover - level 2 | surface_ha_1990 | |
---|---|---|
0 | Arable land | 330066.4318 |
1 | Artificial, non-agricultural vegetated areas | 1046.0670 |
2 | Forests | 383826.2982 |
3 | Heterogeneous agricultural areas | 297503.9919 |
4 | Industrial, commercial and transport units | 8083.1341 |
5 | Inland waters | 1567.8002 |
6 | Inland wetlands | 608.8997 |
7 | Marine waters | 25.8567 |
8 | Mine, dump and construction sites | 1631.6247 |
9 | Open spaces with little or no vegetation | 8966.3806 |
10 | Pastures | 15620.1214 |
11 | Permanent crops | 117850.4852 |
12 | Scrub and/or herbaceous vegetation associations | 130078.0354 |
13 | Urban fabric | 69889.1292 |
Livello 3
campania_clc1990_label3 = pd.DataFrame(clc1990_campania.groupby('label3')['surface_ha_1990'].sum())
campania_clc1990_label3.reset_index(inplace=True)
campania_clc1990_label3.rename(columns={'label3': 'CORINE Land Cover - level 3'}, inplace=True)
campania_clc1990_label3
CORINE Land Cover - level 3 | surface_ha_1990 | |
---|---|---|
0 | Agro-forestry areas | 420.5049 |
1 | Airports | 383.8998 |
2 | Annual crops associated with permanent crops | 42881.8119 |
3 | Bare rocks | 1122.7257 |
4 | Beaches, dunes, sands | 2282.0112 |
5 | Broad-leaved forest | 367521.2801 |
6 | Coastal lagoons | 25.8567 |
7 | Complex cultivation patterns | 165047.1097 |
8 | Coniferous forest | 7457.8770 |
9 | Construction sites | 25.4060 |
10 | Continuous urban fabric | 32608.0637 |
11 | Discontinuous urban fabric | 37281.0655 |
12 | Dump sites | 207.8811 |
13 | Fruit trees and berry plantations | 56044.2433 |
14 | Green urban areas | 731.9919 |
15 | Industrial or commercial units | 6590.0765 |
16 | Inland marshes | 608.8997 |
17 | Land principally occupied by agriculture, with... | 89154.5654 |
18 | Mineral extraction sites | 1398.3376 |
19 | Mixed forest | 8847.1411 |
20 | Moors and heathland | 16.7825 |
21 | Natural grasslands | 57150.7848 |
22 | Non-irrigated arable land | 304750.4005 |
23 | Olive groves | 58951.7577 |
24 | Pastures | 15620.1214 |
25 | Permanently irrigated land | 25316.0313 |
26 | Port areas | 458.6026 |
27 | Road and rail networks and associated land | 650.5552 |
28 | Sclerophyllous vegetation | 19255.7695 |
29 | Sparsely vegetated areas | 5561.6437 |
30 | Sport and leisure facilities | 314.0751 |
31 | Transitional woodland-shrub | 53654.6986 |
32 | Vineyards | 2854.4842 |
33 | Water bodies | 1095.5920 |
34 | Water courses | 472.2082 |
2.1.2 Stato al 2000¶
campania_clc2000_label1 = pd.DataFrame(clc2000_campania.groupby('label1')['surface_ha_2000'].sum())
campania_clc2000_label1.reset_index(inplace=True)
campania_clc2000_label1.rename(columns={'label1': 'CORINE Land Cover - level 1'}, inplace=True)
campania_clc2000_label2 = pd.DataFrame(clc2000_campania.groupby('label2')['surface_ha_2000'].sum())
campania_clc2000_label2.reset_index(inplace=True)
campania_clc2000_label2.rename(columns={'label2': 'CORINE Land Cover - level 2'}, inplace=True)
campania_clc2000_label3 = pd.DataFrame(clc2000_campania.groupby('label3')['surface_ha_2000'].sum())
campania_clc2000_label3.reset_index(inplace=True)
campania_clc2000_label3.rename(columns={'label3': 'CORINE Land Cover - level 3'}, inplace=True)
2.1.3 Stato al 2006¶
campania_clc2006_label1 = pd.DataFrame(clc2006_campania.groupby('label1')['surface_ha_2006'].sum())
campania_clc2006_label1.reset_index(inplace=True)
campania_clc2006_label1.rename(columns={'label1': 'CORINE Land Cover - level 1'}, inplace=True)
campania_clc2006_label2 = pd.DataFrame(clc2006_campania.groupby('label2')['surface_ha_2006'].sum())
campania_clc2006_label2.reset_index(inplace=True)
campania_clc2006_label2.rename(columns={'label2': 'CORINE Land Cover - level 2'}, inplace=True)
campania_clc2006_label3 = pd.DataFrame(clc2006_campania.groupby('label3')['surface_ha_2006'].sum())
campania_clc2006_label3.reset_index(inplace=True)
campania_clc2006_label3.rename(columns={'label3': 'CORINE Land Cover - level 3'}, inplace=True)
2.1.4 Stato al 2012¶
campania_clc2012_label1 = pd.DataFrame(clc2012_campania.groupby('label1')['surface_ha_2012'].sum())
campania_clc2012_label1.reset_index(inplace=True)
campania_clc2012_label1.rename(columns={'label1': 'CORINE Land Cover - level 1'}, inplace=True)
campania_clc2012_label2 = pd.DataFrame(clc2012_campania.groupby('label2')['surface_ha_2012'].sum())
campania_clc2012_label2.reset_index(inplace=True)
campania_clc2012_label2.rename(columns={'label2': 'CORINE Land Cover - level 2'}, inplace=True)
campania_clc2012_label3 = pd.DataFrame(clc2012_campania.groupby('label3')['surface_ha_2012'].sum())
campania_clc2012_label3.reset_index(inplace=True)
campania_clc2012_label3.rename(columns={'label3': 'CORINE Land Cover - level 3'}, inplace=True)
2.1.5 Stato al 2018¶
campania_clc2018_label1 = pd.DataFrame(clc2018_campania.groupby('label1')['surface_ha_2018'].sum())
campania_clc2018_label1.reset_index(inplace=True)
campania_clc2018_label1.rename(columns={'label1': 'CORINE Land Cover - level 1'}, inplace=True)
campania_clc2018_label2 = pd.DataFrame(clc2018_campania.groupby('label2')['surface_ha_2018'].sum())
campania_clc2018_label2.reset_index(inplace=True)
campania_clc2018_label2.rename(columns={'label2': 'CORINE Land Cover - level 2'}, inplace=True)
campania_clc2018_label3 = pd.DataFrame(clc2018_campania.groupby('label3')['surface_ha_2018'].sum())
campania_clc2018_label3.reset_index(inplace=True)
campania_clc2018_label3.rename(columns={'label3': 'CORINE Land Cover - level 3'}, inplace=True)
2.2 Grafici¶
E' il momento di approfondire questi dati! Ho estratto grafici per tutte e tre le classi ed ho cercato di dare una interpretazione del perchè di alcuni fenomeni.
2.2.1 Grafici per il livello 1¶
lvl1 = [campania_clc1990_label1, campania_clc2000_label1, campania_clc2006_label1, campania_clc2012_label1, campania_clc2018_label1]
lvl1_df = reduce(lambda left,right: pd.merge(left,right,on=['CORINE Land Cover - level 1'], how='outer'), lvl1)
lvl1_df.fillna(0, inplace=True)
lvl1_df.insert(loc=6, column='Surf.Diff. | 2018-1990', value=(lvl1_df.surface_ha_2018 - lvl1_df.surface_ha_1990))
lvl1_df.set_index('CORINE Land Cover - level 1', inplace=True)
lvl1_df.rename(columns={'surface_ha_1990': '1990', 'surface_ha_2000': '2000', 'surface_ha_2006': '2006', 'surface_ha_2012': '2012', 'surface_ha_2018': '2018'}, inplace=True)
lvl1_df.sort_index(ascending=True, inplace=True)
lvl1_df
1990 | 2000 | 2006 | 2012 | 2018 | Surf.Diff. | 2018-1990 | |
---|---|---|---|---|---|---|
CORINE Land Cover - level 1 | ||||||
Agricultural areas | 761041.0303 | 753145.2349 | 755438.9748 | 752611.5454 | 752077.3861 | -8963.6442 |
Artificial surfaces | 80649.9550 | 89935.2388 | 97747.4059 | 101771.7643 | 102304.6984 | 21654.7434 |
Forest and semi natural areas | 522870.7142 | 521005.1536 | 510731.5181 | 509096.9289 | 508050.0206 | -14820.6936 |
Water bodies | 1593.6569 | 2195.8983 | 2463.1760 | 2948.2571 | 2948.2571 | 1354.6002 |
Wetlands | 608.8997 | 482.9084 | 386.6832 | 339.2620 | 339.2620 | -269.6377 |
fig1 = plt.figure(figsize=(20, 10), dpi=100)
sub_fig = GridSpec(nrows=1, ncols=1, figure=fig1, hspace=0.35)
ax = fig1.add_subplot(sub_fig[0, 0])
lvl1_df.plot.bar(ax=ax, rot=0)
ax.yaxis.set_label_text('ha')
ax.set_xlabel('')
ax.grid(color='lightgrey', linestyle='dashdot')
plt.legend(loc='best')
<matplotlib.legend.Legend at 0x7f13b28b6da0>
E' visibile abbastanza chiaramente un netto aumento delle superfici artificiali con un conseguente arretramento di quelle forestate e di quelle agricole. Le aree forestate tra il 1990 ed il 2018 hanno subito un arretramento quasi doppio rispetto a quelle agricole e le superfici artificiali sono quelle che hanno maggiormente "beneficiato" di questo arretramento complessivo delle due classi di CLC. Si potrebbe dire che l'urbanizzato ha eroso foreste ed aree agricole in quasi 30 anni.
2.2.2 Grafici per il livello 2¶
lvl2 = [campania_clc1990_label2, campania_clc2000_label2, campania_clc2006_label2, campania_clc2012_label2, campania_clc2018_label2]
lvl2_df = reduce(lambda left,right: pd.merge(left,right,on=['CORINE Land Cover - level 2'], how='outer'), lvl2)
lvl2_df.fillna(0, inplace=True)
lvl2_df.insert(loc=6, column='Surf.Diff. | 2000-1990', value=(lvl2_df.surface_ha_2000 - lvl2_df.surface_ha_1990))
lvl2_df.insert(loc=7, column='Surf.Diff. | 2006-2000', value=(lvl2_df.surface_ha_2006 - lvl2_df.surface_ha_2000))
lvl2_df.insert(loc=8, column='Surf.Diff. | 2012-2006', value=(lvl2_df.surface_ha_2012 - lvl2_df.surface_ha_2006))
lvl2_df.insert(loc=9, column='Surf.Diff. | 2018-2012', value=(lvl2_df.surface_ha_2018 - lvl2_df.surface_ha_2012))
lvl2_df.insert(loc=9, column='Surf.Diff. | 2018-1990', value=(lvl2_df.surface_ha_2018 - lvl2_df.surface_ha_1990))
lvl2_df.set_index('CORINE Land Cover - level 2', inplace=True)
lvl2_df = lvl2_df[['Surf.Diff. | 2000-1990', 'Surf.Diff. | 2006-2000', 'Surf.Diff. | 2012-2006', 'Surf.Diff. | 2018-2012', 'Surf.Diff. | 2018-1990']]
lvl2_df.sort_index(ascending=True, inplace=True)
lvl2_df
Surf.Diff. | 2000-1990 | Surf.Diff. | 2006-2000 | Surf.Diff. | 2012-2006 | Surf.Diff. | 2018-2012 | Surf.Diff. | 2018-1990 | |
---|---|---|---|---|---|
CORINE Land Cover - level 2 | |||||
Arable land | -6226.9986 | -15007.4805 | 1362.7374 | 26.9417 | -19844.8000 |
Artificial, non-agricultural vegetated areas | 330.5367 | -4.4113 | 58.5588 | 396.9458 | 781.6300 |
Forests | 2963.0601 | -4293.0050 | 1859.3801 | -1391.9151 | -862.4799 |
Heterogeneous agricultural areas | -947.6309 | 4546.7408 | 9331.1283 | -448.2578 | 12481.9804 |
Industrial, commercial and transport units | 1550.4505 | 3173.2827 | 2094.7855 | 154.4961 | 6973.0148 |
Inland waters | 602.2416 | 267.2776 | 398.3284 | 0.0000 | 1267.8476 |
Inland wetlands | -125.9913 | -96.2252 | -73.2778 | 0.0000 | -295.4943 |
Marine waters | -0.0002 | 0.0001 | 86.7527 | 0.0000 | 86.7526 |
Maritime wetlands | 0.0000 | 0.0000 | 25.8566 | 0.0000 | 25.8566 |
Mine, dump and construction sites | -31.1788 | 474.9460 | 112.8079 | -23.5198 | 533.0553 |
Open spaces with little or no vegetation | 1019.9233 | -287.3449 | 20220.0532 | 3005.5295 | 23958.1611 |
Pastures | -1351.7336 | -788.2046 | -997.1098 | -110.4579 | -3247.5059 |
Permanent crops | 630.5677 | 13542.6842 | -12524.1853 | -2.3853 | 1646.6813 |
Scrub and/or herbaceous vegetation associations | -5848.5440 | -5693.2856 | -23714.0225 | -2660.5227 | -37916.3748 |
Urban fabric | 7435.4754 | 4168.3497 | 1758.2062 | 5.0120 | 13367.0433 |
fig2 = plt.figure(figsize=(20, 10), dpi=100)
sub_fig = GridSpec(nrows=1, ncols=1, figure=fig2, hspace=0.35)
ax = fig2.add_subplot(sub_fig[0, 0])
lvl2_df.plot.bar(ax=ax, rot=0)
ax.yaxis.set_label_text('ha')
ax.set_xlabel('')
ax.grid(color='lightgrey', linestyle='dashdot')
plt.xticks(rotation = 90)
plt.legend(loc='best')
<matplotlib.legend.Legend at 0x7f13ab7d1fc0>
Scendendo di un livello, quindi andando ad approfondire di più il dato passando al secondo livello CLC, possiamo verificare i trend negativi a quali specifiche superfici fanno riferimento.
Le aree arbustive e con alberi radi hanno avuto la peggio, a seguire i terreni arabili, pascoli e foreste. Netto è invece l'aumento delle aree aperte, classe in cui nel terzo livello CLC ci sono le aree percorse dal fuoco(da tenere in mente per richiami successivi!). Seguono, nell'incremento, le aree urbanizzate, le aree per colture eterogenee e quelle per lo sviluppo di siti industriali e commerciali.
2.2.3 Grafici per il livello 3¶
lvl3 = [campania_clc1990_label3, campania_clc2000_label3, campania_clc2006_label3, campania_clc2012_label3, campania_clc2018_label3]
lvl3_df = reduce(lambda left,right: pd.merge(left,right,on=['CORINE Land Cover - level 3'], how='outer'), lvl3)
lvl3_df.fillna(0, inplace=True)
lvl3_df.insert(loc=6, column='Surf.Diff. | 2000-1990', value=(lvl3_df.surface_ha_2000 - lvl3_df.surface_ha_1990))
lvl3_df.insert(loc=7, column='Surf.Diff. | 2006-2000', value=(lvl3_df.surface_ha_2006 - lvl3_df.surface_ha_2000))
lvl3_df.insert(loc=8, column='Surf.Diff. | 2012-2006', value=(lvl3_df.surface_ha_2012 - lvl3_df.surface_ha_2006))
lvl3_df.insert(loc=9, column='Surf.Diff. | 2018-2012', value=(lvl3_df.surface_ha_2018 - lvl3_df.surface_ha_2012))
lvl3_df.insert(loc=10, column='Surf.Diff. | 2018-1990', value=(lvl3_df.surface_ha_2018 - lvl3_df.surface_ha_1990))
lvl3_df.set_index('CORINE Land Cover - level 3', inplace=True)
lvl3_df.sort_index(ascending=True, inplace=True)
lvl3_df
surface_ha_1990 | surface_ha_2000 | surface_ha_2006 | surface_ha_2012 | surface_ha_2018 | Surf.Diff. | 2000-1990 | Surf.Diff. | 2006-2000 | Surf.Diff. | 2012-2006 | Surf.Diff. | 2018-2012 | Surf.Diff. | 2018-1990 | |
---|---|---|---|---|---|---|---|---|---|---|
CORINE Land Cover - level 3 | ||||||||||
Agro-forestry areas | 420.5049 | 420.5224 | 140.9079 | 79.0823 | 79.0823 | 0.0175 | -279.6145 | -61.8256 | 0.000000e+00 | -341.4226 |
Airports | 383.8998 | 556.4307 | 556.4308 | 556.4308 | 556.4308 | 172.5309 | 0.0001 | 0.0000 | 0.000000e+00 | 172.5310 |
Annual crops associated with permanent crops | 42881.8119 | 44016.3987 | 23501.2894 | 24459.1737 | 24062.2280 | 1134.5868 | -20515.1093 | 957.8843 | -3.969457e+02 | -18819.5839 |
Bare rocks | 1122.7257 | 1006.1738 | 979.8852 | 1274.5252 | 1274.5252 | -116.5519 | -26.2886 | 294.6400 | 0.000000e+00 | 151.7995 |
Beaches, dunes, sands | 2282.0112 | 1852.6891 | 1835.3037 | 1904.4059 | 1904.4059 | -429.3221 | -17.3854 | 69.1022 | 0.000000e+00 | -377.6053 |
Broad-leaved forest | 367521.2801 | 369187.8047 | 365453.4552 | 367034.3194 | 366436.4566 | 1666.5246 | -3734.3495 | 1580.8642 | -5.978628e+02 | -1084.8235 |
Burnt areas | 0.0000 | 354.7607 | 438.4148 | 770.8451 | 3802.9844 | 354.7607 | 83.6541 | 332.4303 | 3.032139e+03 | 3802.9844 |
Coastal lagoons | 25.8567 | 25.8565 | 25.8566 | 112.6093 | 112.6093 | -0.0002 | 0.0001 | 86.7527 | 0.000000e+00 | 86.7526 |
Complex cultivation patterns | 165047.1097 | 162777.2069 | 181971.5611 | 185634.2569 | 185582.9448 | -2269.9028 | 19194.3542 | 3662.6958 | -5.131210e+01 | 20535.8351 |
Coniferous forest | 7457.8770 | 8154.5708 | 7620.7143 | 8876.9029 | 8373.6888 | 696.6938 | -533.8565 | 1256.1886 | -5.032141e+02 | 915.8118 |
Construction sites | 25.4060 | 70.0172 | 246.1018 | 58.2792 | 58.2792 | 44.6112 | 176.0846 | -187.8226 | 0.000000e+00 | 32.8732 |
Continuous urban fabric | 32608.0637 | 33436.5752 | 29309.2673 | 33833.4142 | 33833.4142 | 828.5115 | -4127.3079 | 4524.1469 | 0.000000e+00 | 1225.3505 |
Discontinuous urban fabric | 37281.0655 | 43888.0294 | 52183.6870 | 49417.7463 | 49422.7583 | 6606.9639 | 8295.6576 | -2765.9407 | 5.012000e+00 | 12141.6928 |
Dump sites | 207.8811 | 27.2633 | 174.0802 | 438.6634 | 406.9530 | -180.6178 | 146.8169 | 264.5832 | -3.171040e+01 | 199.0719 |
Fruit trees and berry plantations | 56044.2433 | 54999.5524 | 61954.0631 | 56585.3863 | 56585.3142 | -1044.6909 | 6954.5107 | -5368.6768 | -7.210000e-02 | 541.0709 |
Green urban areas | 731.9919 | 758.4238 | 805.2857 | 780.1128 | 1177.0586 | 26.4319 | 46.8619 | -25.1729 | 3.969458e+02 | 445.0667 |
Industrial or commercial units | 6590.0765 | 8168.7442 | 11005.1236 | 12643.3548 | 12797.8509 | 1578.6677 | 2836.3794 | 1638.2312 | 1.544961e+02 | 6207.7744 |
Inland marshes | 608.8997 | 482.9084 | 386.6832 | 313.4054 | 313.4054 | -125.9913 | -96.2252 | -73.2778 | 0.000000e+00 | -295.4943 |
Land principally occupied by agriculture, with significant areas of natural vegetation | 89154.5654 | 89342.2330 | 95489.3434 | 100261.7172 | 100261.7172 | 187.6676 | 6147.1104 | 4772.3738 | 0.000000e+00 | 11107.1518 |
Mineral extraction sites | 1398.3376 | 1503.1654 | 1655.2099 | 1691.2572 | 1699.4478 | 104.8278 | 152.0445 | 36.0473 | 8.190600e+00 | 301.1102 |
Mixed forest | 8847.1411 | 9446.9828 | 9422.1838 | 8444.5111 | 8153.6729 | 599.8417 | -24.7990 | -977.6727 | -2.908382e+02 | -693.4682 |
Moors and heathland | 16.7825 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | -16.7825 | 0.0000 | 0.0000 | 0.000000e+00 | -16.7825 |
Natural grasslands | 57150.7848 | 53354.5398 | 48427.4297 | 30587.1997 | 29539.0655 | -3796.2450 | -4927.1101 | -17840.2300 | -1.048134e+03 | -27611.7193 |
Non-irrigated arable land | 304750.4005 | 298328.2037 | 283148.7731 | 284508.0453 | 284503.2765 | -6422.1968 | -15179.4306 | 1359.2722 | -4.768800e+00 | -20247.1240 |
Olive groves | 58951.7577 | 60805.0013 | 66147.7874 | 61604.3214 | 61632.6846 | 1853.2436 | 5342.7861 | -4543.4660 | 2.836320e+01 | 2680.9269 |
Pastures | 15620.1214 | 14268.3878 | 13480.1832 | 12483.0734 | 12372.6155 | -1351.7336 | -788.2046 | -997.1098 | -1.104579e+02 | -3247.5059 |
Permanently irrigated land | 25316.0313 | 25511.2295 | 25683.1796 | 25686.6448 | 25718.3553 | 195.1982 | 171.9501 | 3.4652 | 3.171050e+01 | 402.3240 |
Port areas | 458.6026 | 469.9879 | 481.6963 | 459.2550 | 459.2550 | 11.3853 | 11.7084 | -22.4413 | 0.000000e+00 | 0.6524 |
Road and rail networks and associated land | 650.5552 | 438.4218 | 763.6166 | 1242.6122 | 1242.6122 | -212.1334 | 325.1948 | 478.9956 | 0.000000e+00 | 592.0570 |
Salt marshes | 0.0000 | 0.0000 | 0.0000 | 25.8566 | 25.8566 | 0.0000 | 0.0000 | 25.8566 | 0.000000e+00 | 25.8566 |
Sclerophyllous vegetation | 19255.7695 | 18537.4944 | 17072.9128 | 15623.7660 | 15530.6877 | -718.2751 | -1464.5816 | -1449.1468 | -9.307830e+01 | -3725.0818 |
Sparsely vegetated areas | 5561.6437 | 6772.6803 | 6445.3553 | 25969.2360 | 25942.6262 | 1211.0366 | -327.3250 | 19523.8807 | -2.660980e+01 | 20380.9825 |
Sport and leisure facilities | 314.0751 | 618.1799 | 566.9067 | 650.6384 | 650.6384 | 304.1048 | -51.2732 | 83.7317 | 0.000000e+00 | 336.5633 |
Transitional woodland-shrub | 53654.6986 | 52337.4572 | 53035.8633 | 48611.2176 | 47091.9074 | -1317.2414 | 698.4061 | -4424.6457 | -1.519310e+03 | -6562.7912 |
Vineyards | 2854.4842 | 2676.4992 | 3921.8866 | 1309.8441 | 1279.1677 | -177.9850 | 1245.3874 | -2612.0425 | -3.067640e+01 | -1575.3165 |
Water bodies | 1095.5920 | 1373.7744 | 1687.8687 | 1981.1362 | 1981.1362 | 278.1824 | 314.0943 | 293.2675 | 2.273737e-13 | 885.5442 |
Water courses | 472.2082 | 796.2674 | 749.4507 | 854.5116 | 854.5116 | 324.0592 | -46.8167 | 105.0609 | 0.000000e+00 | 382.3034 |
fig3 = plt.figure(figsize=(20, 10), dpi=100)
sub_fig = GridSpec(nrows=1, ncols=1, figure=fig3, hspace=0.35)
ax = fig3.add_subplot(sub_fig[0, 0])
lvl3_df['Surf.Diff. | 2018-1990'].plot.bar(ax=ax, rot=0)
ax.yaxis.set_label_text('ha')
ax.set_xlabel('')
ax.grid(color='lightgrey', linestyle='dashdot')
plt.xticks(rotation = 90)
plt.legend(loc='best')
<matplotlib.legend.Legend at 0x7f13b28b4fd0>
Passando al livello tre della CLC, ho voluto graficare la sola differenza tra 1990 e 2018 per motivi di leggibilità del grafico. In termini di aumento di copertura del suolo c'è l'avanzamento, quasi identico, delle piccole aree destinate a colture annuali e delle aree con vegetazione frammentata. A seguire ci sono le aree urbane discontinue e quelle occupate da orti, vigneti e alberi da frutto.
Una riflessione che mi sento di fare è che l'avanzamento del tessuto urbano discontinuo ha frazionato il territorio agricolo, generando aree a piccole colture agricole.
Significativo anche l'aumento di estensione delle aree percorse dal fuoco.
I decrementi sono la cartina di tornasole degli incrementi che ho descritto poco fa e che potrebbero confermare la mia riflessione sul frazionamento del territorio naturale ed agricolo, portato avanti dall'avanzamento delle classi legati ai suoli artificiali.
2.3 Focus sui Comuni¶
L'analisi che segue tenta di rispondere alla domanda: "quali sono i Comuni campani in cui i fenomeni esposti poco fa hanno avuto un maggior impatto?"
Mi concentrerò sul terzo livello della CLC, in particolare sulle aree artificiali, aree agricole e foreste ma anche sulle discariche, le aree percorse dal fuoco ed il verde urbano.
Visto che dal 2000 in poi l'accuratezza geometrica del dato CLC è aumentata considerevolmente, le analisi di dettaglio che seguono si concentreranno sulla differenza tra 2000 e 2018.
# Dati 1990
focus_1990 = clc1990_campania[['pro_com', 'comune', 'provincia', 'sup_com_ha', 'label3', 'surface_ha_1990']]
focus_1990.set_index('label3', inplace=True)
focus_1990_group = pd.DataFrame(focus_1990.groupby(['pro_com', 'comune', 'sup_com_ha', 'label3'])['surface_ha_1990'].sum())
focus_1990_group.reset_index(inplace=True)
# Dati 2000
focus_2000 = clc2000_campania[['pro_com', 'comune', 'provincia', 'sup_com_ha', 'label3', 'surface_ha_2000']]
focus_2000.set_index('label3', inplace=True)
focus_2000_group = pd.DataFrame(focus_2000.groupby(['pro_com', 'comune', 'sup_com_ha', 'label3'])['surface_ha_2000'].sum())
focus_2000_group.reset_index(inplace=True)
# Dati 2006
focus_2006 = clc2006_campania[['pro_com', 'comune', 'provincia', 'sup_com_ha', 'label3', 'surface_ha_2006']]
focus_2006.set_index('label3', inplace=True)
focus_2006_group = pd.DataFrame(focus_2006.groupby(['pro_com', 'comune', 'sup_com_ha', 'label3'])['surface_ha_2006'].sum())
focus_2006_group.reset_index(inplace=True)
# Dati 2012
focus_2012 = clc2012_campania[['pro_com', 'comune', 'provincia', 'sup_com_ha', 'label3', 'surface_ha_2012']]
focus_2012.set_index('label3', inplace=True)
focus_2012_group = pd.DataFrame(focus_2012.groupby(['pro_com', 'comune', 'sup_com_ha', 'label3'])['surface_ha_2012'].sum())
focus_2012_group.reset_index(inplace=True)
# Dati 2018
focus_2018 = clc2018_campania[['pro_com', 'comune', 'provincia', 'sup_com_ha', 'label3', 'surface_ha_2018']]
focus_2018.set_index('label3', inplace=True)
focus_2018_group = pd.DataFrame(focus_2018.groupby(['pro_com', 'comune', 'sup_com_ha', 'label3'])['surface_ha_2018'].sum())
focus_2018_group.reset_index(inplace=True)
focus_1990_group
pro_com | comune | sup_com_ha | label3 | surface_ha_1990 | |
---|---|---|---|---|---|
0 | 61001.0 | Ailano | 1605.560469 | Broad-leaved forest | 472.5747 |
1 | 61001.0 | Ailano | 1605.560469 | Complex cultivation patterns | 93.2780 |
2 | 61001.0 | Ailano | 1605.560469 | Continuous urban fabric | 31.0972 |
3 | 61001.0 | Ailano | 1605.560469 | Land principally occupied by agriculture, with... | 188.9317 |
4 | 61001.0 | Ailano | 1605.560469 | Non-irrigated arable land | 752.7540 |
... | ... | ... | ... | ... | ... |
4543 | 65158.0 | Bellizzi | 802.200746 | Continuous urban fabric | 93.9079 |
4544 | 65158.0 | Bellizzi | 802.200746 | Discontinuous urban fabric | 40.9309 |
4545 | 65158.0 | Bellizzi | 802.200746 | Fruit trees and berry plantations | 24.3220 |
4546 | 65158.0 | Bellizzi | 802.200746 | Non-irrigated arable land | 426.7024 |
4547 | 65158.0 | Bellizzi | 802.200746 | Vineyards | 33.8787 |
4548 rows × 5 columns
2.3.1 Aree artificiali¶
I gruppi 1.1 ed 1.2 della CLC
# Dati 1990
artificial_surface_1990 = focus_1990_group[focus_1990_group['label3'].isin(['Continuous urban fabric', 'Discontinuous urban fabric', 'Industrial or commercial units', 'Road and rail networks and associated land', 'Port areas', 'Airports'])]
artificial_surface_1990_group = pd.DataFrame(artificial_surface_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
artificial_surface_1990_group.reset_index(inplace=True)
# Dati 2000
artificial_surface_2000 = focus_2000_group[focus_2000_group['label3'].isin(['Continuous urban fabric', 'Discontinuous urban fabric', 'Industrial or commercial units', 'Road and rail networks and associated land', 'Port areas', 'Airports'])]
artificial_surface_2000_group = pd.DataFrame(artificial_surface_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
artificial_surface_2000_group.reset_index(inplace=True)
# Dati 2006
artificial_surface_2006 = focus_2006_group[focus_2006_group['label3'].isin(['Continuous urban fabric', 'Discontinuous urban fabric', 'Industrial or commercial units', 'Road and rail networks and associated land', 'Port areas', 'Airports'])]
artificial_surface_2006_group = pd.DataFrame(artificial_surface_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
artificial_surface_2006_group.reset_index(inplace=True)
# Dati 2012
artificial_surface_2012 = focus_2012_group[focus_2012_group['label3'].isin(['Continuous urban fabric', 'Discontinuous urban fabric', 'Industrial or commercial units', 'Road and rail networks and associated land', 'Port areas', 'Airports'])]
artificial_surface_2012_group = pd.DataFrame(artificial_surface_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
artificial_surface_2012_group.reset_index(inplace=True)
# Dati 2018
artificial_surface_2018 = focus_2018_group[focus_2018_group['label3'].isin(['Continuous urban fabric', 'Discontinuous urban fabric', 'Industrial or commercial units', 'Road and rail networks and associated land', 'Port areas', 'Airports'])]
artificial_surface_2018_group = pd.DataFrame(artificial_surface_2018.groupby(['pro_com', 'comune', 'sup_com_ha'])['surface_ha_2018'].sum())
artificial_surface_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_artificial = [artificial_surface_2018_group, artificial_surface_2012_group, artificial_surface_2006_group, artificial_surface_2000_group, artificial_surface_1990_group]
focus_artificial_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_artificial)
focus_artificial_df = focus_artificial_df[focus_artificial_df['sup_com_ha'] > 0]
focus_artificial_df.fillna(0, inplace=True)
focus_artificial_df.insert(loc=3, column='perc_1990', value=round(focus_artificial_df.surface_ha_1990 / focus_artificial_df.sup_com_ha, 4) * 100)
focus_artificial_df.insert(loc=4, column='perc_2000', value=round(focus_artificial_df.surface_ha_2000 / focus_artificial_df.sup_com_ha, 4) * 100)
focus_artificial_df.insert(loc=5, column='perc_2006', value=round(focus_artificial_df.surface_ha_2006 / focus_artificial_df.sup_com_ha, 4) * 100)
focus_artificial_df.insert(loc=6, column='perc_2012', value=round(focus_artificial_df.surface_ha_2012 / focus_artificial_df.sup_com_ha, 4) * 100)
focus_artificial_df.insert(loc=7, column='perc_2018', value=round(focus_artificial_df.surface_ha_2018 / focus_artificial_df.sup_com_ha, 4) * 100)
focus_artificial_df.insert(loc=8, column='Perc.Diff. | 2018-2000', value=(focus_artificial_df.perc_2018 - focus_artificial_df.perc_2000))
focus_artificial_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=True, inplace=True)
focus_artificial_df
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
201 | 63036.0 | Grumo Nevano | 287.688759 | 47.45 | 64.93 | 64.93 | 51.31 | 51.31 | -13.62 | 147.6065 | 147.6065 | 186.8019 | 186.8019 | 136.5066 |
232 | 63067.0 | San Giorgio a Cremano | 415.383936 | 60.96 | 76.57 | 68.51 | 68.51 | 68.51 | -8.06 | 284.5767 | 284.5767 | 284.5768 | 318.0615 | 253.2174 |
197 | 63032.0 | Frattamaggiore | 538.816178 | 58.54 | 71.14 | 72.46 | 63.97 | 63.97 | -7.17 | 344.6705 | 344.6705 | 390.4469 | 383.2980 | 315.4185 |
476 | 65121.0 | San Mango Piemonte | 602.370147 | 7.81 | 7.81 | 3.14 | 3.14 | 3.14 | -4.67 | 18.8890 | 18.8890 | 18.8890 | 47.0198 | 47.0222 |
137 | 62046.0 | Pago Veiano | 2374.895020 | 1.83 | 5.24 | 2.13 | 2.13 | 2.13 | -3.11 | 50.6037 | 50.6037 | 50.6037 | 124.5097 | 43.5550 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
228 | 63063.0 | Quarto | 1415.896056 | 24.40 | 24.95 | 26.90 | 39.26 | 39.26 | 14.31 | 555.9065 | 555.9065 | 380.8373 | 353.2075 | 345.4612 |
254 | 63089.0 | Volla | 620.630205 | 45.68 | 49.86 | 49.94 | 64.34 | 64.34 | 14.48 | 399.3008 | 399.3008 | 309.9351 | 309.4482 | 283.5034 |
212 | 63047.0 | Monte di Procida | 370.428037 | 31.25 | 31.25 | 31.25 | 48.28 | 48.28 | 17.03 | 178.8412 | 178.8412 | 115.7459 | 115.7458 | 115.7439 |
190 | 63025.0 | Castello di Cisterna | 392.135970 | 21.89 | 46.04 | 68.31 | 68.31 | 68.31 | 22.27 | 267.8514 | 267.8514 | 267.8514 | 180.5292 | 85.8311 |
380 | 65011.0 | Atrani | 12.061182 | 0.00 | 0.00 | 52.01 | 52.01 | 52.01 | 52.01 | 6.2730 | 6.2730 | 6.2730 | 0.0000 | 0.0000 |
507 rows × 14 columns
# Superfici in arretramento
reduction_artificial_area = focus_artificial_df.iloc[0:10]
reduction_artificial_area
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
201 | 63036.0 | Grumo Nevano | 287.688759 | 47.45 | 64.93 | 64.93 | 51.31 | 51.31 | -13.62 | 147.6065 | 147.6065 | 186.8019 | 186.8019 | 136.5066 |
232 | 63067.0 | San Giorgio a Cremano | 415.383936 | 60.96 | 76.57 | 68.51 | 68.51 | 68.51 | -8.06 | 284.5767 | 284.5767 | 284.5768 | 318.0615 | 253.2174 |
197 | 63032.0 | Frattamaggiore | 538.816178 | 58.54 | 71.14 | 72.46 | 63.97 | 63.97 | -7.17 | 344.6705 | 344.6705 | 390.4469 | 383.2980 | 315.4185 |
476 | 65121.0 | San Mango Piemonte | 602.370147 | 7.81 | 7.81 | 3.14 | 3.14 | 3.14 | -4.67 | 18.8890 | 18.8890 | 18.8890 | 47.0198 | 47.0222 |
137 | 62046.0 | Pago Veiano | 2374.895020 | 1.83 | 5.24 | 2.13 | 2.13 | 2.13 | -3.11 | 50.6037 | 50.6037 | 50.6037 | 124.5097 | 43.5550 |
485 | 65132.0 | San Valentino Torio | 915.632363 | 15.51 | 15.56 | 13.27 | 13.27 | 13.27 | -2.29 | 121.4587 | 121.4587 | 121.4588 | 142.4372 | 141.9949 |
4 | 61005.0 | Aversa | 885.176217 | 59.33 | 67.87 | 67.96 | 66.24 | 66.24 | -1.63 | 586.3294 | 586.3294 | 601.5394 | 600.7846 | 525.1697 |
170 | 63005.0 | Arzano | 473.103075 | 83.22 | 86.97 | 87.40 | 85.42 | 85.42 | -1.55 | 404.1348 | 404.1348 | 413.4904 | 411.4785 | 393.7116 |
474 | 65119.0 | San Giovanni a Piro | 3790.148485 | 2.12 | 4.21 | 2.72 | 2.72 | 2.72 | -1.49 | 103.0783 | 103.0783 | 103.0783 | 159.6782 | 80.3555 |
57 | 61067.0 | Recale | 321.954739 | 32.81 | 32.81 | 31.54 | 31.54 | 31.54 | -1.27 | 101.5467 | 101.5467 | 101.5467 | 105.6199 | 105.6193 |
# Superfici in avanzamento
increase_artificial_area = focus_artificial_df.iloc[-10:]
increase_artificial_area.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
increase_artificial_area
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
380 | 65011.0 | Atrani | 12.061182 | 0.00 | 0.00 | 52.01 | 52.01 | 52.01 | 52.01 | 6.2730 | 6.2730 | 6.2730 | 0.0000 | 0.0000 |
190 | 63025.0 | Castello di Cisterna | 392.135970 | 21.89 | 46.04 | 68.31 | 68.31 | 68.31 | 22.27 | 267.8514 | 267.8514 | 267.8514 | 180.5292 | 85.8311 |
212 | 63047.0 | Monte di Procida | 370.428037 | 31.25 | 31.25 | 31.25 | 48.28 | 48.28 | 17.03 | 178.8412 | 178.8412 | 115.7459 | 115.7458 | 115.7439 |
254 | 63089.0 | Volla | 620.630205 | 45.68 | 49.86 | 49.94 | 64.34 | 64.34 | 14.48 | 399.3008 | 399.3008 | 309.9351 | 309.4482 | 283.5034 |
228 | 63063.0 | Quarto | 1415.896056 | 24.40 | 24.95 | 26.90 | 39.26 | 39.26 | 14.31 | 555.9065 | 555.9065 | 380.8373 | 353.2075 | 345.4612 |
82 | 61094.0 | Trentola Ducenta | 665.513019 | 30.18 | 30.19 | 31.44 | 44.05 | 44.05 | 13.86 | 293.1760 | 293.1760 | 209.2403 | 200.8859 | 200.8848 |
15 | 61016.0 | Carinaro | 631.593670 | 28.55 | 34.93 | 44.25 | 47.41 | 47.41 | 12.48 | 299.4077 | 299.4077 | 279.4878 | 220.6269 | 180.3185 |
80 | 61092.0 | Teverola | 669.906081 | 31.59 | 37.22 | 50.70 | 48.78 | 48.78 | 11.56 | 326.7535 | 326.7535 | 339.6324 | 249.3457 | 211.6063 |
188 | 63023.0 | Casoria | 1213.840286 | 57.66 | 72.14 | 72.14 | 83.48 | 83.48 | 11.34 | 1013.2593 | 1013.2593 | 875.7210 | 875.7214 | 699.8511 |
123 | 62032.0 | Forchia | 545.454120 | 0.00 | 0.00 | 0.00 | 11.00 | 11.00 | 11.00 | 59.9761 | 59.9761 | 0.0000 | 0.0000 | 0.0000 |
artificial_df = pd.concat([reduction_artificial_area, increase_artificial_area])
artificial_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=True, inplace=True)
artificial_df = artificial_df[['comune', 'Perc.Diff. | 2018-2000']]
artificial_df['Perc.Diff. | 2018-2000'] = artificial_df['Perc.Diff. | 2018-2000']
artificial_df.set_index('comune', inplace=True)
fig_artificial = plt.figure(figsize=(20, 10), dpi=100)
sub_fig_artificial = GridSpec(nrows=1, ncols=1, figure=fig_artificial, hspace=0.35)
ax_artificial = fig_artificial.add_subplot(sub_fig_artificial[0, 0])
artificial_df.plot.bar(ax=ax_artificial, rot=0)
ax_artificial.yaxis.set_label_text('%')
ax_artificial.set_xlabel('')
ax_artificial.grid(color='lightgrey', linestyle='dashdot')
plt.xticks(rotation = 90)
plt.legend(loc='best')
<matplotlib.legend.Legend at 0x7f13b50e6e60>
Onestamente non so come interpretare l'arretramento delle aree artificiali, andrebbe fatta una ulteriore analisi per valutare se sono Comuni che si sono spopolati in quasi trenta anni.
L'aumento è abbastanza facile da indagare per me che sono del posto. Napoli ha una popolazione di quasi un milione di abitanti che triplica nei giorni feriali, per non parlare poi dei turisti. E' un'area molto congestionata con possibilità di nuova edilizia prossime allo zero; risulta normale quindi che Comuni più prossimi al Capoluogo di Regione stiano accogliendo "l'esubero" di popolazione. Faccio riferimento a Castello di Cisterna, Volla e Quarto.
Il caso di Atrani è particolare perchè è il Comune più piccolo d'Italia ed è posto in una zona abbastanza impervia della costiera amalfitana; è probabile che nel 2000 non si sia data molta importanza all'area.
2.3.2 Aree forestate¶
Il gruppo 3.1 della CLC
# Dati 1990
forest_surface_1990 = focus_1990_group[focus_1990_group['label3'].isin(['Broad-leaved forest', 'Coniferous forest', 'Mixed forest'])]
forest_surface_1990_group = pd.DataFrame(forest_surface_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
forest_surface_1990_group.reset_index(inplace=True)
# Dati 2000
forest_surface_2000 = focus_2000_group[focus_2000_group['label3'].isin(['Broad-leaved forest', 'Coniferous forest', 'Mixed forest'])]
forest_surface_2000_group = pd.DataFrame(forest_surface_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
forest_surface_2000_group.reset_index(inplace=True)
# Dati 2006
forest_surface_2006 = focus_2006_group[focus_2006_group['label3'].isin(['Broad-leaved forest', 'Coniferous forest', 'Mixed forest'])]
forest_surface_2006_group = pd.DataFrame(forest_surface_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
forest_surface_2006_group.reset_index(inplace=True)
# Dati 2012
forest_surface_2012 = focus_2012_group[focus_2012_group['label3'].isin(['Broad-leaved forest', 'Coniferous forest', 'Mixed forest'])]
forest_surface_2012_group = pd.DataFrame(forest_surface_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
forest_surface_2012_group.reset_index(inplace=True)
# Dati 2018
forest_surface_2018 = focus_2018_group[focus_2018_group['label3'].isin(['Broad-leaved forest', 'Coniferous forest', 'Mixed forest'])]
forest_surface_2018_group = pd.DataFrame(forest_surface_2018.groupby(['pro_com', 'comune', 'sup_com_ha'])['surface_ha_2018'].sum())
forest_surface_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_forest = [forest_surface_2018_group, forest_surface_2012_group, forest_surface_2006_group, forest_surface_2000_group, forest_surface_1990_group]
focus_forest_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_forest)
focus_forest_df = focus_forest_df[focus_forest_df['sup_com_ha'] > 0]
focus_forest_df.fillna(0, inplace=True)
focus_forest_df.insert(loc=3, column='perc_1990', value=round(focus_forest_df.surface_ha_1990 / focus_forest_df.sup_com_ha, 4) * 100)
focus_forest_df.insert(loc=4, column='perc_2000', value=round(focus_forest_df.surface_ha_2000 / focus_forest_df.sup_com_ha, 4) * 100)
focus_forest_df.insert(loc=5, column='perc_2006', value=round(focus_forest_df.surface_ha_2006 / focus_forest_df.sup_com_ha, 4) * 100)
focus_forest_df.insert(loc=6, column='perc_2012', value=round(focus_forest_df.surface_ha_2012 / focus_forest_df.sup_com_ha, 4) * 100)
focus_forest_df.insert(loc=7, column='perc_2018', value=round(focus_forest_df.surface_ha_2018 / focus_forest_df.sup_com_ha, 4) * 100)
focus_forest_df.insert(loc=8, column='Perc.Diff. | 2018-2000', value=(focus_forest_df.perc_2018 - focus_forest_df.perc_2000))
focus_forest_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=True, inplace=True)
focus_forest_df
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
139 | 62073.0 | Solopaca | 3112.664003 | 43.63 | 43.63 | 43.46 | 11.69 | 11.69 | -31.94 | 363.9901 | 363.9901 | 1352.7210 | 1358.0359 | 1358.0275 |
143 | 62077.0 | Vitulano | 3599.050416 | 50.86 | 50.81 | 50.81 | 26.82 | 26.82 | -23.99 | 965.1276 | 965.1276 | 1828.5273 | 1828.5272 | 1830.3353 |
410 | 65115.0 | Salento | 2378.507005 | 51.73 | 50.93 | 37.94 | 37.93 | 37.93 | -13.00 | 902.2741 | 902.2741 | 902.4736 | 1211.3768 | 1230.4272 |
179 | 63082.0 | Terzigno | 2346.480829 | 20.68 | 20.68 | 20.68 | 20.68 | 8.01 | -12.67 | 187.8420 | 485.2334 | 485.2333 | 485.2338 | 485.2356 |
147 | 63007.0 | Barano d'Ischia | 1096.089426 | 49.21 | 49.21 | 49.21 | 38.59 | 38.59 | -10.62 | 422.9915 | 422.9915 | 539.3662 | 539.3660 | 539.3685 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
439 | 65147.0 | Torchiara | 846.167482 | 20.76 | 20.76 | 20.86 | 29.14 | 29.14 | 8.38 | 246.5860 | 246.5860 | 176.5072 | 175.6504 | 175.6495 |
436 | 65144.0 | Stella Cilento | 1451.726154 | 39.51 | 43.25 | 43.25 | 52.64 | 52.64 | 9.39 | 764.2043 | 764.2043 | 627.8681 | 627.8690 | 573.5525 |
393 | 65098.0 | Pollica | 2816.525386 | 11.44 | 17.14 | 17.15 | 27.01 | 27.01 | 9.87 | 760.6785 | 760.6785 | 482.9555 | 482.8660 | 322.2088 |
359 | 65064.0 | Lustra | 1524.153297 | 34.01 | 34.02 | 34.02 | 44.61 | 44.61 | 10.59 | 679.9189 | 679.9189 | 518.4959 | 518.4971 | 518.4368 |
408 | 65113.0 | Sacco | 2365.702940 | 42.11 | 42.02 | 42.02 | 63.01 | 63.01 | 20.99 | 1490.6391 | 1490.6391 | 994.0414 | 994.0408 | 996.2456 |
450 rows × 14 columns
# Superfici in arretramento
reduction_forest_area = focus_forest_df.iloc[0:10]
reduction_forest_area
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
139 | 62073.0 | Solopaca | 3112.664003 | 43.63 | 43.63 | 43.46 | 11.69 | 11.69 | -31.94 | 363.9901 | 363.9901 | 1352.7210 | 1358.0359 | 1358.0275 |
143 | 62077.0 | Vitulano | 3599.050416 | 50.86 | 50.81 | 50.81 | 26.82 | 26.82 | -23.99 | 965.1276 | 965.1276 | 1828.5273 | 1828.5272 | 1830.3353 |
410 | 65115.0 | Salento | 2378.507005 | 51.73 | 50.93 | 37.94 | 37.93 | 37.93 | -13.00 | 902.2741 | 902.2741 | 902.4736 | 1211.3768 | 1230.4272 |
179 | 63082.0 | Terzigno | 2346.480829 | 20.68 | 20.68 | 20.68 | 20.68 | 8.01 | -12.67 | 187.8420 | 485.2334 | 485.2333 | 485.2338 | 485.2356 |
147 | 63007.0 | Barano d'Ischia | 1096.089426 | 49.21 | 49.21 | 49.21 | 38.59 | 38.59 | -10.62 | 422.9915 | 422.9915 | 539.3662 | 539.3660 | 539.3685 |
304 | 65006.0 | Amalfi | 570.014402 | 48.51 | 48.51 | 38.86 | 38.86 | 38.86 | -9.65 | 221.4838 | 221.4838 | 221.4838 | 276.5111 | 276.5144 |
170 | 63064.0 | Ercolano | 1989.359843 | 21.47 | 21.26 | 21.26 | 17.39 | 11.75 | -9.51 | 233.6730 | 345.9226 | 422.9398 | 422.9397 | 427.1795 |
155 | 63035.0 | Gragnano | 1464.244074 | 53.35 | 53.35 | 52.42 | 44.07 | 44.07 | -9.28 | 645.3063 | 645.3063 | 767.6083 | 781.1773 | 781.1751 |
159 | 63041.0 | Marano di Napoli | 1565.253641 | 13.09 | 13.09 | 13.09 | 3.98 | 3.98 | -9.11 | 62.3734 | 62.3734 | 204.9146 | 204.9145 | 204.9150 |
183 | 63091.0 | Trecase | 621.312671 | 8.86 | 8.86 | 8.86 | 8.86 | 0.08 | -8.78 | 0.4777 | 55.0368 | 55.0368 | 55.0368 | 55.0371 |
# Superfici in avanzamento
increase_forest_area = focus_forest_df.iloc[-10:]
increase_forest_area.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
increase_forest_area
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
408 | 65113.0 | Sacco | 2365.702940 | 42.11 | 42.02 | 42.02 | 63.01 | 63.01 | 20.99 | 1490.6391 | 1490.6391 | 994.0414 | 994.0408 | 996.2456 |
359 | 65064.0 | Lustra | 1524.153297 | 34.01 | 34.02 | 34.02 | 44.61 | 44.61 | 10.59 | 679.9189 | 679.9189 | 518.4959 | 518.4971 | 518.4368 |
393 | 65098.0 | Pollica | 2816.525386 | 11.44 | 17.14 | 17.15 | 27.01 | 27.01 | 9.87 | 760.6785 | 760.6785 | 482.9555 | 482.8660 | 322.2088 |
436 | 65144.0 | Stella Cilento | 1451.726154 | 39.51 | 43.25 | 43.25 | 52.64 | 52.64 | 9.39 | 764.2043 | 764.2043 | 627.8681 | 627.8690 | 573.5525 |
439 | 65147.0 | Torchiara | 846.167482 | 20.76 | 20.76 | 20.86 | 29.14 | 29.14 | 8.38 | 246.5860 | 246.5860 | 176.5072 | 175.6504 | 175.6495 |
405 | 65110.0 | Romagnano al Monte | 966.995480 | 18.35 | 18.35 | 18.35 | 26.64 | 26.64 | 8.29 | 257.5984 | 257.5984 | 177.4251 | 177.4254 | 177.4249 |
151 | 63022.0 | Casola di Napoli | 259.318212 | 34.28 | 34.28 | 42.15 | 42.15 | 42.15 | 7.87 | 109.3078 | 109.3078 | 109.3078 | 88.8917 | 88.8916 |
102 | 62036.0 | Ginestra degli Schiavoni | 1478.706162 | 22.20 | 22.20 | 22.20 | 29.90 | 29.90 | 7.70 | 442.1457 | 442.1457 | 328.2494 | 328.2500 | 328.2562 |
229 | 64045.0 | Luogosano | 606.809422 | 10.43 | 12.63 | 12.63 | 18.42 | 18.42 | 5.79 | 111.7932 | 111.7932 | 76.6287 | 76.6287 | 63.2980 |
355 | 65060.0 | Laureana Cilento | 1374.420460 | 25.62 | 25.64 | 25.64 | 30.10 | 31.15 | 5.51 | 428.1047 | 413.7489 | 352.3810 | 352.3819 | 352.1644 |
forest_df = pd.concat([reduction_forest_area, increase_forest_area])
forest_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=True, inplace=True)
forest_df = forest_df[['comune', 'Perc.Diff. | 2018-2000']]
forest_df['Perc.Diff. | 2018-2000'] = forest_df['Perc.Diff. | 2018-2000']
forest_df.set_index('comune', inplace=True)
fig_forest = plt.figure(figsize=(20, 10), dpi=100)
sub_fig_forest = GridSpec(nrows=1, ncols=1, figure=fig_forest, hspace=0.35)
ax_forest = fig_forest.add_subplot(sub_fig_forest[0, 0])
forest_df.plot.bar(ax=ax_forest, rot=0)
ax_forest.yaxis.set_label_text('%')
ax_forest.set_xlabel('')
ax_forest.grid(color='lightgrey', linestyle='dashdot')
plt.xticks(rotation = 90)
plt.legend(loc='best')
<matplotlib.legend.Legend at 0x7f13b1292cb0>
E' significativo per me che nella top 10 del decremento di aree forestate ci siano Terzigno, Ercolano e Trecase. Lo è perchè sono tra i Comuni ricadenti nell'area del Parco Nazionale del Vesuvio che hanno subito danni al patrimonio boschivo a causa dell'incendio che ci fu nel 2017.
Le aree in cui i boschi avanzano sono perlopiu aree rurali, a vocazione agricola, che pian piano si stanno spopolando.
2.3.3 Aree agricole¶
Il gruppo 2.1 della CLC
# Dati 1990
arable_lands_surface_1990 = focus_1990_group[focus_1990_group['label3'].isin(['Non-irrigated arable land', 'Permanently irrigated land'])]
arable_lands_surface_1990_group = pd.DataFrame(arable_lands_surface_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
arable_lands_surface_1990_group.reset_index(inplace=True)
# Dati 2000
arable_lands_surface_2000 = focus_2000_group[focus_2000_group['label3'].isin(['Non-irrigated arable land', 'Permanently irrigated land'])]
arable_lands_surface_2000_group = pd.DataFrame(arable_lands_surface_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
arable_lands_surface_2000_group.reset_index(inplace=True)
# Dati 2006
arable_lands_surface_2006 = focus_2006_group[focus_2006_group['label3'].isin(['Non-irrigated arable land', 'Permanently irrigated land'])]
arable_lands_surface_2006_group = pd.DataFrame(arable_lands_surface_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
arable_lands_surface_2006_group.reset_index(inplace=True)
# Dati 2012
arable_lands_surface_2012 = focus_2012_group[focus_2012_group['label3'].isin(['Non-irrigated arable land', 'Permanently irrigated land'])]
arable_lands_surface_2012_group = pd.DataFrame(arable_lands_surface_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
arable_lands_surface_2012_group.reset_index(inplace=True)
# Dati 2018
arable_lands_surface_2018 = focus_2018_group[focus_2018_group['label3'].isin(['Non-irrigated arable land', 'Permanently irrigated land'])]
arable_lands_surface_2018_group = pd.DataFrame(arable_lands_surface_2018.groupby(['pro_com', 'comune', 'sup_com_ha'])['surface_ha_2018'].sum())
arable_lands_surface_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_arable_lands = [arable_lands_surface_2018_group, arable_lands_surface_2012_group, arable_lands_surface_2006_group, arable_lands_surface_2000_group, arable_lands_surface_1990_group]
focus_arable_lands_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_arable_lands)
focus_arable_lands_df = focus_arable_lands_df[focus_arable_lands_df['sup_com_ha'] > 0]
focus_arable_lands_df.fillna(0, inplace=True)
focus_arable_lands_df.insert(loc=3, column='perc_1990', value=round(focus_arable_lands_df.surface_ha_1990 / focus_arable_lands_df.sup_com_ha, 4) * 100)
focus_arable_lands_df.insert(loc=4, column='perc_2000', value=round(focus_arable_lands_df.surface_ha_2000 / focus_arable_lands_df.sup_com_ha, 4) * 100)
focus_arable_lands_df.insert(loc=5, column='perc_2006', value=round(focus_arable_lands_df.surface_ha_2006 / focus_arable_lands_df.sup_com_ha, 4) * 100)
focus_arable_lands_df.insert(loc=6, column='perc_2012', value=round(focus_arable_lands_df.surface_ha_2012 / focus_arable_lands_df.sup_com_ha, 4) * 100)
focus_arable_lands_df.insert(loc=7, column='perc_2018', value=round(focus_arable_lands_df.surface_ha_2018 / focus_arable_lands_df.sup_com_ha, 4) * 100)
focus_arable_lands_df.insert(loc=8, column='Perc.Diff. | 2018-2000', value=(focus_arable_lands_df.perc_2018 - focus_arable_lands_df.perc_2000))
focus_arable_lands_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=True, inplace=True)
focus_arable_lands_df
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
238 | 64072.0 | Pietradefusi | 924.149874 | 77.90 | 77.90 | 20.16 | 20.16 | 20.16 | -57.74 | 186.3344 | 186.3344 | 186.3345 | 719.9375 | 719.9308 |
229 | 64056.0 | Montefusco | 823.823558 | 59.13 | 59.13 | 2.01 | 2.01 | 2.01 | -57.12 | 16.5238 | 16.5238 | 16.5238 | 487.1327 | 487.1269 |
250 | 64093.0 | Santa Paolina | 843.429641 | 29.95 | 29.95 | 0.25 | 0.25 | 0.25 | -29.70 | 2.0832 | 2.0832 | 2.0832 | 252.5909 | 252.5864 |
189 | 63089.0 | Volla | 620.630205 | 33.87 | 29.74 | 29.74 | 1.05 | 1.05 | -28.69 | 6.5071 | 6.5071 | 184.6057 | 184.6056 | 210.2015 |
260 | 64110.0 | Torre Le Nocelle | 1004.158412 | 43.42 | 43.42 | 17.52 | 17.52 | 17.52 | -25.90 | 175.8839 | 175.8839 | 175.8840 | 436.0116 | 436.0185 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
130 | 62049.0 | Paupisi | 683.272709 | 0.00 | 0.00 | 0.00 | 23.31 | 23.31 | 23.31 | 159.2668 | 159.2668 | 0.0000 | 0.0000 | 0.0000 |
13 | 61016.0 | Carinaro | 631.593670 | 13.06 | 9.15 | 9.15 | 41.13 | 41.13 | 31.98 | 259.7728 | 259.7728 | 57.8113 | 57.8112 | 82.5094 |
17 | 61020.0 | Casaluce | 955.842829 | 0.70 | 0.70 | 0.70 | 60.53 | 60.53 | 59.83 | 578.6141 | 578.6141 | 6.7225 | 6.7226 | 6.7222 |
32 | 61037.0 | Frignano | 985.795577 | 0.00 | 0.00 | 0.00 | 69.03 | 69.03 | 69.03 | 680.5149 | 680.5149 | 0.0000 | 0.0000 | 0.0000 |
84 | 61098.0 | Villa di Briano | 854.692612 | 3.91 | 3.91 | 3.91 | 74.03 | 74.03 | 70.12 | 632.7436 | 632.7436 | 33.4422 | 33.4424 | 33.4453 |
363 rows × 14 columns
# Superfici in arretramento
reduction_arable_lands_area = focus_arable_lands_df.iloc[0:10]
reduction_arable_lands_area
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
238 | 64072.0 | Pietradefusi | 924.149874 | 77.90 | 77.90 | 20.16 | 20.16 | 20.16 | -57.74 | 186.3344 | 186.3344 | 186.3345 | 719.9375 | 719.9308 |
229 | 64056.0 | Montefusco | 823.823558 | 59.13 | 59.13 | 2.01 | 2.01 | 2.01 | -57.12 | 16.5238 | 16.5238 | 16.5238 | 487.1327 | 487.1269 |
250 | 64093.0 | Santa Paolina | 843.429641 | 29.95 | 29.95 | 0.25 | 0.25 | 0.25 | -29.70 | 2.0832 | 2.0832 | 2.0832 | 252.5909 | 252.5864 |
189 | 63089.0 | Volla | 620.630205 | 33.87 | 29.74 | 29.74 | 1.05 | 1.05 | -28.69 | 6.5071 | 6.5071 | 184.6057 | 184.6056 | 210.2015 |
260 | 64110.0 | Torre Le Nocelle | 1004.158412 | 43.42 | 43.42 | 17.52 | 17.52 | 17.52 | -25.90 | 175.8839 | 175.8839 | 175.8840 | 436.0116 | 436.0185 |
190 | 63090.0 | Santa Maria la Carità | 397.883761 | 24.44 | 24.44 | 0.29 | 0.29 | 0.29 | -24.15 | 1.1544 | 1.1544 | 1.1544 | 97.2554 | 97.2552 |
76 | 61088.0 | Sessa Aurunca | 16218.704457 | 25.28 | 25.35 | 2.23 | 2.56 | 2.56 | -22.79 | 415.3546 | 415.3546 | 362.1214 | 4112.0036 | 4099.7632 |
166 | 63025.0 | Castello di Cisterna | 392.135970 | 44.25 | 44.25 | 21.85 | 21.85 | 21.85 | -22.40 | 85.6953 | 85.6953 | 85.6953 | 173.5036 | 173.5048 |
232 | 64059.0 | Montemiletto | 2163.480616 | 34.90 | 33.95 | 14.70 | 14.70 | 14.70 | -19.25 | 318.1006 | 318.1006 | 318.1007 | 734.5263 | 755.1347 |
163 | 63017.0 | Casalnuovo di Napoli | 783.538578 | 44.85 | 41.66 | 41.66 | 27.45 | 27.45 | -14.21 | 215.1126 | 215.1126 | 326.3900 | 326.3901 | 351.4509 |
# Superfici in avanzamento
increase_arable_lands_area = focus_arable_lands_df.iloc[-10:]
increase_arable_lands_area.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
increase_arable_lands_area
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
84 | 61098.0 | Villa di Briano | 854.692612 | 3.91 | 3.91 | 3.91 | 74.03 | 74.03 | 70.12 | 632.7436 | 632.7436 | 33.4422 | 33.4424 | 33.4453 |
32 | 61037.0 | Frignano | 985.795577 | 0.00 | 0.00 | 0.00 | 69.03 | 69.03 | 69.03 | 680.5149 | 680.5149 | 0.0000 | 0.0000 | 0.0000 |
17 | 61020.0 | Casaluce | 955.842829 | 0.70 | 0.70 | 0.70 | 60.53 | 60.53 | 59.83 | 578.6141 | 578.6141 | 6.7225 | 6.7226 | 6.7222 |
13 | 61016.0 | Carinaro | 631.593670 | 13.06 | 9.15 | 9.15 | 41.13 | 41.13 | 31.98 | 259.7728 | 259.7728 | 57.8113 | 57.8112 | 82.5094 |
130 | 62049.0 | Paupisi | 683.272709 | 0.00 | 0.00 | 0.00 | 23.31 | 23.31 | 23.31 | 159.2668 | 159.2668 | 0.0000 | 0.0000 | 0.0000 |
143 | 62062.0 | San Lorenzo Maggiore | 1629.550368 | 0.93 | 0.93 | 0.93 | 18.00 | 18.00 | 17.07 | 293.3587 | 293.3587 | 15.1138 | 15.1136 | 15.1112 |
134 | 62053.0 | Ponte | 1791.529818 | 18.98 | 18.98 | 18.11 | 35.86 | 35.86 | 16.88 | 642.4110 | 642.4110 | 324.5012 | 339.9875 | 339.9830 |
217 | 64037.0 | Greci | 3026.329172 | 33.15 | 34.35 | 50.04 | 50.02 | 50.02 | 15.67 | 1513.7004 | 1513.7004 | 1514.3325 | 1039.4665 | 1003.1417 |
36 | 61043.0 | Gricignano di Aversa | 997.757144 | 27.33 | 19.84 | 19.70 | 35.43 | 35.43 | 15.59 | 353.4710 | 353.4710 | 196.5586 | 197.9250 | 272.6607 |
63 | 61074.0 | San Cipriano d'Aversa | 619.009752 | 44.14 | 44.14 | 43.49 | 56.38 | 56.38 | 12.24 | 348.9748 | 348.9748 | 269.2010 | 273.2419 | 273.2415 |
arable_lands_df = pd.concat([reduction_arable_lands_area, increase_arable_lands_area])
arable_lands_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=True, inplace=True)
arable_lands_df = arable_lands_df[['comune', 'Perc.Diff. | 2018-2000']]
arable_lands_df['Perc.Diff. | 2018-2000'] = arable_lands_df['Perc.Diff. | 2018-2000']
arable_lands_df.set_index('comune', inplace=True)
fig_arable_lands = plt.figure(figsize=(20, 10), dpi=100)
sub_fig_arable_lands = GridSpec(nrows=1, ncols=1, figure=fig_arable_lands, hspace=0.35)
ax_arable_lands = fig_arable_lands.add_subplot(sub_fig_arable_lands[0, 0])
arable_lands_df.plot.bar(ax=ax_arable_lands, rot=0)
ax_arable_lands.yaxis.set_label_text('%')
ax_arable_lands.set_xlabel('')
ax_arable_lands.grid(color='lightgrey', linestyle='dashdot')
plt.xticks(rotation = 90)
plt.legend(loc='best')
<matplotlib.legend.Legend at 0x7f13aa26b460>
Tra i Comuni con maggior aumento della aree articifiali abbiamo visto che c'è Volla che è tra i Comuni con maggior decremento delle aree agricole. Poco sopra ho fatto una riflessione sul perchè della redistribuzione del livello 1 della CLC. Due indizi non fanno una prova, ma tre?
2.3.4 Aree bruciate¶
# Dati 1990
burnt_surface_1990 = focus_1990_group[focus_1990_group['label3'].isin(['Burnt areas'])]
burnt_surface_1990_group = pd.DataFrame(burnt_surface_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
burnt_surface_1990_group.reset_index(inplace=True)
# Dati 2000
burnt_surface_2000 = focus_2000_group[focus_2000_group['label3'].isin(['Burnt areas'])]
burnt_surface_2000_group = pd.DataFrame(burnt_surface_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
burnt_surface_2000_group.reset_index(inplace=True)
# Dati 2006
burnt_surface_2006 = focus_2006_group[focus_2006_group['label3'].isin(['Burnt areas'])]
burnt_surface_2006_group = pd.DataFrame(burnt_surface_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
burnt_surface_2006_group.reset_index(inplace=True)
# Dati 2012
burnt_surface_2012 = focus_2012_group[focus_2012_group['label3'].isin(['Burnt areas'])]
burnt_surface_2012_group = pd.DataFrame(burnt_surface_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
burnt_surface_2012_group.reset_index(inplace=True)
# Dati 2018
burnt_surface_2018 = focus_2018_group[focus_2018_group['label3'].isin(['Burnt areas'])]
burnt_surface_2018_group = pd.DataFrame(burnt_surface_2018.groupby(['pro_com', 'comune', 'sup_com_ha'])['surface_ha_2018'].sum())
burnt_surface_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_arable_lands = [burnt_surface_2018_group, burnt_surface_2012_group, burnt_surface_2006_group, burnt_surface_2000_group, burnt_surface_1990_group]
focus_burnt_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_arable_lands)
focus_burnt_df = focus_burnt_df[focus_burnt_df['sup_com_ha'] > 0]
focus_burnt_df.fillna(0, inplace=True)
focus_burnt_df.insert(loc=3, column='perc_1990', value=round(focus_burnt_df.surface_ha_1990 / focus_burnt_df.sup_com_ha, 4) * 100)
focus_burnt_df.insert(loc=4, column='perc_2000', value=round(focus_burnt_df.surface_ha_2000 / focus_burnt_df.sup_com_ha, 4) * 100)
focus_burnt_df.insert(loc=5, column='perc_2006', value=round(focus_burnt_df.surface_ha_2006 / focus_burnt_df.sup_com_ha, 4) * 100)
focus_burnt_df.insert(loc=6, column='perc_2012', value=round(focus_burnt_df.surface_ha_2012 / focus_burnt_df.sup_com_ha, 4) * 100)
focus_burnt_df.insert(loc=7, column='perc_2018', value=round(focus_burnt_df.surface_ha_2018 / focus_burnt_df.sup_com_ha, 4) * 100)
focus_burnt_df.insert(loc=8, column='Perc.Diff. | 2018-2000', value=(focus_burnt_df.perc_2018 - focus_burnt_df.perc_2000))
focus_burnt_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
focus_burnt_df
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
20 | 63082.0 | Terzigno | 2346.480829 | 0.0 | 0.00 | 0.00 | 0.00 | 18.50 | 18.50 | 434.1155 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
16 | 63064.0 | Ercolano | 1989.359843 | 0.0 | 0.00 | 0.00 | 8.49 | 17.54 | 17.54 | 348.9169 | 168.9727 | 0.0000 | 0.0000 | 0.0 |
10 | 63009.0 | Boscotrecase | 753.047593 | 0.0 | 0.00 | 0.00 | 0.00 | 16.95 | 16.95 | 127.6552 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
22 | 63091.0 | Trecase | 621.312671 | 0.0 | 0.00 | 0.00 | 0.00 | 13.75 | 13.75 | 85.4539 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
13 | 63051.0 | Ottaviano | 2002.268341 | 0.0 | 0.00 | 0.00 | 0.88 | 12.06 | 12.06 | 241.4028 | 17.6023 | 0.0000 | 0.0000 | 0.0 |
50 | 65142.0 | Siano | 856.918877 | 0.0 | 0.00 | 0.00 | 0.00 | 10.24 | 10.24 | 87.7539 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
24 | 64076.0 | Quadrelle | 693.114011 | 0.0 | 0.00 | 0.00 | 0.00 | 9.65 | 9.65 | 66.9010 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
21 | 63084.0 | Torre del Greco | 3066.110669 | 0.0 | 0.00 | 0.00 | 1.58 | 9.19 | 9.19 | 281.8574 | 48.5022 | 0.0000 | 0.0000 | 0.0 |
11 | 63041.0 | Marano di Napoli | 1565.253641 | 0.0 | 0.00 | 0.00 | 9.11 | 9.11 | 9.11 | 142.5412 | 142.5412 | 0.0000 | 0.0000 | 0.0 |
45 | 65108.0 | Roccapiemonte | 531.325342 | 0.0 | 3.85 | 0.00 | 0.00 | 10.68 | 6.83 | 56.7487 | 0.0000 | 0.0000 | 20.4508 | 0.0 |
41 | 65067.0 | Mercato San Severino | 3033.314668 | 0.0 | 3.72 | 0.00 | 0.00 | 9.55 | 5.83 | 289.6134 | 0.0000 | 0.0000 | 112.7573 | 0.0 |
36 | 65047.0 | Corbara | 673.181063 | 0.0 | 0.00 | 0.00 | 0.00 | 5.43 | 5.43 | 36.5565 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
27 | 64100.0 | Sirignano | 618.669347 | 0.0 | 0.00 | 0.00 | 0.00 | 5.42 | 5.42 | 33.5478 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
33 | 65020.0 | Calvanico | 1490.919524 | 0.0 | 0.00 | 0.00 | 0.00 | 4.50 | 4.50 | 67.0813 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
1 | 61024.0 | Castel di Sasso | 2032.307571 | 0.0 | 0.00 | 0.00 | 0.00 | 3.73 | 3.73 | 75.8659 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
29 | 64121.0 | Montoro | 4014.094054 | 0.0 | 0.10 | 0.00 | 0.00 | 3.73 | 3.63 | 149.7874 | 0.0000 | 0.0000 | 4.0627 | 0.0 |
30 | 65013.0 | Baronissi | 1792.982916 | 0.0 | 0.00 | 0.00 | 0.00 | 3.61 | 3.61 | 64.6775 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
17 | 63065.0 | Roccarainola | 2833.151640 | 0.0 | 0.00 | 0.00 | 0.00 | 3.55 | 3.55 | 100.4408 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
9 | 62028.0 | Durazzano | 1290.490693 | 0.0 | 0.00 | 0.00 | 3.36 | 3.36 | 3.36 | 43.3596 | 43.3596 | 0.0000 | 0.0000 | 0.0 |
8 | 62009.0 | Bonea | 1146.261236 | 0.0 | 0.00 | 0.00 | 0.00 | 3.09 | 3.09 | 35.4456 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
44 | 65079.0 | Nocera Superiore | 1466.245166 | 0.0 | 0.00 | 0.00 | 0.00 | 3.00 | 3.00 | 44.0193 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
48 | 65131.0 | Santomenna | 891.925366 | 0.0 | 0.00 | 0.00 | 2.94 | 2.94 | 2.94 | 26.1979 | 26.1980 | 0.0000 | 0.0000 | 0.0 |
4 | 61051.0 | Mignano Monte Lungo | 5309.523303 | 0.0 | 0.00 | 0.00 | 0.00 | 2.72 | 2.72 | 144.4552 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
51 | 65151.0 | Tramonti | 2482.596555 | 0.0 | 0.00 | 0.00 | 2.59 | 2.59 | 2.59 | 64.2754 | 64.2754 | 0.0000 | 0.0000 | 0.0 |
14 | 63060.0 | Pozzuoli | 4343.389600 | 0.0 | 0.00 | 0.00 | 2.38 | 2.38 | 2.38 | 103.1784 | 103.1784 | 0.0000 | 0.0000 | 0.0 |
49 | 65135.0 | Sarno | 4000.061759 | 0.0 | 0.00 | 0.00 | 0.00 | 2.15 | 2.15 | 85.9694 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
40 | 65060.0 | Laureana Cilento | 1374.420460 | 0.0 | 0.00 | 0.00 | 0.00 | 1.98 | 1.98 | 27.2732 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
6 | 61075.0 | San Felice a Cancello | 2717.900285 | 0.0 | 0.00 | 0.00 | 0.00 | 1.98 | 1.98 | 53.7304 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
25 | 64077.0 | Quindici | 2390.824174 | 0.0 | 0.00 | 0.00 | 0.00 | 1.90 | 1.90 | 45.4393 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
42 | 65069.0 | Moio della Civitella | 1718.872945 | 0.0 | 0.00 | 0.00 | 0.00 | 1.58 | 1.58 | 27.1520 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
23 | 63092.0 | Massa di Somma | 304.205206 | 0.0 | 0.00 | 0.00 | 0.00 | 1.51 | 1.51 | 4.6046 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
46 | 65124.0 | San Mauro la Bruca | 1905.442534 | 0.0 | 0.00 | 0.00 | 0.00 | 1.34 | 1.34 | 25.6184 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
28 | 64101.0 | Solofra | 2221.354782 | 0.0 | 0.00 | 0.00 | 0.00 | 1.30 | 1.30 | 28.9118 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
43 | 65078.0 | Nocera Inferiore | 2094.467250 | 0.0 | 0.00 | 0.00 | 0.00 | 1.24 | 1.24 | 26.0176 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
15 | 63063.0 | Quarto | 1415.896056 | 0.0 | 0.00 | 0.00 | 1.17 | 1.17 | 1.17 | 16.5525 | 16.5525 | 0.0000 | 0.0000 | 0.0 |
18 | 63068.0 | San Giuseppe Vesuviano | 1417.126283 | 0.0 | 0.00 | 0.00 | 0.00 | 1.04 | 1.04 | 14.7355 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
32 | 65019.0 | Caggiano | 3542.966709 | 0.0 | 0.00 | 0.00 | 0.93 | 0.93 | 0.93 | 32.9540 | 32.9540 | 0.0000 | 0.0000 | 0.0 |
34 | 65034.0 | Castel San Giorgio | 1358.506777 | 0.0 | 0.00 | 0.00 | 0.00 | 0.75 | 0.75 | 10.1730 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
0 | 61022.0 | Caserta | 5406.845910 | 0.0 | 0.00 | 0.00 | 0.67 | 0.67 | 0.67 | 36.0326 | 36.0326 | 0.0000 | 0.0000 | 0.0 |
12 | 63049.0 | Napoli | 11894.407425 | 0.0 | 0.00 | 0.00 | 0.53 | 0.53 | 0.53 | 63.0803 | 63.0803 | 0.0000 | 0.0000 | 0.0 |
5 | 61052.0 | Mondragone | 5572.569052 | 0.0 | 0.00 | 2.74 | 0.00 | 0.52 | 0.52 | 29.0151 | 0.0000 | 152.8844 | 0.0000 | 0.0 |
39 | 65055.0 | Giffoni Sei Casali | 3507.503961 | 0.0 | 0.00 | 0.00 | 0.00 | 0.22 | 0.22 | 7.7114 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
31 | 65016.0 | Bracigliano | 1440.868176 | 0.0 | 0.26 | 0.00 | 0.00 | 0.47 | 0.21 | 6.7033 | 0.0000 | 0.0000 | 3.7261 | 0.0 |
19 | 63079.0 | Somma Vesuviana | 3066.640742 | 0.0 | 0.00 | 0.00 | 0.11 | 0.11 | 0.11 | 3.3491 | 3.3491 | 0.0000 | 0.0000 | 0.0 |
3 | 61045.0 | Liberi | 1758.913730 | 0.0 | 0.00 | 0.00 | 0.00 | 0.10 | 0.10 | 1.7792 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
2 | 61026.0 | Castel Morrone | 2534.392208 | 0.0 | 0.00 | 0.00 | 0.10 | 0.10 | 0.10 | 2.6154 | 2.6154 | 0.0000 | 0.0000 | 0.0 |
26 | 64099.0 | Serino | 5249.939474 | 0.0 | 0.00 | 0.00 | 0.00 | 0.04 | 0.04 | 1.9971 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
38 | 65054.0 | Futani | 1485.058368 | 0.0 | 0.00 | 0.00 | 0.00 | 0.02 | 0.02 | 0.3298 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
7 | 61079.0 | San Pietro Infine | 1371.735131 | 0.0 | 0.00 | 0.00 | 0.00 | 0.01 | 0.01 | 0.1720 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
47 | 65130.0 | Sant'Egidio del Monte Albino | 724.511924 | 0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.0259 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
35 | 65037.0 | Cava de' Tirreni | 3653.112071 | 0.0 | 1.55 | 0.00 | 0.04 | 1.48 | -0.07 | 54.0169 | 1.6314 | 0.0000 | 56.7053 | 0.0 |
37 | 65052.0 | Fisciano | 3168.742849 | 0.0 | 4.15 | 0.00 | 0.00 | 1.43 | -2.72 | 45.1761 | 0.0000 | 0.0000 | 131.4723 | 0.0 |
In questa analisi ci sono in 6 delle prime 10 posizioni alcuni dei Comuni interessati dall'incendio del 2017.
2.3.5 Aree adibite a discarica¶
# Dati 1990
dump_surface_1990 = focus_1990_group[focus_1990_group['label3'].isin(['Dump sites'])]
dump_surface_1990_group = pd.DataFrame(dump_surface_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
dump_surface_1990_group.reset_index(inplace=True)
# Dati 2000
dump_surface_2000 = focus_2000_group[focus_2000_group['label3'].isin(['Dump sites'])]
dump_surface_2000_group = pd.DataFrame(dump_surface_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
dump_surface_2000_group.reset_index(inplace=True)
# Dati 2006
dump_surface_2006 = focus_2006_group[focus_2006_group['label3'].isin(['Dump sites'])]
dump_surface_2006_group = pd.DataFrame(dump_surface_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
dump_surface_2006_group.reset_index(inplace=True)
# Dati 2012
dump_surface_2012 = focus_2012_group[focus_2012_group['label3'].isin(['Dump sites'])]
dump_surface_2012_group = pd.DataFrame(dump_surface_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
dump_surface_2012_group.reset_index(inplace=True)
# Dati 2018
dump_surface_2018 = focus_2018_group[focus_2018_group['label3'].isin(['Dump sites'])]
dump_surface_2018_group = pd.DataFrame(dump_surface_2018.groupby(['pro_com', 'comune', 'sup_com_ha'])['surface_ha_2018'].sum())
dump_surface_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_arable_lands = [dump_surface_2018_group, dump_surface_2012_group, dump_surface_2006_group, dump_surface_2000_group, dump_surface_1990_group]
focus_dump_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_arable_lands)
focus_dump_df = focus_dump_df[focus_dump_df['sup_com_ha'] > 0]
focus_dump_df.fillna(0, inplace=True)
focus_dump_df.insert(loc=3, column='perc_1990', value=round(focus_dump_df.surface_ha_1990 / focus_dump_df.sup_com_ha, 4) * 100)
focus_dump_df.insert(loc=4, column='perc_2000', value=round(focus_dump_df.surface_ha_2000 / focus_dump_df.sup_com_ha, 4) * 100)
focus_dump_df.insert(loc=5, column='perc_2006', value=round(focus_dump_df.surface_ha_2006 / focus_dump_df.sup_com_ha, 4) * 100)
focus_dump_df.insert(loc=6, column='perc_2012', value=round(focus_dump_df.surface_ha_2012 / focus_dump_df.sup_com_ha, 4) * 100)
focus_dump_df.insert(loc=7, column='perc_2018', value=round(focus_dump_df.surface_ha_2018 / focus_dump_df.sup_com_ha, 4) * 100)
focus_dump_df.insert(loc=8, column='Perc.Diff. | 2018-2000', value=(focus_dump_df.perc_2018 - focus_dump_df.perc_2000))
focus_dump_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
focus_dump_df
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | 63034.0 | Giugliano in Campania | 9463.207795 | 0.01 | 0.01 | 0.16 | 1.89 | 1.89 | 1.88 | 179.2958 | 179.2958 | 14.7856 | 0.9317 | 0.9314 |
1 | 61085.0 | San Tammaro | 3696.678415 | 0.00 | 0.00 | 0.00 | 2.09 | 1.63 | 1.63 | 60.2521 | 77.3722 | 0.0000 | 0.0000 | 0.0000 |
3 | 63011.0 | Caivano | 2722.117368 | 1.34 | 0.00 | 1.32 | 1.32 | 1.32 | 1.32 | 35.9863 | 35.9863 | 35.9863 | 0.0000 | 36.5076 |
2 | 61099.0 | Villa Literno | 6182.490260 | 0.00 | 0.00 | 1.15 | 1.19 | 1.19 | 1.19 | 73.7065 | 73.7065 | 70.9893 | 0.0000 | 0.0000 |
0 | 61084.0 | Santa Maria la Fossa | 2972.966831 | 0.00 | 0.00 | 0.00 | 1.56 | 1.07 | 1.07 | 31.7251 | 46.3154 | 0.0000 | 0.0000 | 0.0000 |
5 | 64005.0 | Ariano Irpino | 18673.653095 | 0.00 | 0.00 | 0.14 | 0.14 | 0.14 | 0.14 | 25.9872 | 25.9872 | 25.9872 | 0.0000 | 0.0000 |
Qui abbiamo le più grandi discariche campane, cresciute con la crisi dei rifiuti di inizio anni 2000.
2.3.6 Aree verdi urbane¶
# Dati 1990
green_urban_surface_1990 = focus_1990_group[focus_1990_group['label3'].isin(['Green urban areas'])]
green_urban_surface_1990_group = pd.DataFrame(green_urban_surface_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
green_urban_surface_1990_group.reset_index(inplace=True)
# Dati 2000
green_urban_surface_2000 = focus_2000_group[focus_2000_group['label3'].isin(['Green urban areas'])]
green_urban_surface_2000_group = pd.DataFrame(green_urban_surface_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
green_urban_surface_2000_group.reset_index(inplace=True)
# Dati 2006
green_urban_surface_2006 = focus_2006_group[focus_2006_group['label3'].isin(['Green urban areas'])]
green_urban_surface_2006_group = pd.DataFrame(green_urban_surface_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
green_urban_surface_2006_group.reset_index(inplace=True)
# Dati 2012
green_urban_surface_2012 = focus_2012_group[focus_2012_group['label3'].isin(['Green urban areas'])]
green_urban_surface_2012_group = pd.DataFrame(green_urban_surface_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
green_urban_surface_2012_group.reset_index(inplace=True)
# Dati 2018
green_urban_surface_2018 = focus_2018_group[focus_2018_group['label3'].isin(['Green urban areas'])]
green_urban_surface_2018_group = pd.DataFrame(green_urban_surface_2018.groupby(['pro_com', 'comune', 'sup_com_ha'])['surface_ha_2018'].sum())
green_urban_surface_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_green_urban = [green_urban_surface_2018_group, green_urban_surface_2012_group, green_urban_surface_2006_group, green_urban_surface_2000_group, green_urban_surface_1990_group]
focus_green_urban_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_green_urban)
focus_green_urban_df = focus_green_urban_df[focus_green_urban_df['sup_com_ha'] > 0]
focus_green_urban_df.fillna(0, inplace=True)
focus_green_urban_df.insert(loc=3, column='perc_1990', value=round(focus_green_urban_df.surface_ha_1990 / focus_green_urban_df.sup_com_ha, 4) * 100)
focus_green_urban_df.insert(loc=4, column='perc_2000', value=round(focus_green_urban_df.surface_ha_2000 / focus_green_urban_df.sup_com_ha, 4) * 100)
focus_green_urban_df.insert(loc=5, column='perc_2006', value=round(focus_green_urban_df.surface_ha_2006 / focus_green_urban_df.sup_com_ha, 4) * 100)
focus_green_urban_df.insert(loc=6, column='perc_2012', value=round(focus_green_urban_df.surface_ha_2012 / focus_green_urban_df.sup_com_ha, 4) * 100)
focus_green_urban_df.insert(loc=7, column='perc_2018', value=round(focus_green_urban_df.surface_ha_2018 / focus_green_urban_df.sup_com_ha, 4) * 100)
focus_green_urban_df.insert(loc=8, column='Perc.Diff. | 2018-2000', value=(focus_green_urban_df.perc_2018 - focus_green_urban_df.perc_2000))
focus_green_urban_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
focus_green_urban_df
pro_com | comune | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | 62062.0 | San Lorenzo Maggiore | 1629.550368 | 0.00 | 0.00 | 0.00 | 0.00 | 11.89 | 11.89 | 193.6792 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
2 | 62037.0 | Guardia Sanframondi | 2109.748292 | 0.00 | 0.00 | 0.00 | 0.00 | 9.63 | 9.63 | 203.2666 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
8 | 65078.0 | Nocera Inferiore | 2094.467250 | 0.00 | 0.00 | 1.91 | 1.91 | 1.91 | 1.91 | 39.9739 | 39.9739 | 39.9740 | 0.0000 | 0.0000 |
6 | 63060.0 | Pozzuoli | 4343.389600 | 0.96 | 0.61 | 0.68 | 0.68 | 0.68 | 0.07 | 29.4516 | 29.4516 | 29.4517 | 26.6666 | 41.7480 |
0 | 61018.0 | Casagiove | 635.694991 | 0.79 | 0.79 | 0.79 | 0.79 | 0.79 | 0.00 | 5.0499 | 5.0499 | 5.0499 | 5.0499 | 5.0496 |
1 | 61022.0 | Caserta | 5406.845910 | 2.50 | 2.50 | 2.50 | 2.50 | 2.50 | 0.00 | 135.0386 | 135.0386 | 135.0386 | 135.0386 | 135.0388 |
5 | 63059.0 | Portici | 460.130721 | 0.00 | 12.99 | 12.99 | 12.99 | 12.99 | 0.00 | 59.7546 | 59.7546 | 59.7546 | 59.7546 | 0.0000 |
7 | 63064.0 | Ercolano | 1989.359843 | 0.00 | 0.21 | 0.21 | 0.21 | 0.21 | 0.00 | 4.2403 | 4.2403 | 4.2403 | 4.2404 | 0.0000 |
4 | 63049.0 | Napoli | 11894.407425 | 3.15 | 4.44 | 4.47 | 4.26 | 4.26 | -0.18 | 506.6039 | 506.6039 | 531.7766 | 527.6737 | 374.2016 |
3. Analisi a scala nazionale¶
Fino a qui abbiamo visto una analisi focalizzata sulla Campania. Di seguito ripeterò tutte le analisi ma a scala nazionale.
3.1.1 Stato al 1990¶
clc1990_label1 = pd.DataFrame(clc1990.groupby('label1')['surface_ha_1990'].sum())
clc1990_label1.reset_index(inplace=True)
clc1990_label1.rename(columns={'label1': 'CORINE Land Cover - level 1'}, inplace=True)
clc1990_label1
CORINE Land Cover - level 1 | surface_ha_1990 | |
---|---|---|
0 | Agricultural areas | 1.582623e+07 |
1 | Artificial surfaces | 1.347486e+06 |
2 | Forest and semi natural areas | 1.263937e+07 |
3 | Water bodies | 3.122569e+05 |
4 | Wetlands | 6.897894e+04 |
clc1990_label2 = pd.DataFrame(clc1990.groupby('label2')['surface_ha_1990'].sum())
clc1990_label2.reset_index(inplace=True)
clc1990_label2.rename(columns={'label2': 'CORINE Land Cover - level 2'}, inplace=True)
clc1990_label2
CORINE Land Cover - level 2 | surface_ha_1990 | |
---|---|---|
0 | Arable land | 8.392567e+06 |
1 | Artificial, non-agricultural vegetated areas | 2.798779e+04 |
2 | Forests | 7.831590e+06 |
3 | Heterogeneous agricultural areas | 4.778702e+06 |
4 | Industrial, commercial and transport units | 2.363946e+05 |
5 | Inland waters | 2.175910e+05 |
6 | Inland wetlands | 1.585394e+04 |
7 | Marine waters | 9.466595e+04 |
8 | Maritime wetlands | 5.312500e+04 |
9 | Mine, dump and construction sites | 5.153499e+04 |
10 | Open spaces with little or no vegetation | 1.106064e+06 |
11 | Pastures | 4.560942e+05 |
12 | Permanent crops | 2.198869e+06 |
13 | Scrub and/or herbaceous vegetation associations | 3.701717e+06 |
14 | Urban fabric | 1.031569e+06 |
clc1990_label3 = pd.DataFrame(clc1990.groupby('label3')['surface_ha_1990'].sum())
clc1990_label3.reset_index(inplace=True)
clc1990_label3.rename(columns={'label3': 'CORINE Land Cover - level 3'}, inplace=True)
clc1990_label3
CORINE Land Cover - level 3 | surface_ha_1990 | |
---|---|---|
0 | Agro-forestry areas | 1.875953e+05 |
1 | Airports | 2.061481e+04 |
2 | Annual crops associated with permanent crops | 3.948806e+05 |
3 | Bare rocks | 4.823748e+05 |
4 | Beaches, dunes, sands | 8.237502e+04 |
5 | Broad-leaved forest | 5.477418e+06 |
6 | Burnt areas | 3.688807e+03 |
7 | Coastal lagoons | 9.441910e+04 |
8 | Complex cultivation patterns | 2.208152e+06 |
9 | Coniferous forest | 1.322878e+06 |
10 | Construction sites | 6.608806e+03 |
11 | Continuous urban fabric | 1.465191e+05 |
12 | Discontinuous urban fabric | 8.850498e+05 |
13 | Dump sites | 1.813232e+03 |
14 | Estuaries | 2.468468e+02 |
15 | Fruit trees and berry plantations | 3.995981e+05 |
16 | Glaciers and perpetual snow | 5.296383e+04 |
17 | Green urban areas | 1.029782e+04 |
18 | Industrial or commercial units | 1.935121e+05 |
19 | Inland marshes | 1.581604e+04 |
20 | Land principally occupied by agriculture, with... | 1.988074e+06 |
21 | Mineral extraction sites | 4.311295e+04 |
22 | Mixed forest | 1.031295e+06 |
23 | Moors and heathland | 2.759264e+05 |
24 | Natural grasslands | 1.452501e+06 |
25 | Non-irrigated arable land | 8.075700e+06 |
26 | Olive groves | 1.263777e+06 |
27 | Pastures | 4.560942e+05 |
28 | Peat bogs | 3.790290e+01 |
29 | Permanently irrigated land | 4.081855e+04 |
30 | Port areas | 9.735064e+03 |
31 | Rice fields | 2.760486e+05 |
32 | Road and rail networks and associated land | 1.253256e+04 |
33 | Salines | 1.000881e+04 |
34 | Salt marshes | 4.311619e+04 |
35 | Sclerophyllous vegetation | 9.609517e+05 |
36 | Sparsely vegetated areas | 4.846612e+05 |
37 | Sport and leisure facilities | 1.768997e+04 |
38 | Transitional woodland-shrub | 1.012338e+06 |
39 | Vineyards | 5.354933e+05 |
40 | Water bodies | 1.681098e+05 |
41 | Water courses | 4.948117e+04 |
3.1.2 Stato al 2000¶
clc2000_label1 = pd.DataFrame(clc2000.groupby('label1')['surface_ha_2000'].sum())
clc2000_label1.reset_index(inplace=True)
clc2000_label1.rename(columns={'label1': 'CORINE Land Cover - level 1'}, inplace=True)
clc2000_label2 = pd.DataFrame(clc2000.groupby('label2')['surface_ha_2000'].sum())
clc2000_label2.reset_index(inplace=True)
clc2000_label2.rename(columns={'label2': 'CORINE Land Cover - level 2'}, inplace=True)
clc2000_label3 = pd.DataFrame(clc2000.groupby('label3')['surface_ha_2000'].sum())
clc2000_label3.reset_index(inplace=True)
clc2000_label3.rename(columns={'label3': 'CORINE Land Cover - level 3'}, inplace=True)
3.1.3 Stato al 2006¶
clc2006_label1 = pd.DataFrame(clc2006.groupby('label1')['surface_ha_2006'].sum())
clc2006_label1.reset_index(inplace=True)
clc2006_label1.rename(columns={'label1': 'CORINE Land Cover - level 1'}, inplace=True)
clc2006_label2 = pd.DataFrame(clc2006.groupby('label2')['surface_ha_2006'].sum())
clc2006_label2.reset_index(inplace=True)
clc2006_label2.rename(columns={'label2': 'CORINE Land Cover - level 2'}, inplace=True)
clc2006_label3 = pd.DataFrame(clc2006.groupby('label3')['surface_ha_2006'].sum())
clc2006_label3.reset_index(inplace=True)
clc2006_label3.rename(columns={'label3': 'CORINE Land Cover - level 3'}, inplace=True)
3.1.4 Stato al 2012¶
clc2012_label1 = pd.DataFrame(clc2012.groupby('label1')['surface_ha_2012'].sum())
clc2012_label1.reset_index(inplace=True)
clc2012_label1.rename(columns={'label1': 'CORINE Land Cover - level 1'}, inplace=True)
clc2012_label2 = pd.DataFrame(clc2012.groupby('label2')['surface_ha_2012'].sum())
clc2012_label2.reset_index(inplace=True)
clc2012_label2.rename(columns={'label2': 'CORINE Land Cover - level 2'}, inplace=True)
clc2012_label3 = pd.DataFrame(clc2012.groupby('label3')['surface_ha_2012'].sum())
clc2012_label3.reset_index(inplace=True)
clc2012_label3.rename(columns={'label3': 'CORINE Land Cover - level 3'}, inplace=True)
3.1.5 Stato al 2018¶
clc2018_label1 = pd.DataFrame(clc2018.groupby('label1')['surface_ha_2018'].sum())
clc2018_label1.reset_index(inplace=True)
clc2018_label1.rename(columns={'label1': 'CORINE Land Cover - level 1'}, inplace=True)
clc2018_label2 = pd.DataFrame(clc2018.groupby('label2')['surface_ha_2018'].sum())
clc2018_label2.reset_index(inplace=True)
clc2018_label2.rename(columns={'label2': 'CORINE Land Cover - level 2'}, inplace=True)
clc2018_label3 = pd.DataFrame(clc2018.groupby('label3')['surface_ha_2018'].sum())
clc2018_label3.reset_index(inplace=True)
clc2018_label3.rename(columns={'label3': 'CORINE Land Cover - level 3'}, inplace=True)
3.2 Grafici¶
Mi limiterò a commentare solo la analisi a scala nazionale perchè quelle a scala comunale hanno risultati che, sebbene intuibili dal punto di vista delle variazioni, hanno una valenza territoriale molto forte(come lo è stato per la Campania) e non conoscendo tutti quei territori preferisco lasciare a chi è del posto le considerazioni del caso.
3.2.1 Grafici per il livello 1¶
lvl1_naz = [clc1990_label1, clc2000_label1, clc2006_label1, clc2012_label1, clc2018_label1]
lvl1_naz_df = reduce(lambda left,right: pd.merge(left,right,on=['CORINE Land Cover - level 1'], how='outer'), lvl1_naz)
lvl1_naz_df.insert(loc=6, column='Surf.Diff. | 2018-1990', value=(lvl1_naz_df.surface_ha_2018 - lvl1_naz_df.surface_ha_1990))
lvl1_naz_df.fillna(0, inplace=True)
lvl1_naz_df.set_index('CORINE Land Cover - level 1', inplace=True)
lvl1_naz_df.rename(columns={'surface_ha_1990': '1990', 'surface_ha_2000': '2000', 'surface_ha_2006': '2006', 'surface_ha_2012': '2012', 'surface_ha_2018': '2018'}, inplace=True)
lvl1_naz_df
1990 | 2000 | 2006 | 2012 | 2018 | Surf.Diff. | 2018-1990 | |
---|---|---|---|---|---|---|
CORINE Land Cover - level 1 | ||||||
Agricultural areas | 1.582623e+07 | 1.580692e+07 | 1.578178e+07 | 1.569692e+07 | 1.568826e+07 | -137975.0803 |
Artificial surfaces | 1.347486e+06 | 1.443652e+06 | 1.562164e+06 | 1.646988e+06 | 1.655775e+06 | 308288.5459 |
Forest and semi natural areas | 1.263937e+07 | 1.256172e+07 | 1.246520e+07 | 1.246121e+07 | 1.245564e+07 | -183733.2104 |
Water bodies | 3.122569e+05 | 3.152274e+05 | 3.145802e+05 | 3.228559e+05 | 3.226620e+05 | 10405.1059 |
Wetlands | 6.897894e+04 | 6.780469e+04 | 7.179663e+04 | 6.758186e+04 | 6.796058e+04 | -1018.3605 |
fig1_naz = plt.figure(figsize=(20, 10), dpi=100)
sub_fig_naz = GridSpec(nrows=1, ncols=1, figure=fig1_naz, hspace=0.35)
ax_naz = fig1_naz.add_subplot(sub_fig_naz[0, 0])
lvl1_naz_df.plot.bar(ax=ax_naz, rot=0)
ax_naz.yaxis.set_label_text('ha')
ax_naz.set_xlabel('')
plt.legend(loc='best')
<matplotlib.legend.Legend at 0x7f13ad7f9540>
In questo livello di CLC si nota una certa somiglianza con ciò che abbiamo visto per la Campania: aree artificiali in aumento, aree forestate ed agricole in regressione.
3.2.2 Grafici per il livello 2¶
lvl2_naz = [clc1990_label2, clc2000_label2, clc2006_label2, clc2012_label2, clc2018_label2]
lvl2_naz_df = reduce(lambda left,right: pd.merge(left,right,on=['CORINE Land Cover - level 2'], how='outer'), lvl2_naz)
lvl2_naz_df.insert(loc=6, column='Surf.Diff. | 2000-1990', value=(lvl2_naz_df.surface_ha_2000 - lvl2_naz_df.surface_ha_1990))
lvl2_naz_df.insert(loc=7, column='Surf.Diff. | 2006-2000', value=(lvl2_naz_df.surface_ha_2006 - lvl2_naz_df.surface_ha_2000))
lvl2_naz_df.insert(loc=8, column='Surf.Diff. | 2012-2006', value=(lvl2_naz_df.surface_ha_2012 - lvl2_naz_df.surface_ha_2006))
lvl2_naz_df.insert(loc=9, column='Surf.Diff. | 2018-2012', value=(lvl2_naz_df.surface_ha_2018 - lvl2_naz_df.surface_ha_2012))
lvl2_naz_df.insert(loc=9, column='Surf.Diff. | 2018-1990', value=(lvl2_naz_df.surface_ha_2018 - lvl2_naz_df.surface_ha_1990))
lvl2_naz_df.fillna(0, inplace=True)
lvl2_naz_df.set_index('CORINE Land Cover - level 2', inplace=True)
lvl2_naz_df = lvl2_naz_df[['Surf.Diff. | 2000-1990', 'Surf.Diff. | 2006-2000', 'Surf.Diff. | 2012-2006', 'Surf.Diff. | 2018-2012', 'Surf.Diff. | 2018-1990']]
lvl2_naz_df
Surf.Diff. | 2000-1990 | Surf.Diff. | 2006-2000 | Surf.Diff. | 2012-2006 | Surf.Diff. | 2018-2012 | Surf.Diff. | 2018-1990 | |
---|---|---|---|---|---|
CORINE Land Cover - level 2 | |||||
Arable land | 55207.0658 | -10271.7226 | -90231.5817 | -12360.8275 | -57657.0660 |
Artificial, non-agricultural vegetated areas | 5554.0023 | 4316.9704 | 4861.1250 | 662.4738 | 15394.5715 |
Forests | 42767.2886 | 86747.2016 | -16412.5022 | -6762.5701 | 106339.4179 |
Heterogeneous agricultural areas | 3141.8711 | -80525.4734 | 48412.0084 | -629.6565 | -29601.2504 |
Industrial, commercial and transport units | 34135.2946 | 44503.3245 | 38255.6049 | 6654.8030 | 123549.0270 |
Inland waters | 683.7863 | 1188.3191 | 3352.2153 | -24.4133 | 5199.9074 |
Inland wetlands | 1132.9251 | 1989.9128 | 227.6485 | 252.6951 | 3603.1815 |
Marine waters | 2286.6599 | -1835.4393 | 4923.4371 | -169.4592 | 5205.1985 |
Maritime wetlands | -2307.1754 | 2002.0212 | -4442.4099 | 126.0221 | -4621.5420 |
Mine, dump and construction sites | 4408.4545 | 733.9772 | 1327.1069 | -373.1135 | 6096.4251 |
Open spaces with little or no vegetation | -114342.2191 | -78796.3505 | 650778.9658 | 24555.2063 | 482195.6025 |
Pastures | -28097.0989 | 2041.0694 | -15847.9600 | -97.1172 | -42001.1067 |
Permanent crops | -49565.7883 | 63620.5499 | -27194.6323 | 4424.2135 | -8715.6572 |
Scrub and/or herbaceous vegetation associations | -6080.8338 | -104468.5696 | -638349.3736 | -23369.4538 | -772268.2308 |
Urban fabric | 52068.0313 | 68957.2822 | 40380.6911 | 1842.5177 | 163248.5223 |
fig2_naz = plt.figure(figsize=(20, 10), dpi=100)
sub_fig_naz = GridSpec(nrows=1, ncols=1, figure=fig2_naz, hspace=0.35)
ax_naz = fig2_naz.add_subplot(sub_fig_naz[0, 0])
lvl2_naz_df.plot.bar(ax=ax_naz, rot=0)
ax_naz.yaxis.set_label_text('ha')
ax_naz.set_xlabel('')
plt.xticks(rotation = 90)
plt.legend(loc='best')
<matplotlib.legend.Legend at 0x7f13b21f3940>
Anche qui c'è una certa somiglianza con ciò che accade in Campania.
3.2.3 Grafici per il livello 3¶
lvl3_naz = [clc1990_label3, clc2000_label3, clc2006_label3, clc2012_label3, clc2018_label3]
lvl3_naz_df = reduce(lambda left,right: pd.merge(left,right,on=['CORINE Land Cover - level 3'], how='outer'), lvl3_naz)
lvl3_naz_df.insert(loc=6, column='Surf.Diff. | 2000-1990', value=(lvl3_naz_df.surface_ha_2000 - lvl3_naz_df.surface_ha_1990))
lvl3_naz_df.insert(loc=7, column='Surf.Diff. | 2006-2000', value=(lvl3_naz_df.surface_ha_2006 - lvl3_naz_df.surface_ha_2000))
lvl3_naz_df.insert(loc=8, column='Surf.Diff. | 2012-2006', value=(lvl3_naz_df.surface_ha_2012 - lvl3_naz_df.surface_ha_2006))
lvl3_naz_df.insert(loc=9, column='Surf.Diff. | 2018-2012', value=(lvl3_naz_df.surface_ha_2018 - lvl3_naz_df.surface_ha_2012))
lvl3_naz_df.insert(loc=9, column='Surf.Diff. | 2018-1990', value=(lvl3_naz_df.surface_ha_2018 - lvl3_naz_df.surface_ha_1990))
lvl3_naz_df.set_index('CORINE Land Cover - level 3', inplace=True)
lvl3_naz_df.fillna(0, inplace=True)
lvl3_naz_df
surface_ha_1990 | surface_ha_2000 | surface_ha_2006 | surface_ha_2012 | surface_ha_2018 | Surf.Diff. | 2000-1990 | Surf.Diff. | 2006-2000 | Surf.Diff. | 2012-2006 | Surf.Diff. | 2018-1990 | Surf.Diff. | 2018-2012 | |
---|---|---|---|---|---|---|---|---|---|---|
CORINE Land Cover - level 3 | ||||||||||
Agro-forestry areas | 1.875953e+05 | 1.752959e+05 | 1.703568e+05 | 1.690878e+05 | 1.688554e+05 | -12299.3238 | -4939.1076 | -1269.0034 | -18739.8517 | -232.4169 |
Airports | 2.061481e+04 | 2.141885e+04 | 2.264239e+04 | 2.283700e+04 | 2.288896e+04 | 804.0433 | 1223.5421 | 194.6092 | 2274.1471 | 51.9525 |
Annual crops associated with permanent crops | 3.948806e+05 | 3.827196e+05 | 2.056113e+05 | 2.313810e+05 | 2.311865e+05 | -12160.9920 | -177108.3339 | 25769.7259 | -163694.1511 | -194.5511 |
Bare rocks | 4.823748e+05 | 4.475284e+05 | 4.351080e+05 | 4.347627e+05 | 4.348511e+05 | -34846.4100 | -12420.4185 | -345.3238 | -47523.7192 | 88.4331 |
Beaches, dunes, sands | 8.237502e+04 | 7.823843e+04 | 7.584526e+04 | 8.212965e+04 | 8.230547e+04 | -4136.5882 | -2393.1717 | 6284.3971 | -69.5490 | 175.8138 |
Broad-leaved forest | 5.477418e+06 | 5.490370e+06 | 5.558573e+06 | 5.681647e+06 | 5.674656e+06 | 12952.5900 | 68202.4264 | 123074.4047 | 197238.3262 | -6991.0949 |
Burnt areas | 3.688807e+03 | 7.726265e+03 | 3.048895e+03 | 1.040139e+04 | 2.990311e+04 | 4037.4575 | -4677.3703 | 7352.4912 | 26214.3071 | 19501.7287 |
Coastal lagoons | 9.441910e+04 | 9.670576e+04 | 9.487032e+04 | 9.993340e+04 | 9.976394e+04 | 2286.6592 | -1835.4391 | 5063.0745 | 5344.8354 | -169.4592 |
Complex cultivation patterns | 2.208152e+06 | 2.171692e+06 | 2.202763e+06 | 2.204137e+06 | 2.198169e+06 | -36460.6309 | 31070.7372 | 1374.0283 | -9983.7268 | -5967.8614 |
Coniferous forest | 1.322878e+06 | 1.289463e+06 | 1.298869e+06 | 1.290058e+06 | 1.290082e+06 | -33414.6622 | 9406.4133 | -8811.0217 | -32795.3931 | 23.8775 |
Construction sites | 6.608806e+03 | 5.547377e+03 | 5.315068e+03 | 4.014755e+03 | 3.311441e+03 | -1061.4296 | -232.3081 | -1300.3139 | -3297.3650 | -703.3134 |
Continuous urban fabric | 1.465191e+05 | 1.436331e+05 | 1.408018e+05 | 1.588690e+05 | 1.589181e+05 | -2886.0313 | -2831.2332 | 18067.1411 | 12399.0267 | 49.1501 |
Discontinuous urban fabric | 8.850498e+05 | 9.400039e+05 | 1.011792e+06 | 1.034106e+06 | 1.035899e+06 | 54954.0626 | 71788.5154 | 22313.5500 | 150849.4956 | 1793.3676 |
Dump sites | 1.813232e+03 | 1.799607e+03 | 2.339274e+03 | 4.358176e+03 | 4.343699e+03 | -13.6242 | 539.6663 | 2018.9020 | 2530.4679 | -14.4762 |
Estuaries | 2.468468e+02 | 2.468475e+02 | 2.468473e+02 | 1.072099e+02 | 1.072099e+02 | 0.0007 | -0.0002 | -139.6374 | -139.6369 | 0.0000 |
Fruit trees and berry plantations | 3.995981e+05 | 4.020846e+05 | 4.244182e+05 | 3.778050e+05 | 3.775497e+05 | 2486.5267 | 22333.5844 | -46613.1517 | -22048.3769 | -255.3363 |
Glaciers and perpetual snow | 5.296383e+04 | 4.158192e+04 | 3.930079e+04 | 3.905328e+04 | 3.879693e+04 | -11381.9118 | -2281.1240 | -247.5108 | -14166.9013 | -256.3547 |
Green urban areas | 1.029782e+04 | 1.003812e+04 | 1.107030e+04 | 1.095570e+04 | 1.134447e+04 | -259.6952 | 1032.1803 | -114.6074 | 1046.6534 | 388.7757 |
Industrial or commercial units | 1.935121e+05 | 2.272337e+05 | 2.679521e+05 | 3.023072e+05 | 3.069798e+05 | 33721.5546 | 40718.4407 | 34355.0673 | 113467.6588 | 4672.5962 |
Inland marshes | 1.581604e+04 | 1.662644e+04 | 1.856711e+04 | 1.879475e+04 | 1.904745e+04 | 810.4000 | 1940.6703 | 227.6486 | 3231.4140 | 252.6951 |
Land principally occupied by agriculture, with significant areas of natural vegetation | 1.988074e+06 | 2.052137e+06 | 2.122588e+06 | 2.145125e+06 | 2.150890e+06 | 64062.8178 | 70451.2309 | 22537.2576 | 162816.4792 | 5765.1729 |
Mineral extraction sites | 4.311295e+04 | 4.859646e+04 | 4.902308e+04 | 4.963160e+04 | 4.997628e+04 | 5483.5083 | 426.6190 | 608.5188 | 6863.3222 | 344.6761 |
Mixed forest | 1.031295e+06 | 1.094524e+06 | 1.103663e+06 | 9.729868e+05 | 9.731915e+05 | 63229.3608 | 9138.3619 | -130675.8852 | -58103.5152 | 204.6473 |
Moors and heathland | 2.759264e+05 | 1.444961e+05 | 1.486737e+05 | 1.640305e+05 | 1.640305e+05 | -131430.3790 | 4177.6625 | 15356.7528 | -111895.9638 | -0.0001 |
Natural grasslands | 1.452501e+06 | 1.471513e+06 | 1.384153e+06 | 7.696045e+05 | 7.621346e+05 | 19011.7396 | -87360.1247 | -614548.1465 | -690366.4484 | -7469.9168 |
Non-irrigated arable land | 8.075700e+06 | 8.119901e+06 | 8.102169e+06 | 7.985138e+06 | 7.970837e+06 | 44200.6553 | -17731.6848 | -117031.0990 | -104863.2290 | -14301.1005 |
Olive groves | 1.263777e+06 | 1.218749e+06 | 1.211951e+06 | 1.190108e+06 | 1.189869e+06 | -45028.7668 | -6797.4286 | -21842.8690 | -73908.7495 | -239.6851 |
Pastures | 4.560942e+05 | 4.279971e+05 | 4.300382e+05 | 4.141902e+05 | 4.140931e+05 | -28097.0989 | 2041.0694 | -15847.9600 | -42001.1067 | -97.1172 |
Peat bogs | 3.790290e+01 | 3.604280e+02 | 4.096705e+02 | 4.096704e+02 | 4.096704e+02 | 322.5251 | 49.2425 | -0.0001 | 371.7675 | 0.0000 |
Permanently irrigated land | 4.081855e+04 | 4.092019e+04 | 4.131372e+04 | 6.817000e+04 | 6.996687e+04 | 101.6408 | 393.5360 | 26856.2729 | 29148.3233 | 1796.8736 |
Port areas | 9.735064e+03 | 1.054597e+04 | 1.073864e+04 | 1.059175e+04 | 1.070018e+04 | 810.9039 | 192.6727 | -146.8916 | 965.1133 | 108.4283 |
Rice fields | 2.760486e+05 | 2.869534e+05 | 2.940198e+05 | 2.939631e+05 | 2.941065e+05 | 10904.7697 | 7066.4262 | -56.7556 | 18057.8397 | 143.3994 |
Road and rail networks and associated land | 1.253256e+04 | 1.133135e+04 | 1.370002e+04 | 1.755284e+04 | 1.937467e+04 | -1201.2072 | 2368.6690 | 3852.8200 | 6842.1078 | 1821.8260 |
Salines | 1.000881e+04 | 9.634204e+03 | 9.372738e+03 | 9.278927e+03 | 9.278927e+03 | -374.6057 | -261.4668 | -93.8107 | -729.8832 | 0.0000 |
Salt marshes | 4.311619e+04 | 4.118362e+04 | 4.344711e+04 | 3.909851e+04 | 3.922454e+04 | -1932.5697 | 2263.4880 | -4348.5992 | -3891.6588 | 126.0221 |
Sclerophyllous vegetation | 9.609517e+05 | 1.006894e+06 | 1.015687e+06 | 1.014778e+06 | 1.002021e+06 | 45941.8202 | 8793.0178 | -908.2755 | 41069.1211 | -12757.4414 |
Sparsely vegetated areas | 4.846612e+05 | 4.166465e+05 | 3.596222e+05 | 9.973571e+05 | 1.002403e+06 | -68014.7666 | -57024.2660 | 637734.9121 | 517741.4649 | 5045.5854 |
Sport and leisure facilities | 1.768997e+04 | 2.350367e+04 | 2.678846e+04 | 3.176419e+04 | 3.203789e+04 | 5813.6975 | 3284.7901 | 4975.7324 | 14347.9181 | 273.6981 |
Transitional woodland-shrub | 1.012338e+06 | 1.072734e+06 | 1.042655e+06 | 1.004405e+06 | 1.001263e+06 | 60395.9854 | -30079.1252 | -38249.7044 | -11074.9397 | -3142.0955 |
Vineyards | 5.354933e+05 | 5.284697e+05 | 5.765541e+05 | 6.178155e+05 | 6.227348e+05 | -7023.5482 | 48084.3941 | 41261.3884 | 87241.4692 | 4919.2349 |
Water bodies | 1.681098e+05 | 1.698191e+05 | 1.727610e+05 | 1.755170e+05 | 1.755253e+05 | 1709.2964 | 2941.8555 | 2756.0595 | 7415.4779 | 8.2665 |
Water courses | 4.948117e+04 | 4.845566e+04 | 4.670212e+04 | 4.729828e+04 | 4.726560e+04 | -1025.5101 | -1753.5364 | 596.1558 | -2215.5705 | -32.6798 |
fig3_naz = plt.figure(figsize=(20, 10), dpi=100)
sub_fig_naz = GridSpec(nrows=1, ncols=1, figure=fig3_naz, hspace=0.35)
ax_naz = fig3_naz.add_subplot(sub_fig_naz[0, 0])
lvl3_df['Surf.Diff. | 2018-1990'].plot.bar(ax=ax_naz, rot=0)
ax_naz.yaxis.set_label_text('ha')
ax_naz.set_xlabel('')
plt.xticks(rotation = 90)
plt.legend(loc='best')
<matplotlib.legend.Legend at 0x7f13ab9c75b0>
Purtroppo il "trend campano" è visibile anche qui. Il fatto è che ciò che accade a scala nazionale si ripete a scala regionale e scommetto anche provinciale in un po' tutto il territorio italiano.
3.3 Focus sui Comuni¶
# Dati 1990
focus_1990_naz = clc1990[['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha', 'label3', 'surface_ha_1990']]
focus_1990_naz.set_index('label3', inplace=True)
focus_naz_1990_group = pd.DataFrame(focus_1990_naz.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha', 'label3'])['surface_ha_1990'].sum())
focus_naz_1990_group.reset_index(inplace=True)
# Dati 2000
focus_2000_naz = clc2000[['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha', 'label3', 'surface_ha_2000']]
focus_2000_naz.set_index('label3', inplace=True)
focus_naz_2000_group = pd.DataFrame(focus_2000_naz.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha', 'label3'])['surface_ha_2000'].sum())
focus_naz_2000_group.reset_index(inplace=True)
# Dati 2006
focus_2006_naz = clc2006[['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha', 'label3', 'surface_ha_2006']]
focus_2006_naz.set_index('label3', inplace=True)
focus_naz_2006_group = pd.DataFrame(focus_2006_naz.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha', 'label3'])['surface_ha_2006'].sum())
focus_naz_2006_group.reset_index(inplace=True)
# Dati 2012
focus_2012_naz = clc2012[['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha', 'label3', 'surface_ha_2012']]
focus_2012_naz.set_index('label3', inplace=True)
focus_naz_2012_group = pd.DataFrame(focus_2012_naz.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha', 'label3'])['surface_ha_2012'].sum())
focus_naz_2012_group.reset_index(inplace=True)
# Dati 2018
focus_2018_naz = clc2018[['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha', 'label3', 'surface_ha_2018']]
focus_2018_naz.set_index('label3', inplace=True)
focus_naz_2018_group = pd.DataFrame(focus_2018_naz.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha', 'label3'])['surface_ha_2018'].sum())
focus_naz_2018_group.reset_index(inplace=True)
focus_naz_2018_group
pro_com | comune | provincia | regione | sup_com_ha | label3 | surface_ha_2018 | |
---|---|---|---|---|---|---|---|
0 | 1001.0 | Agliè | Torino | Piemonte | 1314.622087 | Broad-leaved forest | 218.6224 |
1 | 1001.0 | Agliè | Torino | Piemonte | 1314.622087 | Discontinuous urban fabric | 64.7110 |
2 | 1001.0 | Agliè | Torino | Piemonte | 1314.622087 | Green urban areas | 51.8549 |
3 | 1001.0 | Agliè | Torino | Piemonte | 1314.622087 | Industrial or commercial units | 25.4731 |
4 | 1001.0 | Agliè | Torino | Piemonte | 1314.622087 | Land principally occupied by agriculture, with... | 24.4334 |
... | ... | ... | ... | ... | ... | ... | ... |
64052 | 111107.0 | Villaspeciosa | Sud Sardegna | Sardegna | 2719.371313 | Industrial or commercial units | 25.7592 |
64053 | 111107.0 | Villaspeciosa | Sud Sardegna | Sardegna | 2719.371313 | Land principally occupied by agriculture, with... | 216.6219 |
64054 | 111107.0 | Villaspeciosa | Sud Sardegna | Sardegna | 2719.371313 | Non-irrigated arable land | 1675.3119 |
64055 | 111107.0 | Villaspeciosa | Sud Sardegna | Sardegna | 2719.371313 | Sclerophyllous vegetation | 44.4901 |
64056 | 111107.0 | Villaspeciosa | Sud Sardegna | Sardegna | 2719.371313 | Water bodies | 176.2525 |
64057 rows × 7 columns
3.3.1 Aree artificiali¶
I gruppi 1.1 ed 1.2 della CLC
# Dati 1990
artificial_surface_naz_1990 = focus_naz_1990_group[focus_naz_1990_group['label3'].isin(['Continuous urban fabric', 'Discontinuous urban fabric', 'Industrial or commercial units', 'Road and rail networks and associated land', 'Port areas', 'Airports'])]
artificial_surface_naz_1990_group = pd.DataFrame(artificial_surface_naz_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
artificial_surface_naz_1990_group.reset_index(inplace=True)
# Dati 2000
artificial_surface_naz_2000 = focus_naz_2000_group[focus_naz_2000_group['label3'].isin(['Continuous urban fabric', 'Discontinuous urban fabric', 'Industrial or commercial units', 'Road and rail networks and associated land', 'Port areas', 'Airports'])]
artificial_surface_naz_2000_group = pd.DataFrame(artificial_surface_naz_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
artificial_surface_naz_2000_group.reset_index(inplace=True)
# Dati 2006
artificial_surface_naz_2006 = focus_naz_2006_group[focus_naz_2006_group['label3'].isin(['Continuous urban fabric', 'Discontinuous urban fabric', 'Industrial or commercial units', 'Road and rail networks and associated land', 'Port areas', 'Airports'])]
artificial_surface_naz_2006_group = pd.DataFrame(artificial_surface_naz_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
artificial_surface_naz_2006_group.reset_index(inplace=True)
# Dati 2012
artificial_surface_naz_2012 = focus_naz_2012_group[focus_naz_2012_group['label3'].isin(['Continuous urban fabric', 'Discontinuous urban fabric', 'Industrial or commercial units', 'Road and rail networks and associated land', 'Port areas', 'Airports'])]
artificial_surface_naz_2012_group = pd.DataFrame(artificial_surface_naz_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
artificial_surface_naz_2012_group.reset_index(inplace=True)
# Dati 2018
artificial_surface_naz_2018 = focus_naz_2018_group[focus_naz_2018_group['label3'].isin(['Continuous urban fabric', 'Discontinuous urban fabric', 'Industrial or commercial units', 'Road and rail networks and associated land', 'Port areas', 'Airports'])]
artificial_surface_naz_2018_group = pd.DataFrame(artificial_surface_naz_2018.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha'])['surface_ha_2018'].sum())
artificial_surface_naz_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_artificial_naz = [artificial_surface_naz_2018_group, artificial_surface_naz_2012_group, artificial_surface_naz_2006_group, artificial_surface_naz_2000_group, artificial_surface_naz_1990_group]
focus_artificial_naz_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_artificial_naz)
focus_artificial_naz_df = focus_artificial_naz_df[focus_artificial_naz_df['sup_com_ha'] > 0]
focus_artificial_naz_df.fillna(0, inplace=True)
focus_artificial_naz_df.insert(loc=5, column='perc_1990', value=round(focus_artificial_naz_df.surface_ha_1990 / focus_artificial_naz_df.sup_com_ha, 4) * 100)
focus_artificial_naz_df.insert(loc=6, column='perc_2000', value=round(focus_artificial_naz_df.surface_ha_2000 / focus_artificial_naz_df.sup_com_ha, 4) * 100)
focus_artificial_naz_df.insert(loc=7, column='perc_2006', value=round(focus_artificial_naz_df.surface_ha_2006 / focus_artificial_naz_df.sup_com_ha, 4) * 100)
focus_artificial_naz_df.insert(loc=8, column='perc_2012', value=round(focus_artificial_naz_df.surface_ha_2012 / focus_artificial_naz_df.sup_com_ha, 4) * 100)
focus_artificial_naz_df.insert(loc=9, column='perc_2018', value=round(focus_artificial_naz_df.surface_ha_2018 / focus_artificial_naz_df.sup_com_ha, 4) * 100)
focus_artificial_naz_df.insert(loc=10, column='Perc.Diff. | 2018-2000', value=(focus_artificial_naz_df.perc_2018 - focus_artificial_naz_df.perc_2000))
focus_artificial_naz_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=True, inplace=True)
focus_artificial_naz_df
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
899 | 12023.0 | Brunello | Varese | Lombardia | 161.998833 | 60.01 | 60.01 | 44.49 | 44.49 | 44.49 | -15.52 | 72.0654 | 72.0654 | 72.0655 | 97.2179 | 97.2181 |
4298 | 63036.0 | Grumo Nevano | Napoli | Campania | 287.688759 | 47.45 | 64.93 | 64.93 | 51.31 | 51.31 | -13.62 | 147.6065 | 147.6065 | 186.8019 | 186.8019 | 136.5066 |
882 | 12006.0 | Azzate | Varese | Lombardia | 450.621469 | 46.75 | 46.75 | 38.01 | 38.01 | 38.01 | -8.74 | 171.2779 | 171.2779 | 171.2779 | 210.6471 | 210.6469 |
953 | 12080.0 | Gornate Olona | Varese | Lombardia | 469.573308 | 31.05 | 31.05 | 22.32 | 22.32 | 22.32 | -8.73 | 104.8177 | 104.8177 | 104.8177 | 145.8012 | 145.8012 |
4329 | 63067.0 | San Giorgio a Cremano | Napoli | Campania | 415.383936 | 60.96 | 76.57 | 68.51 | 68.51 | 68.51 | -8.06 | 284.5767 | 284.5767 | 284.5768 | 318.0615 | 253.2174 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
372 | 3114.0 | Paruzzaro | Novara | Piemonte | 522.716138 | 13.89 | 11.57 | 23.24 | 35.11 | 35.11 | 23.54 | 183.5155 | 183.5155 | 121.4790 | 60.5013 | 72.6050 |
5506 | 80097.0 | San Ferdinando | Reggio di Calabria | Calabria | 1419.798819 | 16.31 | 15.22 | 40.20 | 40.20 | 40.20 | 24.98 | 570.7536 | 570.7536 | 570.7535 | 216.1294 | 231.5077 |
257 | 2009.0 | Balocco | Vercelli | Piemonte | 1680.794846 | 10.41 | 0.00 | 2.97 | 28.22 | 28.22 | 28.22 | 474.3195 | 474.3195 | 49.8811 | 0.0000 | 175.0071 |
336 | 3043.0 | Castelletto sopra Ticino | Novara | Piemonte | 1464.109249 | 22.01 | 20.80 | 23.45 | 50.63 | 50.63 | 29.83 | 741.2521 | 741.2521 | 343.3539 | 304.5441 | 322.2282 |
4477 | 65011.0 | Atrani | Salerno | Campania | 12.061182 | 0.00 | 0.00 | 52.01 | 52.01 | 52.01 | 52.01 | 6.2730 | 6.2730 | 6.2730 | 0.0000 | 0.0000 |
6773 rows × 16 columns
# Superfici in arretramento
naz_reduction_artificial_area = focus_artificial_naz_df.iloc[0:10]
naz_reduction_artificial_area
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
899 | 12023.0 | Brunello | Varese | Lombardia | 161.998833 | 60.01 | 60.01 | 44.49 | 44.49 | 44.49 | -15.52 | 72.0654 | 72.0654 | 72.0655 | 97.2179 | 97.2181 |
4298 | 63036.0 | Grumo Nevano | Napoli | Campania | 287.688759 | 47.45 | 64.93 | 64.93 | 51.31 | 51.31 | -13.62 | 147.6065 | 147.6065 | 186.8019 | 186.8019 | 136.5066 |
882 | 12006.0 | Azzate | Varese | Lombardia | 450.621469 | 46.75 | 46.75 | 38.01 | 38.01 | 38.01 | -8.74 | 171.2779 | 171.2779 | 171.2779 | 210.6471 | 210.6469 |
953 | 12080.0 | Gornate Olona | Varese | Lombardia | 469.573308 | 31.05 | 31.05 | 22.32 | 22.32 | 22.32 | -8.73 | 104.8177 | 104.8177 | 104.8177 | 145.8012 | 145.8012 |
4329 | 63067.0 | San Giorgio a Cremano | Napoli | Campania | 415.383936 | 60.96 | 76.57 | 68.51 | 68.51 | 68.51 | -8.06 | 284.5767 | 284.5767 | 284.5768 | 318.0615 | 253.2174 |
5710 | 83108.0 | Torrenova | Messina | Sicilia | 1292.677225 | 22.03 | 22.62 | 15.29 | 14.94 | 14.94 | -7.68 | 193.1105 | 193.1105 | 197.6093 | 292.4331 | 284.7380 |
5708 | 83106.0 | Terme Vigliatore | Messina | Sicilia | 1322.797657 | 25.43 | 25.81 | 19.42 | 18.33 | 18.33 | -7.48 | 242.5046 | 242.5046 | 256.9306 | 341.4543 | 336.4462 |
801 | 9049.0 | Pietra Ligure | Savona | Liguria | 987.811402 | 34.90 | 34.90 | 34.90 | 27.46 | 27.46 | -7.44 | 271.2950 | 271.2950 | 344.7029 | 344.7031 | 344.7031 |
1049 | 13058.0 | Castelmarte | Como | Lombardia | 197.225522 | 47.17 | 47.17 | 39.83 | 39.83 | 39.83 | -7.34 | 78.5500 | 78.5500 | 78.5500 | 93.0399 | 93.0399 |
4294 | 63032.0 | Frattamaggiore | Napoli | Campania | 538.816178 | 58.54 | 71.14 | 72.46 | 63.97 | 63.97 | -7.17 | 344.6705 | 344.6705 | 390.4469 | 383.2980 | 315.4185 |
# Superfici in avanzamento
naz_increase_artificial_area = focus_artificial_naz_df.iloc[-10:]
naz_increase_artificial_area.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
naz_increase_artificial_area
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4477 | 65011.0 | Atrani | Salerno | Campania | 12.061182 | 0.00 | 0.00 | 52.01 | 52.01 | 52.01 | 52.01 | 6.2730 | 6.2730 | 6.2730 | 0.0000 | 0.0000 |
336 | 3043.0 | Castelletto sopra Ticino | Novara | Piemonte | 1464.109249 | 22.01 | 20.80 | 23.45 | 50.63 | 50.63 | 29.83 | 741.2521 | 741.2521 | 343.3539 | 304.5441 | 322.2282 |
257 | 2009.0 | Balocco | Vercelli | Piemonte | 1680.794846 | 10.41 | 0.00 | 2.97 | 28.22 | 28.22 | 28.22 | 474.3195 | 474.3195 | 49.8811 | 0.0000 | 175.0071 |
5506 | 80097.0 | San Ferdinando | Reggio di Calabria | Calabria | 1419.798819 | 16.31 | 15.22 | 40.20 | 40.20 | 40.20 | 24.98 | 570.7536 | 570.7536 | 570.7535 | 216.1294 | 231.5077 |
372 | 3114.0 | Paruzzaro | Novara | Piemonte | 522.716138 | 13.89 | 11.57 | 23.24 | 35.11 | 35.11 | 23.54 | 183.5155 | 183.5155 | 121.4790 | 60.5013 | 72.6050 |
5705 | 83103.0 | Valdina | Messina | Sicilia | 260.160806 | 16.64 | 16.64 | 35.93 | 39.55 | 39.55 | 22.91 | 102.8957 | 102.8957 | 93.4653 | 43.3003 | 43.3026 |
371 | 3112.0 | Orta San Giulio | Novara | Piemonte | 664.998756 | 0.00 | 0.00 | 0.00 | 22.62 | 22.62 | 22.62 | 150.3928 | 150.3928 | 0.0000 | 0.0000 | 0.0000 |
4287 | 63025.0 | Castello di Cisterna | Napoli | Campania | 392.135970 | 21.89 | 46.04 | 68.31 | 68.31 | 68.31 | 22.27 | 267.8514 | 267.8514 | 267.8514 | 180.5292 | 85.8311 |
6271 | 96083.0 | Zumaglia | Biella | Piemonte | 261.365071 | 14.82 | 4.43 | 4.43 | 26.59 | 26.59 | 22.16 | 69.5047 | 69.5047 | 11.5807 | 11.5807 | 38.7374 |
3499 | 46013.0 | Forte dei Marmi | Lucca | Toscana | 918.715130 | 56.53 | 59.08 | 63.30 | 80.45 | 80.45 | 21.37 | 739.1208 | 739.1208 | 581.5429 | 542.7534 | 519.3559 |
3.3.2 Aree forestate¶
Il gruppo 3.1 della CLC
# Dati 1990
forest_surface_naz_1990 = focus_naz_1990_group[focus_naz_1990_group['label3'].isin(['Broad-leaved forest', 'Coniferous forest', 'Mixed forest'])]
forest_surface_naz_1990_group = pd.DataFrame(forest_surface_naz_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
forest_surface_naz_1990_group.reset_index(inplace=True)
# Dati 2000
forest_surface_naz_2000 = focus_naz_2000_group[focus_naz_2000_group['label3'].isin(['Broad-leaved forest', 'Coniferous forest', 'Mixed forest'])]
forest_surface_naz_2000_group = pd.DataFrame(forest_surface_naz_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
forest_surface_naz_2000_group.reset_index(inplace=True)
# Dati 2006
forest_surface_naz_2006 = focus_naz_2006_group[focus_naz_2006_group['label3'].isin(['Broad-leaved forest', 'Coniferous forest', 'Mixed forest'])]
forest_surface_naz_2006_group = pd.DataFrame(forest_surface_naz_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
forest_surface_naz_2006_group.reset_index(inplace=True)
# Dati 2012
forest_surface_naz_2012 = focus_naz_2012_group[focus_naz_2012_group['label3'].isin(['Broad-leaved forest', 'Coniferous forest', 'Mixed forest'])]
forest_surface_naz_2012_group = pd.DataFrame(forest_surface_naz_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
forest_surface_naz_2012_group.reset_index(inplace=True)
# Dati 2018
forest_surface_naz_2018 = focus_naz_2018_group[focus_naz_2018_group['label3'].isin(['Broad-leaved forest', 'Coniferous forest', 'Mixed forest'])]
forest_surface_naz_2018_group = pd.DataFrame(forest_surface_naz_2018.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha'])['surface_ha_2018'].sum())
forest_surface_naz_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_forest_naz = [forest_surface_naz_2018_group, forest_surface_naz_2012_group, forest_surface_naz_2006_group, forest_surface_naz_2000_group, forest_surface_naz_1990_group]
focus_forest_naz_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_forest_naz)
focus_forest_naz_df = focus_forest_naz_df[focus_forest_naz_df['sup_com_ha'] > 0]
focus_forest_naz_df.fillna(0, inplace=True)
focus_forest_naz_df.insert(loc=5, column='perc_1990', value=round(focus_forest_naz_df.surface_ha_1990 / focus_forest_naz_df.sup_com_ha, 4) * 100)
focus_forest_naz_df.insert(loc=6, column='perc_2000', value=round(focus_forest_naz_df.surface_ha_2000 / focus_forest_naz_df.sup_com_ha, 4) * 100)
focus_forest_naz_df.insert(loc=7, column='perc_2006', value=round(focus_forest_naz_df.surface_ha_2006 / focus_forest_naz_df.sup_com_ha, 4) * 100)
focus_forest_naz_df.insert(loc=8, column='perc_2012', value=round(focus_forest_naz_df.surface_ha_2012 / focus_forest_naz_df.sup_com_ha, 4) * 100)
focus_forest_naz_df.insert(loc=9, column='perc_2018', value=round(focus_forest_naz_df.surface_ha_2018 / focus_forest_naz_df.sup_com_ha, 4) * 100)
focus_forest_naz_df.insert(loc=10, column='Perc.Diff. | 2018-2000', value=(focus_forest_naz_df.perc_2018 - focus_forest_naz_df.perc_2000))
focus_forest_naz_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=True, inplace=True)
focus_forest_naz_df
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4010 | 62073.0 | Solopaca | Benevento | Campania | 3112.664003 | 43.63 | 43.63 | 43.46 | 11.69 | 11.69 | -31.94 | 363.9901 | 363.9901 | 1352.7210 | 1358.0359 | 1358.0275 |
2005 | 18162.0 | Travacò Siccomario | Pavia | Lombardia | 1704.486441 | 35.67 | 34.72 | 8.46 | 6.86 | 5.13 | -29.59 | 87.4269 | 116.9231 | 144.1941 | 591.7315 | 607.9471 |
2066 | 20022.0 | Dosolo | Mantova | Lombardia | 2553.627074 | 36.66 | 33.26 | 15.80 | 28.04 | 5.45 | -27.81 | 139.2560 | 716.0698 | 403.4684 | 849.4448 | 936.1148 |
5387 | 83054.0 | Monforte San Giorgio | Messina | Sicilia | 3225.987912 | 20.15 | 38.03 | 11.27 | 11.27 | 11.27 | -26.76 | 363.6191 | 363.6191 | 363.6193 | 1226.7195 | 650.1504 |
4014 | 62077.0 | Vitulano | Benevento | Campania | 3599.050416 | 50.86 | 50.81 | 50.81 | 26.82 | 26.82 | -23.99 | 965.1276 | 965.1276 | 1828.5273 | 1828.5272 | 1830.3353 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
6035 | 97078.0 | Suello | Lecco | Lombardia | 262.901636 | 3.74 | 3.74 | 30.07 | 30.07 | 30.07 | 26.33 | 79.0515 | 79.0515 | 79.0515 | 9.8363 | 9.8363 |
4727 | 71047.0 | San Marco in Lamis | Foggia | Puglia | 23419.726063 | 12.66 | 12.66 | 12.30 | 39.01 | 39.01 | 26.35 | 9136.7031 | 9136.7031 | 2879.7020 | 2965.3694 | 2965.3412 |
5343 | 83002.0 | Alì | Messina | Sicilia | 1593.861487 | 11.13 | 11.13 | 42.21 | 42.20 | 42.20 | 31.07 | 672.5921 | 672.5921 | 672.7852 | 177.3506 | 177.3474 |
4645 | 70041.0 | Montagano | Campobasso | Molise | 2662.359533 | 12.81 | 13.18 | 49.30 | 49.17 | 49.17 | 35.99 | 1309.1148 | 1309.1148 | 1312.6691 | 350.7878 | 341.0156 |
5378 | 83042.0 | Longi | Messina | Sicilia | 4210.989035 | 31.58 | 31.58 | 65.31 | 68.51 | 68.51 | 36.93 | 2885.0294 | 2885.0294 | 2750.1191 | 1329.8307 | 1329.8237 |
6400 rows × 16 columns
# Superfici in arretramento
naz_reduction_forest_area = focus_forest_naz_df.iloc[0:10]
naz_reduction_forest_area
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4010 | 62073.0 | Solopaca | Benevento | Campania | 3112.664003 | 43.63 | 43.63 | 43.46 | 11.69 | 11.69 | -31.94 | 363.9901 | 363.9901 | 1352.7210 | 1358.0359 | 1358.0275 |
2005 | 18162.0 | Travacò Siccomario | Pavia | Lombardia | 1704.486441 | 35.67 | 34.72 | 8.46 | 6.86 | 5.13 | -29.59 | 87.4269 | 116.9231 | 144.1941 | 591.7315 | 607.9471 |
2066 | 20022.0 | Dosolo | Mantova | Lombardia | 2553.627074 | 36.66 | 33.26 | 15.80 | 28.04 | 5.45 | -27.81 | 139.2560 | 716.0698 | 403.4684 | 849.4448 | 936.1148 |
5387 | 83054.0 | Monforte San Giorgio | Messina | Sicilia | 3225.987912 | 20.15 | 38.03 | 11.27 | 11.27 | 11.27 | -26.76 | 363.6191 | 363.6191 | 363.6193 | 1226.7195 | 650.1504 |
4014 | 62077.0 | Vitulano | Benevento | Campania | 3599.050416 | 50.86 | 50.81 | 50.81 | 26.82 | 26.82 | -23.99 | 965.1276 | 965.1276 | 1828.5273 | 1828.5272 | 1830.3353 |
1354 | 13059.0 | Castelnuovo Bozzente | Como | Lombardia | 362.195167 | 74.76 | 74.76 | 51.14 | 51.14 | 51.14 | -23.62 | 185.2128 | 185.2128 | 185.2127 | 270.7783 | 270.7781 |
1975 | 18114.0 | Pieve Porto Morone | Pavia | Lombardia | 1639.626801 | 23.53 | 23.53 | 24.21 | 20.04 | 0.00 | -23.53 | 0.0002 | 328.5814 | 396.9912 | 385.7940 | 385.7940 |
1788 | 17027.0 | Braone | Brescia | Lombardia | 1335.673792 | 61.74 | 61.74 | 61.69 | 39.25 | 39.25 | -22.49 | 524.1978 | 524.1978 | 823.9188 | 824.5857 | 824.5859 |
5410 | 83080.0 | San Pier Niceto | Messina | Sicilia | 3667.976954 | 27.71 | 38.63 | 16.27 | 16.27 | 16.27 | -22.36 | 596.7868 | 596.7868 | 596.7872 | 1416.8175 | 1016.4019 |
1321 | 13009.0 | Anzano del Parco | Como | Lombardia | 324.503555 | 29.46 | 29.46 | 7.69 | 7.69 | 7.69 | -21.77 | 24.9485 | 24.9485 | 24.9485 | 95.6024 | 95.6025 |
# Superfici in avanzamento
naz_increase_forest_area = focus_forest_naz_df.iloc[-10:]
naz_increase_forest_area.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
naz_increase_forest_area
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
5378 | 83042.0 | Longi | Messina | Sicilia | 4210.989035 | 31.58 | 31.58 | 65.31 | 68.51 | 68.51 | 36.93 | 2885.0294 | 2885.0294 | 2750.1191 | 1329.8307 | 1329.8237 |
4645 | 70041.0 | Montagano | Campobasso | Molise | 2662.359533 | 12.81 | 13.18 | 49.30 | 49.17 | 49.17 | 35.99 | 1309.1148 | 1309.1148 | 1312.6691 | 350.7878 | 341.0156 |
5343 | 83002.0 | Alì | Messina | Sicilia | 1593.861487 | 11.13 | 11.13 | 42.21 | 42.20 | 42.20 | 31.07 | 672.5921 | 672.5921 | 672.7852 | 177.3506 | 177.3474 |
4727 | 71047.0 | San Marco in Lamis | Foggia | Puglia | 23419.726063 | 12.66 | 12.66 | 12.30 | 39.01 | 39.01 | 26.35 | 9136.7031 | 9136.7031 | 2879.7020 | 2965.3694 | 2965.3412 |
6035 | 97078.0 | Suello | Lecco | Lombardia | 262.901636 | 3.74 | 3.74 | 30.07 | 30.07 | 30.07 | 26.33 | 79.0515 | 79.0515 | 79.0515 | 9.8363 | 9.8363 |
5383 | 83050.0 | Militello Rosmarino | Messina | Sicilia | 2953.560321 | 30.59 | 30.80 | 55.18 | 56.89 | 56.89 | 26.09 | 1680.4067 | 1680.4067 | 1629.8563 | 909.6290 | 903.4505 |
1946 | 18071.0 | Gerenzago | Pavia | Lombardia | 541.125193 | 0.00 | 0.00 | 25.77 | 25.77 | 25.77 | 25.77 | 139.4217 | 139.4217 | 139.4217 | 0.0000 | 0.0000 |
5606 | 90044.0 | Nughedu San Nicolò | Sassari | Sardegna | 6789.378997 | 14.32 | 15.66 | 39.48 | 40.42 | 40.42 | 24.76 | 2744.1430 | 2744.1430 | 2680.5068 | 1062.9248 | 972.5207 |
5390 | 83057.0 | Montalbano Elicona | Messina | Sicilia | 6780.082531 | 52.78 | 30.74 | 53.69 | 53.50 | 55.09 | 24.35 | 3734.9590 | 3627.4330 | 3639.9593 | 2084.5071 | 3578.2554 |
5391 | 83058.0 | Motta Camastra | Messina | Sicilia | 2530.898840 | 36.11 | 36.11 | 54.05 | 59.70 | 59.70 | 23.59 | 1510.8548 | 1510.8548 | 1367.8344 | 913.8916 | 913.8926 |
3.3.3 Aree agricole¶
Il gruppo 2.1 della CLC
# Dati 1990
arable_lands_surface_naz_1990 = focus_naz_1990_group[focus_naz_1990_group['label3'].isin(['Non-irrigated arable land', 'Permanently irrigated land'])]
arable_lands_surface_naz_1990_group = pd.DataFrame(arable_lands_surface_naz_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
arable_lands_surface_naz_1990_group.reset_index(inplace=True)
# Dati 2000
arable_lands_surface_naz_2000 = focus_naz_2000_group[focus_naz_2000_group['label3'].isin(['Non-irrigated arable land', 'Permanently irrigated land'])]
arable_lands_surface_naz_2000_group = pd.DataFrame(arable_lands_surface_naz_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
arable_lands_surface_naz_2000_group.reset_index(inplace=True)
# Dati 2006
arable_lands_surface_naz_2006 = focus_naz_2006_group[focus_naz_2006_group['label3'].isin(['Non-irrigated arable land', 'Permanently irrigated land'])]
arable_lands_surface_naz_2006_group = pd.DataFrame(arable_lands_surface_naz_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
arable_lands_surface_naz_2006_group.reset_index(inplace=True)
# Dati 2012
arable_lands_surface_naz_2012 = focus_naz_2012_group[focus_naz_2012_group['label3'].isin(['Non-irrigated arable land', 'Permanently irrigated land'])]
arable_lands_surface_naz_2012_group = pd.DataFrame(arable_lands_surface_naz_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
arable_lands_surface_naz_2012_group.reset_index(inplace=True)
# Dati 2018
arable_lands_surface_naz_2018 = focus_naz_2018_group[focus_naz_2018_group['label3'].isin(['Non-irrigated arable land', 'Permanently irrigated land'])]
arable_lands_surface_naz_2018_group = pd.DataFrame(arable_lands_surface_naz_2018.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha'])['surface_ha_2018'].sum())
arable_lands_surface_naz_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_arable_lands_naz = [arable_lands_surface_naz_2018_group, arable_lands_surface_naz_2012_group, arable_lands_surface_naz_2006_group, arable_lands_surface_naz_2000_group, arable_lands_surface_naz_1990_group]
focus_arable_lands_naz_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_arable_lands_naz)
focus_arable_lands_naz_df = focus_arable_lands_naz_df[focus_arable_lands_naz_df['sup_com_ha'] > 0]
focus_arable_lands_naz_df.fillna(0, inplace=True)
focus_arable_lands_naz_df.insert(loc=5, column='perc_1990', value=round(focus_arable_lands_naz_df.surface_ha_1990 / focus_arable_lands_naz_df.sup_com_ha, 4) * 100)
focus_arable_lands_naz_df.insert(loc=6, column='perc_2000', value=round(focus_arable_lands_naz_df.surface_ha_2000 / focus_arable_lands_naz_df.sup_com_ha, 4) * 100)
focus_arable_lands_naz_df.insert(loc=7, column='perc_2006', value=round(focus_arable_lands_naz_df.surface_ha_2006 / focus_arable_lands_naz_df.sup_com_ha, 4) * 100)
focus_arable_lands_naz_df.insert(loc=8, column='perc_2012', value=round(focus_arable_lands_naz_df.surface_ha_2012 / focus_arable_lands_naz_df.sup_com_ha, 4) * 100)
focus_arable_lands_naz_df.insert(loc=9, column='perc_2018', value=round(focus_arable_lands_naz_df.surface_ha_2018 / focus_arable_lands_naz_df.sup_com_ha, 4) * 100)
focus_arable_lands_naz_df.insert(loc=10, column='Perc.Diff. | 2018-2000', value=(focus_arable_lands_naz_df.perc_2018 - focus_arable_lands_naz_df.perc_2000))
focus_arable_lands_naz_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=True, inplace=True)
focus_arable_lands_naz_df
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1903 | 28080.0 | Santa Giustina in Colle | Padova | Veneto | 1796.754897 | 89.86 | 92.50 | 91.92 | 12.83 | 12.83 | -79.67 | 230.5114 | 230.5115 | 1651.6402 | 1661.9126 | 1614.5434 |
1861 | 28036.0 | Curtarolo | Padova | Veneto | 1472.896746 | 89.61 | 84.87 | 83.69 | 9.24 | 9.24 | -75.63 | 136.0505 | 136.0505 | 1232.6876 | 1250.0597 | 1319.9213 |
1626 | 24026.0 | Cassola | Vicenza | Veneto | 1273.950878 | 70.93 | 69.20 | 66.58 | 11.82 | 11.13 | -58.07 | 141.8257 | 150.5180 | 848.1867 | 881.6361 | 903.5994 |
3451 | 64072.0 | Pietradefusi | Avellino | Campania | 924.149874 | 77.90 | 77.90 | 20.16 | 20.16 | 20.16 | -57.74 | 186.3344 | 186.3344 | 186.3345 | 719.9375 | 719.9308 |
3442 | 64056.0 | Montefusco | Avellino | Campania | 823.823558 | 59.13 | 59.13 | 2.01 | 2.01 | 2.01 | -57.12 | 16.5238 | 16.5238 | 16.5238 | 487.1327 | 487.1269 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
3880 | 70046.0 | Montenero di Bisaccia | Campobasso | Molise | 9331.252115 | 27.05 | 26.67 | 70.13 | 70.13 | 70.13 | 43.46 | 6544.4633 | 6544.4633 | 6544.4634 | 2488.5836 | 2524.0691 |
3230 | 61020.0 | Casaluce | Caserta | Campania | 955.842829 | 0.70 | 0.70 | 0.70 | 60.53 | 60.53 | 59.83 | 578.6141 | 578.6141 | 6.7225 | 6.7226 | 6.7222 |
3903 | 70069.0 | San Martino in Pensilis | Campobasso | Molise | 10065.202788 | 23.10 | 23.10 | 83.46 | 83.46 | 83.46 | 60.36 | 8400.8974 | 8400.8974 | 8400.8973 | 2324.9437 | 2324.9034 |
3245 | 61037.0 | Frignano | Caserta | Campania | 985.795577 | 0.00 | 0.00 | 0.00 | 69.03 | 69.03 | 69.03 | 680.5149 | 680.5149 | 0.0000 | 0.0000 | 0.0000 |
3297 | 61098.0 | Villa di Briano | Caserta | Campania | 854.692612 | 3.91 | 3.91 | 3.91 | 74.03 | 74.03 | 70.12 | 632.7436 | 632.7436 | 33.4422 | 33.4424 | 33.4453 |
5585 rows × 16 columns
# Superfici in arretramento
naz_reduction_arable_lands_area = focus_arable_lands_naz_df.iloc[0:10]
naz_reduction_arable_lands_area
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1903 | 28080.0 | Santa Giustina in Colle | Padova | Veneto | 1796.754897 | 89.86 | 92.50 | 91.92 | 12.83 | 12.83 | -79.67 | 230.5114 | 230.5115 | 1651.6402 | 1661.9126 | 1614.5434 |
1861 | 28036.0 | Curtarolo | Padova | Veneto | 1472.896746 | 89.61 | 84.87 | 83.69 | 9.24 | 9.24 | -75.63 | 136.0505 | 136.0505 | 1232.6876 | 1250.0597 | 1319.9213 |
1626 | 24026.0 | Cassola | Vicenza | Veneto | 1273.950878 | 70.93 | 69.20 | 66.58 | 11.82 | 11.13 | -58.07 | 141.8257 | 150.5180 | 848.1867 | 881.6361 | 903.5994 |
3451 | 64072.0 | Pietradefusi | Avellino | Campania | 924.149874 | 77.90 | 77.90 | 20.16 | 20.16 | 20.16 | -57.74 | 186.3344 | 186.3344 | 186.3345 | 719.9375 | 719.9308 |
3442 | 64056.0 | Montefusco | Avellino | Campania | 823.823558 | 59.13 | 59.13 | 2.01 | 2.01 | 2.01 | -57.12 | 16.5238 | 16.5238 | 16.5238 | 487.1327 | 487.1269 |
1923 | 28101.0 | Villa del Conte | Padova | Veneto | 1734.840442 | 96.57 | 96.39 | 92.42 | 39.87 | 39.87 | -56.52 | 691.7159 | 691.7159 | 1603.3313 | 1672.1357 | 1675.4122 |
2545 | 44036.0 | Montefiore dell'Aso | Ascoli Piceno | Marche | 2820.740109 | 31.58 | 52.36 | 51.94 | 1.96 | 1.96 | -50.40 | 55.4167 | 55.4167 | 1465.2004 | 1477.0519 | 890.6685 |
1847 | 28020.0 | Campo San Martino | Padova | Veneto | 1315.986365 | 89.89 | 89.56 | 87.50 | 39.25 | 39.25 | -50.31 | 516.4652 | 516.4652 | 1151.4484 | 1178.6033 | 1182.9783 |
4097 | 75041.0 | Martignano | Lecce | Puglia | 649.212863 | 55.63 | 55.62 | 7.23 | 7.23 | 7.23 | -48.39 | 46.9307 | 46.9307 | 46.9307 | 361.0667 | 361.1841 |
4147 | 75094.0 | Zollino | Lecce | Puglia | 995.447907 | 73.07 | 73.07 | 25.56 | 25.56 | 25.56 | -47.51 | 254.4702 | 254.4702 | 254.4701 | 727.3750 | 727.3907 |
# Superfici in avanzamento
naz_increase_arable_lands_area = focus_arable_lands_naz_df.iloc[-10:]
naz_increase_arable_lands_area.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
naz_increase_arable_lands_area
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3297 | 61098.0 | Villa di Briano | Caserta | Campania | 854.692612 | 3.91 | 3.91 | 3.91 | 74.03 | 74.03 | 70.12 | 632.7436 | 632.7436 | 33.4422 | 33.4424 | 33.4453 |
3245 | 61037.0 | Frignano | Caserta | Campania | 985.795577 | 0.00 | 0.00 | 0.00 | 69.03 | 69.03 | 69.03 | 680.5149 | 680.5149 | 0.0000 | 0.0000 | 0.0000 |
3903 | 70069.0 | San Martino in Pensilis | Campobasso | Molise | 10065.202788 | 23.10 | 23.10 | 83.46 | 83.46 | 83.46 | 60.36 | 8400.8974 | 8400.8974 | 8400.8973 | 2324.9437 | 2324.9034 |
3230 | 61020.0 | Casaluce | Caserta | Campania | 955.842829 | 0.70 | 0.70 | 0.70 | 60.53 | 60.53 | 59.83 | 578.6141 | 578.6141 | 6.7225 | 6.7226 | 6.7222 |
3880 | 70046.0 | Montenero di Bisaccia | Campobasso | Molise | 9331.252115 | 27.05 | 26.67 | 70.13 | 70.13 | 70.13 | 43.46 | 6544.4633 | 6544.4633 | 6544.4634 | 2488.5836 | 2524.0691 |
3912 | 70078.0 | Termoli | Campobasso | Molise | 5563.450730 | 16.95 | 16.76 | 57.90 | 59.83 | 59.83 | 43.07 | 3328.3420 | 3328.3420 | 3221.2335 | 932.5081 | 942.8076 |
5205 | 97072.0 | Rogeno | Lecco | Lombardia | 482.482168 | 0.70 | 0.70 | 42.34 | 42.34 | 42.34 | 41.64 | 204.2863 | 204.2863 | 204.2863 | 3.3881 | 3.3881 |
4668 | 83090.0 | San Teodoro | Messina | Sicilia | 1397.402292 | 29.16 | 29.16 | 67.97 | 67.97 | 67.97 | 38.81 | 949.7711 | 949.7711 | 949.7711 | 407.4871 | 407.4882 |
3889 | 70055.0 | Portocannone | Campobasso | Molise | 1311.357120 | 19.86 | 19.86 | 57.15 | 57.15 | 57.15 | 37.29 | 749.4987 | 749.4987 | 749.4987 | 260.4368 | 260.4467 |
3931 | 71014.0 | Casalvecchio di Puglia | Foggia | Puglia | 3193.205814 | 45.71 | 48.78 | 48.78 | 84.11 | 84.11 | 35.33 | 2685.9620 | 2685.9620 | 1557.6443 | 1557.6441 | 1459.5313 |
3.3.4 Aree bruciate¶
# Dati 1990
burnt_surface_naz_1990 = focus_naz_1990_group[focus_naz_1990_group['label3'].isin(['Burnt areas'])]
burnt_surface_naz_1990_group = pd.DataFrame(burnt_surface_naz_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
burnt_surface_naz_1990_group.reset_index(inplace=True)
# Dati 2000
burnt_surface_naz_2000 = focus_naz_2000_group[focus_naz_2000_group['label3'].isin(['Burnt areas'])]
burnt_surface_naz_2000_group = pd.DataFrame(burnt_surface_naz_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
burnt_surface_naz_2000_group.reset_index(inplace=True)
# Dati 2006
burnt_surface_naz_2006 = focus_naz_2006_group[focus_naz_2006_group['label3'].isin(['Burnt areas'])]
burnt_surface_naz_2006_group = pd.DataFrame(burnt_surface_naz_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
burnt_surface_naz_2006_group.reset_index(inplace=True)
# Dati 2012
burnt_surface_naz_2012 = focus_naz_2012_group[focus_naz_2012_group['label3'].isin(['Burnt areas'])]
burnt_surface_naz_2012_group = pd.DataFrame(burnt_surface_naz_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
burnt_surface_naz_2012_group.reset_index(inplace=True)
# Dati 2018
burnt_surface_naz_2018 = focus_naz_2018_group[focus_naz_2018_group['label3'].isin(['Burnt areas'])]
burnt_surface_naz_2018_group = pd.DataFrame(burnt_surface_naz_2018.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha'])['surface_ha_2018'].sum())
burnt_surface_naz_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_burnt_naz = [burnt_surface_naz_2018_group, burnt_surface_naz_2012_group, burnt_surface_naz_2006_group, burnt_surface_naz_2000_group, burnt_surface_naz_1990_group]
focus_burnt_naz_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_burnt_naz)
focus_burnt_naz_df = focus_burnt_naz_df[focus_burnt_naz_df['sup_com_ha'] > 0]
focus_burnt_naz_df.fillna(0, inplace=True)
focus_burnt_naz_df.insert(loc=5, column='perc_1990', value=round(focus_burnt_naz_df.surface_ha_1990 / focus_burnt_naz_df.sup_com_ha, 4) * 100)
focus_burnt_naz_df.insert(loc=6, column='perc_2000', value=round(focus_burnt_naz_df.surface_ha_2000 / focus_burnt_naz_df.sup_com_ha, 4) * 100)
focus_burnt_naz_df.insert(loc=7, column='perc_2006', value=round(focus_burnt_naz_df.surface_ha_2006 / focus_burnt_naz_df.sup_com_ha, 4) * 100)
focus_burnt_naz_df.insert(loc=8, column='perc_2012', value=round(focus_burnt_naz_df.surface_ha_2012 / focus_burnt_naz_df.sup_com_ha, 4) * 100)
focus_burnt_naz_df.insert(loc=9, column='perc_2018', value=round(focus_burnt_naz_df.surface_ha_2018 / focus_burnt_naz_df.sup_com_ha, 4) * 100)
focus_burnt_naz_df.insert(loc=10, column='Perc.Diff. | 2018-2000', value=(focus_burnt_naz_df.perc_2018 - focus_burnt_naz_df.perc_2000))
focus_burnt_naz_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
focus_burnt_naz_df
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
114 | 81020.0 | San Vito Lo Capo | Trapani | Sicilia | 6011.867192 | 0.00 | 0.00 | 0.0 | 0.00 | 42.65 | 42.65 | 2564.0387 | 0.0000 | 0.0 | 0.0000 | 0.0000 |
141 | 83063.0 | Oliveri | Messina | Sicilia | 1043.475159 | 0.00 | 0.00 | 0.0 | 0.00 | 36.58 | 36.58 | 381.7231 | 0.0000 | 0.0 | 0.0000 | 0.0000 |
49 | 63082.0 | Terzigno | Napoli | Campania | 2346.480829 | 0.00 | 0.00 | 0.0 | 0.00 | 18.50 | 18.50 | 434.1155 | 0.0000 | 0.0 | 0.0000 | 0.0000 |
45 | 63064.0 | Ercolano | Napoli | Campania | 1989.359843 | 0.00 | 0.00 | 0.0 | 8.49 | 17.54 | 17.54 | 348.9169 | 168.9727 | 0.0 | 0.0000 | 0.0000 |
223 | 111046.0 | Nurallao | Sud Sardegna | Sardegna | 3476.167353 | 0.00 | 0.00 | 0.0 | 0.00 | 17.40 | 17.40 | 604.7035 | 0.0000 | 0.0 | 0.0000 | 0.0000 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
140 | 83061.0 | Nizza di Sicilia | Messina | Sicilia | 1341.538156 | 0.00 | 1.97 | 0.0 | 0.00 | 0.02 | -1.95 | 0.3277 | 0.0000 | 0.0 | 26.3822 | 0.0000 |
203 | 100003.0 | Montemurlo | Prato | Toscana | 3077.584750 | 0.00 | 3.78 | 0.0 | 1.64 | 1.64 | -2.14 | 50.4463 | 50.4463 | 0.0 | 116.4644 | 0.0000 |
66 | 65052.0 | Fisciano | Salerno | Campania | 3168.742849 | 0.00 | 4.15 | 0.0 | 0.00 | 1.43 | -2.72 | 45.1761 | 0.0000 | 0.0 | 131.4723 | 0.0000 |
4 | 10059.0 | Sestri Levante | Genova | Liguria | 3361.625421 | 12.95 | 9.23 | 0.0 | 0.00 | 3.04 | -6.19 | 102.1619 | 0.0000 | 0.0 | 310.3360 | 435.4819 |
134 | 83045.0 | Mandanici | Messina | Sicilia | 1185.361172 | 0.00 | 27.54 | 0.0 | 0.00 | 5.16 | -22.38 | 61.1878 | 0.0000 | 0.0 | 326.4113 | 0.0000 |
235 rows × 16 columns
3.3.5 Aree adibite a discarica¶
# Dati 1990
dump_surface_naz_1990 = focus_naz_1990_group[focus_naz_1990_group['label3'].isin(['Dump sites'])]
dump_surface_naz_1990_group = pd.DataFrame(dump_surface_naz_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
dump_surface_naz_1990_group.reset_index(inplace=True)
# Dati 2000
dump_surface_naz_2000 = focus_naz_2000_group[focus_naz_2000_group['label3'].isin(['Dump sites'])]
dump_surface_naz_2000_group = pd.DataFrame(dump_surface_naz_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
dump_surface_naz_2000_group.reset_index(inplace=True)
# Dati 2006
dump_surface_naz_2006 = focus_naz_2006_group[focus_naz_2006_group['label3'].isin(['Dump sites'])]
dump_surface_naz_2006_group = pd.DataFrame(dump_surface_naz_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
dump_surface_naz_2006_group.reset_index(inplace=True)
# Dati 2012
dump_surface_naz_2012 = focus_naz_2012_group[focus_naz_2012_group['label3'].isin(['Dump sites'])]
dump_surface_naz_2012_group = pd.DataFrame(dump_surface_naz_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
dump_surface_naz_2012_group.reset_index(inplace=True)
# Dati 2018
dump_surface_naz_2018 = focus_naz_2018_group[focus_naz_2018_group['label3'].isin(['Dump sites'])]
dump_surface_naz_2018_group = pd.DataFrame(dump_surface_naz_2018.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha'])['surface_ha_2018'].sum())
dump_surface_naz_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_dump_naz = [dump_surface_naz_2018_group, dump_surface_naz_2012_group, dump_surface_naz_2006_group, dump_surface_naz_2000_group, dump_surface_naz_1990_group]
focus_dump_naz_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_dump_naz)
focus_dump_naz_df = focus_dump_naz_df[focus_dump_naz_df['sup_com_ha'] > 0]
focus_dump_naz_df.fillna(0, inplace=True)
focus_dump_naz_df.insert(loc=5, column='perc_1990', value=round(focus_dump_naz_df.surface_ha_1990 / focus_dump_naz_df.sup_com_ha, 4) * 100)
focus_dump_naz_df.insert(loc=6, column='perc_2000', value=round(focus_dump_naz_df.surface_ha_2000 / focus_dump_naz_df.sup_com_ha, 4) * 100)
focus_dump_naz_df.insert(loc=7, column='perc_2006', value=round(focus_dump_naz_df.surface_ha_2006 / focus_dump_naz_df.sup_com_ha, 4) * 100)
focus_dump_naz_df.insert(loc=8, column='perc_2012', value=round(focus_dump_naz_df.surface_ha_2012 / focus_dump_naz_df.sup_com_ha, 4) * 100)
focus_dump_naz_df.insert(loc=9, column='perc_2018', value=round(focus_dump_naz_df.surface_ha_2018 / focus_dump_naz_df.sup_com_ha, 4) * 100)
focus_dump_naz_df.insert(loc=10, column='Perc.Diff. | 2018-2000', value=(focus_dump_naz_df.perc_2018 - focus_dump_naz_df.perc_2000))
focus_dump_naz_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
focus_dump_naz_df
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2 | 1273.0 | Torrazza Piemonte | Torino | Piemonte | 982.382979 | 0.0 | 0.00 | 0.00 | 6.72 | 7.64 | 7.64 | 75.0599 | 66.0309 | 0.0000 | 0.0000 | 0.0000 |
13 | 20034.0 | Medole | Mantova | Lombardia | 2572.857637 | 0.0 | 0.00 | 0.00 | 6.66 | 6.66 | 6.66 | 171.3837 | 171.3837 | 0.0000 | 0.0000 | 0.0000 |
82 | 87030.0 | Motta Sant'Anastasia | Catania | Sicilia | 3569.989125 | 0.0 | 0.00 | 1.62 | 2.16 | 2.16 | 2.16 | 77.0713 | 77.0713 | 57.8396 | 0.0000 | 0.0000 |
25 | 34041.0 | Torrile | Parma | Emilia-Romagna | 3714.699293 | 0.0 | 0.00 | 0.00 | 2.10 | 2.10 | 2.10 | 77.8524 | 77.8524 | 0.0000 | 0.0000 | 0.0000 |
52 | 57027.0 | Fara in Sabina | Rieti | Lazio | 5496.235909 | 0.0 | 0.00 | 0.00 | 1.98 | 1.98 | 1.98 | 108.5511 | 108.5511 | 0.0000 | 0.0000 | 0.0000 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
16 | 26010.0 | Casier | Treviso | Veneto | 1342.173767 | 0.0 | 1.25 | 1.25 | 1.25 | 1.25 | 0.00 | 16.8000 | 16.8000 | 16.8000 | 16.8000 | 0.0000 |
35 | 37032.0 | Imola | Bologna | Emilia-Romagna | 20502.134650 | 0.0 | 0.18 | 0.18 | 0.18 | 0.18 | 0.00 | 37.1468 | 37.1468 | 37.1468 | 37.1468 | 0.0000 |
36 | 38006.0 | Comacchio | Ferrara | Emilia-Romagna | 28374.611068 | 0.1 | 0.10 | 0.10 | 0.10 | 0.10 | 0.00 | 28.5891 | 28.5891 | 28.5891 | 28.5898 | 28.5892 |
20 | 27042.0 | Venezia | Venezia | Veneto | 41589.266300 | 0.0 | 0.09 | 0.09 | 0.09 | 0.09 | 0.00 | 36.2536 | 36.2536 | 36.2536 | 36.2536 | 0.0000 |
80 | 85007.0 | Gela | Caltanissetta | Sicilia | 27921.954881 | 0.0 | 0.17 | 0.24 | 0.11 | 0.11 | -0.06 | 29.9715 | 29.9715 | 65.9464 | 47.9113 | 0.0000 |
94 rows × 16 columns
# Dati 1990
green_urban_surface_surface_naz_1990 = focus_naz_1990_group[focus_naz_1990_group['label3'].isin(['Green urban areas'])]
green_urban_surface_surface_naz_1990_group = pd.DataFrame(green_urban_surface_surface_naz_1990.groupby(['pro_com'])['surface_ha_1990'].sum())
green_urban_surface_surface_naz_1990_group.reset_index(inplace=True)
# Dati 2000
green_urban_surface_surface_naz_2000 = focus_naz_2000_group[focus_naz_2000_group['label3'].isin(['Green urban areas'])]
green_urban_surface_surface_naz_2000_group = pd.DataFrame(green_urban_surface_surface_naz_2000.groupby(['pro_com'])['surface_ha_2000'].sum())
green_urban_surface_surface_naz_2000_group.reset_index(inplace=True)
# Dati 2006
green_urban_surface_surface_naz_2006 = focus_naz_2006_group[focus_naz_2006_group['label3'].isin(['Green urban areas'])]
green_urban_surface_surface_naz_2006_group = pd.DataFrame(green_urban_surface_surface_naz_2006.groupby(['pro_com'])['surface_ha_2006'].sum())
green_urban_surface_surface_naz_2006_group.reset_index(inplace=True)
# Dati 2012
green_urban_surface_surface_naz_2012 = focus_naz_2012_group[focus_naz_2012_group['label3'].isin(['Green urban areas'])]
green_urban_surface_surface_naz_2012_group = pd.DataFrame(green_urban_surface_surface_naz_2012.groupby(['pro_com'])['surface_ha_2012'].sum())
green_urban_surface_surface_naz_2012_group.reset_index(inplace=True)
# Dati 2018
green_urban_surface_surface_naz_2018 = focus_naz_2018_group[focus_naz_2018_group['label3'].isin(['Green urban areas'])]
green_urban_surface_surface_naz_2018_group = pd.DataFrame(green_urban_surface_surface_naz_2018.groupby(['pro_com', 'comune', 'provincia', 'regione', 'sup_com_ha'])['surface_ha_2018'].sum())
green_urban_surface_surface_naz_2018_group.reset_index(inplace=True)
# Dati aggregati
focus_green_urban_surface_naz = [green_urban_surface_surface_naz_2018_group, green_urban_surface_surface_naz_2012_group, green_urban_surface_surface_naz_2006_group, green_urban_surface_surface_naz_2000_group, green_urban_surface_surface_naz_1990_group]
focus_green_urban_surface_naz_df = reduce(lambda left,right: pd.merge(left,right,on=['pro_com'], how='outer'), focus_green_urban_surface_naz)
focus_green_urban_surface_naz_df = focus_green_urban_surface_naz_df[focus_green_urban_surface_naz_df['sup_com_ha'] > 0]
focus_green_urban_surface_naz_df.fillna(0, inplace=True)
focus_green_urban_surface_naz_df.insert(loc=5, column='perc_1990', value=round(focus_green_urban_surface_naz_df.surface_ha_1990 / focus_green_urban_surface_naz_df.sup_com_ha, 4) * 100)
focus_green_urban_surface_naz_df.insert(loc=6, column='perc_2000', value=round(focus_green_urban_surface_naz_df.surface_ha_2000 / focus_green_urban_surface_naz_df.sup_com_ha, 4) * 100)
focus_green_urban_surface_naz_df.insert(loc=7, column='perc_2006', value=round(focus_green_urban_surface_naz_df.surface_ha_2006 / focus_green_urban_surface_naz_df.sup_com_ha, 4) * 100)
focus_green_urban_surface_naz_df.insert(loc=8, column='perc_2012', value=round(focus_green_urban_surface_naz_df.surface_ha_2012 / focus_green_urban_surface_naz_df.sup_com_ha, 4) * 100)
focus_green_urban_surface_naz_df.insert(loc=9, column='perc_2018', value=round(focus_green_urban_surface_naz_df.surface_ha_2018 / focus_green_urban_surface_naz_df.sup_com_ha, 4) * 100)
focus_green_urban_surface_naz_df.insert(loc=10, column='Perc.Diff. | 2018-2000', value=(focus_green_urban_surface_naz_df.perc_2018 - focus_green_urban_surface_naz_df.perc_2000))
focus_green_urban_surface_naz_df.sort_values(by=['Perc.Diff. | 2018-2000'], ascending=False, inplace=True)
focus_green_urban_surface_naz_df
pro_com | comune | provincia | regione | sup_com_ha | perc_1990 | perc_2000 | perc_2006 | perc_2012 | perc_2018 | Perc.Diff. | 2018-2000 | surface_ha_2018 | surface_ha_2012 | surface_ha_2006 | surface_ha_2000 | surface_ha_1990 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
19 | 15032.0 | Bresso | Milano | Lombardia | 338.236565 | 0.00 | 0.00 | 10.09 | 19.93 | 19.93 | 19.93 | 67.4045 | 67.4045 | 34.1411 | 0.0000 | 0.0000 |
127 | 108046.0 | Vedano al Lambro | Monza e della Brianza | Lombardia | 197.928997 | 0.00 | 0.00 | 19.70 | 19.70 | 19.70 | 19.70 | 38.9824 | 38.9824 | 38.9825 | 0.0000 | 0.0000 |
125 | 108033.0 | Monza | Monza e della Brianza | Lombardia | 3308.665453 | 1.07 | 1.07 | 13.58 | 13.58 | 13.58 | 12.51 | 449.4274 | 449.4274 | 449.4274 | 35.4254 | 35.4254 |
95 | 62062.0 | San Lorenzo Maggiore | Benevento | Campania | 1629.550368 | 0.00 | 0.00 | 0.00 | 0.00 | 11.89 | 11.89 | 193.6792 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
20 | 15077.0 | Cinisello Balsamo | Milano | Lombardia | 1272.408112 | 0.00 | 0.00 | 0.00 | 9.68 | 9.68 | 9.68 | 123.1662 | 123.1662 | 0.0000 | 0.0000 | 0.0000 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2 | 1090.0 | Collegno | Torino | Piemonte | 1809.931733 | 3.36 | 3.22 | 3.48 | 2.76 | 2.76 | -0.46 | 50.0311 | 50.0311 | 62.9144 | 58.3309 | 60.8457 |
50 | 30027.0 | Codroipo | Udine | Friuli Venezia Giulia | 7520.098015 | 1.09 | 1.09 | 0.40 | 0.40 | 0.40 | -0.69 | 30.4123 | 30.4123 | 30.4123 | 81.8193 | 81.8197 |
126 | 108040.0 | Seveso | Monza e della Brianza | Lombardia | 740.240733 | 0.00 | 8.95 | 8.23 | 8.23 | 8.23 | -0.72 | 60.8857 | 60.8857 | 60.8857 | 66.2372 | 0.0000 |
82 | 48017.0 | Firenze | Firenze | Toscana | 10231.561540 | 3.25 | 3.09 | 2.44 | 2.14 | 2.14 | -0.95 | 218.9329 | 218.9329 | 249.9431 | 315.8389 | 332.8009 |
70 | 42002.0 | Ancona | Ancona | Marche | 12486.826920 | 1.71 | 1.70 | 0.74 | 0.74 | 0.74 | -0.96 | 92.4984 | 92.4984 | 92.1039 | 211.9722 | 213.0332 |
130 rows × 16 columns
Conclusione¶
Sembra abbastanza chiaro che in Italia negli ultimi trenta anni circa si sia preferito sacrificare il paesaggio agricolo e forestale in favore di quello urbano. Si parla molto di Urban Heat Island e della riduzione di questi fenomeni tipici delle aree urbane. Magari, se si fosse riammodernato il costruito negli ultimi trenta anni al posto di edificare in nuovi luoghi, il fenomeno delle isole urbane di calore ci avrebbe colpito in maniera molto minore di quanto non ci colpisca adesso(e nei prossimi anni!). Avremmo così preservato il nostro patrimonio boschivo ed agricolo rendendo il Bel Paese ancora più bello.