Support IVY : Encyclopédie #1 et site d'informations, Conseils, Tutorials, Guides et plus
  • Accueil
  • Astuces
  • Magazine
    • Conseil en relations
      • Astuces
    • Rédaction & écriture
    • Web Design
    • Réseaux sociaux
      • Facebook
  • Lifestyle
    • Food
  • Ressources
    • Questions & Réponses
    • Graphique
      • PixelArt
No Result
View All Result
Support IVY : Encyclopédie #1 et site d'informations, Conseils, Tutorials, Guides et plus
  • Accueil
  • Astuces
  • Magazine
    • Conseil en relations
      • Astuces
    • Rédaction & écriture
    • Web Design
    • Réseaux sociaux
      • Facebook
  • Lifestyle
    • Food
  • Ressources
    • Questions & Réponses
    • Graphique
      • PixelArt
Support IVY : Encyclopédie #1 et site d'informations, Conseils, Tutorials, Guides et plus
No Result
View All Result
Home Programmation

Pandas astuces pour imputer des données manquantes

5 juin 2020
in Programmation
Reading Time: 10 mins read
Pandas astuces pour imputer des données manquantes

Table des matières

ArticlesA lire

Eh bien, cela s’est rapidement développé – Construire de meilleurs produits avec l’escalade

Eh bien, cela s’est rapidement développé – Construire de meilleurs produits avec l’escalade

Revue Atomicrops – SUPERJUMP – Moyen

Revue Atomicrops – SUPERJUMP – Moyen

Application des principes heuristiques pour évaluer un jeu mobile

Un moyen super facile de faire des validations EditText dans Android

Pandas astuces pour imputer des données manquantes

Jetons un œil au vin fabriqué aux États-Unis. Nous pouvons définir un bloc de données contenant uniquement des vins «américains»:

df_US = df[df['country']=='US']

Maintenant, imprimons le nombre de valeurs manquantes:

print(df_US.isnull().sum())

Nous constatons qu’il manque 239 valeurs de «prix» dans les données sur les vins «américains». Pour remplir les valeurs manquantes avec la moyenne correspondant aux prix aux États-Unis, nous procédons comme suit:

df_US['price'].fillna(df_US['price'].mean(), inplace = True)

Supposons maintenant que nous voulions le faire pour les valeurs manquantes dans chaque pays. Dans une boucle for, nous pouvons définir des trames de données spécifiques au pays:

for i in list(set(df['country'])):
df_country = df[df['country']== country]

Ensuite, nous pouvons remplir les valeurs manquantes dans ces trames de données spécifiques au pays avec leurs prix moyens respectifs:

for i in list(set(df['country'])):
df_country = df[df['country']== country]
df_country['price'].fillna(df_country['price'].mean(),inplace = True)

Nous ajoutons ensuite le résultat à une liste que nous appellerons « cadres »

frames = []
for i in list(set(df['country'])):
df_country = df[df['country']== country]
df_country['price'].fillna(df_country['price'].mean(),inplace = True)
frames.append(df_country)

Enfin, nous concaténons la liste résultante de trames de données:

frames = []
for i in list(set(df['country'])):
df_country = df[df['country']== i]
df_country['price'].fillna(df_country['price'].mean(),inplace = True)
frames.append(df_country)
final_df = pd.concat(frames)

Maintenant, si nous imprimons le nombre de valeurs de prix manquantes avant l’imputation, nous obtenons:

print(df.isnull().sum())    

Et après imputation:

print(final_df.isnull().sum())

Nous constatons que toutes les valeurs manquantes sauf une ont été imputées. Cela correspond aux vins d’Egypte qui ne disposent pas de données de prix. Nous pouvons résoudre ce problème en vérifiant la longueur de la trame de données dans la boucle for et en n’imputant la moyenne spécifique au pays que si la longueur est supérieure à un. Si la longueur est égale à 1, nous imputons la moyenne dans tous les pays:

frames = []
for i in list(set(df['country'])):
df_country = df[df['country']== i]
if len(df_country) > 1:
df_country['price'].fillna(df_country['price'].mean(),inplace = True)
else:
df_country['price'].fillna(df['price'].mean(),inplace = True)
frames.append(df_country)
final_df = pd.concat(frames)

En imprimant le résultat, nous constatons que toutes les valeurs ont été imputées pour la colonne « prix »:

print(final_df.isnull().sum())

Nous pouvons définir une fonction qui généralise cette logique. Notre fonction prendra des variables correspondant à une colonne numérique et une colonne catégorielle:

def impute_numerical(categorical_column, numerical_column):
frames = []
for i in list(set(df[categorical_column])):
df_category = df[df[categorical_column]== i]
if len(df_category) > 1:
df_category[numerical_column].fillna(df_category[numerical_column].mean(),inplace = True)
else:
df_category[numerical_column].fillna(df[numerical_column].mean(),inplace = True)
frames.append(df_category)
final_df = pd.concat(frames)
return final_df

Nous effectuons l’imputation à l’aide de notre fonction en exécutant ce qui suit:

impute_price  = impute_numerical('country', 'price')
print(impute_price.isnull().sum())

De même, nous pouvons définir une fonction qui impute des valeurs catégorielles. Cette fonction prendra deux variables colonnes correspondantes avec des valeurs catégorielles.

def impute_categorical(categorical_column1, categorical_column2):
cat_frames = []
for i in list(set(df[categorical_column1])):
df_category = df[df[categorical_column1]== i]
if len(df_category) > 1:
df_category[categorical_column2].fillna(df_category[categorical_column2].mode()[0],inplace = True)
else:
df_category[categorical_column2].fillna(df[categorical_column2].mode()[0],inplace = True)
cat_frames.append(df_category)
cat_df = pd.concat(cat_frames)
return cat_df

Nous pouvons imputer les valeurs manquantes de « nom de dégustateur » avec le mode dans chaque pays respectif:

impute_taster = impute_categorical('country', 'taster_name')
print(impute_taster.isnull().sum())

Nous constatons que la colonne ‘taster_name’ ne contient plus aucune valeur manquante. Je m’arrête ici, mais n’hésitez pas à jouer avec les données et à coder vous-même.

CONCLUSIONS

Pour résumer, dans cet article, nous avons discuté de la façon de gérer les valeurs manquantes à l’aide de la bibliothèque Pandas. Premièrement, nous avons discuté de la façon d’imputer les valeurs numériques manquantes avec la valeur moyenne sur l’ensemble des données. Nous avons ensuite examiné comment effectuer des imputations numériques spécifiques à une catégorie. Enfin, nous avons montré comment imputer des valeurs catégorielles manquantes avec le mode correspondant à une autre colonne catégorielle. J’espère que vous avez trouvé cet article utile / intéressant. Le code de cet article est disponible sur GitHub. Merci pour la lecture!

ShareTweetPin

Related Posts

Eh bien, cela s’est rapidement développé – Construire de meilleurs produits avec l’escalade
Programmation

Eh bien, cela s’est rapidement développé – Construire de meilleurs produits avec l’escalade

Eh bien, cela s'est rapidement développé - Construire de meilleurs produits avec l'escalade Une fois les plaisanteries de base terminées,...

Revue Atomicrops – SUPERJUMP – Moyen
Android

Revue Atomicrops – SUPERJUMP – Moyen

Revue Atomicrops - SUPERJUMP - Moyen L'agriculture est destinée à compléter l'action, et non l'inverse.

Programmation

Application des principes heuristiques pour évaluer un jeu mobile

Application des principes heuristiques pour évaluer un jeu mobile photo par Austin Distel sur Unsplash photo par Halacious sur Unsplash...

Android

Un moyen super facile de faire des validations EditText dans Android

Un moyen super facile de faire des validations EditText dans Android Ici, nous obtenons le TextInputLayout de TextInputEditText en utilisant...

Next Post
Prédiction et analyse complètes du taux de désabonnement – Mandy Gu

Prédiction et analyse complètes du taux de désabonnement - Mandy Gu

Biopipeline ouverte – Muhammad Umar Ali

Biopipeline ouverte - Muhammad Umar Ali

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

  • Accueil
  • Questions & Réponses
  • Science
  • Astuces
  • Business
  • Cryptomonnaie
  • Design
  • Marketing
  • Programmation
  • Politique de confidentialité
  • A propos
  • Contact

© 2018-2020 SupportIVY - Premium Magazine.

No Result
View All Result
  • Accueil
  • Astuces
  • Magazine
    • Conseil en relations
      • Astuces
    • Rédaction & écriture
    • Web Design
    • Réseaux sociaux
      • Facebook
  • Lifestyle
    • Food
  • Ressources
    • Questions & Réponses
    • Graphique
      • PixelArt