Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Mencairkan dan Mencairkan Bingkai Data Panda untuk Manipulasi Data?
Mencairkan Pandas DataFrame melibatkan pemindahan data daripada format yang luas kepada format yang panjang . Ini berguna apabila memanipulasi data untuk analisis, visualisasi atau tujuan lain. Mari kita mendalami pelbagai senario lebur dengan masalah sampel dan penyelesaiannya yang sepadan:
Soalan: Bagaimanakah cara saya mencairkan DataFrame supaya format berikut ialah dicapai?
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
Penyelesaian:
Untuk mencairkan DataFrame, gunakan df.melt(). Tentukan id_vars (lajur kekal dalam bentuk asal) dan var_name dan value_name untuk nama lajur baharu:
pd.melt(df, id_vars=['Name', 'Age'], var_name='Subject', value_name='Grade')
Soalan: Bagaimanakah cara saya mencairkan DataFrame daripada Masalah 1 dan menapis 'Bahasa Inggeris' lajur?
Penyelesaian:
Gunakan value_vars dalam df.melt() untuk menentukan lajur yang hendak dicairkan. Dalam kes ini, hanya ['Math'] dipilih:
pd.melt(df, id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grade')
Soalan: Bagaimanakah cara mengisih yang cair data daripada Masalah 1 mengikut skor dan kumpulan pelajar mengikut nama?
Penyelesaian:
Gunakan .groupby() dan .agg() pada DataFrame cair untuk dikumpulkan mengikut 'Gred' dan gabungkan nama dan subjek menjadi koma -rentetan yang dipisahkan:
melted_df.groupby('Grade', as_index=False).agg(", ".join)
Soalan: Bagaimanakah cara saya mencairkan DataFrame yang telah cair?
Penyelesaian:
Gunakan DataFrame. pivot_table() untuk mencairkan DataFrame. Nyatakan nilai, indeks dan lajur.
melted_df.pivot_table('Grades', ['Name', 'Age'], 'Subject', aggfunc='first').reset_index().droplevel(level=0, axis=1)
Soalan: Bagaimanakah cara saya mengumpulkan DataFrame mengikut nama dan asingkan mata pelajaran dan gred dengan koma?
Penyelesaian:
Cairkan DataFrame dan gunakan .groupby() dan .agg() untuk menggabungkan mata pelajaran dan gred:
pd.melt(df, id_vars=['Name'], var_name='Subject', value_name='Grade').groupby('Name', as_index=False).agg(", ".join)
Soalan: Bagaimanakah cara saya mencairkan semua lajur dalam DataFrame?
Penyelesaian:
Gunakan df.stack( ).reset_index() untuk menukarkan DataFrame:
pd.melt(df, id_vars=None, var_name='Column', value_name='Value')
Penyelesaian ini menunjukkan kepelbagaian panda yang meleleh dan tidak mencairkan DataFrames untuk memanipulasi data untuk pelbagai tujuan.
Atas ialah kandungan terperinci Bagaimanakah Saya Mencairkan dan Mencairkan Bingkai Data Panda untuk Manipulasi Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!