Gérer les données manquantes

Nettoyer des données dans des bases PostgreSQL

Darryl Reeves, Ph.D.

Industry Assistant Professor, New York University

Données manquantes (exemple)

 ... |       name       | score |               inspection_type                | ... 
 ----+------------------+-------+----------------------------------------------+-----
 ... | ...              | ...   | ...                                          | ...
 ... | SCHNIPPERS       | 27    | Cycle Inspection / Initial Inspection        | ...
 ... | ATOMIC WINGS     |       | Administrative Miscellaneous / Re-inspection | ...
 ... | WING LING        | 44    | Cycle Inspection / Initial Inspection        | ...
 ... | JUAN VALDEZ CAFE | 24    | Cycle Inspection / Initial Inspection        | ...
 ... | FULTON GRAND     | 22    | Cycle Inspection / Initial Inspection        | ...
 ... | ...              | ...   | ...                                          | ...

Représentations des valeurs manquantes :

  • NULL (général)
  • '' – chaîne vide (pour les colonnes de type chaîne)
Nettoyer des données dans des bases PostgreSQL

Causes des données manquantes

Quelles sont les causes des données manquantes ? Puzzle noir avec une pièce manquante

  • Image montrant un cerveau humain dans une silhouette de tête erreur humaine
  • Image d'engrenages problèmes systémiques
Nettoyer des données dans des bases PostgreSQL

Types de données manquantes

Trois images des différents types de données avec chaque catégorie et abréviation indiquées

Nettoyer des données dans des bases PostgreSQL

Types de données manquantes

Trois images des différents types de données avec chaque catégorie et abréviation indiquées et la description de « Missing Completely at Random » ajoutée

Nettoyer des données dans des bases PostgreSQL

Types de données manquantes

Trois images des différents types de données avec chaque catégorie et abréviation indiquées et la description de « Missing at Random » ajoutée

Nettoyer des données dans des bases PostgreSQL

Types de données manquantes

 ... |       name       | score |               inspection_type                | ... 
 ----+------------------+-------+----------------------------------------------+-----
 ... | ...              | ...   | ...                                          | ...
 ... | SCHNIPPERS       | 27    | Cycle Inspection / Initial Inspection        | ...
 ... | ATOMIC WINGS     |       | Administrative Miscellaneous / Re-inspection | ...
 ... | WING LING        | 44    | Cycle Inspection / Initial Inspection        | ...
 ... | JUAN VALDEZ CAFE | 24    | Cycle Inspection / Initial Inspection        | ...
 ... | FULTON GRAND     | 22    | Cycle Inspection / Initial Inspection        | ...
 ... | ...              | ...   | ...                                          | ...
Nettoyer des données dans des bases PostgreSQL

Types de données manquantes

Trois images des différents types de données avec chaque catégorie et abréviation indiquées et la description de « Missing Not at Random » ajoutée

Nettoyer des données dans des bases PostgreSQL

Identifier les données manquantes

SELECT
  *
FROM
  restaurant_inspection
WHERE
  score IS NULL;
SELECT
  COUNT(*)
FROM
  restaurant_inspection
WHERE
  score IS NULL;
Nettoyer des données dans des bases PostgreSQL

Identifier les données manquantes

SELECT
  inspection_type,
  COUNT(*) as count
FROM
  restaurant_inspection
WHERE
  score IS NULL
GROUP BY
  inspection_type
ORDER BY
  count DESC;
                  inspection_type                  | count 
 --------------------------------------------------+-------
 Administrative Miscellaneous / Initial Inspection |   104
 Smoke-Free Air Act / Initial Inspection           |    29
 Calorie Posting / Initial Inspection              |    22
 Administrative Miscellaneous / Re-inspection      |    22
 Trans Fat / Initial Inspection                    |    18
 Smoke-Free Air Act / Re-inspection                |     7
 Trans Fat / Re-inspection                         |     3
Nettoyer des données dans des bases PostgreSQL

Corriger les données manquantes

  • Meilleure option : retrouver et ajouter les valeurs manquantes

    • Peut être irréalisable
    • Peut ne pas valoir l'effort
  • Fournir une valeur (moyenne, médiane, etc.)

  • Exclure des enregistrements

Nettoyer des données dans des bases PostgreSQL

Remplacer les valeurs manquantes avec COALESCE()

COALESCE(arg1, [arg2, ...])

SELECT
  name,
  COALESCE(score, -1),
  inspection_type
FROM
  restaurant_inspection;
Nettoyer des données dans des bases PostgreSQL

Remplacer les valeurs manquantes avec COALESCE()

 ... |       name       | score |               inspection_type                | ... 
 ----+------------------+-------+----------------------------------------------+-----
 ... | ...              | ...   | ...                                          | ...
 ... | SCHNIPPERS       | 27    | Cycle Inspection / Initial Inspection        | ...
 ... | ATOMIC WINGS     | -1    | Administrative Miscellaneous / Re-inspection | ...
 ... | WING LING        | 44    | Cycle Inspection / Initial Inspection        | ...
 ... | JUAN VALDEZ CAFE | 24    | Cycle Inspection / Initial Inspection        | ...
 ... | FULTON GRAND     | 22    | Cycle Inspection / Initial Inspection        | ...
 ... | ...              | ...   | ...                                          | ...
Nettoyer des données dans des bases PostgreSQL

Passons à la pratique !

Nettoyer des données dans des bases PostgreSQL

Preparing Video For Download...