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 « J'aime »

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 « J'aime »

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 « J'aime »

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 « J'aime »

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,

@aufilduboamp 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.

Bonjour à toutes et à tous,

Après une pause un peu forcée depuis l’année dernière, je reprends mes travaux autour des données de marchés publics publiées via l’API BOAMP.

En effet, outre la publication quotidienne, quasi automatisée, des cartes de repérages des annonces par un croisement avec l’API BAN, peu de nouveautés de mon côté.

Cela à changé ce week-end, avec la publication sur datagouv des données 2021 aux formats XLS/CSV, permettant l’exploitation des data sur tableur.

https://www.data.gouv.fr/fr/organizations/aufilduboamp/

À ce stade, tous les tableaux ne sont pas encore tidy (une info par cellule), mais une bonne partie est faite et ça devrait être achevé en quelques semaines.

Une documentation ad-hoc va être nécessaire, j’y travaille aussi.
Dans les grandes lignes, la base est divisée en 24 tableaux, reprenant le plan des annonces JSON fournies par l’API (identité, objet, procédure, références, titulaires, annexes…).

Les tableaux peuvent être croisés via les colonnes/index de numéros d’annonces.

La siretisation a aussi repris son cours. De ce point de vue, il faut rendre hommage aux travaux sur les DECP, qui sont irremplaçables.


Afin de rendre un peu plus vivant ce projet, et rompre la monotonie de mes travaux, j’ai prévu de publier très rapidement des vidéos-tutos autour de ces tableaux CSV.

Ces données seront présentées et exploitées via une plateforme Binder préparée pour Python.
Binder est une solution en ligne libre et gratuite. Elle ne nécessite pas d’inscription.

Cela me parait adapté pour commencer, même si les temps de chargement sont parfois aléatoires.

Voir une vue statique ici ► https://nbviewer.jupyter.org/github/Semaine52/AuFilDuBoamp_Lab/blob/master/notebooks/BOAMP_TH_G_01_Reference.ipynb

Et la version dynamique là ► https://mybinder.org/v2/gh/Semaine52/AuFilDuBoamp_Lab/master?urlpath=lab/tree/notebooks/_Sommaire.ipynb


Si j’ai déjà pas mal d’idées de vidéos, je voudrais ici recueillir d’abord vos suggestions et demandes éventuelles afin de coller au mieux aux besoins actuels concernant les données de marchés publiées au BOAMP.

Je reprends donc le dialogue sur ce fil, à moins que les administrateurs de TeamOpenData ne préfèrent ouvrir un nouvel espace…

À très bientôt sur TOD!

Cordialement,

JMF

1 « J'aime »

Vous pouvez aussi vous même créer un nouveau sujet si vous le souhaitez @aufilduboamp !

Ça me semblait aller bien à la suite de notre conversation, même un peu ancienne. D’où mon hésitation.