Dasar Python untuk Data Science
Dasar Python untuk Data Science
@[Link]
Peringatan
Materi dalam ebook cheatsheet ini telah divalidasi, namun bagaimanapun juga, ebook ini
tidak luput dari kesalahan baik definisi, konten secara umum, maupun syntax. Segala
masukkan dari pengguna sangat terbuka. DM kami di instagram @[Link]
Himbauan
1. Tidak menjadikan ebook ini satu-satunya sumber pegangan, cross check dan validasi
segala informasi dari sumber lain.
2. Tidak membagikan atau mencetaknya untuk diperbanyak, kecuali untuk pribadi.
3. Disarankan untuk merekomendasikan langsung ke instagram @[Link] jika
temanmu berminat agar ilmu yang bermanfaat bisa tersebar semakin luas.
Daftar Isi
BAB 1 – PENDAHULUAN.................................................................................................. 8
1.1 Apa itu Python?.....................................................................................................8
1.1.1 Sejarah Singkat Python..................................................................................8
1.1.2 Kelebihan Python untuk Data Science............................................................ 8
1.1.3 Perbedaan Python 2 vs Python 3.................................................................... 9
1.2 Persiapan Lingkungan Belajar................................................................................9
1.2.1 Instalasi Python (Windows, macOS, Linux).....................................................9
1.2.2 Manajemen Versi Python (pyenv, Anaconda).................................................11
1.2.3 IDE/Editor yang Direkomendasikan (VSCode, PyCharm, Jupyter Notebook)....12
1.2.4 Google Colab...............................................................................................13
1.3 Memulai Python..................................................................................................14
1.3.1 Menjalankan Python di Terminal/Command Prompt..................................... 14
1.3.2 Menjalankan Python di Jupyter Notebook..................................................... 15
1.3.3 Menjalankan Python di Google Colab........................................................... 16
1.3.4 Menjalankan Skrip .py................................................................................. 17
BAB 2 – DASAR-DASAR PYTHON.................................................................................... 17
2.1 Variabel dan Tipe Data.........................................................................................18
2.1.1 Penamaan Variabel......................................................................................18
2.1.2 Tipe Data Primitif........................................................................................19
2.1.3 Mengecek Tipe Data (type()).........................................................................20
2.2 Struktur Data Built-in...........................................................................................21
2.2.1 List.............................................................................................................21
2.2.2 Tuple.......................................................................................................... 23
2.2.3 Set..............................................................................................................24
2.2.4 Dictionary...................................................................................................25
2.3 Operator dan Ekspresi......................................................................................... 27
2.3.1 Operator Aritmatika.................................................................................... 27
2.3.2 Operator Perbandingan............................................................................... 29
2.3.3 Operator Logika (and, or, not)...................................................................... 30
2.3.4 Operator Penugasan (+=, -=, =, /=, dll.).......................................................... 32
2.3.5 Operator Bitwise (|, &, ^, ~, <<, >>)................................................................32
BAB 3 – KONTROL ALUR (CONTROL FLOW)................................................................... 35
3.1 Pernyataan Kondisional....................................................................................... 35
3.1.1 if, elif,else................................................................................................... 35
3.1.2 Nested if..................................................................................................... 36
3.2 Perulangan......................................................................................................... 37
3.2.1 for Loop......................................................................................................37
3.2.2 while Loop..................................................................................................39
3.2.3 Pernyataan break, continue, dan pass...........................................................40
BAB 4 – FUNGSI (FUNCTIONS).......................................................................................43
4.1 Definisi Fungsi.................................................................................................... 43
4.2 Parameter dan Argumen (Positional, Default, *args, kwargs)..................................45
4.3 Return Statement................................................................................................ 48
4.4 Fungsi Lambda (Anonymous Function).................................................................49
4.5 Scope Variabel dan Namespace............................................................................ 50
BAB 5 – MODULARISASI DAN MANAJEMEN PAKET........................................................ 53
5.1 Modul................................................................................................................. 53
5.2 Paket (Packages)..................................................................................................55
5.3 Mengelola Paket dengan pip dan Virtual Environment...........................................57
BAB 6 – STRING MANIPULATION.................................................................................. 60
6.1 String Dasar........................................................................................................ 60
6.1.1 Metode String Umum.................................................................................. 62
6.2 String Formatting................................................................................................ 65
6.2.1 format()...................................................................................................... 65
6.2.2 f-String (Formatted String Literal)................................................................ 66
6.2.3 Format Spesifik (Alignment, Precision).........................................................67
6.3 Regular Expressions (Regex) Singkat.................................................................... 68
BAB 7 – PENANGANAN ERROR DAN LOGGING................................................................70
7.1 Error dan Exception............................................................................................ 70
7.2 Membuat Exception Sendiri................................................................................. 72
7.3 Logging.............................................................................................................. 73
BAB 8 – PEMROGRAMAN BERORIENTASI OBJEK (OOP) DASAR...................................... 77
8.1 Kelas dan Objek...................................................................................................77
8.2 Konsep OOP Dasar...............................................................................................79
8.2.1 Enkapsulasi................................................................................................ 79
8.2.2 Inheritance (Pewarisan)...............................................................................81
8.2.3 Polimorfisme.............................................................................................. 82
8.2.4 Abstraksi (Singkat)...................................................................................... 83
8.3 Metode Khusus (Special Methods)........................................................................ 84
8.3.1 __str__() dan __repr__()............................................................................... 84
8.3.2 Operator Overloading (__add__, __len__, dsb.)..............................................85
BAB 9 – MEMULAI DATA SCIENCE DENGAN PYTHON..................................................... 87
9.1 Pengenalan Data Science..................................................................................... 87
9.2 Lingkungan Data Science..................................................................................... 88
9.2.1 Anaconda Distribution.................................................................................88
9.2.2 Jupyter Notebook vs JupyterLab................................................................... 89
9.2.3 Perbandingan Tools Lain............................................................................. 89
BAB 10 – NUMPY: DASAR MANIPULASI ARRAY.............................................................. 92
10.1 Pengenalan NumPy............................................................................................92
10.2 Membuat Array................................................................................................. 92
10.2.1 [Link]()..................................................................................................93
10.2.2 [Link]()............................................................................................... 93
10.2.3 [Link]()............................................................................................. 94
10.2.4 Array Khusus ([Link](), [Link](), [Link](), [Link]())......................... 94
10.3 Operasi Dasar pada Numpy Array....................................................................... 96
10.3.1 Aritmatika Dasar....................................................................................... 96
10.3.2 Akses Elemen (Indexing, Slicing)................................................................97
10.3.3 Manipulasi Bentuk (reshape, ravel, transpose).............................................98
10.3.4 Broadcasting............................................................................................. 99
10.4 Fungsi-Fungsi Statistik..................................................................................... 100
10.5 Teknik Lanjutan Numpy................................................................................... 101
10.5.1 Fancy Indexing........................................................................................ 101
10.5.2 Boolean Masking......................................................................................101
10.5.3 Concatenate dan Split Array......................................................................102
BAB 11 – PANDAS: PENGOLAHAN DATA TABEL.............................................................104
11.1 Pengenalan Pandas.......................................................................................... 104
11.2 Series.............................................................................................................. 104
11.2.1 Membuat Series (Dari List, Numpy Array, Dictionary)................................ 104
11.2.2 Atribut dan Metode Series........................................................................ 106
11.3 DataFrame.......................................................................................................106
11.3.1 Membuat DataFrame (Dari Dictionary, CSV, Excel, SQL, dll.).......................107
11.3.2 Akses Baris dan Kolom (Indexing, loc, iloc)............................................... 108
11.3.3 Menambah/Menghapus Kolom dan Baris.................................................. 110
11.3.4 Grouping (groupby())................................................................................111
11.3.5 Merge, Join, dan Concat DataFrame.......................................................... 112
11.4 Pembersihan dan Manipulasi Data.................................................................... 114
11.4.1 Menangani Data Hilang (dropna(), fillna())................................................ 114
11.4.2 Deteksi dan Perbaikan Outlier (Singkat).................................................... 116
11.4.3 Konversi Tipe Data, Memformat Tanggal................................................... 117
11.5 Metode Statistik dan Analisis............................................................................ 118
11.5.1 Descriptive Statistics (describe())...............................................................118
11.5.2 Korelasi (corr())........................................................................................119
11.5.3 Agregasi (sum, mean, count).................................................................... 120
BAB 12 – VISUALISASI DATA........................................................................................ 122
12.1 Matplotlib........................................................................................................122
12.1.1 Instalasi dan Import (import [Link] as plt)................................ 122
12.1.2 Plot Dasar (Line Plot, Scatter Plot, Bar Plot, Histogram)..............................122
Line Plot......................................................................................................122
Scatter Plot.................................................................................................. 123
Bar Plot....................................................................................................... 125
Histogram................................................................................................... 126
12.1.3 Kustomisasi Plot (Label, Title, Legend, Grid)............................................. 127
12.1.4 Multi Subplot........................................................................................... 128
12.2 Seaborn........................................................................................................... 129
12.2.1 Instalasi dan Import (import seaborn as sns)............................................. 129
12.2.2 Plotting Tingkat Lanjut (Boxplot, Violinplot, Pairplot, Heatmap)................. 129
Boxplot........................................................................................................129
Violinplot.................................................................................................... 130
Pairplot....................................................................................................... 131
Heatmap..................................................................................................... 132
12.2.3 Palet Warna dan Gaya Visual.....................................................................133
12.3 Plotly/Altair (Opsional)..................................................................................... 134
BAB 13 – DASAR-DASAR STATISTIKA DAN PROBABILITAS UNTUK DATA SCIENCE........ 136
13.1 Statistika Deskriptif.......................................................................................... 136
13.1.1 Ukuran Pusat (Mean, Median, Mode)........................................................ 136
13.1.2 Ukuran Penyebaran (Variance, Standard Deviation, Range)........................ 137
13.2 Probabilitas..................................................................................................... 138
13.2.1 Konsep Dasar Probabilitas........................................................................ 138
13.2.2 Distribusi Umum (Normal, Uniform, Binomial, Poisson)............................ 138
13.3 Sampling dan Interval Kepercayaan (Singkat).................................................... 141
13.3.1 Sampling................................................................................................. 141
13.3.2 Confidence Interval................................................................................. 142
BAB 14 – PENGENALAN MACHINE LEARNING DI PYTHON........................................... 144
14.1 Konsep Dasar Machine Learning.......................................................................144
14.2 Scikit-Learn..................................................................................................... 144
14.2.1 Instalasi dan Import.................................................................................145
14.2.2 Alur Dasar fit, predict, dan evaluate.......................................................... 145
14.2.3 Train-Test Split.........................................................................................146
14.3 Model Dasar Supervised Learning..................................................................... 147
14.3.1 Regresi Linear (Simple dan Multiple).........................................................147
14.3.2 Klasifikasi (Logistic Regression, KNN, Decision Tree, Random Forest)........ 148
Contoh (Logistic Regression)........................................................................ 148
Contoh (KNN – K Nearest Neighbors)............................................................ 149
Decision Tree dan Random Forest.................................................................150
14.4 Model Unsupervised Learning.......................................................................... 151
14.4.1 Clustering (K-Means)................................................................................151
14.4.2 Dimensionality Reduction (PCA)............................................................... 152
BAB 15 – TIPS DAN TRIK PYTHON UNTUK DATA SCIENCE............................................154
15.1 Itertools...........................................................................................................154
15.1.1 Fungsi Penting: count(), cycle(), chain(), combinations(), permutations().... 154
15.2 Koleksi Tipe Data Khusus (collections).............................................................. 156
15.2.1 Counter................................................................................................... 157
15.2.2 defaultdict............................................................................................... 157
15.2.3 namedtuple............................................................................................. 158
15.2.4 deque...................................................................................................... 159
15.3 Fungsi Bawaan Python yang Berguna................................................................ 159
15.3.1 map(), filter(), zip()...................................................................................160
15.4 Time dan Date................................................................................................. 160
15.4.1 datetime Module......................................................................................161
15.5 Penggunaan timeit dan Profiling Kode...............................................................162
15.5.1 timeit Module.......................................................................................... 162
15.5.2 Profiling Sederhana (cProfile)................................................................... 163
BAB 16 – PENGEMBANGAN PROYEK DATA SCIENCE SEDERHANA.................................165
16.1 Studi Kasus 1: Analisis Dataset (Exploratory Data Analysis – EDA)....................... 165
Langkah-Langkah EDA (Loading, Cleaning, Visualisasi).......................................165
Contoh script (EDA pada dataset Iris)..................................................................165
16.2 Studi Kasus 2: Model Prediksi............................................................................167
Langkah-Langkah (Train, Test, Evaluasi).............................................................167
Contoh script (Model Klasifikasi pada Iris).......................................................... 168
BAB 17 – BEST PRACTICES DAN SARAN LANJUT.......................................................... 170
17.1 Struktur Folder Proyek..................................................................................... 170
Penjelasan Struktur:.......................................................................................... 171
17.2 Kode yang Rapi dan Terbaca............................................................................. 171
Dokumentasi dan Komentar...............................................................................171
Contoh penulisan fungsi rapi:............................................................................ 172
17.3 Versi Kontrol (Git, GitHub)................................................................................172
Alur Git Dasar................................................................................................... 172
Mengelola Repositori Data Science..................................................................... 173
17.4 Pemanfaatan Lanjutan..................................................................................... 173
17.4.1 Docker untuk Proyek Data Science............................................................ 173
17.4.2 Penyebaran Model (Flask, FastAPI, Streamlit) – Singkat..............................174
BAB 18 – REFERENSI TAMBAHAN................................................................................176
18.1 Dokumentasi Resmi......................................................................................... 176
18.1.1 Dokumentasi Python................................................................................176
18.1.2 Dokumentasi NumPy, Pandas, Matplotlib, Seaborn, Scikit-Learn................ 177
18.2 Sumber Belajar Online..................................................................................... 179
18.2.1 Tutorial Resmi......................................................................................... 179
18.2.2 Kursus dan Komunitas............................................................................. 179
18.2.3 Buku Rekomendasi Lain........................................................................... 180
18.3 Glosarium Istilah............................................................................................. 180
BAB 1 – PENDAHULUAN
Bab awal ini dirancang untuk memperkenalkan kamu pada pemrograman Python, terutama
bila kamu sama sekali belum pernah belajar bahasa pemrograman. Python akan menjadi
pondasi utama untuk mempelajari data science dalam buku ini. Di sini, kita akan melihat
apa itu Python, mengapa bahasa ini populer untuk data science, dan bagaimana cara
menyiapkan lingkungan pemrograman sehingga kamu dapat mulai bereksperimen secara
langsung.
● Membangun aplikasi web sederhana (dengan framework seperti Flask atau Django).
● Menganalisis data besar, membuat grafik, dan membangun model machine learning
(inilah yang disebut data science).
Python juga sering dipakai oleh peneliti, insinyur, maupun orang-orang non-teknis yang
ingin mengolah data. Intinya, Python itu serba bisa.
Guido van Rossum menciptakan Python pada awal 1990-an. Nama “Python” bukan diambil
dari nama hewan ular, tapi dari grup komedi Inggris, Monty Python—jadi, kadang banyak
lelucon di dokumentasi resminya. Sejak awal, Python sengaja didesain agar mudah dibaca
dan “menyenangkan.”
Dalam perkembangannya, Python menjadi sangat populer di bidang sains dan data. Sekitar
tahun 2010-an, perpustakaan (library) Python untuk data science berkembang pesat,
misalnya NumPy, Pandas, Matplotlib, dan lain-lain. Hal itulah yang membuat Python
akhirnya menjadi bahasa yang paling sering digunakan di dunia data science saat ini.
2. Komunitas Besar: Python memiliki komunitas global yang aktif. Kamu akan mudah
menemukan tutorial, forum, dan jawaban ketika menemui masalah.
3. Ekosistem Library: Buat data science, Python punya NumPy (untuk perhitungan
numerik), Pandas (untuk data berbentuk tabel), Matplotlib/Seaborn (untuk
visualisasi), scikit-learn (untuk machine learning), dan banyak lagi.
4. Multi-platform: Python dapat dijalankan di Windows, macOS, dan Linux tanpa
perubahan berarti.
Karena kelebihan di atas, Python menjadi “senjata utama” bagi banyak data scientist, analis
data, peneliti AI, dan bahkan startup rintisan yang butuh prototyping cepat.
Barangkali kamu akan melihat referensi “Python 2” di internet. Namun Python 2 sudah
tidak lagi didukung secara resmi sejak 2020. Python 3 adalah versi yang disarankan saat ini.
Memang ada sedikit perbedaan sintaks, tetapi hampir semua library modern kini fokus
pada Python 3.
Jadi, untuk belajar data science, pakailah Python 3 agar kamu mendapatkan semua fitur
terbaru dan dukungan komunitas.
1. Windows:
2. macOS:
○ Beberapa macOS versi lama punya Python bawaan tapi biasanya Python 2.
3. Linux:
○ Jika belum ada atau versinya terlalu lama, kamu bisa gunakan manajer paket
distro (misalnya apt di Ubuntu/Debian: sudo apt-get install
python3 python3-pip).
python --version
python3 --version
Output:
Python 3.10.5
Penjelasan output:
Ketika kamu mulai mendalami data science, mungkin kamu ingin mengelola beberapa versi
Python di komputer, misalnya Python 3.8, 3.9, 3.10. Hal ini bisa dilakukan dengan:
1. pyenv (terutama di Linux/Mac): Sebuah tool untuk menginstal banyak versi Python
lalu beralih satu sama lain.
2. Anaconda Distribution: Sebuah paket yang menyertakan Python, conda (package
manager), serta library data science seperti NumPy, Pandas, dan lain-lain secara
default.
Banyak pemula suka memakai Anaconda karena semuanya “sudah dibundel,” sehingga tak
perlu instal library satu per satu di awal.
Output:
● Saat environment aktif, library yang diinstal hanya berlaku di dsenv, sehingga tidak
mengganggu sistem global.
Ada banyak alat untuk menulis kode Python. Pilihlah yang paling nyaman bagi kamu:
1. Jupyter Notebook: Sering digunakan untuk data science, karena memudahkan
mengeksekusi kode per sel, lalu langsung menampilkan hasil (termasuk grafik).
2. VSCode (Visual Studio Code): Editor serbaguna dari Microsoft, gratis dan mudah
diatur, termasuk untuk Python.
3. PyCharm: IDE khusus Python dengan fitur lengkap, cocok untuk proyek lebih besar.
Buat pemula, Jupyter Notebook sangat disarankan karena kamu bisa menulis beberapa
baris kode, mengeksekusinya, lalu langsung melihat output. Ini sangat interaktif dan ideal
untuk eksplorasi data.
jupyter notebook
Jendela browser akan terbuka menampilkan halaman Jupyter dengan daftar folder di lokasi
kamu menjalankan perintah. Kamu bisa klik “New” -> “Python 3 (ipykernel)” untuk
membuat notebook baru.
Penjelasan output:
● Jupyter Notebook akan memunculkan interface web. Di sana kamu dapat membuat
sel kode Python lalu jalankan dengan menekan Shift+Enter.
1.2.4 Google Colab
○ Buka link Colab, pilih “New Notebook” atau buka notebook contoh.
○ Kamu akan melihat tampilan mirip Jupyter Notebook. Di setiap sel, kamu
bisa menulis kode Python dan mengeksekusinya.
○ Semua proses terjadi di server Google, jadi komputer kamu tidak perlu
spesifikasi tinggi.
2. Kelebihan:
○ Tidak perlu instal Python dan library, karena Colab sudah menyertakan
banyak library data science seperti NumPy, Pandas, TensorFlow, dsb.
○ Akses GPU gratis (dengan batas tertentu), cocok untuk percobaan machine
learning atau deep learning sederhana.
3. Kekurangan:
○ Session Colab akan reset setelah beberapa jam tidak aktif, jadi kamu perlu
menyimpan data atau notebook di Google Drive.
Output (contoh):
Array random: [0.48461373 0.97367287 0.20371304 0.6418225
0.56403912]
Rata-rata: 0.573172251
Penjelasan output:
● Kode ini di eksekusi pada sel Colab. Hasilnya akan tampil tepat di bawah sel.
Google Colab sangat berguna bila spesifikasi komputer kamu terbatas, atau jika kamu ingin
berkolaborasi dengan rekan lain secara online.
2. Menggunakan Jupyter Notebook atau Google Colab: Membuat sel (cell), menulis
kode Python, lalu mengeksekusinya.
3. Menjalankan Skrip .py: Menulis kode di file teks berekstensi .py, lalu
menjalankannya.
python
Output (contoh):
>>>
Penjelasan output:
Halo Python
>>> 2 + 3
1. Buka Terminal atau Anaconda Prompt, lalu ketik jupyter notebook.
3. Klik “New” -> “Python 3 (ipykernel)” untuk membuat notebook baru.
print("Halo, Jupyter!")
x = 10
y = 5
print("x + y =", x + y)
Output:
Halo, Jupyter!
x + y = 15
Penjelasan output:
● Jupyter Notebook akan menampilkan hasil print langsung di bawah sel yang
dieksekusi, sehingga kamu bisa melihat hasil tanpa perlu membuka jendela CMD.
● Notebook sangat membantu untuk menulis “catatan” (markdown) dan kode Python
berdampingan, sehingga cocok untuk data science.
4. Tulis kode Python di sel dan tekan tombol ▶ atau Ctrl+Enter untuk mengeksekusi.
import math
print("Contoh di Google Colab")
print("Hasil sin(90 derajat):", [Link]([Link](90)))
Output:
Penjelasan:
Kadang, kamu mau menyimpan kode Python ke dalam file .py lalu menjalankannya seperti
program biasa. Ini berguna kalau kamu ingin membuat proyek yang lebih besar atau
otomatis tanpa harus membuka notebook atau Colab.
# [Link]
print("Ini adalah skrip Python pertama kamu!")
python [Link]
Output:
Penjelasan:
● Program mengeksekusi seluruh isi file [Link] mulai dari baris pertama hingga
terakhir.
● Jika kamu punya lebih banyak baris di [Link], semua akan dijalankan secara
berurutan.
Dalam Python, variabel adalah “wadah” yang dapat menyimpan berbagai nilai. Kita bisa
menyimpan angka, teks, list, dan lain-lain ke dalam variabel. Pemilihan nama variabel
harus mengikuti aturan tertentu:
● Hanya boleh mengandung huruf (a–z, A–Z), angka (0–9), dan underscore (_).
● Tidak boleh menggunakan kata kunci (keyword) yang sudah dipesan Python seperti
if, while, for, True, False, dll.
● Sebisa mungkin gunakan nama yang deskriptif agar kode mudah dibaca (misal:
jumlah_data, nama_pengguna, dll.).
Contoh script:
Output:
Budi 25 10
Penjelasan output:
● Program mencetak isi variabel nama, usia, dan jumlah_barang secara berurutan.
Variabel dapat menyimpan data dengan tipe berbeda, misalnya nama (string), usia
(integer), dan jumlah_barang (integer).
Dalam konteks data science, pemberian nama variabel yang deskriptif penting agar
memudahkan kolaborasi dan penelusuran data.
Tipe data adalah bentuk data yang disimpan di dalam variabel. Python memiliki beberapa
tipe data primitif, di antaranya:
3. Boolean: Tipe data yang hanya bernilai True atau False.
Contoh script:
Output:
bilangan_bulat: 10 -> <class 'int'>
Penjelasan output:
● Python secara otomatis mengenali tipe data berdasarkan nilai yang kita berikan.
Untuk mengetahui tipe data suatu variabel, kamu dapat menggunakan fungsi bawaan
type(). Ini berguna terutama saat kamu belum yakin apakah data kamu berbentuk
integer, float, string, atau tipe lain. Dalam dunia data science, terkadang data yang diimpor
dari file CSV atau sumber eksternal memiliki tipe yang tidak sesuai perkiraan, sehingga
type() dapat membantu pengecekan awal.
Contoh script:
angka = 42
kata = "Empat puluh dua"
print(type(angka))
print(type(kata))
Output:
<class 'int'>
<class 'str'>
Penjelasan output:
2.2.1 List
List adalah struktur data Python yang paling umum digunakan. List bersifat mutable,
artinya kamu bisa mengubah isinya setelah membuat list. List didefinisikan menggunakan
kurung siku [].
● Dapat menyimpan tipe data campuran (misal: integer, string, boolean dalam satu
list).
# Membuat list
buah = ["apel", "mangga", "jeruk"]
angka_campur = [1, 2.5, "tiga", True]
print(buah)
print(angka_campur)
# Mengakses elemen list
print("Elemen pertama buah:", buah[0])
print("Elemen kedua buah:", buah[1])
Output:
● buah[0] berarti akses elemen indeks ke-0 (indeks dimulai dari 0).
Slicing adalah teknik untuk mengambil sebagian elemen list berdasarkan indeks awal dan
akhir. Beberapa metode umum list antara lain append(), insert(), remove(), dan
pop().
Output:
List asli: ['apel', 'mangga', 'jeruk', 'pisang', 'anggur']
Penjelasan output:
Dalam data science, list kerap dipakai untuk menyimpan daftar objek, misalnya daftar file,
daftar kolom, atau kumpulan data yang sederhana.
2.2.2 Tuple
Tuple mirip dengan list, namun immutable (tidak dapat diubah elemennya setelah
didefinisikan). Biasanya tuple digunakan untuk data yang bersifat tetap atau sebagai
pengaman agar data tidak sengaja terubah.
# Membuat tuple
koordinat = (10, 20)
print("Tuple koordinat:", koordinat)
# Mengakses elemen tuple
print("Elemen pertama:", koordinat[0])
print("Elemen kedua:", koordinat[1])
# Mengubah elemen tuple (akan error)
# koordinat[0] = 15
Output:
Elemen pertama: 10
Elemen kedua: 20
Jika kamu mencoba mengubah nilai koordinat (misal koordinat[0] = 15), Python akan
menampilkan error karena tuple bersifat immutable. Penggunaannya di data science,
misalnya untuk menyimpan parameter yang seharusnya tidak berubah, atau hasil fungsi
yang return-nya lebih dari satu nilai tetapi tidak ingin dimodifikasi.
2.2.3 Set
Set adalah kumpulan elemen yang bersifat unik (tidak ada duplikasi) dan tidak berurutan.
Set berguna untuk operasi himpunan (seperti union, intersection, difference).
# Membuat set
angka_set = {1, 2, 3, 3, 2, 4, 5}
print("Set angka:", angka_set)
# Menambahkan elemen
angka_set.add(6)
print("Setelah menambah 6:", angka_set)
# Menghapus elemen
angka_set.discard(3)
print("Setelah menghapus 3:", angka_set)
# Operasi himpunan
set_a = {1, 2, 3}
set_b = {3, 4, 5}
print("Union A & B:", set_a.union(set_b))
print("Intersection A & B:", set_a.intersection(set_b))
print("Difference A - B:", set_a.difference(set_b))
Output:
Difference A - B: {1, 2}
Penjelasan output:
● Set menghilangkan duplikasi, sehingga meskipun kita menuliskan 3 dan 2 dua kali,
yang disimpan hanya satu elemen 3 dan satu elemen 2.
Dalam data science, set terkadang dipakai untuk melenyapkan duplikasi data, atau ketika
kita hanya tertarik pada keunikan sebuah kumpulan.
2.2.4 Dictionary
Dictionary adalah struktur data yang menyimpan pasangan key-value. Setiap nilai (value)
diakses dengan menggunakan kunci (key) yang unik. Digunakan untuk data yang memiliki
asosiasi atau pengaitan antar informasi.
Contoh script dasar:
# Membuat dictionary
data_mahasiswa = {
"nama": "Andi",
"nim": "12345",
"jurusan": "Informatika",
"ipk": 3.75
}
print("Dictionary data_mahasiswa:", data_mahasiswa)
# Mengakses value berdasarkan key
print("Nama:", data_mahasiswa["nama"])
print("NIM:", data_mahasiswa["nim"])
# Menambah atau mengubah nilai
data_mahasiswa["semester"] = 6 # menambahkan key baru
data_mahasiswa["ipk"] = 3.90 # mengubah IPK
print("Dictionary setelah perubahan:", data_mahasiswa)
# Metode dictionary
keys_list = data_mahasiswa.keys()
values_list = data_mahasiswa.values()
items_list = data_mahasiswa.items()
print("Keys:", keys_list)
print("Values:", values_list)
print("Items:", items_list)
Output:
Nama: Andi
NIM: 12345
Penjelasan output:
● Anda dapat menambah key baru, misalnya "semester", dan juga mengubah value
yang sudah ada, contohnya ipk.
● keys(), values(), dan items() memudahkan kamu melihat susunan key, value,
dan pasangan (key-value).
Dictionary sangat penting di data science, misalnya saat kamu menyimpan konfigurasi
model, mapping label, atau metadata.
1. + (Penjumlahan)
2. - (Pengurangan)
3. * (Perkalian)
4. / (Pembagian)
7. ** (Pangkat)
Contoh script:
a = 10
b = 3
hasil_tambah = a + b
hasil_kurang = a - b
hasil_kali = a * b
hasil_bagi = a / b
hasil_bagi_bulat = a // b
hasil_modulus = a % b
hasil_pangkat = a ** b
print("Penjumlahan (10 + 3) =", hasil_tambah)
print("Pengurangan (10 - 3) =", hasil_kurang)
print("Perkalian (10 * 3) =", hasil_kali)
print("Pembagian (10 / 3) =", hasil_bagi)
print("Pembagian Bulat (10 // 3) =", hasil_bagi_bulat)
print("Modulus (10 % 3) =", hasil_modulus)
print("Pangkat (10 ** 3) =", hasil_pangkat)
Output:
Penjumlahan (10 + 3) = 13
Pengurangan (10 - 3) = 7
Perkalian (10 * 3) = 30
Modulus (10 % 3) = 1
Penjelasan output:
Digunakan untuk membandingkan dua nilai. Hasil dari operator ini adalah tipe boolean
(True atau False).
Contoh script:
x = 5
y = 8
print("x == y ->", x == y)
print("x != y ->", x != y)
print("x > y ->", x > y)
print("x < y ->", x < y)
print("x >= 5 ->", x >= 5)
print("y <= 8 ->", y <= 8)
Output:
x == y -> False
x != y -> True
Contoh script:
a = True
b = False
print("a and b ->", a and b)
print("a or b ->", a or b)
print("not a ->", not a)
# Aplikasi operator logika pada perbandingan
x = 10
print("x > 5 and x < 15 ->", x > 5 and x < 15)
print("x < 5 or x > 8 ->", x < 5 or x > 8)
Output:
a or b -> True
Penjelasan output:
Operator ini memudahkan kamu menggabungkan operasi aritmatika dan penugasan dalam
satu ekspresi.
Contoh script:
a = 5
print("Nilai awal a:", a)
a += 3 # sama dengan a = a + 3
print("Setelah a += 3:", a)
a *= 2 # sama dengan a = a * 2
print("Setelah a *= 2:", a)
a -= 4 # sama dengan a = a - 4
print("Setelah a -= 4:", a)
a /= 2 # sama dengan a = a / 2
print("Setelah a /= 2:", a)
Output:
Nilai awal a: 5
Setelah a += 3: 8
Setelah a *= 2: 16
Setelah a -= 4: 12
Setelah a /= 2: 6.0
Penjelasan output:
● | (OR bitwise)
● ^ (XOR bitwise)
● ~ (NOT bitwise)
x = 6 # biner: 0110
y = 3 # biner: 0011
print("x | y ->", x | y, " (biner: ", bin(x | y), ")")
print("x & y ->", x & y, " (biner: ", bin(x & y), ")")
print("x ^ y ->", x ^ y, " (biner: ", bin(x ^ y), ")")
print("~x ->", ~x, " (biner: ", bin(~x), ")")
print("x << 1 ->", x << 1, "(biner: ", bin(x << 1), ")")
print("x >> 1 ->", x >> 1, "(biner: ", bin(x >> 1), ")")
Output:
● 6 << 1 menggeser bit ke kiri 1 kali, 0110 menjadi 1100 (12 desimal).
if digunakan untuk mengeksekusi sebuah blok kode jika suatu kondisi bernilai True. Jika
kondisi if tidak terpenuhi, kamu dapat menggunakan elif untuk memeriksa kondisi lain.
else akan dieksekusi jika semua kondisi if dan elif sebelumnya tidak terpenuhi.
nilai = 80
if nilai >= 85:
print("Luar biasa! Nilai A")
elif nilai >= 70:
print("Bagus! Nilai B")
elif nilai >= 60:
print("Cukup. Nilai C")
else:
print("Nilai kurang, perlu belajar lebih giat.")
Output:
Bagus! Nilai B
Penjelasan output:
● Karena nilai = 80, maka kondisi nilai >= 85 adalah False, sehingga
melewati blok pertama. Kondisi nilai >= 70 adalah True, maka langsung
mencetak "Bagus! Nilai B".
● Blok elif dan else berikutnya tidak dieksekusi karena Python sudah menemukan
kondisi yang True.
suhu = 35
cuaca = "hujan"
if suhu > 30 and cuaca == "cerah":
print("Mungkin ini waktu yang tepat untuk pergi ke pantai.")
elif suhu <= 30 and cuaca == "cerah":
print("Cuaca cerah tapi tidak terlalu panas, cocok untuk
jalan-jalan.")
elif cuaca == "hujan":
print("Sebaiknya bawa payung atau tunda rencana ke luar.")
else:
print("Informasi cuaca tidak pasti.")
Penjelasan:
● Karena suhu > 30 adalah True tapi cuaca == "cerah" adalah False (karena
cuaca = "hujan"), maka blok if dilewati.
● Blok elif kedua (suhu <= 30 and cuaca == "cerah") juga False.
● Blok elif ketiga cuaca == "hujan" bernilai True, sehingga mencetak pesan
sesuai kondisi hujan.
3.1.2 Nested if
Kamu bisa menulis if di dalam if lainnya. Ini berguna jika kamu perlu memeriksa
beberapa level kondisi.
Contoh script:
nilai = 90
absensi = 85 # persentase kehadiran
if nilai >= 75:
if absensi >= 80:
print("Selamat! Nilai dan absensi memuaskan.")
else:
print("Nilai memenuhi, tapi absensi kurang.")
else:
print("Nilai belum memenuhi.")
Output:
Penjelasan output:
● Di dalamnya, ada if absensi >= 80. Karena absensi = 85 juga True, maka
pesan “Selamat! …” dicetak.
● Jika nilai < 75, maka Python langsung melewati nested if dan mengeksekusi
blok else paling luar.
3.2 Perulangan
Digunakan untuk mengeksekusi blok kode berulang kali, biasanya saat kita tahu berapa
banyak elemen yang akan diiterasi.
Output:
Penjelasan output:
● Perulangan for item in buah akan mengeksekusi blok kode sebanyak jumlah
elemen di dalam list buah.
for i in range(5):
print("i =", i)
Output:
i = 0
i = 1
i = 2
i = 3
i = 4
Penjelasan:
Output:
0 apel
1 mangga
2 jeruk
Penjelasan:
● Sangat berguna jika kamu perlu menyertakan indeks saat melakukan iterasi.
Digunakan untuk mengeksekusi blok kode selama suatu kondisi bernilai True. Biasanya
dipakai jika jumlah perulangan belum pasti tetapi bergantung pada kondisi tertentu.
counter = 0
while counter < 5:
print("Counter =", counter)
counter += 1
Output:
Counter = 0
Counter = 1
Counter = 2
Counter = 3
Counter = 4
Penjelasan output:
import random
# Game tebak angka sederhana
angka_rahasia = [Link](1, 10)
tebakan = 0
print("Saya telah memilih angka antara 1 sampai 10. Coba tebak!")
while tebakan != angka_rahasia:
tebakan = int(input("Masukkan tebakan Anda: "))
if tebakan < angka_rahasia:
print("Terlalu rendah!")
elif tebakan > angka_rahasia:
print("Terlalu tinggi!")
else:
print("Benar! kamu menebak angka", angka_rahasia)
Penjelasan:
● Jika tebakan lebih rendah atau lebih tinggi, program memberi petunjuk. Ketika
tebakan tepat, perulangan berhenti.
for i in range(10):
if i == 5:
break
print(i)
Output:
Penjelasan output:
for i in range(5):
if i == 2:
continue
print(i)
Output:
0
1
Penjelasan output:
for i in range(3):
if i == 1:
pass
print("Iterasi ke-", i)
Output:
Iterasi ke- 0
Iterasi ke- 1
Iterasi ke- 2
Penjelasan:
Dalam konteks data science, break dan continue mungkin digunakan saat kamu ingin
menghentikan pemrosesan data di kondisi tertentu atau melewati data yang tidak valid.
pass berguna untuk menyiapkan blok kode yang akan diisi nanti.
BAB 4 – FUNGSI (FUNCTIONS)
Fungsi adalah blok kode terorganisir yang dapat dipanggil berulang kali untuk menjalankan
suatu tugas tertentu. Penggunaan fungsi memungkinkan kamu menstrukturkan program
dengan lebih rapi, mempermudah pemeliharaan, dan menghindari pengulangan kode yang
tidak perlu. Bagi kamu yang ingin terjun ke data science, pemahaman fungsi sangat krusial
karena sering kali kita membuat potongan kode (fungsi) yang dapat digunakan untuk
membersihkan data, memproses data, atau menguji berbagai model secara efisien.
def sapa():
print("Halo, selamat datang di Python!")
# Memanggil fungsi sapa
sapa()
Output (Dasar):
Penjelasan output:
Fungsi sapa() tidak memiliki parameter. Setiap kali dipanggil, ia akan mengeksekusi kode
di dalamnya, yaitu mencetak teks “Halo, selamat datang di Python!” ke layar.
Hasil penjumlahan: 15
Penjelasan output:
● Parameter angka1 dan angka2 menerima nilai 10 dan 5 ketika kita memanggil
tambah(x, y).
● Kode di dalam fungsi menghitung angka1 + angka2 yang hasilnya 15, kemudian
mengembalikannya (return).
● Variabel jumlah di luar fungsi menerima nilai pengembalian 15, dan program
menampilkannya dengan print.
1. Positional Arguments: Argumen yang urutannya harus sesuai dengan parameter di
definisi fungsi.
2. Default Arguments: Parameter yang memiliki nilai default, sehingga kalau argumen
tidak diberikan, Python akan menggunakan nilai default.
3. *args (Positional Arguments tak terbatas): Digunakan saat kita ingin menerima
sejumlah argumen berapa pun, dalam bentuk tuple.
4. **kwargs (Keyword Arguments tak terbatas): Digunakan saat kita ingin menerima
sejumlah argumen berapa pun, dalam bentuk dictionary.
Nama: Andi
NIM: 12345
Jurusan: Informatika
----
Nama: Budi
NIM: 67890
Penjelasan output:
● Pada pemanggilan kedua, kita menimpa nilai default jurusan menjadi "Sistem
Informasi".
def rata_rata(*angka):
if len(angka) == 0:
return 0
total = 0
for a in angka:
total += a
return total / len(angka)
hasil1 = rata_rata(10, 20, 30)
hasil2 = rata_rata(5, 15)
hasil3 = rata_rata() # tanpa argumen
print("Rata-rata (10, 20, 30):", hasil1)
print("Rata-rata (5, 15):", hasil2)
print("Rata-rata tanpa argumen:", hasil3)
Penjelasan output:
● Kita melakukan penjumlahan dan membagi dengan jumlah argumen. Jika tidak ada
argumen sama sekali, nilai kembalian diset 0.
def cetak_info(**data):
for key, value in [Link]():
print(f"{key} : {value}")
# Memanggil fungsi dengan berbagai keyword argument
cetak_info(nama="Citra", usia=21, kota="Bandung")
print("---")
# Menambahkan argumen lain
cetak_info(produk="Laptop", merek="ABC", harga=15000000, garansi="2
tahun")
nama : Citra
usia : 21
kota : Bandung
---
produk : Laptop
merek : ABC
harga : 15000000
garansi : 2 tahun
Penjelasan output:
● Cara ini sangat fleksibel ketika kita tidak tahu berapa banyak informasi yang akan
dikirim ke fungsi atau jika kita ingin parameter lebih “dinamis.”
def cek_nilai(angka):
if angka > 0:
return "Positif"
print("Bagian ini tidak akan dieksekusi jika angka > 0")
return "Tidak Positif"
print(cek_nilai(10))
print(cek_nilai(-5))
Tidak Positif
Penjelasan output:
● Ketika angka bernilai 10, kondisi angka > 0 terpenuhi, maka fungsi return
"Positif". Baris print("Bagian ini...") tidak pernah dijalankan.
● Ketika angka bernilai -5, kondisi angka > 0 adalah False, sehingga melewati if
dan mengeksekusi print("Bagian ini tidak akan dieksekusi...") lalu
return "Tidak Positif".
15
Penjelasan output:
● Saat kita panggil tambah_5(10), hasilnya 15. Saat tambah_5(-2), hasilnya 3.
Penjelasan output:
● Local Scope: Variabel yang didefinisikan di dalam fungsi, hanya dapat diakses di
dalam fungsi tersebut.
x = 10 # global variable
def tampilkan_x():
x = 5 # local variable di dalam fungsi
print("x di dalam fungsi:", x)
tampilkan_x()
print("x di luar fungsi:", x)
x di dalam fungsi: 5
x di luar fungsi: 10
Penjelasan output:
● Saat mencetak di dalam fungsi, nilainya 5. Setelah keluar dari fungsi, nilai x global
tetap 10.
y = 10
def ubah_y():
global y
y = 20
print("y di dalam fungsi:", y)
print("y sebelum diubah:", y)
ubah_y()
print("y setelah diubah:", y)
y sebelum diubah: 10
y di dalam fungsi: 20
y setelah diubah: 20
Penjelasan output:
● Dengan kata kunci global, kita memberitahu Python bahwa kita ingin memakai
(dan mengubah) variabel y yang ada di global scope, bukan membuat y baru di local
scope.
● Akibatnya, ketika fungsi ubah_y() dipanggil, nilai y global berubah dari 10 menjadi
20.
BAB 5 – MODULARISASI DAN
MANAJEMEN PAKET
Modularisasi adalah proses memecah kode menjadi bagian-bagian yang lebih kecil dan
terpisah (modul), sehingga lebih mudah dirawat, diuji, dan digunakan kembali. Dalam
praktik pengembangan Python, kita sering membuat modul dan paket untuk mengatur
fungsi-fungsi yang saling berkaitan. Selain itu, manajemen paket (dengan pip atau conda)
sangatlah penting, terutama dalam data science yang bergantung pada banyak library
eksternal seperti NumPy, Pandas, dan scikit-learn.
5.1 Modul
Modul adalah berkas Python dengan ekstensi .py yang berisi definisi fungsi, kelas, atau
variabel. Dengan modul, kamu dapat memisahkan logika program menjadi beberapa
berkas sesuai fungsinya, kemudian mengimpornya di berkas lain saat dibutuhkan.
# [Link]
def tambah(a, b):
return a + b
def kali(a, b):
return a * b
def pangkat(a, b):
return a ** b
Kemudian, di berkas utama kita (misal [Link]), kita bisa mengimpor modul tersebut:
# dalam [Link]
import matematika
hasil_tambah = [Link](3, 5)
hasil_kali = [Link](4, 6)
hasil_pangkat = [Link](2, 3)
print("Hasil tambah:", hasil_tambah)
print("Hasil kali:", hasil_kali)
print("Hasil pangkat:", hasil_pangkat)
Hasil tambah: 8
Hasil kali: 24
Hasil pangkat: 8
Penjelasan output:
# dalam [Link]
from matematika import tambah, kali
print("10 + 2 =", tambah(10, 2))
print("7 * 8 =", kali(7, 8))
# Jika kita coba panggil pangkat, akan error karena tidak diimpor
# print(pangkat(2, 3)) # NameError
Di sini, kita hanya mengimpor tambah dan kali saja. Fungsi pangkat tidak ikut diimpor.
5.2 Paket (Packages)
Paket adalah kumpulan modul yang disusun dalam sebuah direktori yang memiliki berkas
__init__.py. Keberadaan __init__.py menandakan bahwa direktori tersebut adalah
paket Python. Hal ini memudahkan kita mengelompokkan modul-modul yang saling
berkaitan.
projek_ku/
├── [Link]
└── paket_ku/
├── __init__.py
├── modul_a.py
└── modul_b.py
# modul_a.py
def sapa(nama):
print(f"Halo, {nama}! Ini dari modul_a.")
# modul_b.py
def salam_pagi(nama):
print(f"Selamat pagi, {nama}!")
# [Link]
from paket_ku import modul_a, modul_b
modul_a.sapa("Andi")
modul_b.salam_pagi("Budi")
Penjelasan output:
● Kita kemudian memanggil fungsi sapa() yang ada di modul_a dan salam_pagi()
yang ada di modul_b.
# [Link]
from paket_ku.modul_a import sapa
from paket_ku.modul_b import salam_pagi
sapa("Citra")
salam_pagi("Dewi")
Ini lebih spesifik; kita langsung mengimpor fungsi yang dibutuhkan. Struktur paket seperti
ini memudahkanmu menata banyak modul agar tidak tercampur aduk di satu folder.
5.3 Mengelola Paket dengan pip dan Virtual Environment
Dalam data science, kita bergantung pada banyak pustaka eksternal seperti NumPy, Pandas,
Matplotlib, dan scikit-learn. Agar proyek tetap berjalan mulus tanpa konflik versi, kita
biasanya menggunakan virtual environment.
1. pip adalah tool bawaan Python untuk menginstal paket-paket dari repositori PyPI
(Python Package Index).
Pada Python versi 3.3 ke atas, kita dapat menggunakan modul venv untuk membuat virtual
environment.
.\venv\Scripts\activate
# Mengaktifkan virtual environment (Linux/Mac)
source venv/bin/activate
Jika environment sudah aktif, perintah pip install akan menginstal paket ke dalam
folder venv, bukan ke sistem global.
Numpy array: [1 2 3 4 5]
DataFrame:
angka huruf
0 10 A
1 20 B
2 30 C
Penjelasan output:
Dengan manajemen paket yang tepat dan modularisasi, kamu akan terhindar dari konflik
versi perpustakaan, serta memiliki struktur proyek yang rapi dan terorganisir. Ini sangat
krusial di dunia data science di mana kita sering bekerja dengan aneka library dalam satu
proyek.
BAB 6 – STRING MANIPULATION
String adalah kumpulan karakter yang merepresentasikan teks. Dalam pemrograman
Python, string dikelilingi oleh tanda kutip tunggal ('...') atau tanda kutip ganda ("...").
Kita sering berurusan dengan string untuk memproses data teks, termasuk pembersihan
data, transformasi, serta pencarian pola. Bab ini akan membahas berbagai teknik
manipulasi string secara mendasar hingga beberapa penerapan yang berguna, terutama
untuk persiapan dalam data science.
Tidak ada perbedaan sintaks signifikan antara string dengan satu atau dua tanda kutip, yang
penting adalah konsistensi. Kita juga bisa menggunakan tanda kutip tiga (''' atau """)
untuk membuat string multi-baris.
teks1 = "Hello"
teks2 = 'World'
teks3 = """Ini adalah
string multi-baris
di Python."""
# Mengakses karakter
huruf_pertama = teks1[0]
huruf_terakhir = teks1[-1]
# Slicing
sub_string = teks1[1:4] # Mengambil karakter indeks 1 sampai 3 (4 tidak
ikut)
print("teks1:", teks1)
print("teks2:", teks2)
print("teks3 (multi-baris):", teks3)
print("Huruf pertama teks1:", huruf_pertama)
print("Huruf terakhir teks1:", huruf_terakhir)
print("Slicing teks1[1:4]:", sub_string)
Output (Dasar deklarasi, index, slicing):
teks1: Hello
teks2: World
string multi-baris
di Python.
Penjelasan output:
● teks3 menggunakan tanda kutip tiga, sehingga bisa berisi baris teks lebih dari satu
baris.
Escape Sequences
Escape sequence digunakan jika kita ingin memunculkan karakter spesial di dalam string.
Misalnya \n untuk baris baru, \t untuk tab, \" atau \' untuk menampilkan tanda kutip
secara literal.
Penjelasan output:
● \n membuat baris baru. Setelah “Baris pertama”, maka teks dilanjutkan di baris
kedua.
● \" menampilkan tanda kutip ganda di dalam string tanpa mengakhiri string itu
sendiri.
Python menyediakan banyak metode bawaan (built-in) untuk memanipulasi string, seperti
lower(), upper(), strip(), split(), replace(), dan join(). Metode-metode ini
sering dipakai dalam membersihkan data teks, normalisasi format, dan lain sebagainya.
Mengubah seluruh karakter dalam string menjadi huruf kecil atau huruf besar.
teks = "PyThOn"
print("lower():", [Link]())
print("upper():", [Link]())
Output:
lower(): python
upper(): PYTHON
Penjelasan:
● lower() berguna saat kita ingin menyamakan format input teks (misalnya untuk
pencocokan data).
● upper() pun berguna dalam kasus yang sama, hanya saja kebalikan.
strip(), lstrip(), rstrip()
Menghapus karakter (spasi atau karakter lain yang ditentukan) di awal dan akhir
string.teks_spasi = " Data Science "
print("Asli:", repr(teks_spasi))
print("strip():", repr(teks_spasi.strip()))
print("lstrip():", repr(teks_spasi.lstrip()))
print("rstrip():", repr(teks_spasi.rstrip()))
Output:
Penjelasan output:
● repr() digunakan agar spasi terlihat jelas di konsol, menampilkan string dengan
tanda kutip.
split()
Output:
['Belajar', 'Python', 'untuk', 'Data', 'Science']
Penjelasan:
● split() tanpa argumen akan memisahkan string berdasarkan satu atau lebih
spasi.
replace()
Output:
Penjelasan:
join()
Menggabungkan elemen-elemen dalam list menjadi satu string dengan pemisah tertentu.
Output:
Data Science dengan Python
Penjelasan:
6.2.1 format()
Kita bisa menggunakan kurung kurawal {} sebagai placeholder dan memanggil fungsi
format() untuk mengisi placeholder tersebut.
nama = "Andi"
umur = 25
teks = "Nama saya adalah {} dan saya berumur {} tahun.".format(nama,
umur)
print(teks)
Penjelasan output:
Kita dapat mengatur urutan atau memberikan nama khusus di dalam placeholder.
Output:
Penjelasan:
● {0} merujuk pada argumen pertama, {1} merujuk pada argumen kedua.
Sejak Python 3.6, f-String menjadi cara yang lebih ringkas dan mudah dibaca. Kita cukup
menuliskan f"..." lalu memasukkan variabel di dalam curly braces {}.
nama = "Budi"
usia = 30
teks = f"Nama: {nama}, Usia: {usia}"
print(teks)
Output:
● Variabel nama dan usia bisa disisipkan ke dalam string dengan {nama} dan
{usia}.
● Dapat juga melakukan operasi langsung, misal f"{usia + 5}" akan menampilkan
hasil penambahan.
Kita bisa menambahkan format untuk alignment (perataan) dan precision ( jumlah digit
setelah koma).
nilai_pi = 3.1415926535
teks_format = f"Nilai pi sekitar {nilai_pi:.2f}"
print(teks_format)
angka = 123
print(f"Angka {angka:5d} dengan lebar 5 karakter, rata kanan.")
print(f"Angka {angka:<5d} dengan lebar 5 karakter, rata kiri.")
Output:
Penjelasan output:
import re
teks = "Email saya adalah user@[Link]. Alternatif lainnya:
user2@[Link]"
pattern_email = r"[a-zA-Z0-9_.]+@[a-zA-Z0-9_.]+\.[a-zA-Z0-9]+"
# search
hasil_search = [Link](pattern_email, teks)
if hasil_search:
print("Hasil search:", hasil_search.group())
# findall
hasil_findall = [Link](pattern_email, teks)
print("Hasil findall:", hasil_findall)
# sub
teks_disamarkan = [Link](pattern_email, "[email-dihilangkan]", teks)
print("Teks disamarkan:", teks_disamarkan)
Output:
Hasil search: user@[Link]
Penjelasan output:
Penggunaan regex sangat luas dalam data science, misalnya membersihkan data teks
(menghapus karakter aneh, mengekstrak informasi spesifik, dsb.).
BAB 7 – PENANGANAN ERROR DAN
LOGGING
Tidak jarang saat menulis kode Python, kita menjumpai error atau exception. Ketika kode
kita melakukan operasi yang tidak valid, misalnya membagi dengan nol, mengakses indeks
di luar jangkauan, atau membuka berkas yang tidak ada, Python akan melempar exception.
Bab ini akan memandu cara penanganan error (exception handling) dengan try-except,
cara membuat exception kustom, serta teknik logging untuk mencatat jalannya program.
Try-Except Block
try-except digunakan untuk mencegah program berhenti ketika terjadi exception. Kita
dapat menambahkan blok else yang dieksekusi jika tidak ada exception, dan blok
finally yang dieksekusi selalu, entah terjadi error atau tidak.
try:
angka1 = int(input("Masukkan angka pertama: "))
angka2 = int(input("Masukkan angka kedua: "))
hasil = angka1 / angka2
print("Hasil pembagian:", hasil)
except ZeroDivisionError:
print("Error: Tidak bisa membagi dengan nol.")
Output (Contoh dasar):
● Jika user memasukkan angka2 = 0, maka akan mencetak "Error: Tidak bisa
membagi dengan nol.".
● Jika user memasukkan angka biasa, misal 10 dan 2, maka akan mencetak "Hasil
pembagian: 5.0".
Penjelasan output:
try:
angka1 = int(input("Masukkan angka pertama: "))
angka2 = int(input("Masukkan angka kedua: "))
hasil = angka1 / angka2
except ValueError:
print("Input harus berupa angka.")
except ZeroDivisionError:
print("Tidak bisa membagi dengan nol.")
else:
print("Hasil pembagian:", hasil)
finally:
print("Terima kasih telah menggunakan program ini.")
Penjelasan output:
● Pada Variasi 1, tidak ada error, sehingga blok else dijalankan (Hasil pembagian:
2.5). Blok finally selalu dijalankan mencetak “Terima kasih…”.
● Pada Variasi 3, terjadi ValueError karena input tidak bisa dikonversi menjadi
integer. Blok except ValueError dijalankan, lalu finally.
class NilaiNegatifError(Exception):
"""Exception untuk menandakan bahwa nilai negatif tidak
diizinkan."""
pass
def hitung_akar_pangkat2(x):
if x < 0:
raise NilaiNegatifError("Tidak bisa menghitung akar dari nilai
negatif.")
return x ** 0.5
try:
angka = float(input("Masukkan bilangan: "))
hasil = hitung_akar_pangkat2(angka)
print(f"Akar dari {angka} adalah {hasil}")
except NilaiNegatifError as e:
print("Terjadi error:", e)
except ValueError:
print("Input harus berupa angka.")
Masukkan bilangan: -9
Masukkan bilangan: 16
Penjelasan output:
● Jika user memasukkan 16 (positif), blok try sukses, dan menampilkan akar 16, yaitu
4.0.
Dengan exception kustom, kita bisa lebih spesifik dalam menandai error terkait domain
permasalahan kita.
7.3 Logging
Logging adalah proses mencatat informasi tentang jalannya program ke console atau ke file,
sehingga kita bisa memantau apa yang terjadi. Dalam data science, logging membantu kita
mengecek proses training, debugging, dan performa model. Python menyediakan modul
logging untuk mengatur level pesan (DEBUG, INFO, WARNING, ERROR, CRITICAL).
import logging
# Set level logging. Misal, level=DEBUG maka semua pesan log dari DEBUG
ke atas akan tampil
[Link](level=[Link],
format='%(levelname)s:%(message)s')
[Link]("Ini debug - rincian detail untuk diagnosis.")
[Link]("Ini info - pesan informasi umum.")
[Link]("Ini warning - peringatan adanya potensi masalah.")
[Link]("Ini error - ada kesalahan.")
[Link]("Ini critical - error serius.")
Penjelasan output:
● [Link]() menampilkan pesan level DEBUG. Kita bisa mengatur level log
minimal yang ingin ditampilkan. Jika level minimal adalah WARNING, maka pesan
INFO dan DEBUG tidak tampil.
Kita dapat mengatur logging supaya dicatat ke file, sehingga bisa ditinjau ulang. Ini
membantu saat proses data yang panjang atau saat kita ingin menyimpan log di server.
import logging
[Link](
filename='[Link]',
level=[Link],
format='%(asctime)s - %(levelname)s - %(message)s'
)
[Link]("Program dimulai.")
[Link]("Pastikan data terisi sebelum dijalankan.")
[Link]("Terjadi error ketika mengakses berkas.")
[Link]("Program berakhir.")
Penjelasan:
● Level log yang diatur adalah INFO, sehingga pesan INFO, WARNING, ERROR,
CRITICAL akan ditulis, sedangkan DEBUG tidak.
Berikut contoh penerapan logging saat kita memuat data dari file CSV, di mana kita ingin
tahu apakah file sukses diakses atau tidak.
import logging
import os
[Link](level=[Link], format='%(asctime)s -
%(levelname)s - %(message)s')
def load_data_csv(filename):
if not [Link](filename):
[Link](f"File {filename} tidak ditemukan.")
return None
else:
[Link](f"Membuka file {filename}...")
with open(filename, 'r', encoding='utf-8') as f:
data = [Link]()
[Link](f"Berhasil membaca {len(data)} baris dari file
{filename}.")
return data
data = load_data_csv("data_salah.csv") # Misalnya file ini tidak ada
if data is None:
print("Tidak bisa melanjutkan karena file tidak ditemukan.")
else:
print("Data berhasil dimuat.")
Penjelasan output:
● Jika file ada, logging menampilkan pesan INFO bahwa file dibuka dan berapa baris
yang dibaca.
Dengan logging, kita dapat mudah menelusuri alur eksekusi program tanpa
mencampuradukkan dengan output untuk user. Ini sangat penting untuk aplikasi data
science yang biasanya memproses data besar dan membutuhkan pemantauan ketat.
Dengan demikian, Bab 6 dan Bab 7 telah membahas manipulasi string (mulai dari metode
built-in hingga regex) serta penanganan error (try-except, membuat exception sendiri) dan
logging (untuk mencatat jalannya program). Pemahaman menyeluruh akan topik ini
membantu kamu menangani teks dengan lebih baik dalam persiapan analisis data, serta
merancang program yang lebih tangguh terhadap kesalahan dan mudah dilacak saat terjadi
masalah.
BAB 8 – PEMROGRAMAN
BERORIENTASI OBJEK (OOP) DASAR
Pemrograman berorientasi objek (Object-Oriented Programming, OOP) adalah paradigma
pemrograman yang berfokus pada pembuatan “objek” yang memiliki atribut (data/properti)
dan metode (fungsi/perilaku). Python mendukung OOP dengan sintaks yang relatif mudah
dibaca. Dalam data science, mungkin kamu akan menemui berbagai library atau framework
yang dikemas dalam bentuk kelas dan objek, sehingga memahami OOP penting agar kamu
bisa memanfaatkannya dengan optimal.
class Mahasiswa:
# __init__ disebut konstruktor, dijalankan saat objek diciptakan
def __init__(self, nama, nim):
[Link] = nama # [Link] adalah atribut milik objek
[Link] = nim
def perkenalan(self):
print(f"Perkenalkan, nama saya {[Link]} dan NIM saya
{[Link]}.")
# Membuat objek / instance dari kelas Mahasiswa
m1 = Mahasiswa("Andi", "12345")
m2 = Mahasiswa("Budi", "67890")
# Memanggil metode perkenalan
[Link]()
[Link]()
Output:
Penjelasan output:
● [Link] dan [Link] menjadi atribut yang berbeda untuk setiap objek.
Di dalam kelas, kita dapat membedakan antara “atribut instance” (yang unik untuk setiap
objek) dan “atribut kelas” (yang sama untuk semua objek). Kita juga dapat membuat
“metode kelas” (class method) atau “metode statik” (static method) selain metode instance
biasa.
class Mobil:
jumlah_mobil = 0 # Atribut kelas, dimiliki oleh semua objek
def __init__(self, merek, model):
[Link] = merek # Atribut instance
[Link] = model # Atribut instance
Mobil.jumlah_mobil += 1
def info(self):
print(f"Mobil merek {[Link]} dengan model {[Link]}.")
@classmethod
def total_mobil(cls):
return cls.jumlah_mobil
# Contoh penggunaan
avanza = Mobil("Toyota", "Avanza")
xenia = Mobil("Daihatsu", "Xenia")
[Link]()
[Link]()
print("Total mobil yang dibuat:", Mobil.total_mobil())
Output:
Penjelasan output:
● jumlah_mobil = 0 adalah atribut kelas; nilainya akan sama dan diakses oleh
semua instance. Setiap kali __init__ dipanggil, kita menambah
Mobil.jumlah_mobil += 1.
8.2.1 Enkapsulasi
Enkapsulasi adalah konsep “membungkus” data (atribut) dan metode (fungsi) menjadi satu
kesatuan dalam kelas, sehingga kita dapat melindungi data tersebut dan memanfaatkan
metode tertentu untuk mengakses atau memodifikasi data. Python tidak memiliki kata
kunci “private” seperti bahasa lain, tetapi kita bisa menandai atribut dengan tanda garis
bawah _ atau __ (double underscore) sebagai kesepakatan bahwa atribut tersebut “internal”.
class AkunBank:
def __init__(self, pemilik, saldo):
[Link] = pemilik
self.__saldo = saldo # atribut ini dianggap 'private' secara
konvensi
def deposit(self, jumlah):
self.__saldo += jumlah
print(f"{jumlah} berhasil dideposit. Saldo sekarang:
{self.__saldo}")
def tarik(self, jumlah):
if jumlah > self.__saldo:
print("Saldo tidak cukup!")
else:
self.__saldo -= jumlah
print(f"Penarikan {jumlah} berhasil. Saldo sekarang:
{self.__saldo}")
def cek_saldo(self):
print(f"Saldo {[Link]} adalah {self.__saldo}")
# Contoh penggunaan
akun_andi = AkunBank("Andi", 1000)
akun_andi.deposit(500)
akun_andi.tarik(2000)
akun_andi.cek_saldo()
# Mencoba akses langsung saldo: akun_andi.__saldo -> ini tidak
direkomendasikan
Output:
Penjelasan output:
● __saldo menandakan bahwa kita tidak ingin atribut ini diakses langsung dari luar
kelas. Walau Python secara teknis memungkinkan akses “menerobos” dengan nama
khusus (_AkunBank__saldo), konvensi __saldo menandakan agar developer lain
berhati-hati.
● deposit(500) menambah saldo dari 1000 menjadi 1500. Lalu kita coba tarik 2000,
yang melebihi saldo 1500, sehingga mencetak “Saldo tidak cukup!” dan saldo tetap
1500.
Inheritance memungkinkan kita membuat kelas baru dengan mewarisi atribut dan metode
dari kelas yang sudah ada, agar tidak menulis ulang hal yang sama. Kelas yang mewarisi
disebut “subclass” atau “child class”, sedangkan kelas yang diwarisi disebut “superclass” atau
“parent class”.
class Person:
def __init__(self, nama, usia):
[Link] = nama
[Link] = usia
def info(self):
print(f"Nama: {[Link]}, Usia: {[Link]}")
class Pelajar(Person):
def __init__(self, nama, usia, sekolah):
super().__init__(nama, usia) # Memanggil konstruktor Person
[Link] = sekolah
def info(self):
super().info() # Memanggil method info() di kelas induk
print(f"Sekolah: {[Link]}")
# Contoh penggunaan
p = Person("Dewi", 20)
[Link]()
print("--------")
pelajar = Pelajar("Rina", 16, "SMA 1 Jakarta")
[Link]()
Output:
Nama: Dewi, Usia: 20
--------
Penjelasan output:
8.2.3 Polimorfisme
Polimorfisme berarti “banyak bentuk”, di mana suatu metode atau fungsi bisa memiliki
perilaku berbeda tergantung objek yang memanggilnya. Pada Python, polimorfisme sering
muncul saat kita menimpa (override) metode di subclass, atau ketika kita memanggil fungsi
umum dengan objek dari kelas berbeda.
class Hewan:
def suara(self):
print("Hewan ini bersuara dengan cara tertentu.")
class Kucing(Hewan):
def suara(self):
print("Meong...")
class Anjing(Hewan):
def suara(self):
print("Guk guk...")
def tes_suara(hewan):
[Link]()
k = Kucing()
a = Anjing()
tes_suara(k) # Meong...
tes_suara(a) # Guk guk...
Output:
Meong...
Guk guk...
Penjelasan output:
Output:
Luas persegi: 25
Penjelasan output:
● class Bentuk(ABC) menunjukkan kita membuat kelas abstrak dengan mewarisi
dari ABC.
● Jika kita coba instansiasi Bentuk() langsung, kita akan mendapat error karena
Bentuk adalah kelas abstrak dan belum memiliki implementasi luas().
Output:
Penjelasan output:
● __str__() adalah representasi string yang dibaca oleh manusia saat kita
memanggil print(objek).
Kita dapat menimpa perilaku operator matematika. Misalnya __add__ untuk +, __sub__
untuk -, __mul__ untuk *, dsb.
class Vector2D:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector2D(self.x + other.x, self.y + other.y)
def __len__(self):
# Asumsikan 'panjang' adalah jarak dari titik (0,0)
return int((self.x**2 + self.y**2)**0.5)
def __str__(self):
return f"({self.x}, {self.y})"
v1 = Vector2D(3, 4)
v2 = Vector2D(1, 2)
v3 = v1 + v2 # memanggil __add__
print("v3 =", v3)
print("len(v1) =", len(v1))
Output:
v3 = (4, 6)
len(v1) = 5
Penjelasan output:
● v1 + v2 memanggil v1.__add__(v2), membuat Vector2D baru dengan
x=3+1=4, y=4+2=6.
Objek-objek di library data science seperti NumPy array, Pandas Series, dsb. juga
memanfaatkan OOP, sehingga memahami konsep OOP di atas akan memudahkan kamu
memanipulasi dan memahami perilaku objek-objek tersebut.
BAB 9 – MEMULAI DATA SCIENCE
DENGAN PYTHON
Data science adalah disiplin yang bertujuan mengekstraksi wawasan (insight) dan
pengetahuan dari data. Python menjadi salah satu bahasa paling populer untuk data science
karena memiliki ekosistem library yang sangat kaya (NumPy, Pandas, Matplotlib,
Scikit-learn, dan banyak lagi). Bab ini memperkenalkan gambaran awal mengenai apa itu
data science dan bagaimana Python digunakan dalam alur kerjanya.
Dalam setiap tahapan, Python menawarkan library yang bisa membantu Anda:
1. Anaconda Distribution: Salah satu distribusi Python yang sudah menyertakan
paket-paket data science penting seperti NumPy, Pandas, Matplotlib, scikit-learn,
dan Jupyter. Cocok untuk pemula karena instalasinya relatif sederhana.
2. Jupyter Notebook & JupyterLab: Interface interaktif yang populer di kalangan data
scientist. Kita bisa menulis code dalam sel, mengeksekusinya, menampilkan grafik,
dan menambahkan catatan (markdown).
3. Google Colab: Layanan notebook berbasis cloud dari Google. Tidak perlu instal
apapun, hanya memerlukan akun Google. Sering dipakai untuk kolaborasi atau jika
kita tidak ingin repot menyiapkan environment lokal.
4. Editor lain: Bisa juga menggunakan VSCode, PyCharm, Spyder, dll., tergantung
preferensi.
Anaconda adalah paket bundle yang berisi Python, conda (package manager), dan banyak
library siap pakai.
● Setelah instalasi, kita mendapatkan perintah conda yang dapat digunakan seperti
pip untuk mengatur paket.
● Kita juga bisa membuat environment terpisah dengan conda create --name
env_baru python=3.9.
Output:
Akan membuka tab di browser, menampilkan interface Jupyter Notebook di mana kamu
bisa membuat file .ipynb dan mulai menulis kode Python interaktif.
Penjelasan output:
● Jupyter Notebook menampilkan daftar berkas di direktori kerja kamu. Kamu bisa
membuat notebook baru, menulis code di sel, dan mengeksekusinya.
● Hasil print atau plot akan muncul langsung di bawah sel yang dijalankan.
● Jupyter Notebook: Interface klasik, sel code terpisah, sel markdown untuk catatan.
● JupyterLab: Versi lebih modern dan fleksibel, tampilan tab, panel, integrasi
terminal, editor teks, dsb.
● Spyder: IDE mirip MATLAB, sering disertakan dalam instalasi Anaconda. Memiliki
jendela variable explorer, console, dll.
● VSCode: Editor yang populer dengan plugin Python. Dapat membuka notebook,
debugging, manajemen environment, dsb.
● PyCharm: IDE Python yang powerful, bagus untuk project skala menengah-besar,
meski setup untuk data science perlu sedikit konfigurasi plugin.
● Google Colab: Alternatif gratis berbasis cloud, cocok untuk kolaborasi, khususnya
bagi yang tidak mau repot memasang environment lokal.
Untuk memberi gambaran tentang penggunaan Python di data science, berikut contoh
singkat tentang bagaimana kita melakukan pengolahan data sederhana dengan Pandas dan
NumPy, serta membuat visualisasi dengan Matplotlib. (Detail lebih lanjut akan dibahas di
bab khusus Numpy, Pandas, dan Visualisasi.)
DataFrame:
0 Alice 24 90
1 Bob 30 85
2 Charlie 18 75
3 Diana 22 90
4 Ethan 29 80
Rata-rata Age: 24.6
Setelah itu, akan muncul jendela plot menampilkan bar chart dengan sumbu x =
["Alice", "Bob", "Charlie", "Diana", "Ethan"] dan tinggi batang sesuai nilai
Score.
Penjelasan output:
Melalui contoh tersebut, kamu dapat melihat betapa Python memudahkan kita dalam
memanipulasi data (melalui Pandas) serta membuat visualisasi (melalui Matplotlib). Ini
hanya permulaan. Di bab-bab berikutnya kamu akan mengenal NumPy, Pandas, dan tools
visualisasi yang lebih mendalam, termasuk teknik analisis dan machine learning dasar
menggunakan scikit-learn.
BAB 10 – NUMPY: DASAR MANIPULASI
ARRAY
NumPy (Numeric Python) adalah salah satu library fundamental dalam ekosistem data
science Python. NumPy menyediakan struktur data array multidimensi yang sangat efisien
dan berbagai fungsi untuk melakukan komputasi numerik dengan cepat. Berbeda dengan
list bawaan Python, array NumPy memiliki tipe data yang seragam dan ukuran yang tetap,
sehingga operasi matematis dapat dijalankan jauh lebih cepat, terutama bila kamu
berurusan dengan data berukuran besar.
import numpy as np
Banyak library data science lain (seperti Pandas dan scikit-learn) dibangun di atas NumPy
atau mengandalkan struktur array NumPy. Oleh karena itu, pemahaman dasar NumPy
penting sebelum melangkah ke tahap analisis dan pemodelan data yang lebih lanjut.
1. Kecepatan: Operasi vektor dan matriks di NumPy ditulis dalam bahasa C, sehingga
lebih cepat dibanding list Python.
2. Penggunaan Memori Efisien: Array NumPy hanya menyimpan satu tipe data,
sehingga memori dapat diatur dengan efisien.
3. Fungsi Matematis Siap Pakai: Terdapat banyak fungsi untuk operasi linear algebra,
transformasi Fourier, statistik, dll.
1. [Link](): Mengkonversi list (atau struktur data lain) menjadi array NumPy.
10.2.1 [Link]()
import numpy as np
list_awal = [1, 2, 3, 4, 5]
arr = [Link](list_awal)
print("Tipe:", type(arr))
print("Isi array:", arr)
print("Tipe data array:", [Link])
Output:
Isi array: [1 2 3 4 5]
Penjelasan output:
10.2.2 [Link]()
Output:
[Link](0, 10, 2) -> [0 2 4 6 8]
Penjelasan:
10.2.3 [Link]()
linspace(start, stop, num) membuat array yang terdiri dari num titik yang
terdistribusi merata di interval [start, stop].
Output:
Penjelasan:
● Python membagi jarak dari 0 sampai 1 menjadi 4 segmen, menghasilkan 5 titik (0,
0.25, 0.5, 0.75, 1.0).
[Link]((2,3)):
[[0. 0. 0.]
[0. 0. 0.]]
[Link]((3,2)):
[[1. 1.]
[1. 1.]
[1. 1.]]
[Link](3):
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
[Link](2,2):
[[0.45032172 0.98006717]
[0.29157038 0.22253041]]
Penjelasan output:
Output:
arr_a + arr_b: [5 7 9]
arr_a ** 2: [1 4 9]
Penjelasan output:
● arr_a + arr_b menambahkan elemen per elemen: [1+4, 2+5, 3+6] = [5,
7, 9].
● arr_a * arr_b mengalikan elemen per elemen: [1*4, 2*5, 3*6] = [4, 10,
18].
NumPy array dapat diakses mirip dengan list, namun mendukung indexing multi-dimensi.
Output:
mat[2,2]: 9
Sub matrix:
[[2 3]
[5 6]]
Penjelasan output:
● mat[2,2] artinya baris ke-3 kolom ke-3 (karena indeks mulai dari 0), nilainya 9.
● mat[1, :] mengambil seluruh kolom di baris kedua (indeks 1), menghasilkan [4,
5, 6].
● mat[:, 1] mengambil seluruh baris di kolom kedua (indeks 1), menghasilkan [2,
5, 8].
Output:
arr_1d: [0 1 2 3 4 5]
arr_2d (2x3):
[[0 1 2]
[3 4 5]]
arr_2d ravel: [0 1 2 3 4 5]
arr_2d transpose:
[[0 3]
[1 4]
[2 5]]
Penjelasan output:
10.3.4 Broadcasting
Broadcasting memungkinkan operasi antara dua array dengan dimensi berbeda. NumPy
akan “memperluas” array yang lebih kecil agar memiliki dimensi yang cocok.
mat_y = [Link]([[1],
[2],
[3]])
Output:
arr_x + mat_y:
[[11 21 31]
[12 22 32]
[13 23 33]]
Penjelasan output:
Output:
Sum: 15
Mean: 3.0
Median: 3.0
Variance: 2.0
Min: 1
Max: 5
Penjelasan output:
Fancy indexing adalah teknik memilih elemen tertentu di dalam array menggunakan list
atau array indeks.
Output:
Penjelasan:
Output:
Penjelasan output:
Output:
Combined: [1 2 3 4 5 6]
split1: [10 20]
Penjelasan:
Dengan menguasai NumPy, kamu dapat melakukan manipulasi array yang kompleks secara
efisien. Konsep array akan menjadi dasar bagi library seperti Pandas (untuk data tabular)
dan scikit-learn (untuk machine learning).
BAB 11 – PANDAS: PENGOLAHAN DATA
TABEL
Pandas adalah library Python yang sangat populer untuk mengolah data terstruktur
(tabular), seperti data dari file CSV, Excel, SQL, dan sebagainya. Pandas menyediakan dua
struktur data utama: Series (1D) dan DataFrame (2D). Dengan Pandas, kamu dapat
membaca data dari berbagai format, membersihkan data, menggabungkan tabel, dan
melakukan eksplorasi dengan mudah sebelum melanjutkan ke tahap pemodelan dalam data
science.
import pandas as pd
Pandas memudahkan kamu menangani data yang berisi label kolom (column names) dan
label baris (index). Fitur ini menjadikannya mirip spreadsheet, namun dengan performa
dan fleksibilitas bahasa pemrograman.
1. DataFrame yang intuitif, mirip tabel, dengan label kolom dan baris.
2. Fleksibilitas dalam manipulasi data: filtering, grouping, pivoting, merging, dsb.
3. Integrasi yang baik dengan NumPy, Matplotlib, dan library lain.
11.2 Series
Series adalah struktur data satu dimensi dengan label pada setiap elemennya. Kamu bisa
menganggapnya sebagai kolom tunggal pada tabel.
Output:
0 10
1 20
2 30
dtype: int64
0 0.5
1 1.5
2 2.5
dtype: float64
a 100
b 200
c 300
dtype: int64
Penjelasan output:
● Series dari list: Indeks default adalah integer mulai dari 0, 1, 2.
● Series dari array: Sama, indeks default 0, 1, 2. Tipe data float64 sesuai isi array.
● Series dari dictionary: Label indeks ditentukan oleh key dictionary ("a", "b", "c").
Series memiliki berbagai atribut dan metode, seperti index, values, dtype, head(),
describe(), dsb.
print("Index:", series_dict.index)
print("Values:", series_dict.values)
print("Dtype:", series_dict.dtype)
Output:
Dtype: int64
Penjelasan:
Series bisa diakses mirip array NumPy atau list, tetapi kita dapat memanfaatkan label
indeksnya juga.
11.3 DataFrame
DataFrame adalah struktur dua dimensi, mirip tabel, dengan label baris (index) dan label
kolom (columns). Inilah objek yang paling sering digunakan dalam analisis data dengan
Pandas.
Dari Dictionary: Key menjadi nama kolom, value berupa list/array akan menjadi data
kolom tersebut.
data = {
"Nama": ["Andi", "Budi", "Citra"],
"Usia": [25, 30, 22],
"Kota": ["Jakarta", "Bandung", "Surabaya"]
}
df = [Link](data)
print("DataFrame dari dictionary:")
print(df)
Output:
0 Andi 25 Jakarta
1 Budi 30 Bandung
2 Citra 22 Surabaya
Penjelasan output:
# df_csv = pd.read_csv("[Link]")
# print(df_csv.head())
Jika kita memiliki file [Link], baris di atas akan membaca isi file tersebut ke dalam
DataFrame df_csv. head() menampilkan 5 baris pertama untuk inspeksi awal.
Dari SQL: Kita dapat memakai pd.read_sql(query, connection) bila kita terkoneksi
ke database. Contohnya:
import sqlite3
conn = [Link]("[Link]")
df_sql = pd.read_sql("SELECT * FROM table_name", conn)
print("Kolom 'Nama':")
print(df["Nama"])
print("\nMenggunakan [Link]:")
print([Link])
print("\nAkses baris dengan loc (label):")
print([Link][1]) # baris dengan indeks label 1
print("\nAkses baris dengan iloc (posisi integer):")
print([Link][2]) # baris ke-2 (urut 0-based)
Output:
Kolom 'Nama':
0 Andi
1 Budi
2 Citra
Menggunakan [Link]:
0 Andi
1 Budi
2 Citra
Nama Budi
Usia 30
Kota Bandung
Nama Citra
Usia 22
Kota Surabaya
● [Link] melakukan hal yang sama, tapi hanya berfungsi jika nama kolom tidak
mengandung spasi atau karakter khusus.
● [Link][2] menampilkan baris secara positional, yakni baris ketiga (posisi 2).
Pandas memudahkan kita menambah kolom baru dengan assignment langsung. Kita juga
bisa menghapus kolom/baris dengan drop().
Output:
0 Andi 25 Jakarta M
1 Budi 30 Bandung M
2 Citra 22 Surabaya F
0 Andi Jakarta M
1 Budi Bandung M
2 Citra Surabaya F
0 Andi Jakarta M
1 Budi Bandung M
Penjelasan output:
data_group = {
"Departemen": ["IT", "IT", "HR", "HR", "HR", "Finance", "Finance"],
"Nama": ["Andi", "Budi", "Citra", "Dewi", "Eka", "Fajar", "Gita"],
"Gaji": [7, 8, 6, 6, 7, 8, 9]
}
df_group = [Link](data_group)
# Mengelompokkan berdasarkan Departemen dan menghitung rata-rata gaji
df_grouped = df_group.groupby("Departemen")["Gaji"].mean()
print(df_group)
print("\nRata-rata Gaji per Departemen:")
print(df_grouped)
Output:
0 IT Andi 7
1 IT Budi 8
2 HR Citra 6
3 HR Dewi 6
4 HR Eka 7
5 Finance Fajar 8
6 Finance Gita 9
Departemen
Finance 8.5
HR 6.3
IT 7.5
Penjelasan output:
● df_group.groupby("Departemen")["Gaji"].mean() mengelompokkan
baris berdasarkan kolom “Departemen”, lalu mengambil kolom “Gaji” dan
menghitung mean untuk setiap grup.
● [Link]() untuk join berdasar index (atau col tertentu) antara 2 DataFrame.
df_left = [Link]({
"key": [1, 2, 3],
"Nama": ["Andi", "Budi", "Citra"]
})
df_right = [Link]({
"key": [2, 3, 4],
"Kota": ["Bandung", "Surabaya", "Medan"]
})
merged = [Link](df_left, df_right, on="key", how="inner")
print("df_left:")
print(df_left)
print("\ndf_right:")
print(df_right)
print("\nHasil merge (inner):")
print(merged)
Output:
df_left:
key Nama
0 1 Andi
1 2 Budi
2 3 Citra
df_right:
key Kota
0 2 Bandung
1 3 Surabaya
2 4 Medan
0 2 Budi Bandung
1 3 Citra Surabaya
Penjelasan output:
Output:
A B
0 1.0 NaN
1 NaN 2.0
2 3.0 NaN
3 4.0 4.0
A B
3 4.0 4.0
A B
0 1.0 0.0
1 0.0 2.0
2 3.0 0.0
3 4.0 4.0
Penjelasan output:
Outlier dapat dideteksi melalui analisis statistik (misalnya z-score) atau visualisasi (misalnya
boxplot). Sebagai contoh singkat, kita bisa memfilter data yang berada di luar rentang
tertentu.
data_outlier = {
"Nilai": [50, 52, 1000, 55, 58, 60]
}
df_outlier = [Link](data_outlier)
# Misal kita anggap data valid jika 0 < Nilai < 100
df_no_outlier = df_outlier[(df_outlier["Nilai"] > 0) &
(df_outlier["Nilai"] < 100)]
print("Data asli:")
print(df_outlier)
print("\nData tanpa outlier:")
print(df_no_outlier)
Output:
Data asli:
Nilai
0 50
1 52
2 1000
3 55
4 58
5 60
Nilai
0 50
1 52
3 55
4 58
5 60
Penjelasan:
Jika kolom data berisi string yang merepresentasikan tanggal, kita dapat mengkonversinya
menjadi tipe datetime agar lebih mudah diolah.
date_data = {
"Tanggal": ["2023-01-01", "2023/02/15", "01-Mar-2023"]
}
df_date = [Link](date_data)
df_date["Tanggal"] = pd.to_datetime(df_date["Tanggal"])
print(df_date)
print(df_date.dtypes)
Output:
Tanggal
0 2023-01-01
1 2023-02-15
2 2023-03-01
Tanggal datetime64[ns]
dtype: object
Penjelasan output:
● Setelah dikonversi, kita bisa dengan mudah melakukan filtering berdasarkan waktu,
menghitung selisih hari, dsb.
data_stats = {
"Kolom1": [10, 20, 30, 40, 50],
"Kolom2": [5, 7, 9, 4, 2]
}
df_stats = [Link](data_stats)
print(df_stats)
print("\nRingkasan statistik:")
print(df_stats.describe())
Output:
Kolom1 Kolom2
0 10 5
1 20 7
2 30 9
3 40 4
4 50 2
Ringkasan statistik:
Kolom1 Kolom2
Penjelasan output:
● Tersedia juga nilai minimal, 25th percentile, median (50%), 75th percentile, dan
maksimal.
Kolom1 Kolom2
Penjelasan:
● Kolom1 dan Kolom2 memiliki korelasi negatif sekitar -0.5433. Artinya, secara linear,
saat Kolom1 meningkat, Kolom2 cenderung menurun.
Kita bisa melakukan agregasi di seluruh kolom atau per kolom tertentu.
Output:
Kolom1 150
Kolom2 27
dtype: int64
Kolom1 30.0
Kolom2 5.4
dtype: float64
Kolom1 5
Kolom2 5
dtype: int64
Penjelasan output:
● sum() menambahkan seluruh nilai di Kolom1 dan Kolom2. Kolom1 total 150,
Kolom2 total 27.
12.1 Matplotlib
Matplotlib adalah library paling dasar yang hampir selalu menjadi fondasi bagi library
visualisasi lain di Python. Biasanya diimpor sebagai import [Link] as
plt.
Matplotlib sering kali sudah terinstal secara default di Anaconda Distribution. Jika belum,
kamu bisa menginstal dengan:
12.1.2 Plot Dasar (Line Plot, Scatter Plot, Bar Plot, Histogram)
Matplotlib sangat fleksibel. Kita dapat membuat berbagai plot dengan fungsi berbeda.
Berikut beberapa plot paling dasar:
Line Plot
Line plot umumnya digunakan untuk menampilkan tren atau hubungan yang
berkelanjutan.
Output:
Penjelasan output:
Scatter Plot
Scatter plot bagus untuk memperlihatkan hubungan antara dua variabel numerik, melihat
pola distribusi atau korelasi di antara mereka.
Output:
Penjelasan output:
Bar plot berguna untuk menampilkan data kategorik (sering kali pada sumbu X) dan nilai
(pada sumbu Y).
Output:
Penjelasan output:
Output:
Penjelasan output:
Output:
Penjelasan output:
Kadang kita ingin menampilkan beberapa plot berdampingan. Kita bisa menggunakan
[Link]() atau [Link]().
Output:
Penjelasan output:
12.2 Seaborn
Seaborn menawarkan visualisasi statistik dan styling yang lebih menarik secara default.
Seaborn diimpor sebagai import seaborn as sns. Ia mengandalkan Matplotlib di
belakang layar.
Di dalam Python/Jupyter:
Boxplot
Boxplot (box and whisker plot) menampilkan ringkasan statistika (median, kuartil, outlier).
Bagus untuk membandingkan distribusi beberapa kategori.
Output:
Penjelasan output:
● tips adalah dataset bawaan Seaborn yang berisi data tagihan restoran.
Violinplot
Violinplot mirip boxplot, tetapi juga menambahkan estimasi distribusi kernel (menyerupai
bentuk biola).
Output:
Pairplot
Output:
Penjelasan output:
Heatmap
Heatmap sering kali digunakan untuk menampilkan korelasi antar variabel atau matriks
confusi (confusion matrix) di machine learning.
Output:
Penjelasan output:
Seaborn memiliki tema default yang menarik, tetapi kita dapat mengubah palet warna atau
style:
Output:
Penjelasan output:
Output:
Penjelasan output:
● [Link]() memuat dataset Iris (150 baris data, 4 kolom dimensi sepal/petal,
1 kolom species).
2. Median (Nilai tengah): Nilai yang membagi data menjadi dua bagian sama besar
setelah data diurutkan.
Data: [1, 2, 2, 3, 4, 4, 4, 5, 6]
Mean: 3.4444444444444446
Median: 4.0
Mode: 4
Penjelasan output:
Ukuran penyebaran menggambarkan seberapa “tersebar” data kita. Variance dan standard
deviation cukup populer. Semakin besar nilainya, berarti data semakin bervariasi.
Output:
Variance: 30.16
Penjelasan output:
● range_val = 25 - 10 = 15.
13.2 Probabilitas
Probabilitas membahas “peluang suatu kejadian terjadi.” Dalam data science, konsep
probabilitas membantu kita menangani ketidakpastian, mengambil sampling, serta
membangun model statistika.
Probabilitas sebuah kejadian A adalah perkiraan seberapa sering A akan terjadi jika kita
melakukan percobaan berkali-kali, yakni P(A)=Jumlah kejadian AJumlah
percobaan\mathrm{P}(A) = \frac{\text{Jumlah kejadian A}}{\text{Jumlah
percobaan}}P(A)=Jumlah percobaanJumlah kejadian A.
Dalam Python, kita sering mengaplikasikan konsep probabilitas ketika bekerja dengan
random sampling (misalnya [Link]) atau ketika kita membangun model machine
learning yang melibatkan distribusi probabilitas tertentu.
2. Uniform Distribution: Semua nilai dalam interval [a, b] memiliki kemungkinan
sama.
Output:
Penjelasan output:
13.3.1 Sampling
Sampling berarti memilih subset data untuk mewakili populasi. Python menyediakan fungsi
sample() pada Pandas DataFrame, atau kita bisa memakai [Link] untuk
array.
Nilai
83 84
53 54
70 71
45 46
44 45
39 40
22 23
80 81
10 11
0 1
Penjelasan output:
Confidence interval, misalnya 95% CI, adalah rentang nilai di mana kita cukup percaya
(95%) bahwa parameter populasi sesungguhnya (misal mean) berada dalam rentang
tersebut. Perhitungannya biasanya menggunakan mean ± z ×\times× SE (Standard Error)
untuk data berdistribusi normal, atau pendekatan lain tergantung distribusi dan jumlah
data.
Output (Contoh):
Penjelasan output:
● data_ci adalah data acak berdistribusi normal, berukuran 30, dengan mean sekitar
5.
Dengan memahami statistika deskriptif (mean, median, mode, variance, std, dsb.),
probabilitas (konsep distribusi, sampling), dan confidence interval, kita memiliki landasan
kuat untuk menginterpretasi data secara benar. Konsep ini akan sering muncul saat kita
menerapkan machine learning dan mengevaluasi model.
Pada bab-bab selanjutnya, kita akan memanfaatkan pengetahuan ini untuk melangkah ke
modeling dan evaluasi model di data science, termasuk pembahasan dasar machine
learning yang sering memanfaatkan konsep probabilitas dan statistika untuk membuat
prediksi maupun klasifikasi.
BAB 14 – PENGENALAN MACHINE
LEARNING DI PYTHON
Machine learning (ML) adalah cabang kecerdasan buatan yang berfokus pada
pengembangan algoritma yang belajar dari data dan membuat prediksi atau keputusan
tanpa diprogram secara eksplisit untuk setiap kemungkinan. Python menjadi salah satu
bahasa yang sangat populer untuk ML karena ekosistem library-nya yang kaya, seperti
scikit-learn, TensorFlow, PyTorch, dan lain-lain. Pada bab ini, kita akan membahas
dasar-dasar ML, terutama penerapan supervised learning dan unsupervised learning
menggunakan scikit-learn, agar kamu dapat memahami bagaimana memulai membangun
model prediksi dan klasterisasi sederhana.
1. Supervised Learning: Terdapat data input (fitur) dan data output (label/target) yang
sudah diketahui. Tujuan model adalah mempelajari hubungan antara input dan
output, sehingga bisa memprediksi output untuk data baru. Contohnya adalah
regression (output kontinu) dan classification (output kategori).
2. Unsupervised Learning: Hanya terdapat data input tanpa label/target yang
diketahui. Tujuan model adalah menemukan pola tersembunyi atau struktur dalam
data, seperti pengelompokan (clustering) atau reduksi dimensi (dimensionality
reduction).
1. Mempersiapkan data (membersihkan, memisahkan fitur dan label, mengatasi data
hilang, dsb.).
2. Memilih model (misal Linear Regression, Decision Tree, K-Means, dsb.).
14.2 Scikit-Learn
Scikit-learn (sklearn) adalah library Python paling populer untuk ML tradisional (regresi,
klasifikasi, klasterisasi, dsb.). Biasanya diimpor sebagai:
import sklearn
Jika scikit-learn belum terinstal, kita dapat memasangnya dengan pip install
scikit-learn atau menggunakan conda conda install scikit-learn pada
environment Anaconda. Setelah itu, kamu dapat mengimpor modul-modul yang
diperlukan.
2. Memanggil [Link](X, y) untuk melatih model dengan data fitur X dan target
y.
Misalnya:
Output (contoh):
Penjelasan output:
● Koefisien (m) adalah slope dari garis regresi, di sini sekitar 0.6.
● Intercept (b) adalah titik potong dengan sumbu Y, di sini sekitar 2.2.
● Model memperkirakan bahwa bila X=6, maka Y ~ 5.8, dan bila X=7, maka Y ~ 6.4.
Dalam ML, kita perlu mengevaluasi performa model pada data yang tidak digunakan saat
training. Itulah mengapa kita memisahkan data menjadi train set dan test set.
Penjelasan output:
Regresi linear bertujuan memodelkan hubungan linear antara fitur dan target. Simple linear
regression memiliki satu fitur, sedangkan multiple linear regression memiliki beberapa fitur.
Output (contoh):
Intercept: 0.9999999999999982
Prediksi: [4.2 7. ]
Penjelasan output:
● Koefisien: [0.8 0.4] menunjukkan untuk setiap kenaikan 1 unit di X1, Y naik
0.8, dan setiap kenaikan 1 unit di X2, Y naik 0.4 (dengan asumsi variabel lain
konstan).
● Prediksi [4.2, 7.0] berarti untuk input (2,3), model memprediksi Y=4.2, dan
untuk (5,5), Y=7.0.
Klasifikasi berarti output adalah kategori diskrit, misalnya “spam” vs “not spam”, “lulus” vs
“tidak lulus,” dsb.
Output (contoh):
Prediksi: [0 1]
Akurasi: 1.0
Penjelasan output:
● Data X berisi 8 baris (masing-masing dua fitur), y adalah label biner (0 atau 1).
Output (contoh):
Prediksi: [0 1]
Laporan Klasifikasi:
accuracy 1.00 2
Penjelasan output:
● Data X dibagi menjadi dua kelompok jelas: (1,1), (2,2), (1,2), (2,1) untuk label 0 dan
(6,6), (7,7), (6,7), (7,6) untuk label 1.
K-Means membagi data menjadi k cluster berdasarkan jarak. Kita tentukan k terlebih dulu.
Output (contoh):
Labels cluster: [1 1 1 0 0 0 0 0]
[1.33333333 2.66666667]]
Penjelasan output:
Output (contoh):
15.1 Itertools
itertools adalah modul berisi fungsi-fungsi untuk memanipulasi iterasi (daftar,
generator, dll.). Beberapa fungsi penting:
import itertools
# count()
counter = [Link](start=10, step=2)
print("Menggunakan [Link]:")
for i in range(5):
print(next(counter))
# chain()
list1 = [1, 2]
list2 = [3, 4]
combined = [Link](list1, list2)
print("\nMenggunakan [Link]:")
for item in combined:
print(item)
# combinations()
print("\nMenggunakan [Link] (r=2) pada [1,2,3]:")
for combo in [Link]([1,2,3], 2):
print(combo)
# permutations()
print("\nMenggunakan [Link] (r=2) pada ['A','B','C']:")
for perm in [Link](['A','B','C'], 2):
print(perm)
Output:
Menggunakan [Link]:
10
12
14
16
18
Menggunakan [Link]:
(1, 2)
(1, 3)
(2, 3)
('A', 'B')
('A', 'C')
('B', 'A')
('B', 'C')
('C', 'A')
('C', 'B')
Penjelasan output:
2. defaultdict: Seperti dict biasa, tapi jika key belum ada, otomatis membuat value
default (misal list, int, dsb.).
3. namedtuple: Membuat tuple dengan nama field, sehingga dapat diakses seperti
object.
4. deque: Double-ended queue dengan operasi append dan pop di kedua ujung yang
cepat.
15.2.1 Counter
from collections import Counter
data = ["apple", "banana", "apple", "orange", "banana", "apple"]
counter_data = Counter(data)
print("Counter:", counter_data)
print("Most common 2:", counter_data.most_common(2))
Output:
Penjelasan output:
15.2.2 defaultdict
from collections import defaultdict
# Otomatis menset value jadi list kosong jika key baru
list_dict = defaultdict(list)
list_dict["buah"].append("apel")
list_dict["buah"].append("jeruk")
list_dict["sayur"].append("wortel")
print("defaultdict(list):", list_dict)
# Otomatis menset value jadi 0 (int) jika key baru
int_dict = defaultdict(int)
int_dict["count_a"] += 1
int_dict["count_b"] += 5
print("defaultdict(int):", int_dict)
Output:
Penjelasan:
15.2.3 namedtuple
from collections import namedtuple
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print("p.x =", p.x)
print("p.y =", p.y)
Output:
p.x = 10
p.y = 20
Penjelasan:
● Point adalah named tuple dengan field x dan y. Saat membuat Point(10, 20),
kita punya sebuah tuple yang dapat diakses seperti object: p.x, p.y.
15.2.4 deque
from collections import deque
dq = deque([1, 2, 3])
[Link](4)
[Link](0)
print("Setelah append(4) dan appendleft(0):", dq)
[Link]()
[Link]()
print("Setelah pop() dan popleft():", dq)
Output:
Penjelasan output:
● dq awalnya [1, 2, 3]. append(4) menambah elemen di ujung kanan -> [1, 2,
3, 4]. appendleft(0) menambah di ujung kiri -> [0, 1, 2, 3, 4].
● pop() menghapus elemen paling kanan (4), popleft() menghapus elemen paling
kiri (0), hasil akhirnya [1, 2, 3].
3. zip(): Menggabungkan beberapa iterable menjadi satu baris (tuple) per indeks.
Output:
Penjelasan output:
Output (contoh):
Penjelasan output:
timeit dapat dijalankan di command line atau di dalam script. Fungsinya mengulang
eksekusi sebuah kode kecil berulang kali dan menampilkan waktu rata-rata.
import timeit
code_to_test = """
import numpy as np
arr = [Link](100000)
[Link](arr)
"""
execution_time = [Link](code_to_test, number=100)
print("Waktu eksekusi:", execution_time, "detik (untuk 100 kali run)")
Output (contoh):
Penjelasan output:
● [Link](code_to_test, number=100) mengeksekusi code_to_test
sebanyak 100 kali dan mengembalikan total waktu.
● Kita dapat menghitung waktu rata-rata per eksekusi dengan membagi total waktu
oleh 100.
cProfile dapat menganalisa berapa lama setiap fungsi dipanggil, seberapa sering
dipanggil, dsb. Cocok saat ingin tahu mana bagian kode yang paling lambat.
def fungsi_pertama(n):
s = 0
for i in range(n):
s += i
return s
def fungsi_kedua(n):
import numpy as np
arr = [Link](n)
return [Link](arr)
def main():
hasil1 = fungsi_pertama(10_000_000)
hasil2 = fungsi_kedua(10_000_000)
print("Hasil1:", hasil1, "Hasil2:", hasil2)
if __name__ == "__main__":
import cProfile
[Link]('main()')
Penjelasan output:
● Menampilkan total waktu, berapa kali fungsi dipanggil, dan waktu yang dihabiskan
di setiap fungsi.
● ncalls menunjukkan berapa kali fungsi dipanggil, tottime adalah waktu total
eksekusi fungsi, cumtime adalah waktu komulatif termasuk fungsi di dalamnya.
Melalui profiling, kita dapat mengidentifikasi bagian kode yang perlu dioptimasi, misalnya
mengganti loop Python dengan operasi NumPy yang lebih efisien.
2. Inspeksi Awal: Melihat bentuk data, tipe data, dan ringkasan statistik.
4. Visualisasi Dasar: Plot histogram, boxplot, scatter plot, heatmap korelasi, dsb.
2. [Link]() menunjukkan tipe data setiap kolom (biasanya float untuk
panjang-panjang kelopak, object atau category untuk species), serta jumlah
non-null.
3. [Link]() menampilkan ringkasan statistik, seperti mean, std, min, max,
Q1, Q2, Q3.
6. Heatmap korelasi memperlihatkan sejauh mana hubungan linear antar fitur
numerik, misalnya petal_length sering sangat berkorelasi positif dengan
petal_width.
Dengan EDA, kita dapat menyimpulkan pola awal, misalnya korelasi kuat antara
petal_length dan petal_width, atau melihat apakah ada data aneh/outlier. Informasi
ini akan berguna saat kita lanjut ke pemodelan.
1. Pemisahan Data: train_test_split agar kita bisa menguji performa model di
data yang tidak dipakai untuk training.
2. Classification Report: Menampilkan precision, recall, dan f1-score untuk setiap
kelas (setosa, versicolor, virginica). Mungkin semuanya 1.00 jika model
memang sempurna memprediksi data test.
3. Prediksi spesies: Baris terakhir mengevaluasi data baru [5.0, 3.5, 1.4, 0.2].
Model akan mengembalikan array dengan satu label spesies, misalnya
[‘setosa’].
Dengan contoh di atas, kamu telah melihat siklus lengkap: EDA, persiapan data, pemodelan,
evaluasi, dan penerapan prediksi. Meskipun dataset Iris relatif kecil dan sederhana, prinsip
yang sama berlaku untuk dataset lebih besar dan kompleks.
BAB 17 – BEST PRACTICES DAN SARAN
LANJUT
Setelah memahami konsep dasar Python dan data science, kamu mungkin ingin menyusun
proyek dengan cara yang terstruktur, mudah di-maintain, dan siap untuk dikembangkan
lebih lanjut. Bab ini membahas praktik terbaik (best practices) dalam mengorganisir kode,
menjaga kualitas, menggunakan sistem kendali versi, dan beberapa saran untuk tahap
lanjut seperti containerization (Docker) dan deployment model.
my_data_science_project/
├── data/
│ ├── raw/
│ │ └── dataset_original.csv
│ └── processed/
│ └── dataset_cleaned.csv
├── notebooks/
│ ├── [Link]
│ └── [Link]
├── scripts/
│ ├── data_preprocessing.py
│ ├── train_model.py
│ └── [Link]
├── models/
│ └── random_forest_model.pkl
├── reports/
│ ├── eda_report.html
│ └── model_evaluation.md
└── [Link]
Penjelasan Struktur:
4. scripts/: Berisi skrip Python yang dapat dijalankan, misalnya preprocessing,
training, evaluasi.
5. models/: Menyimpan model yang telah dilatih (misal file .pkl jika pakai joblib
atau pickle).
Struktur ini memudahkan kolaborasi dan memperjelas di mana setiap komponen proyek
disimpan.
● Tuliskan komentar singkat jika kamu membuat langkah-langkah kritis yang perlu
penjelasan.
Penjelasan:
● Gunakan penamaan variabel yang deskriptif, misalnya alas dan tinggi, bukan a
atau t jika ingin lebih jelas.
● Commit secara teratur dengan pesan yang jelas (misal: “Menambahkan EDA untuk
dataset X” atau “Memperbaiki bug pada fungsi train_model”).
● Manfaatkan branching untuk fitur baru atau percobaan model, lalu merge ke branch
utama setelah stabil.
FROM python:3.9
WORKDIR /app
COPY [Link] .
COPY . /app
Dengan Docker, orang lain bisa cukup menjalankan docker build -t my-ds-project
. lalu docker run my-ds-project tanpa pusing tentang perbedaan environment.
Setelah model dibuat, kita sering ingin menjadikannya API atau aplikasi web.
● FastAPI: Mirip Flask, tapi lebih modern dan performa tinggi, dilengkapi
dokumentasi otomatis.
Penjelasan:
● Endpoint /predict menerima POST request dengan JSON berisi fitur, lalu
memanggil [Link](...).
1. Library Reference: Penjelasan setiap modul bawaan Python, misalnya math, os, re,
datetime, dll.
2. Language Reference: Detail sintaks, struktur bahasa, dan perilaku di level
interpreter.
...
Penjelasan output:
● Hal serupa dapat dilakukan pada modul atau objek lain, contohnya help(str),
help([Link]), dan seterusnya.
pydoc re
Output:
Penjelasan output:
● Ini praktis bila kamu ingin melihat penjelasan secara offline tanpa membuka
browser.
Proyek data science modern hampir selalu melibatkan library: NumPy, Pandas, Matplotlib,
Seaborn, dan scikit-learn. Masing-masing memiliki situs dokumentasi sendiri:
1. NumPy: [Link]
rand(...)
...
Penjelasan output:
● Ini merupakan contoh docstring ringkas. Dokumentasi resmi di situs akan memuat
lebih banyak detail.
○ Cocok untuk pemula yang ingin memahami dasar bahasa Python secara
berurutan.
Ada banyak buku bagus tentang Python dan data science. Beberapa di antaranya:
1. “Automate the Boring Stuff with Python” oleh Al Sweigart, gratis online:
[Link]
2. “Python for Data Analysis” oleh Wes McKinney, pendiri Pandas.
3. “Fluent Python” oleh Luciano Ramalho, membahas detail internal Python.
4. “Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow” oleh
Aurélien Géron, untuk penerapan ML modern.
1. Module (Modul): Berkas .py atau library eksternal yang berisi sekumpulan fungsi,
kelas, variabel.
2. Package: Direktori yang berisi banyak modul dan memiliki file __init__.py.
3. Virtual Environment: Lingkungan Python terisolasi yang memiliki versi paket
tersendiri.
4. DataFrame: Struktur data 2D ala tabel di Pandas dengan label baris (index) dan label
kolom (columns).
6. Array NumPy: Struktur data numerik berdimensi tunggal atau lebih, di mana semua
elemen tipe datanya sama.
7. EDA (Exploratory Data Analysis): Proses menjelajahi data melalui statistik
deskriptif, visualisasi, dan pembersihan data awal.
8. Supervised Learning: Metode machine learning dengan data berlabel. Terbagi
menjadi klasifikasi (label kategori) dan regresi (label numerik).
9. Unsupervised Learning: Metode machine learning tanpa label, seperti klasterisasi
(k-means) dan reduksi dimensi (PCA).
10.Overfitting: Kondisi di mana model sangat cocok dengan data training tetapi kurang
generalisasi ke data baru.
11.Underfitting: Kondisi di mana model belum cukup belajar pola dari data (biasanya
performa buruk di training dan testing).
13.Parameter: Parameter model yang dipelajari dari data (misal bobot dan bias pada
neural network, koefisien pada linear regression).
Bab 18 menutup isi buku dengan memberikan daftar referensi resmi, sumber belajar
online, buku lanjutan, dan glosarium. Dokumentasi resmi, komunitas daring, dan buku
berkualitas akan selalu menjadi penolong ketika kamu menghadapi pertanyaan teknis atau
mencari inspirasi untuk praktik data science yang lebih mendalam. Dengan semua bekal
dari bab-bab sebelumnya, dipadu dengan rujukan di bab ini, kamu diharapkan bisa terus
belajar dan mengembangkan keterampilan Python untuk data science secara berkelanjutan.
TERIMAKASIH