Transformasi Data Master di Panda dengan Tiga Teknik Berguna Ini

Menyelami pemfilteran, manipulasi, dan fungsi

Foto oleh Milad Fakurian on Unsplash

Pikirkan kembali terakhir kali Anda bekerja dengan kumpulan data yang diformat dengan baik. Kolom diberi nama yang baik, nilai yang hilang minimal, dan pengorganisasian yang tepat. Rasanya menyenangkan โ€” hampir membebaskan โ€” diberkati dengan data yang tidak perlu Anda bersihkan dan ubah.

Yah, itu menyenangkan sampai Anda tersadar dari lamunan Anda dan melanjutkan memikirkan deretan baris rusak dan label tidak masuk akal yang berantakan di depan Anda.

Tidak ada yang namanya data bersih (dalam bentuk aslinya). Jika Anda seorang data scientist, Anda pasti mengetahui hal ini. Jika Anda baru memulai, Anda harus menerima ini. Anda perlu mengubah data Anda agar dapat bekerja dengannya secara efektif.

Mari kita bahas tiga cara untuk melakukannya.

Penyaringan โ€” tetapi Dijelaskan dengan Benar

Mari kita bicara tentang pemfilteran โ€” namun sedikit lebih dalam dari yang biasa Anda lakukan. Sebagai salah satu operasi transformasi data yang paling umum dan berguna, pemfilteran secara efektif adalah keterampilan yang harus dimiliki oleh setiap data scientist. Jika Anda mengenal Pandas, kemungkinan besar ini adalah salah satu operasi pertama yang Anda pelajari.

Mari kita tinjau, menggunakan contoh favorit saya yang sangat serbaguna: DataFrame nilai siswa, yang disebut dengan tepat grades:

Gambar Oleh Penulis

Kami akan memfilter skor apa pun yang berada di bawah 90, karena pada hari ini kami telah memutuskan untuk menjadi pendidik yang kurang terlatih dan hanya melayani siswa terbaik (tolong jangan pernah melakukan hal ini). Baris kode standar untuk mencapai hal ini adalah sebagai berikut:

nilai[nilai['Skor'] >= 90]
Gambar Oleh Penulis

Tinggal kita bersama Jack dan Hermione. Dingin. Tapi apa yang sebenarnya terjadi di sini? Mengapa apakah baris kode di atas berfungsi? Mari selami lebih dalam dengan melihat keluaran ekspresi di dalam tanda kurung luar di atas:

nilai['Skor'] >= 90
Gambar Oleh Penulis

Ah, oke. Itu masuk akal. Tampaknya baris kode ini mengembalikan objek Seri Pandas yang berisi Boolean ( True / False ) nilai ditentukan oleh apa >= 90 dikembalikan untuk setiap baris individu. Ini adalah langkah perantara yang penting. Setelah itu, Rangkaian Boolean inilah yang diteruskan ke tanda kurung luar, dan memfilter semua baris sesuai dengan itu.

Demi penyelesaian, saya juga akan menyebutkan bahwa perilaku yang sama dapat dicapai dengan menggunakan loc kata kunci:

nilai.loc[nilai['Skor'] >= 90]
Gambar Oleh Penulis

Ada sejumlah alasan yang mungkin kita pilih untuk digunakan loc (salah satunya adalah memungkinkan kita memfilter baris dan kolom melalui satu operasi), tetapi hal itu membuka operasi Kotak Pandas Pandora yang sebaiknya diserahkan ke artikel lain.

Untuk saat ini, tujuan pembelajaran yang penting adalah ini: saat kita memfilter di Pandas, sintaksis yang membingungkan bukanlah keajaiban yang aneh. Kita hanya perlu memecahnya menjadi dua langkah komponen: 1) mendapatkan Seri Boolean dari baris yang memenuhi kondisi kita, dan 2) menggunakan Seri untuk memfilter seluruh DataFrame.

