Traiter les données manquantes

Analyse exploratoire de données en Python

George Boorman

Curriculum Manager, DataCamp

Pourquoi les données manquantes posent problème ?

  • Affecte les distributions
    • Grandeurs manquantes chez les étudiant·e·s les plus grand·e·s
  • Échantillon moins représentatif
    • Certains groupes sur/sous-représentés, p. ex. données manquantes sur les plus âgé·e·s
  • Peut mener à de mauvaises conclusions

Distribution de la taille : échantillon vs population; l'échantillon a un maximum et une moyenne plus faibles

Analyse exploratoire de données en Python

Données sur les emplois des pros des données

Colonne Description Type de données
Working_Year Année d'obtention des données Flottant
Designation Titre du poste Chaîne
Experience Niveau d'expérience, p. ex. "Mid", "Senior" Chaîne
Employment_Status Type de contrat, p. ex. "FT", "PT" Chaîne
Employee_Location Pays d'emploi Chaîne
Company_Size Taille de l'entreprise, p. ex. "S", "M", "L" Chaîne
Remote_Working_Ratio Pourcentage de travail à distance Entier
Salary_USD Salaire en dollars US Flottant
Analyse exploratoire de données en Python

Salaire selon l'expérience

Boîtes à moustaches des salaires par niveau d'expérience, jeu nettoyé ; plafond près de 600000 $

Boîtes à moustaches des salaires par niveau d'expérience, jeu avec valeurs manquantes ; plafond près de 450000 $

Analyse exploratoire de données en Python

Vérifier les valeurs manquantes

print(salaries.isna().sum())
Working_Year            12
Designation             27
Experience              33
Employment_Status       31
Employee_Location       28
Company_Size            40
Remote_Working_Ratio    24
Salary_USD              60
dtype: int64
Analyse exploratoire de données en Python

Stratégies pour traiter les données manquantes

  • Supprimer les valeurs manquantes
    • 5 % ou moins du total
  • Imputer moyenne, médiane, mode
    • Selon la distribution et le contexte
  • Imputer par sous-groupe
    • Les niveaux d'expérience ont des médianes de salaire différentes
Analyse exploratoire de données en Python

Suppression des valeurs manquantes

threshold = len(salaries) * 0.05
print(threshold)
30
Analyse exploratoire de données en Python

Suppression des valeurs manquantes

cols_to_drop = salaries.columns[salaries.isna().sum() <= threshold]

print(cols_to_drop)
Index(['Working_Year', 'Designation', 'Employee_Location',
       'Remote_Working_Ratio'],
      dtype='object')
salaries.dropna(subset=cols_to_drop, inplace=True)
Analyse exploratoire de données en Python

Imputer une statistique sommaire

cols_with_missing_values = salaries.columns[salaries.isna().sum() > 0]
print(cols_with_missing_values)
Index(['Experience', 'Employment_Status', 'Company_Size', 'Salary_USD'], 
    dtype='object')
for col in cols_with_missing_values[:-1]:
    salaries[col].fillna(salaries[col].mode()[0])
Analyse exploratoire de données en Python

Vérifier ce qui reste à imputer

print(salaries.isna().sum())
Working_Year             0
Designation              0
Experience               0
Employment_Status        0
Employee_Location        0
Company_Size             0
Remote_Working_Ratio     0
Salary_USD              41
Analyse exploratoire de données en Python

Imputer par sous-groupe

salaries_dict = salaries.groupby("Experience")["Salary_USD"].median().to_dict()

print(salaries_dict)
{'Entry': 55380.0, 'Executive': 135439.0, 'Mid': 74173.5, 'Senior': 128903.0}
Analyse exploratoire de données en Python

Imputer par sous-groupe

salaries["Salary_USD"] = salaries["Salary_USD"].fillna(salaries["Experience"].map(salaries_dict))
Analyse exploratoire de données en Python

Plus de valeurs manquantes !

print(salaries.isna().sum())
Working_Year            0
Designation             0
Experience              0
Employment_Status       0
Employee_Location       0
Company_Size            0
Remote_Working_Ratio    0
Salary_USD              0
dtype: int64
Analyse exploratoire de données en Python

Passons à la pratique !

Analyse exploratoire de données en Python

Preparing Video For Download...