Maison > développement back-end > Tutoriel Python > Comment imputer les valeurs manquantes chez les pandas à l'aide de moyens de groupe ?

Comment imputer les valeurs manquantes chez les pandas à l'aide de moyens de groupe ?

Susan Sarandon
Libérer: 2024-12-05 16:29:10
original
615 Les gens l'ont consulté

How to Impute Missing Values in Pandas Using Group Means?

Imputation NaN avec moyenne de groupe chez les pandas

Remplir les valeurs manquantes en utilisant la moyenne au sein de chaque groupe est une tâche courante lorsque l'on travaille avec des données tabulaires. Considérons le DataFrame suivant avec des valeurs manquantes :

df = pd.DataFrame({'value': [1, np.nan, np.nan, 2, 3, 1, 3, np.nan, 3],
                   'name': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C']})
Copier après la connexion

Notre objectif est d'imputer les valeurs manquantes avec la moyenne de chaque groupe en fonction de la colonne « nom ».

Pour y parvenir, nous peut utiliser les fonctions groupby() et transform() dans Pandas :

grouped = df.groupby('name').mean()
df["value"] = df.groupby("name").transform(lambda x: x.fillna(x.mean()))
Copier après la connexion

La fonction groupby() crée des groupes basés sur la colonne 'name' et Mean() calcule la valeur moyenne pour chaque groupe. La fonction transform() applique cette valeur moyenne à chaque ligne de chaque groupe et remplit les valeurs manquantes.

Le DataFrame résultant :

print(df)

  name  value
0    A      1
1    A      1
2    B      2
3    B      2
4    B      3
5    B      1
6    C      3
7    C      3
8    C      3
Copier après la connexion

Explication :

  • La fonction Mean() calcule la valeur moyenne au sein de chaque groupe, ce qui donne un nouveau DataFrame avec des groupes signifie.
  • La fonction transform() applique la méthode fillna() à chaque groupe, en utilisant la valeur moyenne comme valeur de remplissage. Cela remplit les valeurs manquantes avec la moyenne spécifique à chaque groupe.

Solution alternative :

Une autre approche de l'imputation des valeurs manquantes basée sur un groupe est :

impute_cols = ['value']
df[impute_cols] = df[impute_cols].fillna(df.groupby('name')[impute_cols].transform('mean'))
Copier après la connexion

Les deux méthodes obtiennent le même résultat, mais cette dernière approche offre plus de flexibilité lors de l'imputation de plusieurs colonnes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal