Documentation complÚte et librairie Python pour accéder aux données ouvertes françaises via data.gouv.fr
Ce repository fournit une documentation complÚte et une librairie Python pour travailler avec les données publiques françaises de data.gouv.fr.
- đ Une documentation dĂ©taillĂ©e de l'API data.gouv.fr et des datasets
- đ Une librairie Python rĂ©utilisable (
datagouv.py) - đ Des datasets documentĂ©s (IQVIA vaccinations, qualitĂ© de l'eau, etc.)
- đĄ Des exemples de code prĂȘts Ă l'emploi
- đ Des liens vers le MCP officiel data.gouv.fr
Pour des commandes interactives dans Claude Code (requĂȘtes SQL, langage naturel), utilisez le MCP officiel data.gouv.fr.
- đ Recherche intelligente de datasets via l'API officielle
- đ„ TĂ©lĂ©chargement automatique avec mise en cache
- đ§č Parsing avancĂ© des formats français (CSV
;, dates DD/MM/YYYY, dĂ©cimales,) - đ Chargement direct dans pandas DataFrames
- đ Documentation complĂšte des datasets les plus utilisĂ©s
- đ Librairie Python rĂ©utilisable et testĂ©e
- đĄ Exemples pratiques pour chaque cas d'usage
git clone https://github.com/benoitvx/data-gouv-skill.git
cd data-gouv-skillpip install pandas requests openpyxlfrom skills.data-gouv.lib.datagouv import DataGouvAPI
api = DataGouvAPI()
results = api.search_datasets("vaccination")Parcourez la documentation directement sur GitHub :
- SKILL.md - Documentation principale
- GUIDE_CHOIX.md - Choisir entre lib Python et MCP
- Datasets - Documentation détaillée des datasets
from skills.data-gouv.lib.datagouv import DataGouvAPI
api = DataGouvAPI()
df = api.load_csv(url, cache=True) # Cache, offline, portableIdéal pour :
- Scripts automatisés
- Développement local
- Analyse offline
- Notebooks Jupyter
"Dans le dataset IQVIA, trouve les dĂ©partements oĂč
les vaccinations ont augmenté de plus de 50%"
Idéal pour :
- RequĂȘtes SQL complexes
- Questions en langage naturel
- Création de datasets
- Intégration Claude Desktop/Cursor
đ Guide complet : GUIDE_CHOIX.md
đ MCP officiel : https://github.com/datagouv/datagouv-mcp
from skills.data-gouv.lib.datagouv import DataGouvAPI
# Initialiser l'API
api = DataGouvAPI()
# Rechercher des datasets
results = api.search_datasets("vaccination", organization="iqvia-france")
for dataset in results['data']:
print(f"đ {dataset['title']}")
# Charger directement un CSV
df = api.load_csv("https://www.data.gouv.fr/fr/datasets/r/resource-id")
print(f"â
Chargé : {len(df)} lignes")
# Obtenir la derniĂšre ressource d'un dataset
resource = api.get_latest_resource("dataset-id", format="csv")
df = api.load_csv(resource['url'])Le skill inclut une documentation détaillée pour les datasets les plus utilisés :
- Suivi hebdomadaire des campagnes de vaccination
- Détails par région, département, ùge et type de site
- Données depuis 2019
- Résultats des contrÎles sanitaires commune par commune
- Plus de 300,000 analyses par an
- ParamĂštres microbiologiques, chimiques et physico-chimiques
- Calendrier scolaire par zone académique
- Code Officiel Géographique (INSEE)
- Population légale des communes
- Qualité de l'air
- Production d'énergie renouvelable
- Stations de recharge électrique
from skills.data-gouv.lib.datagouv import DataGouvAPI
import pandas as pd
api = DataGouvAPI()
# Charger les données de vaccination
results = api.search_datasets("vaccination grippe 2025-2026", organization="iqvia-france")
dataset_id = results['data'][0]['id']
resource = api.get_latest_resource(dataset_id, format='csv')
df = api.load_csv(resource['url'])
# Filtrer par région
df_na = df[df['code_region'] == '75'] # Nouvelle-Aquitaine
total = df_na['nb_doses'].sum()
print(f"đ Total vaccinations en Nouvelle-Aquitaine : {total:,}")# Charger les donnĂ©es
dataset_id = "resultats-du-controle-sanitaire-de-leau-distribuee-commune-par-commune"
dataset = api.get_dataset(dataset_id)
# Obtenir les données pour La Rochelle (17300)
# ... (voir documentation complĂšte dans skills/data-gouv/datasets/eau-potable.md)
# Calculer le taux de conformité
taux = (results['conforme'] == 'O').sum() / len(results) * 100
print(f"â
Taux de conformité : {taux:.1f}%")# Charger 2 campagnes
df_2025 = api.load_csv(url_2025)
df_2024 = api.load_csv(url_2024)
# Comparer
evolution = ((df_2025['nb_doses'].sum() - df_2024['nb_doses'].sum()) / df_2024['nb_doses'].sum()) * 100
print(f"đ Ăvolution : {evolution:+.1f}%")data-gouv-skill/
âââ skills/data-gouv/
â âââ SKILL.md # Documentation principale (point d'entrĂ©e)
â â
â âââ lib/
â â âââ datagouv.py # Librairie Python
â â
â âââ datasets/ # Documentation dĂ©taillĂ©e
â â âââ iqvia-vaccination.md
â â âââ eau-potable.md
â â âââ ...
â â
â âââ examples/ # Exemples de code
â âââ vaccination_analysis.py
â âââ water_quality.py
â âââ ...
â
âââ scripts/
â âââ sync-datasets.sh # Synchroniser les mĂ©tadonnĂ©es
â âââ update-metadata.py # Mettre Ă jour la documentation
â
âââ README.md # Ce fichier
âââ LICENSE.md # Licence Ouverte 2.0
class DataGouvAPI:
def __init__(self, cache_dir: Optional[str] = None)
def search_datasets(
self, query: str,
organization: Optional[str] = None,
tag: Optional[str] = None,
page_size: int = 20
) -> Dict[str, Any]
def get_dataset(self, dataset_id: str) -> Optional[Dict[str, Any]]
def get_latest_resource(
self, dataset_id: str,
format: str = 'csv'
) -> Optional[Dict[str, Any]]
def download_resource(
self, resource_url: str,
cache: bool = True
) -> Optional[bytes]
def load_csv(
self, resource_url: str,
sep: Optional[str] = None,
encoding: Optional[str] = None,
decimal: str = ','
) -> Optional[pd.DataFrame]def quick_search(query: str, limit: int = 5) -> List[Dict[str, Any]]
def load_dataset_csv(dataset_id: str, resource_index: int = 0) -> Optional[pd.DataFrame]api = DataGouvAPI(cache_dir="~/.cache/datagouv")
df = api.load_csv(url) # cache automatique# Charger par chunks
chunks = []
for chunk in pd.read_csv(url, chunksize=10000, sep=';'):
chunk_filtered = chunk[chunk['region'] == 'Nouvelle-Aquitaine']
chunks.append(chunk_filtered)
df = pd.concat(chunks)df = api.load_csv(url)
if df is not None:
print(f"â {len(df)} lignes, {len(df.columns)} colonnes")
else:
print(f"â Erreur de chargement")Les contributions sont les bienvenues !
- Créer
skills/data-gouv/datasets/nom-dataset.md - Suivre le modĂšle des datasets existants
- Inclure des exemples de code concrets
- Soumettre une pull request
- Utiliser le format markdown
- Inclure des exemples de code testés
- Documenter les colonnes importantes
- Ajouter des cas d'usage pratiques
- INSEE : Statistiques, population, économie
- MinistÚre de la Santé : Santé publique, qualité de l'eau
- IQVIA France : Campagnes de vaccination
- Santé Publique France : Surveillance sanitaire
- MinistĂšre de l'Ăducation : DonnĂ©es scolaires
Ce projet est publié sous Licence Ouverte 2.0 (compatible Creative Commons BY).
Vous ĂȘtes libre de :
- â RĂ©utiliser les donnĂ©es et le code
- â Modifier et adapter
- â Usage commercial autorisĂ©
Sous condition de :
- đ Mentionner la paternitĂ© (source + date)
- data.gouv.fr pour l'API et les données ouvertes
- Etalab pour la plateforme et la Licence Ouverte
- La communauté des producteurs de données publiques
- Claude Code par Anthropic
- đ Bug reports : GitHub Issues
- đĄ Feature requests : GitHub Discussions
- đ§ Contact : benoitvinceneux@gmail.com
Auteur : Benoit Vinceneux
Version : 2.1.1
DerniĂšre mise Ă jour : 2025-12-02
â Si ce projet vous est utile, n'hĂ©sitez pas Ă mettre une Ă©toile sur GitHub !