Iterasi dalam Pandas adalah anti-pola dan merupakan sesuatu yang hanya boleh Anda lakukan ketika Anda telah kehabisan pilihan lainnya. Anda tidak boleh menggunakan fungsi apa pun dengan " Show Apakah Anda ingin mencetak DataFrame? Apakah Anda ingin menghitung sesuatu?
Banding ke Otoritas pada iterasi memiliki kotak peringatan merah besar yang bertuliskan
* Ini sebenarnya sedikit lebih rumit daripada "jangan". Sejumlah operasi dan perhitungan dasar yang baik "divektorkan" oleh panda (baik melalui NumPy, atau melalui fungsi Cythonized). Ini termasuk aritmatika, perbandingan, (kebanyakan) pengurangan, pembentukan kembali (seperti pivot), penggabungan, dan operasi grup demi grup. Lihatlah dokumentasi untuk menemukan metode vektorisasi yang cocok untuk masalah Anda Jika tidak ada, silakan tulis sendiri menggunakan custom Pemahaman daftar harus menjadi tujuan panggilan Anda berikutnya jika 1) tidak ada solusi vektor yang tersedia, 2) kinerja itu penting, tetapi tidak cukup penting untuk melewati kerumitan menyitonisasi kode Anda, dan 3) Anda mencoba melakukan transformasi dengan elemen . Ada banyak bukti yang menunjukkan bahwa pemahaman daftar cukup cepat (dan bahkan terkadang lebih cepat) untuk banyak tugas umum Panda Formulanya sederhana,
Jika Anda dapat merangkum logika bisnis Anda ke dalam sebuah fungsi, Anda dapat menggunakan pemahaman daftar yang memanggilnya. Anda dapat membuat hal-hal rumit yang sewenang-wenang bekerja melalui kesederhanaan dan kecepatan kode Python mentah Peringatan Pemahaman daftar mengasumsikan bahwa data Anda mudah untuk dikerjakan - artinya tipe data Anda konsisten dan Anda tidak memiliki NaN, tetapi hal ini tidak selalu dapat dijamin
* Mileage Anda mungkin berbeda karena alasan yang diuraikan di bagian Peringatan di atas Contoh yang JelasMari kita tunjukkan perbedaannya dengan contoh sederhana menambahkan dua kolom panda Kode pembandingan, untuk referensi Anda. Baris di bagian bawah mengukur fungsi yang ditulis dalam numpandas, gaya Panda yang sangat bercampur dengan NumPy untuk menghasilkan performa maksimal. Menulis kode numpandas harus dihindari kecuali Anda tahu apa yang Anda lakukan. Tetap berpegang pada API di mana Anda bisa (mis. e. , lebih suka Saya harus menyebutkan, bagaimanapun, bahwa tidak selalu sekering dan sekering ini. Terkadang jawaban untuk "apa metode terbaik untuk suatu operasi" adalah "itu tergantung pada data Anda". Saran saya adalah untuk menguji pendekatan yang berbeda pada data Anda sebelum menetapkannya Pendapat Pribadi Saya *Sebagian besar analisis yang dilakukan pada berbagai alternatif keluarga iter dilakukan melalui lensa kinerja. Namun, dalam sebagian besar situasi, Anda biasanya akan mengerjakan kumpulan data berukuran wajar (tidak lebih dari beberapa ribu atau 100 ribu baris) dan kinerja akan berada di urutan kedua setelah kesederhanaan/keterbacaan solusi. Inilah preferensi pribadi saya ketika memilih metode yang akan digunakan untuk suatu masalah Untuk pemula
Untuk yang lebih berpengalaman
Vektorisasi berlaku sebagai metode yang paling idiomatis untuk setiap masalah yang dapat divektorisasi. Selalu berusaha untuk membuat vektor. Jika ragu, konsultasikan dengan dokumen, atau lihat Stack Overflow untuk pertanyaan yang ada tentang tugas khusus Anda Saya cenderung melanjutkan tentang seberapa buruk Peringkat Cython lebih rendah dalam daftar karena membutuhkan lebih banyak waktu dan upaya untuk melakukannya dengan benar. Anda biasanya tidak perlu menulis kode dengan panda yang menuntut tingkat kinerja yang bahkan tidak dapat dipenuhi oleh pemahaman daftar * Seperti pendapat pribadi lainnya, harap ambil dengan banyak garam Bacaan lebih lanjut* Metode string panda "divektorkan" dalam arti bahwa metode tersebut ditentukan pada rangkaian tetapi beroperasi pada setiap elemen. Mekanisme yang mendasarinya masih iteratif, karena operasi string secara inheren sulit untuk dibuat vektor Mengapa Saya Menulis Jawaban iniKecenderungan umum yang saya perhatikan dari pengguna baru adalah mengajukan pertanyaan dalam bentuk "Bagaimana saya dapat mengulangi df saya untuk melakukan X?". Menampilkan kode yang memanggil Tujuan dari jawaban ini adalah untuk membantu pengguna baru memahami bahwa iterasi belum tentu merupakan solusi untuk setiap masalah, dan bahwa solusi yang lebih baik, lebih cepat, dan lebih idiomatis dapat ada, dan perlu menginvestasikan waktu untuk menjelajahinya. Saya tidak mencoba untuk memulai perang iterasi vs. vektorisasi, tetapi saya ingin pengguna baru diberi tahu saat mengembangkan solusi untuk masalah mereka dengan perpustakaan ini Haruskah saya menggunakan Iterrows?Iterrows(). Ini harus benar-benar dihindari karena kinerjanya sangat lambat dibandingkan dengan teknik iterasi lainnya . Iterrows() membuat beberapa panggilan fungsi saat iterasi dan setiap baris iterasi memiliki properti bingkai data, yang membuatnya lebih lambat.
Bagaimana cara mengulangi baris dalam panda?Ada banyak cara untuk mengulang baris DataFrame atau Seri di panda, masing-masing dengan kelebihan dan kekurangannya sendiri. . Metode paling mudah untuk mengulangi baris adalah dengan metode iterrows() , seperti itu iterrows() mengembalikan indeks baris serta baris itu sendiri Apa itu Iterrows dan Ititems?iteritems() − untuk mengulangi pasangan (key,value) . iterrows() − mengulangi baris sebagai pasangan (indeks, seri) . itertuples() − mengulangi baris sebagai namedtuples.
Apa itu Itertuples di Python?Metode itertuples() menghasilkan objek iterator dari DataFrame, mengembalikan setiap baris sebagai objek Pyton Tuple . |