Maison > développement back-end > Tutoriel Python > Comment faire fondre et manipuler des DataFrames Pandas à l'aide de la fonction `melt()` ?

Comment faire fondre et manipuler des DataFrames Pandas à l'aide de la fonction `melt()` ?

Susan Sarandon
Libérer: 2024-12-17 07:14:24
original
625 Les gens l'ont consulté

How Do I Melt and Manipulate Pandas DataFrames Using the `melt()` Function?

Comment faire fondre une trame de données pandas ?

La fusion d'une trame de données pandas implique de la convertir d'un format large avec plusieurs colonnes en un format long avec deux colonnes principales : « variable » et « valeur ». Ceci peut être réalisé en utilisant la fonction melt().

Problème 1 : Fusionner une trame de données pour transposer des colonnes en lignes

df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
Copier après la connexion

Cela convertira la trame de données d'origine en le format souhaité, avec des colonnes pour « Nom », « Âge », « Sujet » et « Notes ». La colonne « Sujet » contiendra les en-têtes de colonne d'origine, tandis que « Notes » contiendra les valeurs correspondantes.

Problème 2 : Filtrage des données fondues pour inclure des colonnes spécifiques

df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
filtered_df = df[df['Subject'] == 'Math']
Copier après la connexion

En filtrant le dataframe fondu, vous pouvez supprimer les colonnes indésirables. Dans ce cas, seules les lignes avec 'Sujet' défini sur 'Math' sont conservées.

Problème 3 : Regroupement des données fondues et classement par scores

df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
sorted_df = df.groupby('value').agg({'Name': ', '.join, 'Subject': ', '.join})
sorted_df = sorted_df.sort_values('value')
Copier après la connexion

Cela fusionne les lignes avec des valeurs en double dans la colonne « valeur », provoquant l'agrégation des colonnes « Nom » et « Sujet » avec valeurs séparées par des virgules. Le résultat est ensuite trié pour classer les notes par ordre croissant.

Problème 4 : Défusion d'une trame de données fondue

unmelted_df = df.pivot(index=['Name', 'Age'], columns='Subject', values='Grades')
Copier après la connexion

Pour reconvertir la trame de données fondue dans son format d'origine, vous pouvez utiliser la fonction pivot(). Cela regroupera les données par colonnes « Nom » et « Âge » et fera pivoter la colonne « Sujet » pour créer la forme du cadre de données d'origine.

Problème 5 : regrouper les données fondues et concaténer les sujets et les notes

df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
grouped_df = df.groupby('Name').agg({'Subject': ', '.join, 'Grades': ', '.join})
Copier après la connexion

Semblable au problème 3, cela regroupe la trame de données fondue par « Nom » et concatène les colonnes « Sujet » et « Notes » à l'aide de virgules. Le résultat est un dataframe avec une ligne par personne, répertoriant leurs matières et leurs notes.

Problème 6 : Fusion d'un dataframe avec toutes les colonnes comme valeurs

df = df.melt(value_name='Value', var_name='Column')
Copier après la connexion

Pour fondez le dataframe avec toutes les colonnes comme valeurs, omettez l'argument id_vars de la fonction melt(). Cela créera un dataframe dans lequel la colonne « Colonne » répertorie les en-têtes de colonne d'origine et la colonne « Valeur » contient les valeurs correspondantes.

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!

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