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
Lepaskan: 2024-12-25 13:29:42
asal
814 orang telah melayarinya

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

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

Jika lajur ialah tuple:

pivoted_df.columns = pivoted_df.columns.map('{0[0]}|{0[1]}'.format)
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan