Pandas adalah library Python yang menjadi standar industri untuk analisis data. Pada Course ini, kita belajar pandas secara bertahap: dimulai dari dua struktur data intinya, Series dan DataFrame, lalu maju ke pembacaan data dari berbagai format, pembersihan data, agregasi, penggabungan tabel, data waktu, hingga enam proyek analisis data utuh. Semua contoh kode ditulis dan diuji pada pandas 3.0, sehingga yang kita pelajari mencerminkan perilaku terbaru library ini.

Bab 5 Membaca dan Menulis Data

# Membaca File CSV

Mengimpor file CSV ke DataFrame dengan pd.read_csv() dan mengenali perilaku default-nya.

Buka →
# Menulis File CSV

Mengekspor DataFrame ke file CSV dengan to_csv() dan mengatur index serta encoding-nya.

Buka →
# Membaca dan Menulis Excel

Bekerja dengan file .xlsx menggunakan read_excel() dan to_excel() dengan engine openpyxl.

Buka →
# Membaca File JSON

Mengimpor data JSON semi terstruktur dengan read_json() dan memahami orientasinya.

Buka →
# json_normalize() untuk JSON Bersarang

Meratakan JSON bersarang dari API menjadi tabel datar dengan pd.json_normalize().

Buka →
# Membaca File Parquet

Menyimpan dan membaca format kolom Parquet yang efisien untuk data berukuran besar.

Buka →
# Membaca File Feather

Menggunakan format Feather untuk pertukaran data berkecepatan tinggi antara pandas dan tools lain.

Buka →
# Membaca File HTML

Menarik tabel dari halaman HTML dengan read_html() dan memahami persyaratannya.

Buka →
# Membaca Data dari URL

Membaca dataset langsung dari URL dan menangani ketergantungan jaringannya dengan bijak.

Buka →
# Membaca Data dari SQL

Mengambil hasil query database ke DataFrame dengan read_sql() dan SQLAlchemy.

Buka →
# Menulis Data ke SQL

Menyimpan DataFrame ke tabel database dengan to_sql() dan mengatur mode penulisannya.

Buka →
# Parameter Penting read_csv()

Menguasai parameter read_csv() yang sering dipakai: sep, header, usecols, dtype, dan na_values.

Buka →
# Memilih Format Penyimpanan

Membandingkan CSV, Excel, JSON, Parquet, dan Feather untuk memilih format yang sesuai kebutuhan.

Buka →

Bab 8 Data Cleaning

# Mengidentifikasi Masalah Data

Memetakan masalah data umum: nilai kosong, duplikat, tipe salah, dan inkonsistensi label.

Buka →
# Missing Values

Memahami NaN sebagai penanda nilai kosong dan bagaimana pandas 3.0 menanganinya di tiap dtype.

Buka →
# Mendeteksi Nilai Kosong

Memakai isna(), notna(), dan kombinasi dengan sum() untuk menghitung nilai kosong per kolom.

Buka →
# Menghapus Nilai Kosong

Membersihkan baris atau kolom dengan dropna() beserta parameter how dan subset.

Buka →
# Mengisi Nilai Kosong

Mengganti NaN dengan nilai tertentu, mean/median, atau ffill/bfill melalui fillna().

Buka →
# Menangani Nilai Duplikat

Mendeteksi dan menghapus duplikat dengan duplicated() dan drop_duplicates().

Buka →
# Memperbaiki Tipe Data

Memperbaiki kolom yang terbaca dengan tipe salah, misalnya angka yang tersimpan sebagai teks.

Buka →
# Membersihkan Teks

Menormalkan teks dengan .str.strip(), .str.lower(), dan penghapusan karakter tak diinginkan.

Buka →
# Standardisasi Label Kategori

Menyatukan label yang berbeda ejaan, misalnya "Jakarta", "JAKARTA", dan " jakarta ".

Buka →
# Mendeteksi Outlier

Mengenali nilai ekstrem dengan statistik deskriptif sebelum memutuskan penanganannya.

Buka →
# Menangani Nilai Tidak Valid

Mengoreksi nilai di luar logika domain, seperti umur negatif atau persentase di atas 100.

Buka →
# Validasi Rentang Nilai

Memeriksa kolom numerik terhadap rentang yang wajar menggunakan boolean mask.

Buka →
# Membuat Laporan Kualitas Data

Merangkum kondisi data sebelum dan sesudah pembersihan menjadi laporan ringkas yang terukur.

Buka →

Bab 9 Operasi Aritmetika dan Statistika

# Operasi Aritmetika

Menjalankan penjumlahan, pengurangan, perkalian, dan pembagian pada Series dan DataFrame.

Buka →
# Operasi Antar Kolom

Menghitung kolom baru dari kombinasi kolom lain, misalnya total = harga dikali jumlah.

Buka →
# sum(), mean(), dan median()

Menghitung agregat dasar per kolom dan memahami penanganan NaN oleh masing-masing method.

Buka →
# min(), max(), dan count()

Menemukan nilai terkecil, terbesar, dan jumlah data yang tidak kosong per kolom.

Buka →
# Variance dan Standard Deviation

Mengukur sebaran data dengan var() dan std() beserta makna parameter ddof-nya.

Buka →
# Quantile dan Percentile

Memotong distribusi data dengan quantile() dan menghubungkannya dengan median serta IQR.

Buka →
# Peringkat dan Top-N

Menyusun peringkat dengan rank() dan mengambil nilai teratas atau terbawah dengan nlargest() dan nsmallest().

Buka →
# Korelasi Antar Kolom

Mengukur hubungan linear antar kolom dengan corr() dan membaca nilai korelasinya.

Buka →
# Covariance

Menghitung kovarians dengan cov() dan membedakannya dari korelasi.

Buka →
# Operasi Berdasarkan axis

Mengontrol arah agregasi dengan axis=0 untuk per kolom dan axis=1 untuk per baris.

Buka →
# Operasi Kumulatif

Menghitung nilai berjalan dengan cumsum(), cummax(), dan cummin().

Buka →
# value_counts()

Menghitung frekuensi nilai unik pada sebuah kolom, termasuk parameter normalize dan dropna.

Buka →
# Statistik Deskriptif

Merangkum distribusi data numerik dan kategorikal dengan describe() dalam sekali panggil.

Buka →

Bab 10 Transformasi Data

Bab 12 Menggabungkan dan Membentuk Data

# pd.concat()

Menggabungkan beberapa DataFrame dengan pd.concat() beserta parameter join dan ignore_index.

Buka →
# Menggabungkan Baris

Menumpuk data vertikal dari berbagai sumber dengan axis=0 dan penanganan kolom berbeda.

Buka →
# Menggabungkan Kolom

Menyandingkan data secara horizontal dengan axis=1 dan menjajarkan index-nya.

Buka →
# Menambal Data dengan combine_first()

Mengisi nilai yang hilang dari satu DataFrame dengan nilai DataFrame lain menggunakan combine_first() dan update().

Buka →
# pd.merge()

Menggabungkan dua tabel berdasarkan kolom kunci seperti JOIN di SQL dengan pd.merge().

Buka →
# Inner Join

Menggabungkan hanya baris dengan kunci yang cocok di kedua tabel menggunakan how="inner".

Buka →
# Left, Right, dan Outer Join

Mempertahankan baris dari satu atau kedua tabel dengan how="left", "right", dan "outer".

Buka →
# Join dengan Beberapa Kunci

Menggabungkan tabel berdasarkan kombinasi beberapa kolom kunci sekaligus.

Buka →
# Validasi Relasi Join

Menjaga kebenaran relasi one-to-one dan one-to-many dengan parameter validate.

Buka →
# Menangani Kolom Duplikat

Mengatasi nama kolom yang sama di kedua tabel dengan suffixes saat merge.

Buka →
# Membandingkan Dua DataFrame dengan compare()

Menemukan perbedaan sel demi sel antara dua DataFrame dengan compare() untuk kebutuhan audit dan rekonsiliasi.

Buka →
# pd.merge_asof()

Menggabungkan data berdasarkan kunci waktu terdekat untuk data deret waktu.

Buka →
# merge_ordered() dan Anti-Join

Menggabungkan data terurut dengan merge_ordered() serta menemukan baris tanpa pasangan menggunakan anti-join.

Buka →
# pivot() dan pivot_table()

Membentuk tabel lebar dari data panjang dengan pivot() dan pivot_table().

Buka →
# Method melt()

Melelehkan tabel lebar menjadi format panjang dengan melt() agar siap dianalisis.

Buka →
# explode() untuk Kolom List

Mengubah kolom berisi list menjadi baris terpisah dengan explode() agar setiap elemen bisa dianalisis.

Buka →
# stack() dan unstack()

Memindahkan level index ke kolom dan sebaliknya dengan stack() dan unstack().

Buka →
# Format Wide vs Long

Memahami dua konvensi bentuk tabel dan kapan masing-masing lebih sesuai dipakai.

Buka →
# pd.crosstab()

Membuat tabel frekuensi silang antara dua kolom kategori dengan pd.crosstab().

Buka →

Bab 13 Data Waktu dan Deret Waktu

# Tipe Data Datetime

Mengenal dtype datetime64 di pandas 3.0 beserta resolusi unit waktunya.

