Mecairkan panda DataFrame melibatkan penstrukturan semula daripada format yang luas, di mana setiap lajur mewakili pembolehubah, kepada format yang panjang, di mana setiap baris mewakili pemerhatian dan setiap lajur mewakili nilai ciri pasangan.
Untuk mencairkan DataFrame, gunakan fungsi pd.melt(), dengan menyatakan argumen berikut:
Sebagai contoh, untuk mencairkan yang berikut DataFrame:
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']})
kita boleh gunakan:
df_melted = pd.melt(df, id_vars=['Name'], value_vars=['Math', 'English'])
Ini akan mengeluarkan DataFrame yang cair:
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
Pencairan berguna apabila anda perlu:
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)
Output:
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)
Output:
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)
Output:
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)
Output:
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)
Output:
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)
Output:
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
Atas ialah kandungan terperinci Bagaimana Mencairkan Bingkai Data Pandas dan Bila Menggunakan Teknik Ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!