TL;DR
Belajar Python untuk data analyst butuh sekitar 12 minggu kalau kamu konsisten 1 jam sehari, dengan urutan dasar bahasa, pandas, visualisasi, lalu proyek. Materi yang wajib dikuasai cuma empat: struktur data dasar, pandas buat olah tabel, matplotlib atau seaborn buat grafik, dan cara baca data dari CSV, Excel, dan database. Sisanya bisa dipelajari sambil jalan waktu ngerjain proyek.
Belajar Python untuk data analyst butuh sekitar 12 minggu kalau kamu konsisten sejam sehari. Bukan setahun, dan bukan seminggu.
Angka itu dari pola yang aku lihat berulang: yang berhasil bukan yang belajar paling lama, tapi yang paling cepat mulai ngerjain data beneran. Biasanya di minggu ke-5 atau ke-6.
Rencana di bawah ini nyusun 12 minggu itu jadi empat tahap, lengkap sama materi per minggu, latihan yang harus kamu kerjain, dan tiga proyek yang bisa langsung masuk portofolio.
Cuma empat hal yang wajib. Pertama, struktur data dasar Python: list, dictionary, dan cara pakai perulangan. Kedua, pandas buat olah tabel. Ketiga, matplotlib atau seaborn buat bikin grafik. Keempat, cara narik data dari CSV, Excel, dan database. Sisanya, termasuk machine learning, bisa nyusul belakangan.
Yang bikin orang mandek biasanya bukan materinya kurang. Kebalikannya. Mereka belajar decorator, class, dan async padahal kerjaan analis sehari-hari ga nyentuh itu.
Jadi rencana ini sengaja motong banyak hal. Kalau nanti kamu butuh, gampang dipelajari belakangan.
Tiga hal, dan semuanya gratis.
Ga perlu beli kursus dulu. Dokumentasi resmi pandas gratis dan lengkap.
Tujuan tahap ini bukan jadi programmer. Cukup sampai kamu bisa baca kode orang lain tanpa panik.
Materi: angka, teks, boolean, variabel, dan f-string buat nyusun teks.
omzet = 12_450_000
biaya = 8_300_000
margin = (omzet - biaya) / omzet
print(f"Margin bulan ini: {margin:.1%}")
# Margin bulan ini: 33.3%
Latihan minggu ini: hitung margin, diskon, dan PPN 11 persen dari lima angka penjualan yang kamu tulis manual.
Materi: list buat urutan, dictionary buat pasangan kunci dan nilai, for buat ngulang, if buat percabangan.
penjualan = {"Jakarta": 45_200_000, "Bandung": 18_700_000, "Surabaya": 31_400_000}
for kota, nilai in penjualan.items():
status = "tercapai" if nilai >= 30_000_000 else "di bawah target"
print(f"{kota}: Rp {nilai:,.0f} ({status})")
Latihan: bikin dictionary 10 produk dengan harganya, lalu cetak yang harganya di atas rata-rata.
Materi: bikin fungsi sendiri, argumen, nilai balik, dan try except buat nangkap error.
def hitung_margin(omzet, biaya):
if omzet == 0:
return None
return (omzet - biaya) / omzet
print(hitung_margin(12_450_000, 8_300_000)) # 0.3333...
print(hitung_margin(0, 500_000)) # None
Latihan: bikin fungsi yang nerima daftar transaksi dan balikin total, rata-rata, dan nilai terbesar.
Materi: buka file CSV, dan dasar array NumPy yang jadi pondasi pandas. Detailnya ada di NumPy dasar untuk analis data.
Latihan: baca satu file CSV punyamu sendiri, cetak 5 baris pertama, hitung jumlah barisnya.
Patokan akhir tahap ini: kamu bisa nulis fungsi 10 baris tanpa nyontek, dan ngerti pesan error yang muncul.
Ini tahap paling penting. Sekitar 70 persen kerjaan analis di Python itu pandas.
import pandas as pd
df = pd.read_csv("toko_berkah_transaksi.csv", parse_dates=["tanggal"])
print(df.shape) # (4812, 8)
print(df.head())
print(df.dtypes)
# filter transaksi Jakarta di atas Rp 500 ribu
besar = df[(df["kota"] == "Jakarta") & (df["total"] > 500_000)]
print(len(besar))
Latihan: filter datamu sendiri pakai dua syarat sekaligus.
Kalau kamu udah biasa pakai pivot table di Excel, groupby itu versi kodenya.
ringkasan = (
df.groupby(["kota", df["tanggal"].dt.to_period("M")])
.agg(omzet=("total", "sum"),
transaksi=("id_transaksi", "nunique"),
rata_nota=("total", "mean"))
.round(0)
.reset_index()
)
print(ringkasan.head())
Latihan: hitung total dan rata-rata per kategori di datamu, urutkan dari yang terbesar.
Materi: merge buat gabungin dua tabel (mirip VLOOKUP di Excel, tapi lebih fleksibel), pivot_table, dan melt.
gabung = df.merge(produk, on="id_produk", how="left", validate="many_to_one")
print(gabung["nama_produk"].isna().sum()) # cek produk yang ga ketemu
Argumen validate itu penyelamat. Dia bakal error kalau relasinya ga sesuai dugaanmu, jadi kamu ga diam-diam bikin baris berlipat.
Materi: nilai kosong, duplikat, tipe data yang salah, dan teks yang ga seragam.
df["kota"] = df["kota"].str.strip().str.title()
df = df.drop_duplicates(subset=["id_transaksi"])
df["total"] = pd.to_numeric(df["total"], errors="coerce")
print(df.isna().sum())
Tahap ini sering diremehkan, padahal di kerjaan nyata makan waktu paling banyak. Konsepnya dibahas di glossary data quality.
Patokan akhir tahap ini: kamu bisa ngambil file mentah berantakan dan ngeluarin tabel ringkasan yang siap dipakai, tanpa nyontek langkah demi langkah.
Materi: matplotlib buat kontrol penuh, seaborn buat grafik statistik cepat.
import matplotlib.pyplot as plt
bulanan = df.groupby(df["tanggal"].dt.to_period("M"))["total"].sum()
fig, ax = plt.subplots(figsize=(9, 4))
bulanan.plot(kind="line", marker="o", ax=ax)
ax.set_title("Omzet bulanan toko_berkah")
ax.set_ylabel("Rupiah")
ax.grid(alpha=0.3)
plt.tight_layout()
Aturan yang aku pegang: satu grafik, satu pesan. Kalau butuh dua pesan, bikin dua grafik.
# dari Excel, sheet tertentu
df_xl = pd.read_excel("laporan.xlsx", sheet_name="Penjualan", skiprows=3)
# dari database
from sqlalchemy import create_engine
engine = create_engine("postgresql+psycopg2://user:sandi@host:5432/tokoberkah")
df_sql = pd.read_sql("SELECT * FROM transaksi WHERE tanggal >= '2025-01-01'", engine)
Kalau data kamu ada di database, SQL tetap wajib. Python ga gantiin SQL, dia melengkapi.
Dua minggu terakhir dipakai buat ngerjain proyek, bukan nambah materi. Pilih satu yang paling nyambung sama bidang kamu, atau kerjain ketiganya kalau sempat.
| Proyek | Yang dilatih | Hasil akhir |
|---|---|---|
| Analisis penjualan UMKM 12 bulan | groupby, merge, grafik tren | Notebook plus 3 temuan dengan angka |
| Pembersihan data survei 500 responden | str, nilai kosong, duplikat | File bersih plus catatan perubahan |
| Segmentasi pelanggan pakai RFM | agregasi, kuantil, visualisasi | Tabel segmen plus rekomendasi |
Yang bikin proyek dilirik itu bukan panjang kodenya. Tulis 3 sampai 5 kalimat temuan di paling atas notebook, lengkap sama angkanya. Rekruter baca bagian itu duluan.
Kesalahan yang bikin portofolio ditolak dibahas terpisah di 5 kesalahan portofolio data analyst.
Aku pernah ngukur waktu ngerjain proyek analisis penjualan pakai dataset latihan toko_berkah yang isinya 4.812 baris. Total 6 jam 20 menit sampai notebook rapi.
Rinciannya bikin kaget: baca dan bersihin data makan 3 jam 45 menit, atau 59 persen dari total waktu. Bikin grafik cuma 40 menit. Analisisnya sendiri 55 menit. Sisanya nulis penjelasan.
Jadi kalau kamu ngerasa kelamaan di tahap bersihin data, itu normal. Bukan kamu yang lambat.
Temuan dari proyek itu sendiri: 3 dari 6 kota nyumbang 71 persen omzet, dan rata-rata nota di Jakarta Rp 312 ribu, hampir dua kali lipat rata-rata kota lain yang Rp 168 ribu.
SQL dulu kalau kamu mau kerja secepatnya. Hampir semua lowongan data analyst di Indonesia minta SQL, sementara Python sering ditulis sebagai nilai tambah. SQL juga lebih cepat dikuasai, sekitar 4 sampai 6 minggu buat tingkat kerja. Habis itu baru masuk Python. Kombinasi keduanya yang bikin kamu bisa kerjain analisis dari ujung ke ujung.
Satu jam sehari, lima hari seminggu. Itu yang paling kepakai buat orang yang kerja penuh waktu. Belajar 5 jam di akhir pekan doang kalah efektif, karena minggu depan kamu udah lupa separuhnya. Kalau cuma punya 30 menit, tetap jalan, cuma rencana 12 minggu ini jadi sekitar 20 minggu. Konsisten lebih penting dari durasi.
Nggak sepenuhnya, dan ga perlu. Excel masih menang buat lihat data sekilas, hitung cepat, dan berbagi hasil ke orang non-teknis. Python menang kalau datanya lebih dari sejuta baris, kerjaannya berulang tiap minggu, atau butuh gabungin banyak sumber. Kebanyakan analis pakai dua-duanya. Pilih sesuai ukuran data dan seberapa sering kerjaannya diulang.
Empat aja: pandas buat olah tabel, NumPy buat operasi angka, matplotlib buat grafik dasar, dan seaborn buat grafik statistik yang lebih cepat dibikin. Tambahan yang berguna belakangan: openpyxl buat file Excel dan SQLAlchemy buat konek ke database. Sisanya nunggu sampai kamu punya masalah yang butuh library itu. Instal library yang belum jelas gunanya cuma bikin bingung.
Ujinya sederhana. Kasih dirimu file CSV mentah yang belum pernah kamu lihat, lalu coba jawab tiga pertanyaan bisnis darinya dalam dua jam, tanpa nanya ke AI. Kalau bisa, kamu siap. Kalau masih buntu di tahap baca file, ulang minggu 5 sampai 8. Punya dua sampai tiga proyek yang bisa diakses publik juga jadi syarat praktisnya.
Rencana 12 minggu ini cuma kerangka. Yang nentuin hasilnya itu jam yang kamu setor tiap hari, dan seberapa cepat kamu pindah dari nonton ke ngetik.
Mulai minggu ini juga. Pasang Python lewat panduan install Python dan Jupyter, siapin satu dataset yang kamu peduli, lalu kerjain latihan minggu 1.
Dokumentasi resmi yang paling sering kamu buka nanti ada di panduan pengguna pandas. Simpan tautannya sekarang.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Kolom datetime nyimpen tanggal, jam, hari, semuanya nempel jadi satu. Accessor .dt di pandas ngeluarin tiap bagian jadi kolom sendiri buat dianalisa.
Nama toko ketik campur huruf besar-kecil, spasi nyasar di ujung, atau kode produk nempel jadi satu. Accessor .str di pandas ngerapiin semua itu tanpa loop.
Model machine learning cuma ngerti angka, bukan teks kayak merah atau biru. get_dummies ngubah kolom kategori jadi kolom 0/1 dalam satu baris kode.