Gérer les données manquantes

Nettoyer des données dans des bases de données 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 (utilisée pour les colonnes de chaînes)
Nettoyer des données dans des bases de données PostgreSQL

Causes des données manquantes

Qu'est-ce qui cause les données manquantes ? Casse-tête 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 de données PostgreSQL

Types de données manquantes

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

Nettoyer des données dans des bases de données PostgreSQL

Types de données manquantes

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

Nettoyer des données dans des bases de données PostgreSQL

Types de données manquantes

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

Nettoyer des données dans des bases de données 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 de données PostgreSQL

Types de données manquantes

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

Nettoyer des données dans des bases de données PostgreSQL

Repérer 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 de données PostgreSQL

Repérer 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 de données PostgreSQL

Corriger les données manquantes

  • Meilleure option : retrouver et ajouter les valeurs manquantes

    • Peut être irréalisable
    • Peut ne pas en valoir la peine
  • Imputer une valeur (moyenne, médiane, etc.)

  • Exclure des enregistrements

Nettoyer des données dans des bases de données 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 de données 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 de données PostgreSQL

Passons à la pratique !

Nettoyer des données dans des bases de données PostgreSQL

Preparing Video For Download...