Einführung
In Pandas umfasst das Schmelzen von Datenrahmen das Transponieren von Daten von einem Breitformat in ein Langformat Format, wodurch es für verschiedene Datenbearbeitungsaufgaben nützlich ist. Dieser Artikel führt Sie durch den Prozess des Verschmelzens von Datenrahmen und untersucht verschiedene Szenarien anhand von Beispielen aus der Praxis.
Problem 1: Transponieren von Spaltendaten
Ziel: Transponieren Sie Spalten in Zeilen und wiederholen Sie dabei die ursprüngliche Spalte Namen.
Lösung:
df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
Dieser Code erstellt einen neuen Datenrahmen mit den Spalten „Betreff“ und „Noten“, während die ursprünglichen Spaltennamen wiederholt werden für jeden Zeile.
Beispiel:
df = pd.DataFrame({'Name': ['Bob', 'John', 'Foo', 'Bar', 'Alex', 'Tom'], 'Math': ['A+', 'B', 'A', 'F', 'D', 'C'], 'English': ['C', 'B', 'B', 'A+', 'F', 'A'], 'Age': [13, 16, 16, 15, 15, 13]}) melted_df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades') print(melted_df)
Ausgabe:
Name Age Subject Grades 0 Bob 13 English C 1 John 16 English B ... 11 Tom 13 Math C
Problem 2: Spalten filtern
Ziel: Schmelzspezifisch Spalten, ausgenommen andere.
Lösung:
df.melt(id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grades')
In diesem Beispiel wird nur die Spalte „Mathe“ zusammengeführt, während „Alter“ und „Name“ beibehalten werden als Bezeichner.
Beispiel:
melted_df = df.melt(id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grades') print(melted_df)
Ausgabe:
Name Age Subject Grades 0 Bob 13 Math A+ 1 John 16 Math B ...
Problem 3: Gruppierung und Bestellung geschmolzen Daten
Ziel: Die geschmolzenen Daten gruppieren und nach Werten sortieren.
Lösung:
melted_df.groupby('value', as_index=False).agg({ 'Subject': ', '.join, 'Grades': ', '.join }).sort_values('value', ascending=True)
Dieser Code gruppiert die geschmolzenen Daten nach Punktzahl und verknüpft die Werte „Betreff“ und „Noten“ mit Kommas.
Beispiel:
grouped_df = melted_df.groupby('value', as_index=False).agg({ 'Subject': ', '.join, 'Grades': ', '.join }).sort_values('value', ascending=True) print(grouped_df)
Ausgabe:
value Name Subjects 0 A Foo, Tom Math, English 1 A+ Bob, Bar Math, English 2 B John, John, Foo Math, English, English ...
Problem 4: Unschmelzende Datenrahmen
Ziel: Kehren Sie den Schmelzvorgang um und kehren Sie zum ursprünglichen Format zurück.
Lösung:
melted_df.pivot_table("Grades", ['Name', 'Age'], 'Subject', aggfunc='first').reset_index()
Dieser Code dreht den geschmolzenen Datenrahmen zurück auf die ursprüngliche Breite Format.
Beispiel:
unmelted_df = melted_df.pivot_table("Grades", ['Name', 'Age'], 'Subject', aggfunc='first').reset_index() print(unmelted_df)
Ausgabe:
Name Age Math English 0 Alex 15 D F 1 Bar 15 F A+ 2 Bob 13 A+ C 3 Foo 16 A B ...
Problem 5: Gruppieren und Spalten kombinieren
Ziel: Gruppieren Sie Daten nach einer bestimmten Spalte und kombinieren Sie andere Spalten mit Kommas.
Lösung:
melted_df.groupby('Name', as_index=False).agg( Subjects=', '.join, Grades=', '.join )
Dieser Code gruppiert die Daten nach „Name“ und kombiniert „Betreff“. ' und 'Noten' mit Kommas.
Beispiel:
grouped_df = melted_df.groupby('Name', as_index=False).agg( Subjects=', '.join, Grades=', '.join ) print(grouped_df)
Ausgabe:
Name Subjects Grades 0 Alex Math, English D, F 1 Bar Math, English F, A+ 2 Bob Math, English A+, C ...
Problem 6: Alles schmelzen Spalten
Ziel: Konvertieren alle Spalten in Zeilen, einschließlich Bezeichnern.
Lösung:
df.melt(var_name='Column', value_name='Value')
Dieser Code verschmilzt alle Spalten in Zeilen und behandelt alle Daten als Werte.
Beispiel:
melted_df = df.melt(var_name='Column', value_name='Value') print(melted_df)
Ausgabe:
Column Value 0 Age 16 1 Age 16 2 Age 15 ... 11 English C 12 Math A 13 Math A+
Das obige ist der detaillierte Inhalt vonWie kann ich Pandas-DataFrames effizient schmelzen und entschmelzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!