Apa yang akan Abbas pelajari bulan ini?

  • Menjalankan kode Python pertama di Google Colab tanpa bingung
  • Membuat variabel dan memahami tipe data dasar (int, float, string, boolean)
  • Menggunakan list dan dictionary untuk menyimpan banyak data
  • Menulis percabangan if/elif/else untuk pengambilan keputusan
  • Membuat loop untuk mengulang proses secara otomatis
  • Mendefinisikan function agar kode bisa dipakai ulang
  • Membaca error message dan men-debug kode sendiri
  • Membuat notebook yang rapi dengan penjelasan markdown
πŸ’‘Kenapa Python?

Python adalah bahasa nomor 1 untuk data analytics dan data science. Sintaksnya mirip bahasa Inggris biasa, jadi lebih mudah dibaca dibanding Java atau C++. Hampir semua tools analisis data (Pandas, NumPy, scikit-learn) ditulis dalam Python. Belajar Python sekarang berarti Abbas bisa langsung pakai tools yang sama yang dipakai oleh data analyst di Google, Gojek, BPS, dan Tokopedia.

πŸ€”Sebelum mulai, pikirkanlah...
  • Data apa yang paling menarik buat Abbas analisis? Nilai sekolah? Harga makanan? Cuaca? Hasil pertandingan?
  • Kalau Abbas bisa tanya satu pertanyaan ke data yang ada di dunia, pertanyaan apa itu?
  • Apa bedanya mengetahui fakta vs memahami mengapa fakta itu terjadi?

Output akhir Bulan 1

  • 1 notebook Google Colab berjalan penuh tanpa error
  • Program "Analisis Nilai Pribadi" yang bisa hitung rata-rata, nilai tertinggi, terendah, dan status lulus
  • Minimal 5 function Python buatan sendiri
  • 1 halaman refleksi tertulis: apa yang Abbas pelajari

Minggu 1: Setup & Mental Model Coding

Hari 1–5 Β· Senin sampai Jumat

Google Colab print() variabel input/process/output Markdown komentar kode
1
Senin Β· Dunia Data dan Alasan Abbas Ada di Sini
Hari 1 dari 20 Β· Setup pertama, print pertama
β–Ύ
🎯Tujuan hari ini

Abbas bisa membuka Google Colab, menjalankan kode Python pertama, dan memahami mengapa data analyst itu pekerjaan yang penting.

πŸ“–Konsep: Apa itu Data Analyst?

Data analyst adalah orang yang mengubah data mentah menjadi keputusan yang lebih baik. Bukan soal membuat grafik yang cantik, tapi soal menjawab pertanyaan bisnis yang nyata.


Contoh nyata: Gojek tahu jam 11 malam lebih banyak orang pesan makanan daripada ojek (insight dari data analyst). BPS tahu daerah mana paling butuh bantuan sosial, juga dari data analyst. IPB tahu komoditas pangan apa yang akan langka 3 bulan ke depan, juga dari data analyst.


Abbas yang masuk kuliah sudah bisa melakukan ini = Abbas jauh lebih unggul dari 95% mahasiswa baru.

Latihan 1 Print pertama Abbas di dunia

Buka colab.research.google.com, buat notebook baru, dan ketik kode ini:

python
print("Halo! Nama gue Abbas, dan ini kode Python pertama gue.")
print("Gue lagi belajar jadi Data Analyst.")
print("Ini hari pertama dari 365 hari perjalanan gue.")

Tekan Shift+Enter untuk menjalankan. Lihat outputnya muncul di bawah cell.

Latihan 2 Hitung umur dengan kode
python
# Variabel pertama Abbas
tahun_lahir = 2008  # ganti sesuai tahun lahir Abbas
tahun_sekarang = 2025
umur = tahun_sekarang - tahun_lahir

print("Abbas berumur", umur, "tahun")
print("Kalau nanti kuliah tahun 2027, Abbas berumur", tahun_lahir + 19)
πŸš€Challenge Hari 1

Buat program yang mencetak "kartu profil" Abbas: nama, umur, sekolah, cita-cita karir, dan satu fakta menarik tentang diri Abbas. Semua dalam satu notebook yang rapi dengan markdown title di atasnya.

πŸ€”Pertanyaan untuk dipikirkan malam ini
  • Komputer tidak bisa "menebak": Abbas harus memberi instruksi yang sangat spesifik. Apa artinya ini untuk cara Abbas berpikir?
  • Kenapa penting bahwa data analyst bisa coding, bukan hanya bisa Excel?
  • Data apa yang ada di sekitar kehidupan Abbas sehari-hari yang mungkin menarik untuk dianalisis?
2
Selasa Β· Navigasi Colab dan Notebook yang Rapi
Hari 2 dari 20 Β· Markdown, shortcuts, struktur notebook
β–Ύ
🎯Tujuan hari ini

Abbas bisa membuat notebook yang terstruktur dengan judul, penjelasan, dan kode, seperti buku catatan digital yang bisa dibaca orang lain.

πŸ“–Konsep: Notebook sebagai Karya

Notebook bukan sekadar tempat nulis kode. Ini adalah dokumen yang bisa berbicara sendiri. Data analyst profesional menulis notebook yang bisa dibaca oleh rekan kerja atau atasan tanpa perlu penjelasan verbal. Abbas harus mulai terbiasa dari sekarang.


Struktur notebook yang baik: Judul β†’ Tujuan β†’ Kode β†’ Penjelasan hasil β†’ Kesimpulan.

Latihan Buat notebook "About Me" yang proper
markdown (cell markdown)
# Notebook Pertama: Mengenal Abbas

## Tujuan
Notebook ini berisi data sederhana tentang diri Abbas,
dihitung menggunakan Python.

## Informasi Dasar
python (cell code)
# Data diri Abbas
nama = "Abbas"
sekolah = "SMA ..."  # isi nama sekolah
kelas = 11
nilai_matematika = 87
nilai_bahasa_indonesia = 82
nilai_bahasa_inggris = 90
nilai_biologi = 78

rata_rata = (nilai_matematika + nilai_bahasa_indonesia +
             nilai_bahasa_inggris + nilai_biologi) / 4

print(f"Halo! Saya {nama} dari kelas {kelas}")
print(f"Rata-rata nilai saya: {rata_rata:.1f}")
print(f"Sekolah: {sekolah}")
⚠️Perhatikan: f-string!

Lihat f"..." di depan tanda kutip? Ini namanya f-string (formatted string). Dengan ini, Abbas bisa langsung masukkan nilai variabel ke dalam kalimat pakai {nama_variabel}. Ini cara paling bersih untuk bikin output yang rapi.

πŸš€Challenge Hari 2

Buat notebook yang berisi 3 cell markdown (judul, penjelasan bagian 1, kesimpulan) dan 3 cell code (perhitungan berbeda). Topik bebas, bisa soal nilai, jadwal belajar, atau apapun yang menarik. Yang penting strukturnya rapi dan ada penjelasannya.

πŸ€”Pertanyaan untuk dipikirkan
  • Kenapa penting mendokumentasikan kode? Bayangkan Abbas membuka kode yang Abbas tulis 6 bulan lalu tanpa catatan apapun. Apa yang terjadi?
  • Siapa "pembaca" yang ideal dari notebook seorang data analyst?
3
Rabu Β· Variabel dan Tipe Data
Hari 3 dari 20 Β· int, float, string, boolean, type()
β–Ύ
🎯Tujuan hari ini

Abbas memahami 4 tipe data dasar Python dan mengapa tipe data yang salah bisa menyebabkan bug yang susah ditemukan.

πŸ’‘Ide Visual: Tipe Data = Laci Berbeda

Bayangkan variabel seperti laci dalam lemari. Setiap laci punya jenis barang yang berbeda:

  • int: laci untuk angka bulat (umur, jumlah siswa, nomor absen)
  • float: laci untuk angka desimal (nilai rata-rata, harga, berat)
  • string: laci untuk teks (nama, alamat, kategori)
  • boolean: laci yang cuma bisa isi True atau False (lulus/tidak, hadir/absen)

Kalau Abbas taruh barang yang salah di laci yang salah, Python akan protes dengan error.

Latihan Eksplorasi tipe data
python
# Empat tipe data dasar
nilai_ujian = 87          # int
berat_badan = 58.5       # float
nama_siswa = "Abbas"     # string
sudah_lulus = True       # boolean

# Cek tipe data
print(type(nilai_ujian))    # <class 'int'>
print(type(berat_badan))   # <class 'float'>
print(type(nama_siswa))    # <class 'str'>
print(type(sudah_lulus))   # <class 'bool'>

# Bahaya: string vs angka!
nilai_str = "87"   # ini STRING, bukan angka!
print(nilai_ujian + 10)    # 97 β€” benar
# print(nilai_str + 10)   # ERROR! tidak bisa tambah string dan angka

# Konversi tipe data
nilai_angka = int(nilai_str)  # convert string ke int
print(nilai_angka + 10)  # 97 β€” sekarang benar
Latihan 2 Kalkulator nilai rata-rata dengan tipe data yang benar
python
# Data nilai 5 mata pelajaran
mat = 87
indo = 82
ing = 90
bio = 78
fis = 85

total = mat + indo + ing + bio + fis
rata_rata = total / 5
nilai_tertinggi = max(mat, indo, ing, bio, fis)
nilai_terendah = min(mat, indo, ing, bio, fis)

print(f"Total nilai: {total}")
print(f"Rata-rata: {rata_rata:.2f}")
print(f"Nilai tertinggi: {nilai_tertinggi}")
print(f"Nilai terendah: {nilai_terendah}")

lulus = rata_rata >= 75  # boolean!
print(f"Status lulus: {lulus}")
πŸš€Challenge Hari 3

Buat program kalkulator BMI (Body Mass Index) yang meminta berat badan (float) dan tinggi badan (float), lalu menghitung BMI dan mencetak kategorinya (Kurus/Normal/Gemuk/Obesitas). Hint: BMI = berat / (tinggi_meter ** 2)

πŸ€”Pertanyaan untuk dipikirkan
  • Kenapa Python membedakan string "87" dengan angka 87? Apa yang bisa salah kalau komputer menganggapnya sama?
  • Di dunia data analytics nyata, data yang datang dari spreadsheet atau database sering kali bertipe string padahal harusnya angka. Apa yang harus dilakukan data analyst dalam kasus ini?
