Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mencairkan dan Mencairkan DataFrames Panda dengan Cekap?

Bagaimanakah Saya Boleh Mencairkan dan Mencairkan DataFrames Panda dengan Cekap?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 09:48:10654semak imbas

How Can I Efficiently Melt and Unmelt Pandas DataFrames?

Mencairkan Bingkai Data Pandas

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn