Python for Data Prof Beginner Part 2 - nurkomarhidaya/DQLab GitHub Wiki

1. Collection Manipulation dengan Python

Memulai dengan Collection Manipulation

Hari pertama aku mempelajari Python bersama Senja, aku masih belum mendapat kesulitan yang berarti. Sebaliknya, aku merasa mendapatkan duniaku. Di sinilah aku dapat menjadi diriku sendiri: mengerjakan yang sejak dulu aku sukai.

Meja sebelahku masih kosong, sepertinya Senja belum datang. Aku membuka laptopku dulu dan segera melanjutkan pembelajaran modul kedua Python. Total modul yang Senja berikan padaku kemarin ada tiga!

Harus kucicil belajar dari sekarang. Aku membuka bab pertama isi modul kedua. Materi mengenai “Collection Manipulation”, “List dan Tuple” hingga “Set Manipulation” langsung menyapaku.

Apa itu Collection Manipulation?

Collections manipulation adalah salah satu teknik yang penting untuk dikuasai setiap programmer. Melalui penguasaan materi collections manipulation, aku dapat mengolah berbagai tipe data _collections_dalam Python yang meliputi:

  • list,
  • tuple,
  • set, dan
  • Dictionary.

Mengakses List dan Tuple - Part 1

Seperti yang telah aku pelajari pada modul Python for Data Professional Beginner - Part 1: Bab “Sequence Type”, aku dapat mengakses elemen pada suatu list ataupun tuple dengan menggunakan indeks atau semacam nomor urut dari list atau tuple tersebut. Indeks pada suatu tipe data list atau tuple dimulai dari angka 0.

image

Kemudian, untuk mengakses elemen dari belakang pada suatu list/tuple, aku juga dapat menggunakan indeks negatif pada list/tuple

image

image

Mengakses List dan Tuple - Part 2

Cara collections manipulation pertama yang akan aku pelajari adalah memotong (slicing) list/tuple dengan menggunakan rentangan nilai indeks (range of index).

image

image

image

Menggabungan Dua atau lebig List atau Tuple

Selain dapat melakukan pemotongan terhadap tipe data list/tuple, aku juga dapat menggabungkan isi dari suatu list (ataupun tuple) dengan list lainnya (atau dengan tuple lainnya) dengan menggunakan operator penambahan (+).

image

image

Quiz

image

List Manipulation - Part 1

Untuk memanipulasi tipe data list, aku dapat menggunakan sekumpulan fitur yang telah tersedia dalam bahasa pemrograman Python. Merujuk pada tabel di bawah, aku dapat memahami fitur-fitur untuk melakukan manipulasi data yang terdiri atas append(), clear(), copy(), count() dan extend()

image image image

image

List Manipulation - Part 2

Selanjutnya aku akan mempelajari fitur index(), insert(), pop(), remove(), reverse(), dan sort() untuk melakukan manipulasi.

Tugas: Ketikkanlah kode yang diberikan pada contoh penggunaan di live code editor.

image image

image

Tuple Manipulation

Aku juga mempelajari fitur yang dapat digunakan untuk melakukan manipulasi data dengan tipe data tuple

image

image

Quiz

image

Set Manipulation - Part 1

Sedikit berbeda dengan tipe data list dan tuple, pada tipe data set terdapat cukup banyak fitur yang disediakan oleh bahasa Python.

Tugas: Ketikkan potongan kode pada kolom Contoh Penggunaan di live code editor.

image image image image

image

Set Manipulation - Part 2

Sedikit berbeda dengan tipe data list dan tuple, pada tipe data set terdapat cukup banyak fitur manipulasi yang bisa aku gunakan.

Tugas: Ketikkan potongan kode yang diberikan pada Contoh Penggunaan pada live code editor:

image image image

image

Quiz

image

Dictionary Manipulation

Aku menunjukkan subjudul yang sedang kupelajari saat ini: “Dictionary Manipulation” pada Senja. “Oke, pas banget. Bab ini ada praktiknya, nanti kupandu ya. Bagian string manipulation juga.” Sembari menunggu Senja membuka laptopnya, aku kembali melanjutkan membaca: Terakhir, untuk memanipulasi tipe data dictionary.

Tugas: Ketikkan potongan kode berikut pada live code editor:

image image image

image

Useful Tips and Tricks

Untuk menentukan berapa jumlah data yang tersimpan di setiap elemen pada tuple/list, aku dapat menggunakan fungsi buit-in len()

image image

image

Tugas Praktek

“Aksara, untuk praktik kali ini, saya membebaskan kamu memilih case yang akan digunakan,” ujar Senja padaku.

Aku pun mulai berpikir. Selama ini aku bikin program hitung-menghitung untuk kantor dan keluarga, kok enggak bikin buat diri sendiri juga yah? Apalagi belakangan aku suka nge-boba, kayaknya memang harus dilacak deh pengeluaran dan pemasukanku minimal 9 bulan terakhir. Kalau begitu, aku pakai case pengalamanku sendiri ini saja untuk dianalisis!

Buat menganalisisnya, berarti aku harus merapikan struktur data yang kumiliki terlebih dulu dengan dictionary dan kuberi nama keuangan untuk merepresentasikan pengeluaran dan pemasukan. “Pakai format juta, lalu masukkan variabel keuangan,” ujarku sembari mengetik

image

Tugas: Dari variabel keuangan, aku akan menghitung rata-rata pengeluaran dan pemasukanku selama 9 bulan terakhir. Semoga keuanganku sehat-sehat saja.

image

Cara di atas adalah dua cara yang valid untuk mendeklarasikan variabel dengan bertipe string. Kemudian, untuk mendeklarasikan tipe data string ke dalam beberapa baris, aku dapat melakukannya dengan mengapitnya dengan tanda kutip satu ataupun tanda kutip dua sebanyak 6 kali (3 di bagian awal dan 3 di bagian akhir dari string). Sebagai contoh:

image

akan menghasilkan:

image

image

2. String Manipulation dengan Python

Tinjauan Ulang String pada Python

Seperti yang telah aku pelajari pada bab sebelumnya, layaknya general-purpose programming language lainnya, Python mengizinkan aku untuk mengolah berbagai berbagai tipe data, tak terkecuali tipe data text. Dalam Python, tipe data text dapat aku deklarasikan sebagai sebuah string dengan mengapitnya menggunakan tanda kutip satu ataupun tanda kutip dua. Sebagai contoh:

image

Cara di atas adalah dua cara yang valid untuk mendeklarasikan variabel dengan bertipe string. Kemudian, untuk mendeklarasikan tipe data string ke dalam beberapa baris, aku dapat melakukannya dengan mengapitnya dengan tanda kutip satu ataupun tanda kutip dua sebanyak 6 kali (3 di bagian awal dan 3 di bagian akhir dari string). Sebagai contoh:

image

Apa itu String Manipulation?

Aku belajar bahwa String Manipulation adalah teknik yang digunakan dalam memanipulasi data yang disimpan dalam tipe data str. Pada bahasa Python, untuk mempermudah proses pengolahan data, tipe data string dapat diperlakukan layaknya seperti tipe data list Tugas: Aku mengikuti contoh yang diberikan dengan mengetik syntax pada live code editor untuk memahami bagaimana String Manipulation bekerja pada Python.

image

image

Operator "+" untuk Tipe Data String

Setelah aku mempelajari String Manipulation, sekarang aku beralih ke Operator +. Operator + pada dua string akan secara otomatis menggabungkan kedua string tersebut. Operator + juga dapat digunakan untuk menambahkan beberapa string secara bersamaan.

Aku mengikuti contoh yang diberikan dengan mengetik syntax pada live code editor untuk memahami bagaimana Operation + bekerja pada Python.

image

image

Menghilangkan Spasi di Awal dan/atau di Akhir

Sekarang aku akan mempelajari bagaimana menghilangkan kelebihan spasi yang dimiliki di awal dan/atau di akhir variabel string. Pertama, aku melihat fitur yang diberikan pada tabel contoh.

Tugas: Agar lebih memahami bagaimana penerapan fitur ini pada Python, aku akan mengikuti contoh yang tercantum pada tabel dengan cara mengetikkannya pada live code editor.

image

image

Merubah Caps pada String

Pada bagian ini, aku akan mempelajari cara merubah caps (penggunaan huruf besar dan kecil). Jika diawal kalimat pada suatu string yang dimiliki belum berupa huruf kapital, maka dengan menggunakan fitur .capitalize() kita dengan mudah mengubah string tersebut menjadi kalimat yang benar secara bahasa.

Tugas: Aku mengikuti contoh yang diberikan dengan mengetik syntax pada live code editor untuk memahami bagaimana fitur .capitalize(), .lower(), dan .upper() bekerja pada Python.

image image

Pemecahan, Penggabungan, dan Penggantian String

Pada bagian ini, aku akan mempelajari bagaimana cara memecah suatu string dengan kondisi tertentu sehingga menghasilkan list of string. Kemudian, akan dipelajari bagaimana cara menggabungkan beberapa list of string menjadi string saja. Akhirnya, aku akan mengganti sub-string tertentu dengan sub-string lainnya sehingga mengubah string awalnya.

Tugas: Agar lebih memahami bagaimana penerapannya pada Python, aku akan mengikuti contoh penggunaan yang diberikan dari tabel berikut dengan mengetik syntax pada live code editor.

image image

image

Menentukan Posisi dan Jumlah Sub-string pada String

Pada bagian ini, aku akan mempelajari bagaimana cara menentukan posisi awal suatu sub-string dan jumlah kemunculan sub-string tersebut pada suatu string agar lebih memahami bagaimana penerapannya pada Python.

Tugas: Aku akan mengikuti contoh penggunaan yang diberikan dari tabel berikut dengan mengetiknya pada live code editor.

image

image

Menentukan String Apakah Diawali/Diakhiri oleh Sub-string

Pada bagian ini, aku akan mempelajari bagaimana menentukan apakah suatu string diawali atau diakhiri dengan suatu substring (teks) tertentu.

Tugas: Agar lebih memahami bagaimana penerapannya pada Python, aku akan mengikuti contoh penggunaan yang diberikan menggunakan fitur dalam tabel berikut dengan mengetiknya pada live code editor.

image

image

Tugas Praktek

Aku mengecek ponsel. Sejak kukirimkan progress latihanku terakhir pada Senja, belum ada kabar lagi sampai saat ini. Senja memang tiba-tiba pergi dari mejanya tadi. Sedikit bosan, aku coba membuka-buka dokumen di laptop. Aku menemukan folder “LATIHAN” dan teringat kalau ada satu latihan kecil yang belum kukerjakan. “Mumpung lagi lowong, aku coba deh.”

Aku mengeklik dokumen PENGOLAHAN DATA TEKS. Di dalamnya aku diminta untuk meneliti popularitas antara buah salak dan buah jeruk berdasarkan judul artikel yang muncul di majalah Buah Sehat. Aku mulai menyiapkan susunan kodeku:

image

Tugas: “Kalau mengikuti yang sudah kupelajari, langkah pertama adalah menghitung jumlah kemunculan kata jeruk dan salak di tiap judul artikel,” batinku. Aku kembali berkutat di depan layar laptop.

image

Tugas Praktek

Setelah selesai menghitung jumlah kemunculan kata, aku mencoba berpikir dari sudut pandang si pemilik majalah. Kalau aku jadi mereka, tentunya aku juga ingin tahu apakah kata yang muncul itu bermuatan positif atau tidak. Nah ini!

Tugas: Dengan cepat, aku mendeklarasikan daftar bernama kata_positif yang berisi nuansa kata positif untuk menghitung jumlah kemunculan kata_positif bagi tiap artikel jeruk dan salak, seperti ini:

image

3. Functions

Function adalah sebuah blok statemen yang hanya akan dijalankan saat ia dipanggil. Secara tidak sadar, selama proses belajar ini, aku telah mencoba menggunakan fungsi-fungsi dalam bahasa pemrograman Python.

Fungsi len() untuk mengukur jumlah elemen dalam sebuah list dan fungsi print() untuk menampilkan pesan pada layar konsol merupakan contoh dari bentuk fungsi yang telah disediakan oleh bahasa pemrograman Python, atau dengan kata lain built-in functions.

Selain fungsi yang telah disediakan oleh Python, Python mengizinkan aku untuk mendeklarasikan fungsi dalam kode yang aku tuliskan yang dikenal dengan user defined function.

image

Aku menuliskan dalam catatanku:

  • nama_fungsi adalah nama untuk fungsi yang kita definisikan, memiliki aturan seperti penamaan variabel
  • argument adalah variabel masukan ke fungsi, bisa tanpa variabel, satu variabel atau lebih
  • statement_1 … statement_n adalah algoritma yang telah kita transfer dalam bahasa Python. Ini merupakan inti dari fungsi yang kita definisikan. Seluruh statement adalah menjorok (indent) ke dalam seperti yang pernah dipelajari pada conditioning dan looping
  • return_value adalah variabel output dari fungsi kita. Bisa tanpa variabel, satu variabel, atau lebih.

Apa Itu Fungrions?

contoh_fungsi merupakan nama dari fungsi yang aku deklarasikan dan statemen-statemen di dalamnya disebut sebagai isi (body) dari fungsi.

Tugas: Untuk menjalankan fungsi yang telah aku deklarasikan, aku dapat menuliskan potongan kode berikut dengan mengetiknya pada live code editor pada baris berikutnya.

image

image

Fungsi Pertama

contoh_fungsi merupakan nama dari fungsi yang aku deklarasikan dan statemen-statemen di dalamnya disebut sebagai isi (body) dari fungsi.

image

image

Fungsi Kedua

Sebuah fungsi dapat menerima serangkaian argumen pada bagian dalam kurung setelah nama fungsi telah aku definisikan.

fungsi_dengan_argumen membutuhkan dua argumen (nama_depan, nama_belakang). Python akan menjalankan sebuah fungsi hanya ketika aku telah mensuplai jumlah argumen yang sesuai saat fungsi didefinisikan.

image

image

Fungsi Ketiga

Saat aku melakukan pemanggilan fungsi dengan jumlah argumen yang tidak sesuai, Python akan mengembalikan pesan error yang menyatakan bahwa terdapat argumen yang belum disuplai agar fungsi dapat dijalankan dengan baik.

Berikut ini adalah contoh pesan error yang akan dikembalikan oleh Python saat aku hanya menyuplai satu argumen saja untuk fungsi_dengan_argumen:

image

Bahasa Python mengizinkan aku untuk memberikan suatu nilai default terkait dengan sebuah argumen dalam sebuah fungsi. Melalui fitur ini, suatu argumen dalam sebuah fungsi akan bersifat opsional.

image

image

Tugas Praktek

image

image

Tugas Praktek

image

image

Tugas Praktek

image

image

4. Manipulasi Berkas Teks dan Library Matematika pada Python

Manipulasi Berkas Teks

1. Membaca file di local computer

Pengolahan berkas teks pada Python tidak membutuhkan proses import dependencies lainnya seperti pada bahasa-bahasa pemrograman lainnya. Untuk memanipulasi berkas teks pada bahasa pemrograman Python, mula-mula aku harus membuka/membuat berkas teks yang aku inginkan dengan menggunakan fungsi open(). Fungsi open() menerima 2 parameter, di mana parameter pertama merupakan nama dari file yang ingin dibuka/dibuat dan mode yang berkaitan dengan aksi yang ingin dilakukan terhadap file yang telah terbuka. Sebagai contoh:

file = open("hello.txt", "r")

Argumen/parameter "r" mengartikan bahwa file yang akan dibuka berada dalam mode “read” sehingga nantinya aku tidak dapat menambahkan/ menuliskan ulang isi tulisan dari file "hello.txt".

Perintah ini dapat digunakan untuk menutup file yang telah aku buka.

file.close()

