Heim > Backend-Entwicklung > Python-Tutorial > Wie schmelze und entschmelze ich Pandas-DataFrames zur Datenmanipulation?

Wie schmelze und entschmelze ich Pandas-DataFrames zur Datenmanipulation?

Susan Sarandon
Freigeben: 2024-12-25 21:19:14
Original
239 Leute haben es durchsucht

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

Wie schmelze ich einen Pandas DataFrame?

Problemstellung:

Beim Schmelzen eines Pandas DataFrame werden Daten von einem Breitformat in ein Langformat transponiert . Dies ist nützlich, wenn Sie Daten für Analyse-, Visualisierungs- oder andere Zwecke bearbeiten. Lassen Sie uns verschiedene Schmelzszenarien mit Beispielproblemen und den entsprechenden Lösungen untersuchen:

Problem 1: Transponieren ins Langformat

Frage: Wie schmelze ich einen DataFrame, damit der Das folgende Format ist erreicht?

    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
Nach dem Login kopieren

Lösung:

Um den DataFrame zu schmelzen, verwenden Sie df.melt(). Geben Sie die id_vars (Spalten, die in der ursprünglichen Form bleiben sollen) sowie var_name und value_name für die neuen Spaltennamen an:

pd.melt(df, id_vars=['Name', 'Age'], var_name='Subject', value_name='Grade')
Nach dem Login kopieren

Problem 2: Filtern von Spalten während des Schmelzens

Frage: Wie schmelze ich den DataFrame aus Problem 1 und filtere das „Englisch“ heraus? Spalte?

Lösung:

Verwenden Sie value_vars in df.melt(), um anzugeben, welche Spalten geschmolzen werden sollen. In diesem Fall ist nur ['Math'] ausgewählt:

pd.melt(df, id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grade')
Nach dem Login kopieren

Aufgabe 3: Geschmolzene Daten ordnen und gruppieren

Frage: Wie sortiere ich die geschmolzenen Daten? Ordnen Sie die Daten aus Aufgabe 1 der Punktzahl zu und gruppieren Sie die Schüler danach Name?

Lösung:

Verwenden Sie .groupby() und .agg() auf dem geschmolzenen DataFrame, um nach „Grade“ zu gruppieren und die Namen und Themen durch Kommas zu verketten -getrennte Zeichenfolgen:

melted_df.groupby('Grade', as_index=False).agg(", ".join)
Nach dem Login kopieren

Problem 4: Entschmelzen eines Geschmolzenen DataFrame

Frage:Wie löse ich einen DataFrame auf, der geschmolzen wurde?

Lösung:

Verwenden Sie DataFrame.pivot_table (), um den DataFrame aufzulösen. Geben Sie die Werte, den Index und die Spalten an.

melted_df.pivot_table('Grades', ['Name', 'Age'], 'Subject', aggfunc='first').reset_index().droplevel(level=0, axis=1)
Nach dem Login kopieren

Problem 5: Gruppieren nach Namen und Trennen von Spalten

Frage: Wie gruppiere ich den DataFrame nach Namen und Trennen Sie die Fächer und Noten nach Komma?

Lösung:

Den DataFrame zusammenschmelzen und .groupby() und .agg() verwenden, um die Fächer und Noten zu verketten:

pd.melt(df, id_vars=['Name'], var_name='Subject', value_name='Grade').groupby('Name', as_index=False).agg(", ".join)
Nach dem Login kopieren

Problem 6: Alle Spalten schmelzen als Werte

Frage:Wie schmelze ich alle Spalten in einem DataFrame?

Lösung:

Verwenden Sie df.stack( ).reset_index() zum Transponieren des DataFrame:

pd.melt(df, id_vars=None, var_name='Column', value_name='Value')
Nach dem Login kopieren

Diese Lösungen demonstrieren das Vielseitigkeit von schmelzenden und nicht schmelzenden Pandas-DataFrames zur Manipulation von Daten für verschiedene Zwecke.

Das obige ist der detaillierte Inhalt vonWie schmelze und entschmelze ich Pandas-DataFrames zur Datenmanipulation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage