Deal flow espaces verts 2018 - 2019¶
Links: notebook
, html, PDF
, python
, slides, GitHub
Ce jeu de données est proposé pour la réalisation d’un projet de module python pour partager une fonction de graphe. Un exemple de ce projet est proposé : td2a_plotting.
from jyquickhelper import add_notebook_menu
add_notebook_menu()
%matplotlib inline
Récupération des données¶
from ensae_teaching_cs.data import deal_flow_espace_vert_2018_2019
filenames = deal_flow_espace_vert_2018_2019()
filenames
['.\.\DEAL Flow automatisation 2019.xlsx', '.\.\Jeu de données deal flow 2018.csv']
import pandas
df19 = pandas.read_excel(filenames[0], engine='openpyxl')
df19.head()
DOMAINE | SOUS_DOMAINE | SOUS_DOMAINE_NIV2 | SOUS_DOMAINE_NIV3 | DOSSIER_CODE | DOSSIER_OBJET | TIERS NOM | COMMUNE | COMMUNE_X | COMMUNE_Y | DOSSIER_DATE_NOTIFICATION | DOSSIER_DUREE | iOpérationCout | iMontant total | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | D2-Economie Circulaire | 2DE-Déchets | 2DE.01-Prévention | 2DE.01.01-Réemploi/réparation | 19OCC0099 | Achat et pose de mobilier de seconde vie pour ... | SA HLM CHALETS | Toulouse | 1.431672 | 43.596382 | 2019-05-28 | 18.0 | 197001.00 | 15864.0 |
1 | D2-Economie Circulaire | 2DE-Déchets | 2DE.02-Valorisation organique | 2DE.02.01-Méthanisation | 18BRC0299 | BIOGAZ 2018 - Installation d'une unité de méth... | GAEC LA MOTTE COATHUAL | Plouguernével | -3.247116 | 48.234072 | 2019-03-06 | 48.0 | 1283771.16 | 160103.0 |
2 | D2-Economie Circulaire | 2DE-Déchets | 2DE.02-Valorisation organique | 2DE.02.01-Méthanisation | 18BRC0304 | BIOGAZ 2018 - Installation d'une unité de méth... | SAS METHA-GOURHAND | Martigné-Ferchaud | -1.328084 | 47.828196 | 2019-03-15 | 48.0 | 2073288.45 | 160417.0 |
3 | D1-Energie, changement climatique, qualité de ... | 1ER-Energies renouvelables et de récupération ... | 1ER.06-Solaire Th. | 1ER.06.03-Solaire tertiaire | 19COC0041 | AAP STCo - Alimentation ECS solaire d'une vill... | MINNA | Zonza | 9.266098 | 41.721407 | 2019-05-17 | 18.0 | 6000.00 | 3255.0 |
4 | D1-Energie, changement climatique, qualité de ... | 1ER-Energies renouvelables et de récupération ... | 1ER.05-Réseaux de chaleur distribution | 1ER.05.02-Extension de Réseaux de chaleur | 18RAC0252 | AAP AURESEAU 2018 : Extension/densification du... | COMPAGNIE DE CHAUFFAGE INTERCOMMUNALE DE L'AGG... | Grenoble | 5.721333 | 45.182120 | NaT | 65.0 | 98123000.00 | 8674236.0 |
L’encoding du fichier csv n’est pas évident à deviner. On utilise le module chardet pour cela.
import chardet
with open(filenames[1], 'rb') as f:
c = f.read()
chardet.detect(c)
{'encoding': 'Windows-1252', 'confidence': 0.729730205381813, 'language': ''}
df18 = pandas.read_csv(filenames[1], encoding="Windows-1252", sep=";", decimal=',')
df18.head()
DOMAINE | SOUS_DOMAINE | SOUS_DOMAINE_NIV2 | SOUS_DOMAINE_NIV3 | DOSSIER_CODE | DOSSIER_OBJET | TIERS_NOM | COMMUNE | COMMUNE_X | COMMUNE_Y | DOSSIER_DATE_NOTIFICATION | DOSSIER_DUREE | iNbDossiers | iOpérationCout | iMontantTotal | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | D1-Energie, changement climatique, qualité de ... | 1BA-Bâtiment | 1BA.01-Performance énergétique bâtiment | - | 17GAC0007 | Construction du groupe scolaire de Calvaire à ... | COMMUNE DE BAIE-MAHAULT | Guadeloupe | -61.539650 | 16.198191 | 23/05/2018 | 36 | 1 | 719730.0 | 20586.0 |
1 | D1-Energie, changement climatique, qualité de ... | 1BA-Bâtiment | 1BA.01-Performance énergétique bâtiment | - | 17MAC0054 | Lauréat AAP Rénovation Bâtiment - Rénovation é... | SA DE LA RAFFINERIE DES ANTILLES | Fort-de-France | -61.069188 | 14.641109 | 07/06/2018 | 26 | 1 | 488813.0 | 102154.0 |
2 | D1-Energie, changement climatique, qualité de ... | 1BA-Bâtiment | 1BA.01-Performance énergétique bâtiment | - | 17REC0125 | Projet PREBAT UFR santé | UNIVERSITE DE LA REUNION | La Réunion | 55.532483 | -21.133114 | 03/05/2018 | 36 | 1 | 14415686.0 | 194489.0 |
3 | D1-Energie, changement climatique, qualité de ... | 1BA-Bâtiment | 1BA.01-Performance énergétique bâtiment | - | 18GAC0013 | AAP BATEX 2017 - Réalisation de l'Hôtel Le Ré... | COMPAGNIE D'EXPLOITATION HOTELIERE DES ABYMES ... | Guadeloupe | -61.539650 | 16.198191 | 26/11/2018 | 36 | 1 | 7429000.0 | 182100.0 |
4 | D1-Energie, changement climatique, qualité de ... | 1BA-Bâtiment | 1BA.01-Performance énergétique bâtiment | - | 18GAC0015 | AAP BATEX 2017 - Construction du bâtiment CONF... | ELLAGUA | Guadeloupe | -61.539650 | 16.198191 | 27/07/2018 | 44 | 1 | 1418327.0 | 64511.0 |
Comparons les colonnes.
df18.columns
Index(['DOMAINE', 'SOUS_DOMAINE', 'SOUS_DOMAINE_NIV2', 'SOUS_DOMAINE_NIV3',
'DOSSIER_CODE', 'DOSSIER_OBJET', 'TIERS_NOM', 'COMMUNE', 'COMMUNE_X',
'COMMUNE_Y', 'DOSSIER_DATE_NOTIFICATION', 'DOSSIER_DUREE',
'iNbDossiers', 'iOpérationCout', 'iMontantTotal'],
dtype='object')
df19.columns
Index(['DOMAINE', 'SOUS_DOMAINE', 'SOUS_DOMAINE_NIV2', 'SOUS_DOMAINE_NIV3',
'DOSSIER_CODE', 'DOSSIER_OBJET', 'TIERS NOM', 'COMMUNE', 'COMMUNE_X',
'COMMUNE_Y', 'DOSSIER_DATE_NOTIFICATION', 'DOSSIER_DUREE',
'iOpérationCout', 'iMontant total'],
dtype='object')
Vues dynamiques¶
On regarde un peu les données.
columns = list(sorted(set(list(df18.columns) + list(df19.columns)))) + ['montant']
from ipywidgets import interact
@interact(annee=[2018, 2019], column=columns, x=(0, 10000000, 100000))
def show_rows(annee=2018, column='montant', x=100000):
if annee == 2018:
if column == 'montant':
column = 'iMontantTotal'
return df18[df18[column] >= x].sort_values(column).T
else:
if column == 'montant':
column = 'iMontant total'
return df19[df19[column] >= x].sort_values(column).T
interactive(children=(Dropdown(description='annee', options=(2018, 2019), value=2018), Dropdown(description='c…
Une carte¶
On regarde les projets sur la métropole en 2018.
lim_metropole = [-5, 10, 41, 52]
df18_metro = df18[((df18.COMMUNE_X >= lim_metropole[0]) & (df19.COMMUNE_X <= lim_metropole[1]) &
(df18.COMMUNE_Y >= lim_metropole[2]) & (df19.COMMUNE_Y <= lim_metropole[3]))]
df18.shape, df18_metro.shape
((1036, 15), (271, 15))
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(7,7))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
ax.set_extent(lim_metropole)
ax.add_feature(cfeature.OCEAN.with_scale('50m'))
ax.add_feature(cfeature.COASTLINE.with_scale('50m'))
ax.add_feature(cfeature.RIVERS.with_scale('50m'))
ax.add_feature(cfeature.BORDERS.with_scale('50m'), linestyle=':')
ax.scatter(df18_metro.COMMUNE_X, df18_metro.COMMUNE_Y,
s=df18_metro.iMontantTotal ** 0.5 / 20, alpha=0.5)
ax.set_title('France 2018\ninvestissements verts');
c:python372_x64libsite-packagescartopymplgeoaxes.py:388: MatplotlibDeprecationWarning: The 'inframe' parameter of draw() was deprecated in Matplotlib 3.3 and will be removed two minor releases later. Use Axes.redraw_in_frame() instead. If any parameter follows 'inframe', they should be passed as keyword, not positionally. inframe=inframe)
