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

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