Buka →
# Konversi String ke Datetime

Mengubah teks tanggal menjadi datetime dengan pd.to_datetime() dan format eksplisit.

Buka →
# Parsing Tanggal dan Waktu

Mengurai format tanggal beragam dengan parameter format, dayfirst, dan errors.

Buka →
# Datetime Index

Menjadikan datetime sebagai index DataFrame untuk membuka fitur deret waktu.

Buka →
# Memilih Data Berdasarkan Tanggal

Mengambil data untuk tanggal, rentang, bulan, dan tahun tertentu dari datetime index.

Buka →
# Resampling Data

Mengubah granularitas data waktu dengan resample(), dari harian ke bulanan dan sebaliknya.

Buka →
# Grup per Periode dengan Grouper

Mengagregasi data berbasis waktu per kelompok menggunakan pd.Grouper saat kolom tanggal bukan index.

Buka →
# Frekuensi dan Offset

Memahami alias frekuensi seperti D, W, ME, dan YE serta date_range untuk membuat deret.

Buka →
# Rolling Window

Menghitung rata-rata dan statistik bergerak dengan rolling() untuk memperhalus tren.

Buka →
# Expanding Window

Menghitung statistik kumulatif yang terus bertambah dengan expanding().

Buka →
# Exponentially Weighted Window

Memberi bobot lebih pada data terbaru dengan ewm() untuk perhitungan yang responsif.

Buka →
# Pergeseran Data dengan shift()

Menggeser data maju dan mundur dengan shift() untuk membandingkan nilai antar periode.

Buka →
# Menghitung Perubahan dengan diff()

Menghitung selisih antar periode dengan diff() untuk melihat perubahan absolut dan persentase.

Buka →
# Timedelta dan Durasi

Menghitung dan mengolah durasi waktu dengan to_timedelta, Timedelta, serta accessor .dt untuk analisis jeda antar peristiwa.

Buka →
# Periode dan Timezone

Bekerja dengan Period, period_range, dan konversi timezone dengan tz_localize dan tz_convert.

Buka →
# Menangani Data Waktu yang Hilang

Menemukan tanggal yang hilang pada deret waktu dan mengisinya dengan asfreq dan interpolasi.

Buka →
# Analisis Deret Waktu

Menggabungkan resampling, rolling, dan shift untuk menganalisis tren data deret waktu.

Buka →

Bab 19 Advanced Pandas

# MultiIndex

Membuat dan membaca index bertingkat (hierarchical index) pada Series dan DataFrame.

Buka →
# Hierarchical Indexing

Menavigasi dan memanipulasi level index dengan xs(), swaplevel(), dan stack/unstack.

Buka →
# Label Duplikat dan Flag Indeks

Mengenali label duplikat pada index, perilaku loc saat label ganda, dan cara melarangnya dengan set_flags.

Buka →
# Advanced Selection

Menggabungkan MultiIndex, .loc, dan slicer IndexSlice untuk seleksi data bertingkat.

Buka →
# Custom Aggregation

Menulis fungsi agregasi kustom sendiri dan memasangkannya pada groupby dan agg.

Buka →
# Window Functions

Mengulas rolling, expanding, dan ewm secara utuh untuk analisis berbasis jendela.

Buka →
# eval() dan query()

Mengevaluasi ekspresi kolom dengan numexpr melalui eval() untuk DataFrame besar.

Buka →
# pd.col() dan Ekspresi Kolom

Membangun ekspresi kolom yang dapat dibaca ulang dengan pd.col() untuk assign, loc, dan query.

Buka →
# Extension dtypes

Memahami sistem dtype ekstensi pandas dan kapan menggunakannya.

Buka →
# Nullable dtypes

Memakai Int64, Float64, boolean, dan str dengan penanda missing yang konsisten.

Buka →
# Integrasi PyArrow

Mengaktifkan dtype pyarrow untuk performa dan memori yang lebih efisien.

Buka →
# Migrasi object ke str dtype

Memigrasi kolom teks dari object ke dtype str pandas 3.0 termasuk pemeriksaan dan jebakan umum.

Buka →
# Sparse Data

Menghemat memori untuk data yang didominasi satu nilai dengan SparseDtype.

Buka →
# Stabilitas API Pandas

Memahami kebijakan deprecation pandas dan cara menjaga kode tetap kompatibel.

Buka →
# Copy-on-Write

Memahami aturan Copy-on-Write di pandas 3.0: mengapa chained assignment tidak lagi berfungsi dan bagaimana cara mengubah data dengan aman.

Buka →
# Opsi dan Pengaturan Pandas

Mengatur perilaku tampilan dan lingkungan pandas dengan set_option, option_context, dan reset_option.

Buka →