Maison > développement back-end > Tutoriel Python > Comment faire fondre et défondre les DataFrames Pandas pour la manipulation des données ?

Comment faire fondre et défondre les DataFrames Pandas pour la manipulation des données ?

Susan Sarandon
Libérer: 2024-12-25 21:19:14
original
209 Les gens l'ont consulté

How Do I Melt and Unmelt Pandas DataFrames for Data Manipulation?

Comment faire fondre un DataFrame Pandas ?

Énoncé du problème :

La fusion d'un DataFrame Pandas implique la transposition de données d'un format large vers un format long . Ceci est utile lors de la manipulation de données à des fins d’analyse, de visualisation ou à d’autres fins. Examinons différents scénarios de fusion avec des exemples de problèmes et leurs solutions correspondantes :

Problème 1 : Transposition au format long

Question : Comment faire fondre un DataFrame pour que le le format suivant est atteint ?

    Name  Age  Subject Grade
0    Bob   13  English     C
1   John   16  English     B
2    Foo   16  English     B
3    Bar   15  English    A+
4   Alex   17  English     F
5    Tom   12  English     A
6    Bob   13     Math    A+
7   John   16     Math     B
8    Foo   16     Math     A
9    Bar   15     Math     F
10  Alex   17     Math     D
11   Tom   12     Math     C
Copier après la connexion

Solution :

Pour faire fondre le DataFrame, utilisez df.melt(). Spécifiez les id_vars (les colonnes doivent rester dans leur forme d'origine) ainsi que var_name et value_name pour les nouveaux noms de colonnes :

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

Problème 2 : Filtrage des colonnes pendant la fusion

Question : Comment faire fondre le DataFrame du problème 1 et filtrer le « anglais » column?

Solution :

Utilisez value_vars dans df.melt() pour spécifier les colonnes à fondre. Dans ce cas, seul ['Math'] est sélectionné :

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

Problème 3 : Ordre et regroupement des données fondues

Question : Comment trier les données fondues données du problème 1 par score et regroupez les élèves par nom ?

Solution :

Utilisez .groupby() et .agg() sur le DataFrame fondu pour regrouper par « Grade » et concaténer les noms et les sujets en virgule -chaînes séparées :

melted_df.groupby('Grade', as_index=False).agg(", ".join)
Copier après la connexion

Problème 4 : Défaire un fondu DataFrame

Question : Comment faire fondre un DataFrame qui a été fondu ?

Solution :

Utiliser DataFrame.pivot_table () pour défondre le DataFrame. Spécifiez les valeurs, l'index et les colonnes.

melted_df.pivot_table('Grades', ['Name', 'Age'], 'Subject', aggfunc='first').reset_index().droplevel(level=0, axis=1)
Copier après la connexion

Problème 5 : regroupement par nom et séparation des colonnes

Question : Comment regrouper le DataFrame par nom et séparer les matières et les notes par virgule ?

Solution :

Faire fondre le DataFrame et utiliser .groupby() et .agg() pour concaténer les sujets et les notes :

pd.melt(df, id_vars=['Name'], var_name='Subject', value_name='Grade').groupby('Name', as_index=False).agg(", ".join)
Copier après la connexion

Problème 6 : Faire fondre toutes les colonnes comme Valeurs

Question :Comment faire fondre toutes les colonnes d'un DataFrame ?

Solution :

Utiliser df.stack( ).reset_index() pour transposer le DataFrame :

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

Ces solutions démontrent la polyvalence de DataFrames de pandas fondants et infondables pour manipuler les données à diverses fins.

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