Heim >Backend-Entwicklung >Python-Tutorial >Wie schmelze ich einen Pandas-DataFrame und wann verwende ich diese Technik?
Das Schmelzen eines Pandas DataFrame erfordert die Umstrukturierung von einem breiten Format, bei dem jede Spalte eine Variable darstellt. in ein Langformat, in dem jede Zeile eine Beobachtung und jede Spalte ein Merkmal-Wert-Paar darstellt.
Um einen DataFrame zu schmelzen, verwenden Sie die Funktion pd.melt() und geben Sie die folgenden Argumente an:
Zum Beispiel, um den folgenden DataFrame zu schmelzen:
import pandas as pd df = pd.DataFrame({'Name': ['Bob', 'John', 'Foo', 'Bar', 'Alex', 'Tom'], 'Math': ['A+', 'B', 'A', 'F', 'D', 'C'], 'English': ['C', 'B', 'B', 'A+', 'F', 'A']})
wir können Verwenden Sie:
df_melted = pd.melt(df, id_vars=['Name'], value_vars=['Math', 'English'])
Dadurch wird der geschmolzene DataFrame ausgegeben:
Name variable value 0 Bob Math A+ 1 John Math B 2 Foo Math A 3 Bar Math F 4 Alex Math D 5 Tom Math C 6 Bob English C 7 John English B 8 Foo English B 9 Bar English A+ 10 Alex English F 11 Tom English A
Schmelzen ist nützlich, wenn Sie Folgendes benötigen:
df = pd.DataFrame({'Name': ['Bob', 'John', 'Foo', 'Bar', 'Alex', 'Tom'], 'Math': ['A+', 'B', 'A', 'F', 'D', 'C'], 'English': ['C', 'B', 'B', 'A+', 'F', 'A']})
df_melted = pd.melt(df, id_vars=['Name', 'Age'], var_name='Subject', value_name='Grade') print(df_melted)
Ausgabe:
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
df_melted_math = pd.melt(df, id_vars=['Name', 'Age'], value_vars=['Math'], var_name='Subject', value_name='Grade') print(df_melted_math)
Ausgabe:
Name Age Subject Grade 0 Bob 13 Math A+ 1 John 16 Math B 2 Foo 16 Math A 3 Bar 15 Math F 4 Alex 17 Math D 5 Tom 12 Math C
df_melted_grouped = df_melted.groupby(['Grade']).agg({'Name': ', '.join, 'Subject': ', '.join}).reset_index() print(df_melted_grouped)
Ausgabe:
Grade Name Subjects 0 A Foo, Tom Math, English 1 A+ Bob, Bar Math, English 2 B John, John, Foo Math, English, English 3 C Bob, Tom English, Math 4 D Alex Math 5 F Bar, Alex Math, English
df_unmelted = df_melted.pivot_table(index=['Name', 'Age'], columns='Subject', values='Grade', aggfunc='first').reset_index() print(df_unmelted)
Ausgabe:
Name Age English Math 0 Alex 17 F D 1 Bar 15 A+ F 2 Bob 13 C A+ 3 Foo 16 B A 4 John 16 B B 5 Tom 12 A C
df_melted_by_name = df_melted.groupby('Name').agg({'Subject': ', '.join, 'Grade': ', '.join}).reset_index() print(df_melted_by_name)
Ausgabe:
Name Subject Grades 0 Alex Math, English D, F 1 Bar Math, English F, A+ 2 Bob Math, English A+, C 3 Foo Math, English A, B 4 John Math, English B, B 5 Tom Math, English C, A
df_melted_full = df.melt(ignore_index=False) print(df_melted_full)
Ausgabe:
Name Age variable value 0 Bob 13 Math A+ 1 John 16 Math B 2 Foo 16 Math A 3 Bar 15 Math F 4 Alex 17 Math D 5 Tom 12 Math C 6 Bob 13 English C 7 John 16 English B 8 Foo 16 English B 9 Bar 15 English A+ 10 Alex 17 English F 11 Tom 12 English A
Das obige ist der detaillierte Inhalt vonWie schmelze ich einen Pandas-DataFrame und wann verwende ich diese Technik?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!