import geopandas as gp import pandas as pd import matplotlib.pyplot as plt import sys sys.path.append("src") import aci_utils # Selezione regione lombardia (codice 3) data = gp.read_file("dataset/regioni/provincia.geojson").to_crs(epsg=3857) lombardia = data[data['reg_istat_code_num'] == 3] incidenti = pd.read_csv("dataset/incidenti/aci/autostrade/comuni_2018.csv") incidenti_lombardia = incidenti[incidenti['REGIONE'] == 'Lombardia'] incidenti_lombardia = gp.GeoDataFrame( aci_utils.get_sum_of_fields(incidenti_lombardia, 'PROVINCIA', 'INC')) incidenti_lombardia = lombardia.merge(incidenti_lombardia, left_on='prov_name', right_on='PROVINCIA') from matplotlib.lines import Line2D incidenti_lombardia.plot(column='INC', cmap='OrRd') plt.legend([ Line2D([], [], color='#84190f', linewidth=5), Line2D([], [], color='#ef5547', linewidth=5), Line2D([], [], color='#efd4ae', linewidth=5) ], [ max(incidenti_lombardia['INC']), int(incidenti_lombardia['INC'].mean()),
import pandas as pd import matplotlib.pyplot as plt from matplotlib.lines import Line2D import sys sys.path.append("src") import aci_utils field_incidenti = 'TOTALE' path = "dataset/regioni/regioni.geojson" regioni = gp.read_file(path) data = pd.read_csv('dataset/incidenti/aci/autostrade/mesi_2018.csv') # Rimozione di valori nulli dal dataset e correzione del tipo di variabile, da string a int data = data[data['TOTALE'] != '0,0'].astype({'TOTALE': int}) incidenti = aci_utils.get_sum_of_fields(data, 'REGIONE', field_incidenti) incidenti.index = incidenti['REGIONE'] regioni.index = regioni['reg_name'] regioni = gp.GeoDataFrame(incidenti[field_incidenti], geometry=regioni['geometry'].transpose()) regioni.plot(column=field_incidenti, cmap='OrRd', legend=True) plt.axis('off') plt.legend([ Line2D([],[],color='#a52317',linewidth=5), Line2D([],[],color='#d6584d',linewidth=5), Line2D([],[],color='#f7aca5',linewidth=5) ], [max(regioni[field_incidenti]), int(regioni[field_incidenti].mean()), min(regioni[field_incidenti])]) plt.show()
# L'ordine utilizzato raggruppa le regioni del nord, centro e sud order = [ 'Piemonte', 'Valle d\'Aosta', 'Liguria', 'Lombardia', 'Trentino-Alto Adige', 'Veneto', 'Friuli-Venezia Giulia', 'Emilia Romagna', 'Toscana', 'Umbria', 'Marche', 'Lazio', 'Abruzzo', 'Molise', 'Campania', 'Puglia', 'Basilicata', 'Calabria', 'Sicilia', 'Sardegna' ] data = pd.read_csv('dataset/incidenti/aci/autostrade/mesi_2018.csv') data = data[data['TOTALE'] != '0,0'].astype({'TOTALE': int}) # Conteggio incidenti in mesi estivi estate = pd.Series() for mese in ['Giugno', 'Luglio', 'Agosto']: e = aci_utils.get_sum_of_fields(data, 'REGIONE', mese) e.index = e['REGIONE'] e.reindex(order) e = e[mese] if mese == 'Giugno': estate = e else: estate += e # Conteggio incidenti in mesi invernali inverno = pd.Series() for mese in ['Dicembre', 'Gennaio', 'Febbraio']: e = aci_utils.get_sum_of_fields(data, 'REGIONE', mese) e.index = e['REGIONE'] e.reindex(order) e = e[mese]
import geopandas as gp import pandas as pd import matplotlib.pyplot as plt import sys sys.path.append("src") import aci_utils # Selezione degli incidenti in regione lazio (codice 12) data = gp.read_file("dataset/regioni/provincia.geojson").to_crs(epsg=3857) lombardia = data[data['reg_istat_code_num'] == 12] incidenti = pd.read_csv("dataset/incidenti/aci/autostrade/comuni_2018.csv") incidenti_lombardia = incidenti[incidenti['REGIONE'] == 'Lazio'] incidenti_lombardia = gp.GeoDataFrame(aci_utils.get_sum_of_fields(incidenti_lombardia, 'PROVINCIA', 'INC')) incidenti_lombardia = lombardia.merge(incidenti_lombardia, left_on='prov_name', right_on='PROVINCIA') from matplotlib.lines import Line2D inc = 'INC' incidenti_lombardia.plot(column=inc, cmap='OrRd') plt.legend([ Line2D([],[],color='#84190f',linewidth=5), Line2D([],[],color='#ef5547',linewidth=5), Line2D([],[],color='#efd4ae',linewidth=5) ], [max(incidenti_lombardia[inc]), int(incidenti_lombardia[inc].mean()), min(incidenti_lombardia[inc])]) plt.axis('off') plt.show()
import geopandas as gp import pandas as pd import matplotlib.pyplot as plt import sys sys.path.append("src") import aci_utils # Selezione degli incidenti in regione lazio (codice 12) data = gp.read_file("dataset/regioni/provincia.geojson").to_crs(epsg=3857) lombardia = data[data['reg_istat_code_num'] == 12] incidenti = pd.read_csv( "dataset/incidenti/aci/strade_provinciali/aci_2018.csv") incidenti_lombardia = incidenti[incidenti['REGIONE'] == 'Lazio'] incidenti_lombardia = gp.GeoDataFrame( aci_utils.get_sum_of_fields(incidenti_lombardia, 'provincia', 'Inc')) incidenti_lombardia = lombardia.merge(incidenti_lombardia, left_on='prov_name', right_on='provincia') from matplotlib.lines import Line2D inc = 'Inc' incidenti_lombardia.plot(column=inc, cmap='OrRd') plt.legend([ Line2D([], [], color='#84190f', linewidth=5), Line2D([], [], color='#ef5547', linewidth=5), Line2D([], [], color='#efd4ae', linewidth=5) ], [ max(incidenti_lombardia[inc]),
import geopandas as gp import pandas as pd import matplotlib.pyplot as plt from matplotlib.lines import Line2D import sys sys.path.append("src") import aci_utils # Selezione regione lombardia (codice 3) data = gp.read_file("dataset/regioni/provincia.geojson").to_crs(epsg=3857) lombardia = data[data['reg_istat_code_num'] == 3] incidenti = pd.read_csv("dataset/incidenti/aci/strade_provinciali/aci_2018.csv") incidenti_lombardia = incidenti[incidenti['REGIONE'] == 'Lombardia'] inc = 'Inc' incidenti_lombardia = gp.GeoDataFrame(aci_utils.get_sum_of_fields(incidenti_lombardia, 'provincia', inc)) incidenti_lombardia = lombardia.merge(incidenti_lombardia, left_on='prov_name', right_on='provincia') incidenti_lombardia.plot(column=inc, cmap='OrRd') plt.legend([ Line2D([],[],color='#84190f',linewidth=5), Line2D([],[],color='#ef5547',linewidth=5), Line2D([],[],color='#efd4ae',linewidth=5) ], [max(incidenti_lombardia[inc]), int(incidenti_lombardia[inc].mean()), min(incidenti_lombardia[inc])]) plt.axis('off') plt.show()
import sys sys.path.append("src") import aci_utils # L'ordine utilizzato raggruppa le regioni del nord, centro e sud order = [ 'Piemonte', 'Valle d\'Aosta', 'Liguria', 'Lombardia', 'Trentino-Alto Adige', 'Veneto', 'Friuli-Venezia Giulia', 'Emilia Romagna', 'Toscana', 'Umbria', 'Marche', 'Lazio', 'Abruzzo', 'Molise', 'Campania', 'Puglia', 'Basilicata', 'Calabria', 'Sicilia', 'Sardegna' ] patenti = pd.read_csv("dataset/patenti/patenti_mit.csv") incidenti = pd.read_csv("dataset/incidenti/aci/autostrade/mesi_2018.csv") incidenti = aci_utils.get_sum_of_fields(incidenti, 'REGIONE', 'TOTALE') # Correzione dell'ordine dei due dataset patenti.index = patenti['REGIONE'] patenti = patenti.reindex(order) patenti = patenti['NUMERO'] / patenti['NUMERO'].sum() incidenti.index = incidenti['REGIONE'] incidenti = incidenti.reindex(order) incidenti = incidenti['TOTALE'] / incidenti['TOTALE'].sum() df = pd.DataFrame([patenti, incidenti], ['Patentati', 'Incidenti']).transpose() # Colorazione del grafico color_ls = ['#cec571'] * 8 color_ls = color_ls + ['#cec571'] * 4
import geopandas as gp import pandas as pd import matplotlib.pyplot as plt import sys sys.path.append('src') import heatmap as H import aci_utils path = "dataset/regioni/regioni.geojson" regioni = gp.read_file(path) # Per ogni anno, somma degli incidenti per regione, e sort in ordine alfabetico incidenti_2011 = aci_utils.get_sum_of_fields( pd.read_csv('dataset/incidenti/aci/autostrade/mesi_2011.csv'), 'REGIONE', 'TOTALE').sort_values('REGIONE', inplace=False, ascending=True) incidenti_2012 = aci_utils.get_sum_of_fields( pd.read_csv('dataset/incidenti/aci/autostrade/mesi_2012.csv'), 'REGIONE', 'TOTALE').sort_values('REGIONE', inplace=False, ascending=True) incidenti_2013 = aci_utils.get_sum_of_fields( pd.read_csv('dataset/incidenti/aci/autostrade/mesi_2013.csv'), 'REGIONE', 'TOTALE').sort_values('REGIONE', inplace=False, ascending=True) incidenti_2014 = aci_utils.get_sum_of_fields( pd.read_csv('dataset/incidenti/aci/autostrade/mesi_2014.csv'), 'REGIONE', 'TOTALE').sort_values('REGIONE', inplace=False, ascending=True) incidenti_2015 = aci_utils.get_sum_of_fields( pd.read_csv('dataset/incidenti/aci/autostrade/mesi_2015.csv'), 'REGIONE', 'TOTALE').sort_values('REGIONE', inplace=False, ascending=True) incidenti_2016 = aci_utils.get_sum_of_fields( pd.read_csv('dataset/incidenti/aci/autostrade/mesi_2016.csv'), 'REGIONE', 'TOTALE').sort_values('REGIONE', inplace=False, ascending=True) incidenti_2017 = aci_utils.get_sum_of_fields(