Aku juga belajar bahwa selain mode "r" yang hanya digunakan untuk membaca file, terdapat juga mode lainnya seperti:

  1. w: write, mode ini dapat aku gunakan untuk menulis ke dalam sebuah berkas teks. Jika berkas tidak tersedia, maka Python akan secara otomatis membuat sebuah berkas baru dengan nama yang telah di spesifikasikan. Saat menulis dengan menggunakan mode ini, jika file semula tidak kosong, maka isi yang sebelumnya terdapat di dalam berkas akan terhapus.
  2. a: append, mode ini dapat aku gunakan untuk menambahkan isi dari sebuah berkas teks. Mode ini juga akan membuat sebuah berkas teks baru dengan nama yang telah kita spesifikasikan jika berkas teks tidak tersedia.
  3. w+: write+, mode ini dapat aku gunakan untuk membaca ataupun menuliskan isi dari sebuah berkas teks.
  4. a+: append+, mode ini dapat aku gunakan untuk membaca ataupun menambahkan isi dari sebuah berkas teks.

2. Membaca file dari url

Berkas teks yang berada di suatu alamat di internet dapat dibaca berdasarkan url-nya. Untuk membacanya aku perlu menggunakan library requests. File hello.txt yang aku temui di local komputer ku juga ada di url berikut https://storage.googleapis.com/dqlab-dataset/hello.txt.

Akhirnya, aku dapat menggunakan kode berikut

image

Membaca Berkas Teks - Part 1

Setelah mempelajari bagaimana membuka/membuat sebuah berkas teks dalam Python, aku akan mempelajari sintaks untuk dapat membaca isi dari sebuah berkas. Untuk membaca isi dari sebuah teks aku dapat menggunakan potongan kode berikut.

Aku akan mengasumsikan baris-baris di bawah comment merupakan isi dari “hello.txt”

image

Note: Karena ada perubahan hosting file hello.txt yang tidak ditempatkan di direktori lokal sistem DQLab kamu dapat mempraktikkan bagian A1 dan A2 pada komputer kamu. Untuk itu file hello.txt dapat kamu unduh melalui https://storage.googleapis.com/dqlab-dataset/hello.txt.

image

Selain dapat membaca dan menampung isi dari sebuah berkas secara sekaligus menggunakan fungsi read(), aku juga dapat menggunakan fungsi readline() ataupun readlines() untuk membaca isi dari suatu berkas teks. Dengan menggunakan fungsi readline(), Python akan membaca konten dari sebuah berkas secara baris per baris, dimulai dari baris paling awal.

image

image

image

Membaca Berkas Teks - Part 2

Fungsi readlines() akan mengembalikan sebuah list yang setiap elemennya merupakan setiap baris dalam sebuah berkas teks.

Note: Karena ada perubahan hosting file hello.txt yang tidak ditempatkan di direktori lokal sistem DQLab kamu dapat mempraktikkan bagian A1 dan A2 pada komputer kamu. Untuk itu file hello.txt dapat kamu unduh melalui https://storage.googleapis.com/dqlab-dataset/hello.txt.

image

image

image

image

Menulis Berkas Teks - Part 1

Untuk menuliskan isi dari suatu berkas, aku dapat menggunakan fungsi write() atau writelines() yang telah disediakan oleh Python. Sebelum masuk ke dalam contoh penggunaan fungsi write() atau writelines(), penting bagiku untuk mengingat bahwa mode yang aku spesifikasikan pada fungsi open() akan mempengaruhi bagaimana Python menuliskan isi ke dalam berkas teks. Jika aku menggunakan mode w, maka Python akan menghapus seluruh isi dalam berkas sebelum menuliskan konten yang aku spesifikasikan.

image

image

Menulis Berkas Teks - Part 2

image

image

Quiz

image

Quiz

image

Library Matematika pada Python

Salah satu keunikan Python adalah library yang dimilikinya karena dapat di-extend dengan library yang didefinisikan oleh pengguna Python, selain dari library bawaan (built-in) yang dimilikinya. Untuk membuat library yang didefinisikan oleh pengguna umumnya dilakukan dengan menggunakan teknik pemrograman berorientasi obyek (object oriented programming).