Mengapa ini berguna, Anda mungkin bertanya? Secara umum, hal ini mungkin menyebabkan bug yang membingungkan jika Anda hanya menggunakan operasi tanpa memahami cara kerjanya sebenarnya. Pemfilteran adalah operasi yang berguna dan sangat umum, dan sekarang Anda tahu cara kerjanya.

Mari kita lanjutkan.

Keindahan Fungsi Lambda

Terkadang, data Anda memerlukan transformasi yang tidak terintegrasi dengan fungsi Pandas. Berusaha sekuat tenaga, tidak ada upaya untuk menjelajahi Stack Overflow atau rajin menjelajahi dokumentasi Pandas yang dapat menemukan solusi untuk masalah Anda.

Masukkan fungsi lambda โ€” fitur bahasa berguna yang terintegrasi secara indah dengan Pandas.

Sebagai tinjauan singkat, berikut cara kerja lambda:

>>> fungsi_tambahan = lambda x, y: x + y
>>> fungsi_tambahan(2, 3)
5

Fungsi Lambda tidak berbeda dengan fungsi biasa, kecuali fakta bahwa fungsi tersebut memiliki sintaksis yang lebih ringkas:

  • Nama fungsi di sebelah kiri tanda sama dengan
  • Grafik lambda kata kunci di sebelah kanan tanda sama dengan (mirip dengan def kata kunci dalam definisi fungsi Python tradisional, ini membuat Python tahu bahwa kita sedang mendefinisikan suatu fungsi).
  • Parameter setelah lambda kata kunci, di sebelah kiri titik dua.
  • Kembalikan nilai di sebelah kanan titik dua.

Sekarang, mari terapkan fungsi lambda ke situasi realistis.

Kumpulan data sering kali memiliki keunikan formatnya sendiri, khusus untuk variasi dalam entri dan pengumpulan data. Akibatnya, data yang Anda kerjakan mungkin memiliki masalah spesifik yang perlu Anda atasi. Misalnya, perhatikan kumpulan data sederhana di bawah ini, yang menyimpan nama orang dan pendapatan mereka. Sebut saja monies.

Gambar Oleh Penulis

Sekarang, sebagai Yang Mulia Data Master perusahaan ini, kami telah diberikan beberapa informasi rahasia: setiap orang di perusahaan ini akan diberikan kenaikan gaji sebesar 10% ditambah tambahan $1000. Perhitungan ini mungkin terlalu spesifik untuk menemukan metode tertentu, tetapi cukup mudah dengan fungsi lambda:

update_income = jumlah lambda: angka + (angka * .10) + 1000

Lalu, yang perlu kita lakukan hanyalah menggunakan fungsi ini dengan Pandas apply fungsi, yang memungkinkan kita menerapkan fungsi ke setiap elemen Seri yang dipilih:

uang['Pendapatan Baru'] = uang['Pendapatan'].berlaku(perbarui_pendapatan)
uang
Gambar Oleh Penulis

Dan kita sudah selesai! DataFrame baru yang brilian yang terdiri dari informasi yang kami butuhkan, semuanya dalam dua baris kode. Untuk membuatnya lebih ringkas, kita bahkan dapat mendefinisikan fungsi lambda di dalamnya apply secara langsung โ€” tip keren yang patut diingat.

Saya akan menjelaskan maksudnya di sini secara sederhana.

Lambda sangat berguna, oleh karena itu, Anda harus menggunakannya. Menikmati!

Fungsi Manipulasi String Seri

Di bagian sebelumnya, kita telah membahas tentang keserbagunaan fungsi lambda dan semua hal keren yang dapat membantu Anda mencapai data Anda. Ini luar biasa, tapi Anda harus berhati-hati agar tidak terbawa suasana. Sangat umum bagi kita untuk terjebak dalam satu cara biasa dalam melakukan sesuatu sehingga kita melewatkan pintasan sederhana yang telah diberkati oleh Python bagi para pemrogram. Tentu saja, ini berlaku untuk lebih dari sekadar lambda, tetapi kami akan tetap menggunakannya untuk saat ini.

