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
Lepaskan: 2024-12-20 09:48:10
asal
590 orang telah melayarinya

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')
Salin selepas log masuk

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)
Salin selepas log masuk

Output:

   Name  Age Subject Grades
0   Bob   13  English     C
1  John   16  English     B
...
11  Tom   13     Math     C
Salin selepas log masuk

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')
Salin selepas log masuk

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)
Salin selepas log masuk

Output:

   Name  Age Subject Grades
0   Bob   13    Math    A+
1  John   16    Math     B
...
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

Output:

  value             Name                Subjects
0     A         Foo, Tom           Math, English
1    A+         Bob, Bar           Math, English
2     B  John, John, Foo  Math, English, English
...
Salin selepas log masuk

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()
Salin selepas log masuk

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)
Salin selepas log masuk

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
...
Salin selepas log masuk

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
)
Salin selepas log masuk

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)
Salin selepas log masuk

Output:

   Name        Subjects Grades
0  Alex  Math, English   D, F
1   Bar  Math, English  F, A+
2   Bob  Math, English  A+, C
...
Salin selepas log masuk

Masalah 6: Mencairkan Semua Lajur

Objektif: Menukar semua lajur kepada baris, termasuk pengecam.

Penyelesaian:

df.melt(var_name='Column', value_name='Value')
Salin selepas log masuk

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)
Salin selepas log masuk

Output:

    Column Value
0       Age    16
1       Age    16
2       Age    15
...
11  English     C
12     Math     A
13     Math    A+
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan