Skip to content

dateNotification : dates JJ-MM-AA interprétées comme AAAA-MM-JJ (730 marchés) #191

Description

@LucetteZANOU

Bonjour,

Je construis un outil de contrôles d'audit qui consomme le fichier consolidé
decp.parquet. En profilant les données j'ai isolé un défaut de date qui semble venir
d'une conversion, et qui n'est pas couvert par le mécanisme montant_anomalie.

Tous les chiffres ci-dessous portent sur le fichier publié tel quel, soit 3 250 932 lignes.

Constat

730 marchés portent une dateNotification dont l'année est comprise entre 0001 et 0031.

Exemples tels quels dans le fichier :

uid dateNotification sourceDataset
200071397000182021000902_38420000 0031-05-22 pes_marche_legacy
213502362000142021210101_09000000 0030-11-22 pes_marche_legacy
21830112500017202121623ST0302_45321000 0030-11-22 decp_colmo

Diagnostic proposé

Le format source semble être JJ-MM-AA, lu comme AAAA-MM-JJ. 0031-05-22
correspondrait donc au 31 mai 2022.

Deux éléments appuient l'hypothèse :

  • le composant lu comme année ne prend aucune valeur hors de l'intervalle 1–31,
    soit exactement la plage d'un jour du mois ;
  • le composant lu comme jour vaut 22 dans 528 cas sur 730, puis 25, 24 et 20, ce qui
    correspondrait aux années 2022, 2025, 2024 et 2020.

Dix sourceDataset sont concernés, en tête pes_marche_legacy (387), decp_colmo (110),
scrap_marches-securises.fr (98) et pes_marche_2024 (97). Cette répartition fait plutôt
penser à une fonction de conversion partagée qu'à un connecteur particulier.

Effets de bord

  • 96 582 marchés ont une datePublicationDonnees antérieure à leur dateNotification,
    avec un écart minimal de −732 656 jours
  • 610 dates de publication sont antérieures à 2018

Reproduction

import pandas as pd

df = pd.read_parquet("decp.parquet", columns=["uid", "dateNotification", "sourceDataset"])
annee = pd.to_datetime(df.dateNotification, errors="coerce").dt.year
suspects = df[annee.between(1, 31)]

print(len(suspects))
print(suspects.sourceDataset.value_counts())

Version testée : decp.parquet publié le 2026-08-27, SHA-1
3d1a1ab76a4e2eff7799ff8d4f4fd5637a29bbb8.

Question

Les anomalies de montant sont signalées via montant_anomalie, mais seuls 34 des 730
marchés concernés y apparaissent. Serait-il envisageable d'étendre ce mécanisme aux dates,
avec une colonne date_anomalie ?

Je peux proposer une PR si la piste vous paraît juste — dites-moi simplement où se situe la
conversion des dates dans la chaîne.

Merci pour ce jeu de données, qui est par ailleurs remarquablement propre sur les montants :
1 251 des 1 252 montants supérieurs à 10 Md€ et 623 des 628 montants négatifs sont déjà correctement signalés.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions