Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya Boleh Memutar DataFrames dengan Cekap dalam Pandas?

Bagaimanakah saya Boleh Memutar DataFrames dengan Cekap dalam Pandas?

DDD
DDDasal
2024-12-25 13:29:42845semak imbas

How Can I Efficiently Pivot DataFrames in Pandas?

Mengasingkan DataFrame

Pengenalan

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.

Asas Pivoting

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.

Terperinci Pivoting

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.

Kaedah Lain

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 .

Contoh

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)

meratakan

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)

Nota Tambahan

  • Apabila memilih lajur untuk berputar , pastikan ia adalah kategori atau mempunyai bilangan nilai unik yang terhad untuk mengelakkan daripada mencipta DataFrame yang luas dengan banyak lajur.
  • Beri perhatian kepada nilai isian apabila menggunakan fungsi pengagregatan untuk mengendalikan data yang tiada.
  • Pertimbangkan untuk menggunakan teknik peningkatan prestasi seperti set_index dan pemfaktoran untuk set data yang besar.
  • Teroka pilihan lain seperti panda.wide_to_long jika anda perlu menukar data daripada format lebar ke panjang.

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!

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