Quelques exemples pour démarrer¶
In [ ]:
Copied!
# Import le client pour interagir avec l'API
from apifoncier import ApiFoncierClient
import plotly.io as pio
pio.renderers.default = "notebook"
# Import le client pour interagir avec l'API
from apifoncier import ApiFoncierClient
import plotly.io as pio
pio.renderers.default = "notebook"
Utilisation du client¶
In [2]:
Copied!
# On instancie le client
client = ApiFoncierClient()
# Exemples sur Cartofriches (commune de Lille)
friches = client.cartofriches.friches(code_insee="59350")
# Affichage des 5 premières friches du dataframe
friches.head()
# On instancie le client
client = ApiFoncierClient()
# Exemples sur Cartofriches (commune de Lille)
friches = client.cartofriches.friches(code_insee="59350")
# Affichage des 5 premières friches du dataframe
friches.head()
/cartofriches/friches: 100%|██████████| 138/138 [00:00<00:00, 69054.40enreg./s]
Out[2]:
| site_id | site_nom | site_type | site_adresse | site_statut | comm_nom | comm_insee | dep | proprio_personne | unite_fonciere_surface | unite_fonciere_refcad | source_nom | nature | urba_zone_type | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 59350_10190 | Teinturerie | inconnu | None | friche potentielle | LILLE | 59350 | 59 | personne morale | 234.171185 | ['59350000IK0025'] | Site Basias ou Basol non vérifié par le Cerema | MTE non vérifié | U |
| 1 | 59350_10192 | WILVIA MEUBLEX | inconnu | None | friche potentielle | LILLE | 59350 | 59 | personne morale | 234.171185 | ['59350000IK0025'] | Site Basias ou Basol non vérifié par le Cerema | MTE non vérifié | U |
| 2 | 59350_10209 | Atelier de mécanique | inconnu | None | friche potentielle | LILLE | 59350 | 59 | personne morale | 234.171185 | ['59350000IK0025'] | Site Basias ou Basol non vérifié par le Cerema | MTE non vérifié | U |
| 3 | 59350_10210 | Station Service Esso | inconnu | None | friche potentielle | LILLE | 59350 | 59 | personne morale | 234.171185 | ['59350000IK0025'] | Site Basias ou Basol non vérifié par le Cerema | MTE non vérifié | U |
| 4 | 59350_10211 | Assitance et Inspection Techniques | inconnu | None | friche potentielle | LILLE | 59350 | 59 | personne morale | 234.171185 | ['59350000IK0025'] | Site Basias ou Basol non vérifié par le Cerema | MTE non vérifié | U |
In [3]:
Copied!
# Equivalent avec un context-manager
with ApiFoncierClient() as client:
friches = client.cartofriches.friches(code_insee="59350")
friches.head()
# Equivalent avec un context-manager
with ApiFoncierClient() as client:
friches = client.cartofriches.friches(code_insee="59350")
friches.head()
/cartofriches/friches: 100%|██████████| 138/138 [00:00<00:00, 135047.59enreg./s]
Out[3]:
| site_id | site_nom | site_type | site_adresse | site_statut | comm_nom | comm_insee | dep | proprio_personne | unite_fonciere_surface | unite_fonciere_refcad | source_nom | nature | urba_zone_type | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 59350_10190 | Teinturerie | inconnu | None | friche potentielle | LILLE | 59350 | 59 | personne morale | 234.171185 | ['59350000IK0025'] | Site Basias ou Basol non vérifié par le Cerema | MTE non vérifié | U |
| 1 | 59350_10192 | WILVIA MEUBLEX | inconnu | None | friche potentielle | LILLE | 59350 | 59 | personne morale | 234.171185 | ['59350000IK0025'] | Site Basias ou Basol non vérifié par le Cerema | MTE non vérifié | U |
| 2 | 59350_10209 | Atelier de mécanique | inconnu | None | friche potentielle | LILLE | 59350 | 59 | personne morale | 234.171185 | ['59350000IK0025'] | Site Basias ou Basol non vérifié par le Cerema | MTE non vérifié | U |
| 3 | 59350_10210 | Station Service Esso | inconnu | None | friche potentielle | LILLE | 59350 | 59 | personne morale | 234.171185 | ['59350000IK0025'] | Site Basias ou Basol non vérifié par le Cerema | MTE non vérifié | U |
| 4 | 59350_10211 | Assitance et Inspection Techniques | inconnu | None | friche potentielle | LILLE | 59350 | 59 | personne morale | 234.171185 | ['59350000IK0025'] | Site Basias ou Basol non vérifié par le Cerema | MTE non vérifié | U |
Configuration du client¶
In [4]:
Copied!
# Jeton API pour authentification sur les endpoints restreints de l'API
token = "votre_jeton_api_ici"
# Dictionnaire pour la configuration du client
config = {
"api_key": token,
"progress_bar": False, # Désactive la barre de progression
"timeout": 10, # Délai d'attente pour les requêtes en secondes
"max_retries": 3, # Nombre maximum de tentatives en cas d'échec
"base_url": "https://apidf.k8-dev.cerema.fr",
}
# Instanciation du client avec la configuration
client = ApiFoncierClient(config)
# ou
with ApiFoncierClient(config) as client:
pass
# Jeton API pour authentification sur les endpoints restreints de l'API
token = "votre_jeton_api_ici"
# Dictionnaire pour la configuration du client
config = {
"api_key": token,
"progress_bar": False, # Désactive la barre de progression
"timeout": 10, # Délai d'attente pour les requêtes en secondes
"max_retries": 3, # Nombre maximum de tentatives en cas d'échec
"base_url": "https://apidf.k8-dev.cerema.fr",
}
# Instanciation du client avec la configuration
client = ApiFoncierClient(config)
# ou
with ApiFoncierClient(config) as client:
pass
Exemples d'utilisation¶
In [5]:
Copied!
# Récupération des transactions pour une commune spécifique (ici, Rouen) issues de DVF+ open-data
mutations = client.dvf_opendata.mutations(
code_insee="76540", anneemut_min=2020, anneemut_max=2024
)
# Répartition des mutations selon le type de bien
print("Nombre de mutations sur la période 2020-2024: ", mutations.shape[0])
mutations.value_counts("libtypbien")
# Récupération des transactions pour une commune spécifique (ici, Rouen) issues de DVF+ open-data
mutations = client.dvf_opendata.mutations(
code_insee="76540", anneemut_min=2020, anneemut_max=2024
)
# Répartition des mutations selon le type de bien
print("Nombre de mutations sur la période 2020-2024: ", mutations.shape[0])
mutations.value_counts("libtypbien")
Nombre de mutations sur la période 2020-2024: 16885
Out[5]:
libtypbien UN APPARTEMENT 10347 UNE MAISON 1909 BATI - INDETERMINE : Vefa sans descriptif 1182 ACTIVITE 1003 UNE DEPENDANCE 791 APPARTEMENT INDETERMINE 400 BATI MIXTE - LOGEMENT/ACTIVITE 349 DEUX APPARTEMENTS 333 DES DEPENDANCES 182 TERRAIN ARTIFICIALISE MIXTE 134 BATI - INDETERMINE : Vente avec volume(s) 126 DES MAISONS 49 TERRAIN DE TYPE TAB 36 BATI MIXTE - LOGEMENTS 27 TERRAIN DE TYPE RESEAU 4 TERRAIN D'AGREMENT 4 TERRAIN NON BATIS INDETERMINE 4 TERRAIN FORESTIER 2 TERRAIN VERGER 2 TERRAIN LANDES ET EAUX 1 Name: count, dtype: int64
In [6]:
Copied!
# Récupération des indicateurs de prix pour des communes en 2024
prix = client.indicateurs.prix(
codes=[
"75056", # Paris
"13055", # Marseille
"69123", # Lyon
"31555", # Toulouse
"06088", # Nice
"44109", # Nantes
"34172", # Montpellier
"67482", # Strasbourg
"33063", # Bordeaux
"59350", # Lille
],
echelle="communes",
annee="2024",
type_prix="annuel",
)
# Affichage des prix médians au m² des appartements anciens pour les principales villes françaises
prix[["libelle", "annee", "pxm2_median_cod1213"]].sort_values(
"pxm2_median_cod1213", ascending=False
).rename(
columns={
"libelle": "Commune",
"annee": "Année",
"pxm2_median_cod1213": "Prix médian (€/m2)",
}
)
# Récupération des indicateurs de prix pour des communes en 2024
prix = client.indicateurs.prix(
codes=[
"75056", # Paris
"13055", # Marseille
"69123", # Lyon
"31555", # Toulouse
"06088", # Nice
"44109", # Nantes
"34172", # Montpellier
"67482", # Strasbourg
"33063", # Bordeaux
"59350", # Lille
],
echelle="communes",
annee="2024",
type_prix="annuel",
)
# Affichage des prix médians au m² des appartements anciens pour les principales villes françaises
prix[["libelle", "annee", "pxm2_median_cod1213"]].sort_values(
"pxm2_median_cod1213", ascending=False
).rename(
columns={
"libelle": "Commune",
"annee": "Année",
"pxm2_median_cod1213": "Prix médian (€/m2)",
}
)
Out[6]:
| Commune | Année | Prix médian (€/m2) | |
|---|---|---|---|
| 8 | Paris | 2024 | 9835.290 |
| 0 | Nice | 2024 | 4893.620 |
| 7 | Lyon | 2024 | 4555.560 |
| 3 | Bordeaux | 2024 | 4346.940 |
| 2 | Toulouse | 2024 | 3685.710 |
| 6 | Lille | 2024 | 3621.670 |
| 4 | Montpellier | 2024 | 3541.840 |
| 5 | Nantes | 2024 | 3482.425 |
| 1 | Marseille | 2024 | 3305.115 |
In [7]:
Copied!
# Récupération des indicateurs de consommation d'espace pour la commune d'Arras (code INSEE 62041)
conso_espace = client.indicateurs.conso(
code="62041",
annee_min=2010,
echelle="communes",
)
# Affichage des surfaces artificialisées pour la commune d'Arras
conso_espace[["annee", "idcomtxt", "naf_arti"]].rename(
columns={
"idcomtxt": "Nom de la commune",
"naf_arti": "Surface artificialisée (m2)",
"annee": "Année",
}
)
# Récupération des indicateurs de consommation d'espace pour la commune d'Arras (code INSEE 62041)
conso_espace = client.indicateurs.conso(
code="62041",
annee_min=2010,
echelle="communes",
)
# Affichage des surfaces artificialisées pour la commune d'Arras
conso_espace[["annee", "idcomtxt", "naf_arti"]].rename(
columns={
"idcomtxt": "Nom de la commune",
"naf_arti": "Surface artificialisée (m2)",
"annee": "Année",
}
)
Out[7]:
| Année | Nom de la commune | Surface artificialisée (m2) | |
|---|---|---|---|
| 0 | 2010 | Arras | 6782 |
| 1 | 2011 | Arras | 6820 |
| 2 | 2012 | Arras | 37627 |
| 3 | 2013 | Arras | 260499 |
| 4 | 2014 | Arras | 15198 |
| 5 | 2015 | Arras | 15888 |
| 6 | 2016 | Arras | 20942 |
| 7 | 2017 | Arras | 19079 |
| 8 | 2018 | Arras | 44201 |
| 9 | 2019 | Arras | 53291 |
| 10 | 2020 | Arras | 4665 |
| 11 | 2021 | Arras | 0 |
| 12 | 2022 | Arras | 2974 |
| 13 | 2023 | Arras | 1710 |
In [8]:
Copied!
# Récupération des friches au format geojson pour la Moselle
geofriches = client.cartofriches.geofriches(coddep="57", format_output="dict")
# Affichage de la carte avec les friches
# (nécessite la bibliothèque folium)
import folium
m = folium.Map(location=[49.1193, 6.1752], zoom_start=11)
folium.GeoJson(
data=geofriches, # Dictionnaire GeoJSON
name="Friches",
style_function=lambda x: {
"color": "darkred",
"weight": 1,
"fillOpacity": 0.5,
},
tooltip=folium.features.GeoJsonTooltip(
fields=["site_nom"],
aliases=["Nom:"],
),
).add_to(m)
m
# Récupération des friches au format geojson pour la Moselle
geofriches = client.cartofriches.geofriches(coddep="57", format_output="dict")
# Affichage de la carte avec les friches
# (nécessite la bibliothèque folium)
import folium
m = folium.Map(location=[49.1193, 6.1752], zoom_start=11)
folium.GeoJson(
data=geofriches, # Dictionnaire GeoJSON
name="Friches",
style_function=lambda x: {
"color": "darkred",
"weight": 1,
"fillOpacity": 0.5,
},
tooltip=folium.features.GeoJsonTooltip(
fields=["site_nom"],
aliases=["Nom:"],
),
).add_to(m)
m
Out[8]:
Make this Notebook Trusted to load map: File -> Trust Notebook