Données de la Commande Publique au BOAMP en OpenData - « La Ville Fantôme de Cedex et autres Joyeusetés, ou les ravages de l'absence de référentiel. »

Aix-en-Provence le 22 septembre 2019,

Bonjour à toutes et à tous,

Occupé depuis un certain temps à faire rentrer tout le Bulletin officiel des annonces des marchés publics (BOAMP 2015-2019 schéma V230) dans Pandas (Python quoi), j’ai évidemment rencontré un certain nombre de difficultés.

Outre les ratés de l’API dès qu’on remonte dans le temps, c’est aussi la qualité des données qui a attiré mon attention lors des tests.

Si, pour les données essentielles un référentiel précis existe (https://www2.economie.gouv.fr/files/files/directions_services/daj/marches_publics/ouverture-donnees/referentiel_marches_publics.pdf), cela m’a l’air moins évident en ce qui concerne le BOAMP.

De ce fait, même si le cœur de mon activité n’est pas l’analyse des données, mais leur mise à disposition des autres, je redoute que la qualité parfois médiocre de celles-ci ne pose question quant au confort de réutilisation qui en découlera. Même si 80% de la DataAnalyse consiste à nettoyer les données, il y a des limites…

M’ouvrant sur le sujet sur Twitter, il m’a été suggéré de poster ici, sur #TeamOpenData, un Billet afin de partager cette préoccupation et d’échanger avec des pros du secteur. J’ai choisi de le rédiger sous la forme de Notebook Jupyter afin que le code soit réutilisable.

Volontairement court, Il est disponible en lecture sur GitHub:

Données de la Commande Publique au BOAMP en OpenData - «La Ville Fantôme de Cedex et autres Joyeusetés»

Une solution pour tester vous-mêmes ces données y est aussi proposée.

Par ailleurs, si ce format parait intéressant à certain(e)s d’entre vous, je me propose de faire une petite série de Billets autour l’API du BOAMP (https://www.data.gouv.fr/fr/datasets/api-boamp-beta/) pour les débutant(e)s en Jupyter/Python si tant est que personne ne l’aie fait avant moi.

Bonne lecture,

Jean-Marie FALVET.
Twitter : @Semaine52 et @AuFilDuBoamp

PS / Je remercie à nouveau J.Gombin pour ses conseils ainsi que pour le sous-titre du Billet, qui fera toujours ma joie…

4 Likes

Résolument optimiste, je décide de compléter le manque cruel de N°SIRET dans le BOAMP en me servant chez DataGouv (Déclaration de profil d’acheteur - PLACE ► https://www.data.gouv.fr/fr/datasets/declaration-de-profil-dacheteur-place/) afin d’opérer un croisement.

… mais voila, voila. je tombe sur un problème similaire:

Décidément.

1 Like

je crois qu’il y a à la DILA un projet de « siretisation » du BOAMP, peut-être que @RomainTales ou @col1m en savent un peu plus ?

1 Like

Merci pour cette précieuse info. Il y a bien aussi le code-id-national, mais il est peu utilisé. Je vais me renseigner.

Bonne fin de colloque.

Je n’en ai pas entendu parler… Mais PubliXL a écrit un billet dans lequel il décrit sa méthode pour siretiser une bonne partie du BOAMP : https://medium.com/@jlodoesit/how-i-improved-french-public-tenders-transparency-with-very-simple-data-engineering-tricks-9e2d09fba36

1 Like

Merci pour le lien.
J’ai parcouru l’article.

La méthode est efficace et on finit par arriver, comme l’auteur le présente lui-même, à un résultat de 60% minimum de siretisation en 3-4 étapes.

Personnellement, j’avais volontairement ignoré cette histoire de Siret, ayant déjà plus de 230 colonnes à gérer, les lots à isoler, etc.

Puis j’ai rencontré @samgoeta qui m’a convaincu que c’était tout sauf anecdotique.

Du coup, fin octobre, j’ai fait pour voir, à peu près les mêmes manips que dans l’article pour un résultat similaire. Je reprends justement ce travail cette semaine, avec un nouveau matériel qui va pouvoir encaisser les calculs et la taille des fichiers.

A plusieurs, on devrait y arriver…

La seule contrainte que je me donne, c’est de pouvoir tout faire sur JupyterLab afin de pouvoir partager facilement les méthodes et les outils ultérieurement (et aussi parce que je suis un fan du concept…).

Par ailleurs, en attendant l’ordi dans ma boite aux lettres en novembre, je me suis mis à potasser un peu plus sérieusement le CCP. Ça aide beaucoup bizarrement. Mais c’est une autre histoire…

Merci encore pour le lien. Je connaissais PubliXL, mais pas encore cet article.

Cordialement,

@Semaine52_JMF Si par hasard c’est envisageable, publier un mapping annonce BOAMP+SIRET titulaires et acheteurs sur data.gouv.fr ça serait chouette ! Par exemple en JSON avec une seule annonce :

[
  {
    "annonceId": "12343TFD",
    "type": "appel d'offres",
    "acheteurs": [ 
      {
        "siret": "812334822300015",
        "nom": "Mairie de Saint-Ouen"
      }
    ], 
    "titulaires": [ 
      {
        "siret": "81223113200034",  
        "nom": "COLIN MAUDRY"        
      }
    ]
  }
]

Ça pourrait en effet rendre service.

J’ai «profité» du confinement pour réaliser la base d’un projet de «site web» bâti pour les données BOAMP complètement conçu pour Binder (–> Aperçu NBViewer) qui me tenait à cœur.

Ça se présente pas mal.

Ces prochains jours, je commence Gammes & Arpèges avec l’exploration générale du premier trimestre 2020 avec Pandas.

Suivront des requêtes plus ciblées, et peut-être un Serious Game quand j’aurais pris un peu plus d’expérience.

Dans mon programme, il est prévu d’utiliser le moment venu ton travail avec Etalab sur les DECP, ainsi que la Base Sirène.

A partir de là, on pourra voir ce qu’il est possible de faire.

Sur les acheteurs, les croisements se font assez facilement, même si du travail à la main est nécessaire.

Sur les attributaires, c’est une autre paire de manches avec le BOAMP. Les homonymes sont nombreux, les noms et SIRET peuvent changer avec le temps, et pour couronner le tout les infos sont souvent parcellaires.

Donc, je crois qu’on va en reparler plus précisément quand le sujet sera à l’ordre du jour.

Ce serait en effet vraiment bien qu’on puisse disposer de quelque chose d’intéressant sur DataGouvFr sur le modèle que tu suggères.

On se tient informés si tu veux, ici et sur Twitter https://twitter.com/AuFilDuBoampLab .

À bientôt.