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])
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)
../_images/deal_flow_espace_vert_19_1.png