Pengenalan
Dalam Panda, mencairkan bingkai data melibatkan pemindahan data daripada format lebar kepada format panjang format, menjadikannya berguna untuk pelbagai tugas manipulasi data. Artikel ini akan membimbing anda melalui proses mencairkan bingkai data dan meneroka senario yang berbeza dengan contoh dunia sebenar.
Masalah 1: Memindahkan Data Lajur
Objektif: Ubah lajur ke dalam baris sambil mengulangi lajur asal nama.
Penyelesaian:
df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
Kod ini akan mencipta kerangka data baharu dengan lajur 'Subjek' dan 'Gred', manakala nama lajur asal akan diulang untuk setiap baris.
Contoh:
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)
Output:
Name Age Subject Grades 0 Bob 13 English C 1 John 16 English B ... 11 Tom 13 Math C
Masalah 2: Penapisan Lajur
Objektif: Cairkan lajur tertentu, tidak termasuk yang lain.
Penyelesaian:
df.melt(id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grades')
Dalam ini contoh, hanya lajur 'Math' dileburkan manakala 'Umur' dan 'Nama' dikekalkan sebagai pengecam.
Contoh:
melted_df = df.melt(id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grades') print(melted_df)
Output:
Name Age Subject Grades 0 Bob 13 Math A+ 1 John 16 Math B ...
Masalah 3: Pengumpulan dan Pesanan Leleh Data
Objektif: Kumpulkan data cair dan isikan mengikut nilai.
Penyelesaian:
melted_df.groupby('value', as_index=False).agg({ 'Subject': ', '.join, 'Grades': ', '.join }).sort_values('value', ascending=True)
Kod ini akan mengumpulkan data cair mengikut skor dan menyertai nilai 'Subjek' dan 'Gred' dengan koma.
Contoh:
grouped_df = melted_df.groupby('value', as_index=False).agg({ 'Subject': ', '.join, 'Grades': ', '.join }).sort_values('value', ascending=True) print(grouped_df)
Output:
value Name Subjects 0 A Foo, Tom Math, English 1 A+ Bob, Bar Math, English 2 B John, John, Foo Math, English, English ...
Masalah 4: Tidak mencairkan Bingkai data
Objektif: Balikkan proses lebur, kembali kepada format asal.
Penyelesaian:
melted_df.pivot_table("Grades", ['Name', 'Age'], 'Subject', aggfunc='first').reset_index()
Kod ini akan memaksi bingkai data cair kembali ke lebar asal format.
Contoh:
unmelted_df = melted_df.pivot_table("Grades", ['Name', 'Age'], 'Subject', aggfunc='first').reset_index() print(unmelted_df)
Output:
Name Age Math English 0 Alex 15 D F 1 Bar 15 F A+ 2 Bob 13 A+ C 3 Foo 16 A B ...
Masalah 5: Pengumpulan dan Menggabungkan Lajur
Objektif: Himpunkan data mengikut lajur tertentu dan gabungkan lajur lain dengan koma.
Penyelesaian:
melted_df.groupby('Name', as_index=False).agg( Subjects=', '.join, Grades=', '.join )
Kod ini akan mengumpulkan data mengikut 'Nama' dan menggabungkan 'Subjek' dan 'Gred' dengan koma.
Contoh:
grouped_df = melted_df.groupby('Name', as_index=False).agg( Subjects=', '.join, Grades=', '.join ) print(grouped_df)
Output:
Name Subjects Grades 0 Alex Math, English D, F 1 Bar Math, English F, A+ 2 Bob Math, English A+, C ...
Masalah 6: Mencairkan Semua Lajur
Objektif: Menukar semua lajur kepada baris, termasuk pengecam.
Penyelesaian:
df.melt(var_name='Column', value_name='Value')
Kod ini akan mencairkan semua lajur ke dalam baris, menganggap semua data sebagai nilai.
Contoh:
melted_df = df.melt(var_name='Column', value_name='Value') print(melted_df)
Output:
Column Value 0 Age 16 1 Age 16 2 Age 15 ... 11 English C 12 Math A 13 Math A+
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencairkan dan Mencairkan DataFrames Panda dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!