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
603 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!

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