4
Kamis Β· Operator dan Ekspresi
Hari 4 dari 20 Β· Aritmetika, perbandingan, logika
β–Ύ
🎯Tujuan hari ini

Abbas bisa menggunakan operator aritmetika, perbandingan, dan logika untuk membuat kalkulasi dan kondisi yang berguna.

πŸ’‘Ide Visual: Operator = Bahasa Query Database

Setiap kali Abbas nanti nulis SQL, filter data, atau bikin kondisi di Pandas, Abbas pakai operator yang sama seperti ini. Contoh: WHERE nilai > 75 AND hadir = True: itu operator perbandingan dan logika! Belajar operator Python = belajar fondasi semua query data.

Latihan Semua jenis operator
python
# ── Aritmetika ──
a, b = 17, 5
print(a + b)   # 22 β€” penjumlahan
print(a - b)   # 12 β€” pengurangan
print(a * b)   # 85 β€” perkalian
print(a / b)   # 3.4 β€” pembagian (selalu float)
print(a // b)  # 3 β€” bagi bulat (buang desimal)
print(a % b)   # 2 β€” sisa bagi (modulo)
print(a ** 2)  # 289 β€” pangkat

# ── Perbandingan (selalu menghasilkan True/False) ──
nilai = 82
print(nilai > 75)    # True
print(nilai == 82)   # True (== bukan =)
print(nilai != 90)   # True (tidak sama dengan)
print(nilai >= 90)   # False

# ── Logika ──
nilai_ok = nilai >= 75    # True
hadir = True
print(nilai_ok and hadir)  # True (keduanya harus True)
print(nilai_ok or hadir)   # True (cukup salah satu True)
print(not hadir)            # False (kebalikan)
πŸš€Challenge Hari 4

Buat program penentu diskon. Input: harga barang (float) dan status member (boolean). Aturan: member dapat diskon 15%, bukan member dapat 5%, kalau harga di atas 500.000 dapat tambahan diskon 5%. Cetak harga asli, total diskon persen, dan harga akhir.

πŸ€”Pertanyaan untuk dipikirkan
  • Apa bedanya = (assignment) dengan == (comparison)? Buat analogi sendiri untuk membantu Abbas mengingat perbedaannya.
  • Operator % (modulo) terlihat aneh tapi sangat berguna. Kapan Abbas perlu tahu sisa pembagian dalam kehidupan nyata? (Hint: hari dalam seminggu, bilangan ganjil/genap)
5
Jumat Β· Review dan Weekly Challenge
Hari 5 dari 20 Β· Konsolidasi minggu 1
β–Ύ
πŸ“‹Review cepat: apa yang Abbas sudah tahu?
  • Google Colab: buka, buat cell code dan markdown, jalankan, simpan
  • Variabel: simpan data dengan nama yang bermakna
  • 4 tipe data dasar: int, float, string, boolean
  • Operator: aritmetika, perbandingan, logika
  • print() dan f-string untuk output yang rapi
πŸ†Weekly Challenge: Laporan Nilai Pribadi v1

Buat program lengkap yang menerima nilai 5 mata pelajaran (langsung ditulis sebagai variabel), kemudian menghasilkan output berikut:

  • Rata-rata nilai (2 angka desimal)
  • Nilai tertinggi dan terendah
  • Status: Lulus (rata β‰₯75), Hampir (rata 70-74), Perlu Perbaikan (rata <70)
  • Prediksi ranking kasar: Top (rata β‰₯85), Atas (80-84), Tengah (75-79)
  • Pesan motivasi yang berbeda tergantung statusnya

Format output yang diharapkan:

output
============================
  LAPORAN NILAI β€” ABBAS
============================
Mat: 87 | Indo: 82 | Ing: 90
Bio: 78 | Fis: 85
----------------------------
Rata-rata   : 84.40
Tertinggi   : 90 (Bahasa Inggris)
Terendah    : 78 (Biologi)
Status      : LULUS
Ranking     : Atas
----------------------------
Pesan: Bagus Abbas! Tinggal
perkuat Biologi dan Abbas
masuk kategori Top.
============================
πŸ€”Refleksi Minggu 1
  • Apa yang paling mudah minggu ini? Apa yang paling sulit?
  • Error apa yang paling sering Abbas temui? Bagaimana cara Abbas menemukan solusinya?
  • Kalau Abbas harus menjelaskan "variabel" ke teman yang belum belajar coding, apa analogi yang akan Abbas pakai?

Minggu 2: List, Dictionary, & Cara Menyimpan Banyak Data

Hari 6–10 Β· Senin sampai Jumat

list dictionary indexing tuple len() append() sorted()
πŸ’‘Ide Visual: List = Kolom, Dictionary = Row+Label

Kalau Abbas nanti kerja dengan data, akan sering ketemu tabel. Bayangkan list sebagai satu kolom data: semua nilai matematika dari 30 siswa. Dictionary adalah satu baris data: profil lengkap satu siswa (nama, nilai, absensi). Dua struktur ini adalah fondasi dari Pandas DataFrame yang akan Abbas pakai di Bulan 5.

6
Senin Β· List: Menyimpan Banyak Data Sekaligus
Hari 6 dari 20
β–Ύ
🎯Tujuan hari ini

Abbas bisa membuat list, mengakses elemen tertentu, dan melakukan operasi dasar: tambah, hapus, urutkan, cari.

Latihan List nilai kelas
python
# List nilai matematika 10 siswa
nilai_mat = [87, 92, 65, 78, 90, 55, 83, 71, 88, 76]

# Akses elemen (index mulai dari 0!)
print(nilai_mat[0])   # 87 β€” siswa pertama
print(nilai_mat[-1])  # 76 β€” siswa terakhir
print(nilai_mat[2:5]) # [65, 78, 90] β€” slicing

# Operasi umum
print(len(nilai_mat))          # 10 β€” jumlah siswa
print(sum(nilai_mat))          # 785 β€” total nilai
print(sum(nilai_mat) / len(nilai_mat))  # 78.5 β€” rata-rata
print(max(nilai_mat))          # 92 β€” nilai tertinggi
print(min(nilai_mat))          # 55 β€” nilai terendah

# Tambah dan hapus
nilai_mat.append(95)    # tambah siswa baru di akhir
print(len(nilai_mat))    # 11 sekarang

# Urutkan
diurutkan = sorted(nilai_mat)    # urutan naik
print(diurutkan)
terurut_turun = sorted(nilai_mat, reverse=True)
print(terurut_turun)
πŸš€Challenge Hari 6

Buat list nilai dari 6 mata pelajaran Abbas sendiri. Kemudian tanpa pakai fungsi bawaan Python (jangan pakai max/min/sum), tulis kode sendiri yang bisa menemukan: nilai tertinggi, nilai terendah, dan rata-rata. Gunakan loop sederhana.

πŸ€”Pertanyaan untuk dipikirkan
  • Kenapa index di Python mulai dari 0, bukan 1? Apa logika di baliknya?
  • Kalau Abbas punya list 1000 nilai siswa dan ingin tahu siapa yang nilainya paling rendah, gimana caranya yang paling efisien?
  • Apa bedanya list yang diurutkan dengan sort() vs sorted()? Coba cek dokumentasi Python!
7
Selasa Β· Dictionary: Data Terstruktur dengan Label
Hari 7 dari 20
β–Ύ
🎯Tujuan hari ini

Abbas bisa membuat dictionary untuk menyimpan data terstruktur dan mengaksesnya dengan key.

Latihan Profil siswa dengan dictionary
python
# Dictionary = data dengan label (key-value pairs)
siswa = {
    "nama": "Abbas",
    "kelas": "11 IPA 1",
    "nilai_mat": 87,
    "nilai_indo": 82,
    "nilai_ing": 90,
    "hadir": True
}

# Akses dengan key
print(siswa["nama"])         # Abbas
print(siswa["nilai_mat"])    # 87

# Tambah atau ubah data
siswa["nilai_bio"] = 78    # tambah key baru
siswa["nilai_mat"] = 89    # ubah nilai yang ada

# Hitung rata-rata dari dictionary
nilai_list = [siswa["nilai_mat"], siswa["nilai_indo"],
              siswa["nilai_ing"], siswa["nilai_bio"]]
rata = sum(nilai_list) / len(nilai_list)

print(f"Siswa: {siswa['nama']}, Rata-rata: {rata:.1f}")

# List of dictionaries β€” ini fondasi tabel data!
kelas = [
    {"nama": "Abbas", "nilai": 87},
    {"nama": "Budi",  "nilai": 92},
    {"nama": "Citra", "nilai": 78},
]
for s in kelas:
    print(f"{s['nama']}: {s['nilai']}")
πŸ’‘Ini adalah cikal bakal DataFrame!

List of dictionaries di atas, itu sama persis dengan struktur data Pandas DataFrame yang akan Abbas pakai di Bulan 5. Setiap dictionary = satu baris/row. Setiap key = nama kolom. Kalau Abbas paham ini, Pandas akan jauh lebih mudah.

πŸš€Challenge Hari 7

Buat dictionary untuk 5 teman Abbas dengan data: nama, nilai_matematika, nilai_bahasa_inggris, dan hobi. Kemudian buat program yang bisa: (1) cetak siapa yang nilai matematikanya tertinggi, (2) cetak semua yang suka hal yang sama dengan Abbas, (3) hitung rata-rata nilai matematika seluruh kelas.

πŸ€”Pertanyaan untuk dipikirkan
  • Kapan Abbas harus pilih list, kapan harus pilih dictionary?
  • Di database nyata, setiap "baris" data punya banyak "kolom". Struktur Python apa yang paling mirip dengan ini?
  • Kalau Abbas ingin menyimpan data 1000 siswa dengan 10 atribut masing-masing, bagaimana struktur data yang paling masuk akal?
8
Rabu Β· For Loop: Otomatisasi Pekerjaan Berulang
Hari 8 dari 20
β–Ύ
🎯Tujuan hari ini

Abbas memahami for loop dan bisa menggunakannya untuk memproses setiap elemen dalam list atau dictionary.

πŸ’‘Ide Visual: Loop = Conveyor Belt Pabrik

Bayangkan pabrik makanan: ada conveyor belt yang membawa kotak satu per satu. Setiap kotak masuk ke mesin yang melakukan hal yang sama (timbang, label, press). Loop di Python persis seperti itu. Setiap elemen masuk ke dalam loop body dan diproses dengan cara yang sama.

Latihan Loop untuk analisis kelas
python
nilai_kelas = [87, 92, 65, 78, 90, 55, 83, 71, 88, 76]

# Loop dasar
for nilai in nilai_kelas:
    print(nilai)

# Loop dengan counter
for i, nilai in enumerate(nilai_kelas):
    print(f"Siswa ke-{i+1}: {nilai}")

# Loop untuk menghitung jumlah yang lulus
jumlah_lulus = 0
for nilai in nilai_kelas:
    if nilai >= 75:
        jumlah_lulus += 1

print(f"Jumlah lulus: {jumlah_lulus} dari {len(nilai_kelas)} siswa")
print(f"Persen lulus: {jumlah_lulus/len(nilai_kelas)*100:.1f}%")

# Loop dict of list β€” analisis per subjek
nilai_semua = {
    "Matematika": [87, 92, 65, 78, 90],
    "Bahasa Indo": [82, 88, 75, 91, 70],
    "Bahasa Ing":  [90, 85, 72, 88, 95],
}
for mapel, nilai in nilai_semua.items():
    rata = sum(nilai) / len(nilai)
    print(f"{mapel}: rata-rata {rata:.1f}")
πŸš€Challenge Hari 8

Buat program "Analisis Kelas Sederhana" dengan list of dictionaries (5 siswa, masing-masing punya nama dan 3 nilai). Program harus bisa: (1) cetak semua siswa dengan rata-ratanya, (2) temukan siswa terbaik dan terburuk, (3) hitung berapa persen kelas yang lulus (rata β‰₯75), (4) cetak pesan berbeda untuk setiap siswa berdasarkan statusnya.

πŸ€”Pertanyaan untuk dipikirkan
  • Bayangkan Abbas harus menganalisis nilai 500 siswa. Tanpa loop, berapa baris kode yang diperlukan? Dengan loop?
  • Loop juga bisa berjalan terlalu lama kalau data terlalu besar. Kapan "cukup" dalam loop? (Ini namanya computational complexity, istilah penting untuk data engineer)
9
Kamis Β· If/Else dan Pengambilan Keputusan
Hari 9 dari 20
β–Ύ
🎯Tujuan hari ini

Abbas bisa membuat percabangan logika yang kompleks menggunakan if/elif/else untuk kategorisasi data.

πŸ’‘Ide Visual: If/Else = Flowchart Keputusan

Data analyst sering harus mengkategorikan data. Nilai 90+ = A, 80-89 = B, 70-79 = C. Pelanggan beli >1jt = Gold, >500rb = Silver, sisanya = Regular. Kondisi ini persis if/elif/else. Di Pandas nanti, Abbas akan pakai .apply() yang di dalamnya ada fungsi if/else.

Latihan Sistem kategorisasi nilai lengkap
python
def kategorikan_nilai(nilai):
    """Mengubah angka nilai menjadi huruf dan keterangan."""
    if nilai >= 90:
        return "A", "Sangat Baik"
    elif nilai >= 80:
        return "B", "Baik"
    elif nilai >= 70:
        return "C", "Cukup"
    elif nilai >= 60:
        return "D", "Kurang"
    else:
        return "E", "Sangat Kurang"

# Test
for n in [95, 83, 72, 61, 45]:
    huruf, ket = kategorikan_nilai(n)
    print(f"Nilai {n}: {huruf} β€” {ket}")

# Kondisi kompleks: butuh intervensi
def cek_intervensi(nilai_dict):
    mat = nilai_dict.get("matematika", 0)
    ing = nilai_dict.get("inggris", 0)
    hadir = nilai_dict.get("kehadiran", 100)

    if mat < 60 and hadir < 80:
        return "Butuh intervensi segera"
    elif mat < 70 or hadir < 80:
        return "Perlu perhatian lebih"
    else:
        return "Oke, tetap pantau"
πŸš€Challenge Hari 9

Buat sistem rekomendasi jurusan kuliah sederhana. Input: nilai matematika, nilai biologi, nilai fisika, minat (sains/sosial/bahasa). Output: rekomendasi 3 jurusan yang cocok dengan penjelasan singkat kenapa. Buat setidaknya 8 kombinasi kondisi yang berbeda.

πŸ€”Pertanyaan untuk dipikirkan
  • Urutan elif sangat penting. Apa yang terjadi kalau Abbas menukar urutan kondisi? Coba dengan contoh nyata.
  • Dalam data analysis, "edge cases" adalah data yang tidak cocok dengan kondisi manapun. Bagaimana Abbas handle ini dengan else?
10
Jumat Β· Review dan Weekly Challenge #2
Hari 10 dari 20 Β· Setengah jalan!
β–Ύ
πŸŽ‰Abbas sudah setengah jalan di Bulan 1!

Yang sudah dikuasai: variabel, tipe data, operator, list, dictionary, for loop, if/elif/else. Itu sudah cukup untuk membangun banyak program analisis data sederhana.

πŸ†Weekly Challenge: Sistem Analisis Kelas v2

Upgrade program dari minggu lalu. Sekarang dengan list of dictionaries (10 siswa, 5 mata pelajaran masing-masing). Program harus bisa:

  • Hitung rata-rata per siswa dan kategorikannya (A/B/C/D/E)
  • Hitung rata-rata per mata pelajaran
  • Temukan mata pelajaran dengan rata-rata tertinggi dan terendah
  • Cetak daftar siswa yang butuh bimbingan (minimal 1 nilai di bawah 60)
  • Hitung distribusi nilai: berapa di A, B, C, D, E
πŸ’‘Bonus challenge

Cetak "ranking" semua siswa dari tertinggi ke terendah berdasarkan rata-rata. Tanpa pakai sorted() bawaan Python: buat algoritma pengurutan sederhana sendiri!


Minggu 3: Function (Kode yang Bisa Dipakai Ulang)

Hari 11–15 Β· Senin sampai Jumat

def parameter return docstring scope lambda error handling
πŸ’‘Kenapa function penting untuk data analyst?

Dalam pekerjaan nyata, Abbas akan sering menganalisis banyak dataset dengan cara yang sama. Misalnya: "bersihkan data, hitung statistik dasar, buat grafik". Kalau ini ditulis ulang setiap kali = boros waktu dan rentan salah. Function memungkinkan Abbas menulis sekali, pakai berkali-kali. Di Pandas, hampir semua operasi lanjutan pakai custom function.

11
Senin Β· Anatomy of a Function
Hari 11 dari 20
β–Ύ
🎯Tujuan hari ini

Abbas bisa mendefinisikan function dengan parameter dan return value, serta menulis docstring yang baik.

Latihan Function analisis data
python
# Function dasar
def hitung_rata_rata(nilai_list):
    """
    Menghitung rata-rata dari list nilai.

    Args:
        nilai_list: list berisi angka

    Returns:
        float: rata-rata nilai
    """
    if len(nilai_list) == 0:
        return 0
    return sum(nilai_list) / len(nilai_list)

# Pakai function
nilai = [87, 92, 78, 85]
print(hitung_rata_rata(nilai))  # 85.5

# Function dengan multiple returns
def statistik_dasar(data):
    """Hitung statistik dasar: min, max, rata-rata."""
    if not data:
        return None, None, None
    return min(data), max(data), sum(data) / len(data)

minimum, maksimum, rata = statistik_dasar([87, 92, 65, 78])
print(f"Min: {minimum}, Max: {maksimum}, Rata: {rata:.1f}")

# Default parameter
def cek_kelulusan(nilai, batas_lulus=75):
    """Cek apakah nilai lulus dengan batas yang bisa dikustomisasi."""
    return nilai >= batas_lulus

print(cek_kelulusan(80))       # True (pakai default 75)
print(cek_kelulusan(80, 85))   # False (batas 85)
πŸš€Challenge Hari 11

Buat library function analisis nilai: (1) hitung_median(data) tanpa pakai statistics library, (2) hitung_modus(data) yang return nilai yang paling sering muncul, (3) buat_laporan(siswa_dict) yang return string laporan lengkap satu siswa. Semua dengan docstring.

12
Selasa Β· Error Handling dan Kode yang Kuat
Hari 12 dari 20
β–Ύ
🎯Tujuan hari ini

Abbas bisa membaca error message Python dan menulis kode yang tidak crash saat menerima data yang tidak terduga.

πŸ’‘Error = Teman, Bukan Musuh

Data analyst yang baik tidak takut error. Error adalah komputer yang jujur memberi tahu di mana ada masalah. Belajar membaca error message = superpower yang membuat Abbas 10x lebih cepat dari programmer yang selalu panik saat kode error.

  • TypeError: operasi yang salah tipe data
  • IndexError: akses index yang tidak ada
  • KeyError: akses key yang tidak ada di dictionary
  • ZeroDivisionError: bagi dengan nol
  • ValueError: nilai yang tidak valid untuk operasi
Latihan Try/except untuk data yang tidak sempurna
python
def bagi_aman(pembilang, penyebut):
    """Bagi dua angka, aman dari ZeroDivisionError."""
    try:
        return pembilang / penyebut
    except ZeroDivisionError:
        print("Warning: penyebut nol, return None")
        return None

# Data nyata sering punya nilai yang hilang atau salah
data_kotor = [87, 92, "N/A", 78, None, 90]

nilai_bersih = []
for item in data_kotor:
    try:
        nilai_bersih.append(float(item))
    except (TypeError, ValueError):
        print(f"Skip data tidak valid: {item}")

print(f"Data bersih: {nilai_bersih}")
print(f"Rata-rata: {sum(nilai_bersih)/len(nilai_bersih):.1f}")
πŸš€Challenge Hari 12

Buat function parse_nilai(input_str) yang menerima string apa saja (bisa "87", "90.5", "tidak hadir", "N/A", "-") dan return (nilai_float, valid_boolean). Untuk input yang tidak bisa dikonversi, return (None, False). Test dengan 10 input berbeda termasuk edge cases.

13–14
Rabu–Kamis Β· String Operations dan File I/O Dasar
Hari 13–14 dari 20
β–Ύ
🎯Tujuan 2 hari ini

Abbas bisa memanipulasi string untuk membersihkan data teks, dan membaca/menulis file CSV sederhana.

Latihan String cleaning: operasi yang sering dipakai data analyst
python
# Data nyata sering punya whitespace, case, format yang tidak konsisten
nama_kotor = ["  Abbas  ", "BUDI", "citra   ", "Dewi\n"]

nama_bersih = [nama.strip().title() for nama in nama_kotor]
print(nama_bersih)  # ['Abbas', 'Budi', 'Citra', 'Dewi']

# String methods penting
teks = "  Nama: Abbas Kelas: 11 IPA 1  "
print(teks.strip())            # hapus whitespace
print(teks.lower())            # huruf kecil semua
print(teks.upper())            # huruf besar semua
print(teks.replace("Abbas", "A***"))  # ganti kata
print(teks.split(":"))         # pecah jadi list
print("Abbas" in teks)         # cek apakah ada kata
print(teks.startswith("Nama")) # cek awal teks

# Write dan read file sederhana
import csv

# Write
data = [["Abbas", 87, 82], ["Budi", 92, 88]]
with open("nilai.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["nama", "matematika", "bahasa_indo"])
    writer.writerows(data)

# Read
with open("nilai.csv", "r") as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)
πŸš€Challenge Hari 13–14

Download dataset nilai siswa fiktif (atau buat sendiri 20 baris dalam CSV). Buat program yang membaca file tersebut, membersihkan nama (trim, title case), mengkonversi semua nilai ke float (skip yang tidak valid), lalu menulis file CSV baru yang sudah bersih dengan kolom tambahan: rata-rata dan kategori nilai.

15
Jumat Β· Review & Weekly Challenge #3
Hari 15 dari 20
β–Ύ
πŸ†Weekly Challenge: Data Pipeline Pertama Abbas

Ini adalah simulasi pekerjaan data analyst sesungguhnya. Buat sebuah program Python yang:

  • Read: Baca file CSV nilai siswa (buat sendiri atau gunakan data fiktif 15 siswa Γ— 5 mata pelajaran)
  • Clean: Bersihkan nama, konversi nilai ke float, skip yang invalid
  • Analyze: Hitung rata-rata per siswa, rata-rata per mata pelajaran, temukan outlier (nilai yang terlalu jauh dari rata-rata)
  • Categorize: Beri kategori (A/B/C/D/E) dan status (Bintang Kelas/Butuh Bimbingan/Normal)
  • Report: Cetak laporan ringkas dan simpan hasil ke file baru

Semua dikerjakan dengan function yang terpisah dan docstring. Ini adalah versi Python dari apa yang data analyst lakukan setiap hari!


Minggu 4: Mini Project: Analisis Nilai Sekolah

Hari 16–20 Β· Ini output resmi pertama Abbas sebagai calon data analyst

πŸ“‹Brief Project

Abbas diminta oleh "Om Ican" untuk menganalisis nilai sekolah Abbas sendiri dan teman-teman (data fiktif oke). Outputnya adalah laporan yang bisa dipahami oleh guru atau orang tua. Bukan hanya angka, tapi insight yang actionable.

16
Senin Β· Desain Program dan Dataset
Hari 16 dari 20 Β· Planning
β–Ύ
πŸ“–Aturan Abbas hari ini: jangan tulis kode dulu!

Data analyst yang baik selalu plan dulu, code kemudian. Hari ini Abbas hanya boleh buat:

  • Daftar pertanyaan yang ingin dijawab dari data (minimal 5 pertanyaan)
  • Desain dataset: kolom apa saja yang diperlukan
  • Daftar function yang akan dibuat
  • Sketsa format output yang diinginkan
Dataset spec Struktur data yang harus Abbas buat
csv (buat file ini dengan 20 siswa)
nama,kelas,matematika,bahasa_indo,bahasa_ing,biologi,fisika,jam_belajar,kehadiran
Abbas,11 IPA 1,87,82,90,78,85,15,95
Budi,11 IPA 1,92,78,85,88,91,12,88
Citra,11 IPA 2,65,90,72,70,68,8,75
...
πŸ€”Pertanyaan analisis yang harus Abbas jawab
  • Mata pelajaran apa yang rata-ratanya paling tinggi? Paling rendah?
  • Apakah siswa yang belajar lebih banyak jam cenderung dapat nilai lebih baik?
  • Apakah kehadiran berkorelasi dengan nilai? Siapa yang hadir banyak tapi nilainya rendah?
  • Siswa mana yang "tidak konsisten" (ada mata pelajaran bagus, ada yang buruk)?
  • Kalau sekolah hanya bisa berikan bimbingan ke 5 siswa, siapa yang paling prioritas?
17–18
Selasa–Rabu Β· Build Program Inti
Hari 17–18 dari 20
β–Ύ
Scaffold Struktur program yang bisa Abbas kembangkan
python
import csv

# ── 1. Data loading ──
def load_data(filename):
    """Baca CSV dan return list of dict."""
    # TODO: baca file, konversi nilai ke float, return list
    pass

# ── 2. Statistik per siswa ──
def analisis_siswa(siswa_dict):
    """Hitung rata-rata dan kategori untuk satu siswa."""
    # TODO: hitung rata-rata, kategori (A-E), status, rekomendasi
    pass

# ── 3. Statistik per mata pelajaran ──
def analisis_mapel(semua_siswa, nama_mapel):
    """Statistik satu mata pelajaran dari semua siswa."""
    # TODO: rata-rata, tertinggi, terendah, jumlah lulus
    pass

# ── 4. Temukan insights ──
def temukan_insights(semua_siswa):
    """Return dict berisi temuan penting dari data."""
    # TODO: siswa terbaik, perlu bimbingan, korelasi jam belajar, dll
    pass

# ── 5. Generate laporan ──
def buat_laporan(semua_siswa, insights):
    """Cetak laporan lengkap ke console."""
    # TODO: format laporan yang rapi dan informatif
    pass

# ── Main ──
if __name__ == "__main__":
    data = load_data("nilai_kelas.csv")
    insights = temukan_insights(data)
    buat_laporan(data, insights)
πŸš€Acceptance Criteria Project
  • Kode berjalan penuh tanpa error
  • Ada minimal 5 function dengan docstring
  • Menjawab semua 5 pertanyaan analisis dari hari 16
  • Output rapi dan bisa dipahami orang yang tidak tahu coding
  • Ada komentar di bagian kode yang kompleks
  • Error handling untuk data yang tidak valid
19–20
Kamis–Jumat Β· Polish, Dokumentasi, dan Refleksi
Hari 19–20 dari 20 Β· Finalisasi Bulan 1
β–Ύ
✨Final polish checklist
  • Semua function punya docstring
  • Semua variabel punya nama yang jelas (bukan x, tmp, data2)
  • Komentar ada di bagian yang tidak obvious
  • Ada markdown cell di notebook yang menjelaskan setiap bagian
  • Output terformat rapi dengan separator dan label
πŸ“Tulis refleksi bulan ini (wajib!)
  • Konsep apa yang paling sulit dipahami? Bagaimana Abbas akhirnya mengerti?
  • Error apa yang paling sering Abbas buat? Apa pelajarannya?
  • Kalau Abbas harus mengajari Python ke teman SMA dari nol dalam 1 jam, apa yang akan Abbas ajarkan pertama?
  • Apa yang paling ingin Abbas lakukan dengan Python setelah selesai program ini?
  • Apakah setelah bulan ini Abbas lebih yakin mau jadi data analyst? Kenapa?

Yang Abbas selesaikan di Bulan 1

  • 20 hari belajar Python dasar
  • 10+ latihan coding
  • 5 weekly challenge
  • 1 mini project data analysis lengkap
  • Siap untuk Bulan 2: Statistik Deskriptif
Lanjut ke Bulan 2: Statistik Deskriptif β†’

Buku Pendukung Bulan 1

Semua bisa diakses gratis: tidak perlu beli apapun.

πŸ“˜
Automate the Boring Stuff with Python
Al Sweigart
Buku Python paling bagus untuk pemula. Fokus pada aplikasi praktis, bukan teori. Bab 1-8 sangat relevan untuk Bulan 1.
Gratis di automatetheboringstuff.com
🐍
Think Python
Allen B. Downey
Membangun mental model berpikir seperti programmer. Sangat baik untuk memahami "kenapa" di balik setiap konsep Python.
Gratis PDF di greenteapress.com
πŸ“–
Python Crash Course
Eric Matthes
Sangat terstruktur dan jelas. Bagian 1 (Python Basics) cover semua yang ada di Bulan 1 ini dengan penjelasan yang sangat baik.
Opsional, ada di perpustakaan
🌐
Real Python Tutorials
realpython.com
Artikel dan tutorial online yang sangat praktis. Cari topik yang Abbas rasa masih kurang jelas dari belajar minggu ini.
Gratis (sebagian)

Tools yang Dipakai Bulan 1

☁️
Google Colab
Notebook Python gratis di browser. Tidak perlu install apapun.
Buka colab.research.google.com, sign in dengan akun Google, buat New Notebook.
🐍
Python 3.10+
Sudah terinstall di Colab. Untuk belajar offline di MacBook, install via Homebrew.
brew install python3 di Terminal.
πŸ“
VS Code (opsional)
Editor kode terbaik untuk Mac. Install Python extension untuk syntax highlighting.
Untuk bulan ini Colab sudah cukup. VS Code mulai berguna di Bulan 5.
πŸ”
Python Tutor
Visualisasi kode Python berjalan langkah per langkah. Sangat membantu untuk debugging loop dan function.
pythontutor.com: paste kode, klik Visualize.
πŸ“š
Kaggle Learn Python
Kursus Python gratis dari Kaggle dengan latihan interaktif langsung di browser.
kaggle.com/learn/python: cocok sebagai latihan tambahan paralel.
πŸ€–
Claude / ChatGPT
Untuk menjelaskan error, minta contoh kode, atau diskusi konsep yang tidak mengerti.
Tapi jangan minta AI selesaikan challenge Abbas: itu justru menghilangkan proses belajar!