Data Manipulation with Pandas Part 2 - nurkomarhidaya/DQLab GitHub Wiki
1. Penggabungan Series/Dataframe
Penahuluan
Aku pun mengalihkan perhatianku dari layar laptop ke Andra. Pagi-pagi sekali ia sudah menghampiriku. Diam-diam aku menebak materi baru apa lagi yang harus kupelajari ataukah ada proyek dadakan lagi yang perlu diselesaikan? “Lagi latihan pakai Pandas, Ndra.” “Oh, masih modul Pandas part 1 kemarin?”
Aku mengangguk. “Pas banget, pagi ini saya mau ngirim ke kamu lanjutan modulnya. Lagipula modul kemarin kamu sudah lulus kok. Sekarang fokus ke Pandas part 2 saja. Kali ini materinya lebih dalam mengenai interaksi dengan tabular data menggunakan Pandas. Nanti kamu baca dan pelajari saja dulu.” Setelah obrolan tadi, aku langsung menerima pesan dengan lampiran materi lanjutan dari Andra. Penasaran dengan apa yang bisa Pandas lakukan lagi, aku pun segera membuka dan mencernanya
Reference: https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html
Bagaimana Cara Menggabungkan Pandas Series/Dataframe?
Sebagai seorang praktisi data, pasti sering kali bertemu dengan banyak file sekaligus dan data yang dibutuhkan tersebar di berbagai file tersebut dan membutuhkan metode untuk menggabungkan semua informasi yang dibutuhkan dari setiap file itu.
Dengan menggunakan excel atau tools pengolah spreadsheet lain hal itu bisa terjadi mungkin dengan menggunakan copy paste file satu ke file lainnya atau yang agak canggih menggunakan method importRange di google sheets. Tetapi tentu hal itu tidak bisa diandalkan ketika berurusan dengan big data yang datanya bisa miliaran rows dengan informasi yang tidak terbatas, Python dan Pandas adalah satu-satunya cara untuk mengatasinya.
Terdapat beberapa metode untuk menggabungkan Series/Dataframe di Pandas, yaitu:
- append
- concat
- merge
- join
Akan dibahas satu persatu dalam subbab berikutnya.
Append
Concat
Merge - Part 1
Merge - Part 2
Join
Quiz
2. Pivot, Melt, Stack & Unstack
Pendahuluan
Kotak masuk email-ku tak hentinya menerima sejumlah link baru dari Andra untuk bab-bab yang akan kupelajari di modul Pandas part 2 ini. Banyak sekali referensi dari Andra!
“Pivot, Melt, Stack, dan Unstack, apa ini?” gumamku sendiri membaca subject email Andra.
Aku pun bergegas mengaksesnya:
Reference: https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html
Melakukan format ulang pada dataset itu sangatlah penting, biasanya hal ini dilakukan untuk mengetahui keseluruhan data secara cepat dengan chart atau visualisasi. Untuk orang yang sudah mahir menggunakan spreadsheet pastilah tau banyak tentang fitur pivot ini.
Di Pandas, ada beberapa teknik untuk melakukan pivot atau unpivot yang biasa disebut as melt di Pandas, terdapat pula konsep stack yang artinya menumpuk data dengan kolom yang lebih sedikit (stack) sama seperti konsep melt dan ada pula yang memperluas data dengan kolom yang lebih banyak (unstack) sama seperti konsep pivot.
Dataset
Pivot
Pivot_table
Melt - Part1
Melt - Part 2
Stack & Unstack - Part 1
Stack & Unstack - Part 2
Quiz
3. Aggregation & GroupBy
Pendahluan
Teknik agregasi diperlukan ketika mau melihat dataset dengan view yang berbeda, bisa set data tersebut akan dikelompokkan seperti apa, yang kemudian juga bisa menerapkan beberapa fungsi atau metode statistik ke hasil group dataset itu untuk mengetahui behavior dari data tersebut secara summary/overview.
Review inspesksi Data
https://storage.googleapis.com/dqlab-dataset/LO4/global_air_quality_4000rows.csv
Groupby dan Aggregasi dengan Fungsi Statistik Dasar -Part 1
Groupby dan Aggregasi dengan Fungsi Statistik Dasar -Part 2
Groupby dan Aggregasi dengan Fungsi Statistik Dasar -Part 3
Groupby dengan Multiple Aggregations
Groupby dengan Custom Aggregations
Groupby dengan Custom Aggregations by dict
Quiz
4. Time Series in Pandas
Pendahuluan
Baru saja aku kelar dengan latihan dan kuis-kuis dari Bab 3, link referensi dari Andra untuk materi selanjutnya seputar “Time Series in Pandas” sudah muncul lagi!
Tampaknya ini ‘ujian’ baru dari Andra yang ingin menilai kegigihan belajarku. Kutarik nafas panjang. Tidak apa-apa, ini demi jadi data analyst profesional. Aku pantang menyerah!
Aku mengklik link dari Andra dan kembali menelusuri isi materinya:
Ketika berurusan dengan big data, biasanya akan selalu terdapat entitas waktu kapan suatu event itu terjadi, waktu ini digunakan untuk mengenali event itu terjadi pada suatu frame tertentu dan dapat dijadikan index yang membuat setiap event menjadi unique.
Basic format datetime menurut ISO 8601 yaitu YYYY-mm-dd HH:MM:SS.
Load Dataset as Time Series
Convert to Datetime
Resampling untuk Time Series Data
Pandas time series juga memiliki fungsi resampling yang dapat berguna untuk:
Dataset : https://storage.googleapis.com/dqlab-dataset/LO4/global_air_quality_4000rows.csv
Downsampling Data
Upsampling Data
Resampling by Frequency
Visualisasi
Quiz
Penutup
“Iya, aku tadi lagi nyoba nyelesein project end to end dari extracting data, load dataset, sampai manipulating data. Kalau sekarang lagi latihan menyimpan data ke dalam output yang sesuai. Lebih rumit dari yang kemarin, tapi masih ngerti, Ndra,” jelasku bersemangat.
Tak kusangka materi tentang Pandas ini seru sekali walau cukup padat. Seru karena aku tahu Pandas sangat implementatif dalam mengerjakan proyek-proyek data perusahaan. Banyaknya materi yang sempat kukeluhkan di awal jadi enggak terasa! Aku mendapati Andra tersenyum tipis mendengar poin-poin yang sudah berhasil kupelajari. Kalau dari responsnya, mungkinkah bakal ada proyek baru untukku?
“Apa yang kamu pelajari barusan akan sangat berguna dalam proyek analisis data nantinya dan jadi bekal kamu mempelajari machine learning nanti. Keep learning, Aksara. Saya sedang mempertimbangkan satu proyek untuk dipercayakan padamu lagi.”
5. Mini Project
Pendahuluan
“Aksara, coba ikut saya ke ruangan rapat sebentar. Ada yang mau saya tunjukkan,” pinta Andra.
Baru kali ini Andra mengajakku ke ruang rapat. Biasanya aku hanya mendengar ia mau rapat, dan sering kali ia sendiri juga yang menghampiriku. Aku pun segera beranjak. Ini pasti berkaitan dengan proyek yang dijanjikannya. Sesampaiku di ruang rapat, laptop Andra sudah terbuka dan menampilkan pantulan layar berupa data angka-angka.
“Begini, Aksara. Perusahaan kita lagi butuh perbandingan performa dari setiap cabang di berbagai kota. Nanti ambil saja lima kota terbesar di Pulau Jawa untuk dianalisis dari segi order size, customer count, product count, brand count, dan GMV dalam basis bulanan. Sampai sini apakah cukup paham?”
Sebenarnya aku cukup paham, tapi untuk memastikannya aku pun bertanya, “Jadi, ini aku perlu pivot ya untuk setiap measure yang dibutuhkan, lalu mencari angkanya per bulan?”
“Benar. Sebelum saya beri deadline, dari kamu bisa selesai kapan?” tawar Andra.
“Hmmm, datanya sendiri sudah bersih atau perlu aku cleaning lagi, Ndra?” tanyaku sembari menimbang-nimbang.
“Datanya sudah bersih. Nanti akan coba saya kirimkan yang versi lengkapnya dalam tahun 2019 agar bisa kamu pertimbangkan estimasi waktu pengerjaan.”
“Oke, Ndra. Soalnya, kalau datanya sudah bersih, dua hari cukup sih. Tapi aku cek dulu deh data lengkap yang nanti dikirim.”
“Selamat bekerja, Aksara.”
Performa Penjualan di Setiap Cabang - Part 1
csv (data dari bulan January - March)--> https://storage.googleapis.com/dqlab-dataset/10%25_original_randomstate%3D42/retail_data_from_1_until_3_reduce.csv
csv (data dari bulan April - June)--> https://storage.googleapis.com/dqlab-dataset/10%25_original_randomstate%3D42/retail_data_from_4_until_6_reduce.csv
csv (data dari bulan July - September)--> https://storage.googleapis.com/dqlab-dataset/10%25_original_randomstate%3D42/retail_data_from_7_until_9_reduce.csv
csv (data dari bulan October - December) --> https://storage.googleapis.com/dqlab-dataset/10%25_original_randomstate%3D42/retail_data_from_10_until_12_reduce.cs
Performa Penjualan di Setiap Cabang - Part 2
Performa Penjualan di Setiap Cabang - Part 3
Performa Penjualan di Setiap Cabang - Part 4
Performa Penjualan di Setiap Cabang - Part 5
Performa Penjualan di Setiap Cabang - Part 6
Evaluasi Andra untuk Project yang Telah Disubmit
Aku baru selesai mengecek ulang hasil kerjaku sebelum kuberikan pada Andra. Sejauh pemeriksaanku semua tampak baik-baik saja. Aku pun menutup laptopku dan membawanya ke ruangan Andra. Harus kuakui, aku cukup berdebar-debar! Walaupun proyek pertama berjalan lancar, tetap saja rasanya tegang membayangkan tanggapan Andra terhadap hasil kerjaku. Semoga tidak mengecewakan.
“Ndra, maaf ganggu. Ini hasil proyek kemarin sudah selesai. Aku menganalisis rata-rata jumlah order, customer, produk, brand, dan GMV per hari dalam bulanan untuk 5 provinsi besar di Pulau Jawa sesuai rikues. Mau dicek dulu?”
“Boleh, coba tolong dibawa ke mari laptop kamu.”
Selang beberapa menit, Andra menyahut “Saya mau tanya. Kamu pakai define function di kodemu, gunanya untuk apa?”
“Buat automate pembuatan dan penyimpanan grafik, Ndra. Jadi tinggal state saja dataframe-nya yang mana dan pengelompokannya seperti apa.” jelasku. Ujian tanya jawab telah dimulai! Andra memang tipikal mentor yang akan menguji hasil pekerjaan. Perlahan cara ini melatihku untuk mengambil keputusan dan langkah yang benar-benar matang.
“Oke. Kenapa kamu enggak pakai command saja yang diulang sampai 5 kali kepada 5 measurement yang berbeda?”
“Soalnya pakai looping akan lebih mudah, Ndra. Aku tinggal mengganti order pada Part 3 menjadi sebuah variable bernama measurement, lalu lakukan for loop untuk diulang ke semua measurement yang ada,” jawabku mantap.
Andra tersenyum. “Oke, sepertinya kamu benar-benar tahu apa yang kamu lakukan. Akan saya bawa ke rapat nanti untuk dibahas dengan kepala cabang, saya akan undang kamu ke rapat juga.”
Aku mengangguk antusias.