Mengasing, juga dikenali sebagai transposing, ialah operasi biasa dalam transformasi data yang mana baris dan lajur ditukar. Ia boleh berguna untuk tugas seperti membentuk semula data kepada format yang lebih sesuai atau membuat laporan yang meringkaskan data merentas berbilang dimensi. Dalam Python, panda menyediakan beberapa kaedah untuk memutarkan DataFrame, masing-masing mempunyai kekuatan dan batasannya sendiri.
Untuk asas pivoting, anda boleh menggunakan kaedah berikut:
pandas.pivot_table: Kaedah ini menyediakan antara muka yang fleksibel untuk memutar data dengan menentukan lajur untuk digunakan sebagai baris, lajur dan nilai. Menyokong pelbagai fungsi pengagregatan seperti min, jumlah, kiraan, dsb.
pandas.DataFrame.groupby pandas.unstack: Kumpulkan data mengikut lajur yang dikehendaki menggunakan groupby, kemudian nyahtindan MultiIndex yang terhasil menggunakan nyahtindan untuk mencipta DataFrame yang dipangsi.
Untuk operasi pivoting yang lebih kompleks, anda boleh menggunakan kaedah berikut:
pandas.DataFrame.set_index pandas.unstack: Sama seperti groupby tetapi lebih cekap jika anda berputar pada set baris yang unik dan lajur.
pandas.DataFrame.pivot: Versi jadual pangsi yang lebih ringkas tetapi dengan fungsi terhad.
panda. tab silang: Berguna untuk mencipta jadual kontingensi (penjadualan silang), sejenis pangsi yang mengagregatkan data merentas dua pembolehubah kategori.
pandas.factorize numpy.bincount: Teknik yang lebih maju yang boleh menjadi lebih pantas untuk operasi tertentu. Menggunakan pemfaktoran untuk menukar nilai kategori kepada integer unik, kemudian menggunakan bincount untuk mengira kejadian.
pandas.get_dummies pandas.DataFrame.dot: Cara kreatif untuk melakukan penjadualan silang menggunakan pembolehubah tiruan .
Berikut adalah beberapa contoh cara menggunakan kaedah ini:
# Import pandas import pandas as pd # Create a sample DataFrame df = pd.DataFrame({ "key": ["a", "b", "c", "a", "b"], "row": [1, 2, 3, 4, 5], "col": ["col1", "col2", "col3", "col1", "col2"], "val": [10, 20, 30, 40, 50] }) # Pivot using pivot_table pivoted_df = pd.pivot_table( df, index="row", columns="col", values="val", aggfunc='mean', fill_value=0 ) # Pivot using groupby and unstack pivoted_df = df.groupby(['row', 'col'])['val'].mean().unstack(fill_value=0)
Untuk meratakan multi-indeks DataFrame yang dipangsi, anda boleh menggunakan pendekatan yang berbeza bergantung pada jenis lajur:
Jika lajur adalah rentetan:
pivoted_df.columns = pivoted_df.columns.map('|'.join)
Jika lajur ialah tuple:
pivoted_df.columns = pivoted_df.columns.map('{0[0]}|{0[1]}'.format)
Atas ialah kandungan terperinci Bagaimanakah saya Boleh Memutar DataFrames dengan Cekap dalam Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!