Tentunya secara dasar, Python tidak dapat digunakan untuk pengolahan data, komputasi saintifik, machine learning dan bahkan sistem cerdas. Melalui pengembang library tentunya aku memiliki akses ke keperluan atau bidang tersebut. Library ini dapat diinstal melalui command pip yang bersumber dari web python package index.

Bagi yang pernah menggunakan Matlab pasti tahu ada toolbox tertentu misal untuk optimasi, pengolahan sinyal, dll. Jadi, toolbox di Matlab itu ekuivalen dengan library pada Python. Bahasa pemrograman lain seperti R, PHP, GO, Java, dsb tentu juga memiliki hal yang serupa.

Untuk memanggil library pada python, aku dapat menggunakan syntax:

import

adalah nama library yang akan diimport untuk dapat digunakan dalam kode program yang disusun, baik library bawaan (built-in), library yang tersedia ada di web python package index atau dikembangkan sendiri.

Python adalah salah satu bahasa yang paling diminati untuk pengolahan data secara matematis. Untuk menggunakan fungsi-fungsi matematis yang telah disediakan oleh bahasa Python, aku dapat melakukan proses import library math seperti pada potongan kode berikut:

import math

Fungsi dalam Library Matematika Part 1

Di dalam library math aku mempelajari berbagai fungsi, beberapa diantaranya dapat dilihat pada tabel di bawah ini.

Tugas: Aku mengetikkan potongan kode berikut dalam live code editor:

image

image

image

Fungsi dalam Library Matematika Part 2

Aku masih melanjutkan bagian terakhir dari (bulit-in) library matematika pada Python yang dapat digunakan untuk perhitungan matematis.

Tugas: Aku mempraktekkan potongan kode berikut dalam live code editor:

image image

image

Quiz

image

Quiz

image

5. Mini Quiz

Pendahuluan

Pada _mini_project dalam modul "Basic Python for Data Professional Beginner - Part 2", aku akan diuji oleh Senja cara memprediksi harga rumah di Tangerang berdasarkan luas tanah, luas bangunan, serta kedekatan lokasi dengan pusat kota.

Data yang tersedia dalam format teks harus dibaca terlebih dahulu dan kemudian mengubahnya ke dalam list of dict. Data yang berupa list of dict ini akan digunakan untuk memprediksi harga rumah di Tangerang

Harga Rumah diTangerang

“Terima kasih, Aksara! Akhirnya kelar juga pekerjaan kemarin. Masih semangat, kan? Belum kapok kalau ada proyek baru datang lagi? Hahaha,” goda Senja.

“Asalkan ada bonus, maju terus,” candaku.

“Oke, kali ini serius. Kita diminta untuk mengembangkan model prediksi harga rumah di di Tangerang berdasarkan luas tanah, luas bangunan serta kedekatan lokasi dengan pusat kota. Untuk mengembangkan model prediksi ini, saya telah mengumpulkan beberapa data yang diperlukan. Coba kamu lihat,” jelas Senja.

image

“Berarti aku akan memprediksi harga rumah ini berdasarkan kemiripan atribut dari data yang telah ada ini?” tanyaku memastikan. Senja mengangguk.

Aku pun segera menempatkan data tersebut ke dalam file harga_rumah.txt seperti berikut ini:

image

image

image

image

Code Editor Tugas

image

https://codeshare.io/9OzdoM

Hasil Belajarku

Tidak terasa, aku berhasil menyelesaikan modul Python for Data Professional Beginner - Part 2. Dari materi yang telah aku pelajari dan praktekkan dalam module ini, aku telah mampu:

  • Memahami & mempraktikkan penggunaan collection manipulations (list, tuple, set dan dictionary) pada Python.
  • Memahami & mempraktikkan penggunaan string manipulation pada Python.
  • Memahami & mempraktikkan pembuatan fungsi yang didefinisikan sendiri untuk kebutuhan tertentu dengan menggunakan Python.
  • Memahami & mempraktikkan cara membaca data dari file menggunakan Python
  • Mengerjakan latihan dalam membuat program Python untuk penyelesaian kasus bisnis sederhana.