Misalnya, kita memanggil DataFrame berikut names yang menyimpan nama depan dan belakang orang:

Gambar Oleh Penulis

Sekarang, karena keterbatasan ruang dalam database kami, kami memutuskan bahwa daripada menyimpan seluruh nama belakang seseorang, akan lebih efisien jika hanya menyimpan inisial terakhirnya. Oleh karena itu, kita perlu melakukan transformasi 'Last Name' kolom yang sesuai. Dengan lambda, upaya kami untuk melakukannya mungkin terlihat seperti berikut:

nama['Nama Belakang'] = nama['Nama Belakang'].apply(lambda s: s[:1])
nama
Gambar Oleh Penulis

Ini jelas berhasil, tetapi agak kikuk, dan oleh karena itu tidak se-Pythonic yang seharusnya. Untungnya, dengan keindahan fungsi manipulasi string di Pandas, ada cara lain yang lebih elegan (untuk keperluan baris kode berikutnya, lanjutkan saja dan asumsikan kita belum mengubah 'Last Name' kolom dengan kode di atas):

nama['Nama Belakang'] = nama['Nama Belakang'].str[:1]
nama
Gambar Oleh Penulis

Ta-da! Itu .str Properti Seri Pandas memungkinkan kita menyambung setiap string dalam rangkaian dengan operasi string tertentu, sama seperti jika kita bekerja dengan setiap string satu per satu.

Tapi tunggu, ini menjadi lebih baik. Sejak .str secara efektif memungkinkan kita mengakses fungsi normal string melalui Seri, kita juga dapat menerapkan serangkaian fungsi string untuk membantu memproses data kita dengan cepat! Misalnya, kita memutuskan untuk mengubah kedua kolom menjadi huruf kecil. Kode berikut berfungsi:

nama['Nama Depan'] = nama['Nama Depan'].str.lower()
nama['Nama Belakang'] = nama['Nama Belakang'].str.lower()
nama
Gambar Oleh Penulis

Jauh lebih mudah daripada harus bersusah payah mendefinisikan fungsi lambda Anda sendiri dan memanggil fungsi string di dalamnya. Bukan berarti saya tidak menyukai lambda โ€” tetapi semuanya ada tempatnya, dan kesederhanaan harus selalu menjadi prioritas dalam Python.

Saya hanya membahas beberapa contoh di sini, tapi banyak koleksi fungsi string siap membantu Anda [1].

Gunakan secara bebas. Mereka luar biasa.

Pikiran Akhir dan Rekap

Berikut ini sedikit lembar contekan transformasi data untuk Anda:

  1. Filter seperti yang Anda maksudkan. Pelajari apa yang sebenarnya terjadi sehingga Anda tahu apa yang Anda lakukan.
  2. Cintai lambda Anda. Mereka dapat membantu Anda memanipulasi data dengan cara yang luar biasa.
  3. Panda menyukai string sama seperti Anda. Ada banyak fungsi bawaan โ€” Anda sebaiknya menggunakannya.

Berikut satu saran terakhir: tidak ada cara yang โ€œbenarโ€ untuk memfilter kumpulan data. Hal ini bergantung pada data yang ada serta masalah unik yang ingin Anda pecahkan. Namun, meskipun tidak ada metode pasti yang dapat Anda ikuti setiap saat, ada kumpulan alat berguna yang dapat Anda gunakan. Pada artikel ini, saya membahas tiga di antaranya.

Saya mendorong Anda untuk keluar dan mencari lebih banyak lagi.

Referensi

[1] https://www.aboutdatablog.com/post/10-most-useful-string-functions-in-pandas

Transformasi Data Master di Panda dengan Tiga Teknik Berguna Ini Diterbitkan Ulang dari Sumber https://towardsdatascience.com/master-data-transformation-in-pandas-with-these-three-useful-techniques-20699f03e51d?source=rssโ€”-7f60cf5620c9โ€” 4 melalui https://towardsdatascience.com/feed

<!โ€“

->

Stempel Waktu:

Lebih dari Konsultan Blockchain