Pandas adalah library Python yang paling populer untuk analisis dan manipulasi data. Dengan struktur data DataFrame yang mirip spreadsheet, kamu bisa membaca, membersihkan, mengolah, dan menganalisis data dalam jumlah besar hanya dengan beberapa baris kode. Tidak heran jika Pandas menjadi fondasi hampir semua proyek data science dan machine learning modern.

Dalam tutorial ini kita akan membangun keterampilan Pandas secara bertahap: mulai dari instalasi, memahami Series dan DataFrame, membaca file CSV, menyaring data, menangani nilai kosong, hingga melakukan agregasi dengan groupby. Setiap bagian disertai contoh kode yang bisa langsung kamu jalankan.

Apa Itu Pandas?

Pandas menyediakan dua struktur data utama. Series adalah array satu dimensi berlabel (mirip kolom di Excel), sedangkan DataFrame adalah tabel dua dimensi yang terdiri dari banyak Series. Keduanya dibangun di atas NumPy sehingga sangat cepat untuk data berukuran besar.

Instalasi dan Persiapan

Pastikan Python sudah terpasang di komputermu. Jika belum, kamu bisa mengikuti panduan cara install Python dan menulis program pertamamu. Setelah itu, instal Pandas lewat pip (atau gunakan uv, package manager Python yang jauh lebih cepat):

bash
# Menggunakan pip
pip install pandas

# Atau menggunakan uv (lebih cepat)
uv pip install pandas

Untuk memulai, impor Pandas dengan alias pd — ini konvensi yang dipakai hampir di seluruh tutorial dan dokumentasi resmi.

python
import pandas as pd

print(pd.__version__)  # cek versi yang terpasang

Struktur Data Dasar: Series dan DataFrame

Mari kita buat Series dan DataFrame pertama kita. DataFrame bisa dibuat langsung dari dictionary Python, di mana key menjadi nama kolom dan value menjadi isi kolom.

python
import pandas as pd

# Series: array satu dimensi berlabel
nilai = pd.Series([10, 20, 30, 40], index=["a", "b", "c", "d"])
print(nilai)

# DataFrame dari dictionary
data = {
    "nama": ["Andi", "Budi", "Citra", "Dewi"],
    "usia": [25, 31, 28, 35],
    "kota": ["Jakarta", "Bandung", "Surabaya", "Medan"],
}
df = pd.DataFrame(data)
print(df)

Membaca dan Menulis Data

Dalam praktik nyata, data biasanya datang dari file CSV, Excel, atau database. Pandas menyediakan fungsi read_csv() untuk membaca file CSV dan to_csv() untuk menyimpannya kembali. Jika datamu tersimpan di database relasional, kamu juga bisa menggabungkannya dengan SQLite menggunakan Python.

python
import pandas as pd

# Membaca file CSV
df = pd.read_csv("data_penjualan.csv")

# Melihat 5 baris pertama
df.head()

# Ringkasan statistik untuk kolom numerik
df.describe()

# Informasi tipe data dan jumlah nilai non-null
df.info()

# Menyimpan hasil ke file baru
df.to_csv("hasil_bersih.csv", index=False)

Tips: Selalu jalankan df.info() setelah membaca data. Ini membantumu langsung melihat berapa banyak nilai yang hilang (non-null count) dan tipe data tiap kolom sebelum mulai mengolah.

Memilih dan Menyaring Data (Filtering)

Kamu bisa memilih kolom tertentu, atau menyaring baris berdasarkan kondisi (boolean indexing). Ini adalah operasi yang paling sering dipakai dalam analisis data.

python
import pandas as pd

data = {
    "nama": ["Andi", "Budi", "Citra", "Dewi", "Eko"],
    "usia": [25, 31, 28, 35, 22],
    "kota": ["Jakarta", "Bandung", "Surabaya", "Medan", "Jakarta"],
}
df = pd.DataFrame(data)

# Memilih satu kolom (menghasilkan Series)
df["nama"]

# Memilih beberapa kolom (menghasilkan DataFrame)
df[["nama", "usia"]]

# Menyaring baris: usia di atas 27
dewasa = df[df["usia"] > 27]
print(dewasa)

# Menyaring dengan dua kondisi (& = AND, | = OR)
jakarta_muda = df[(df["kota"] == "Jakarta") & (df["usia"] < 30)]
print(jakarta_muda)

# Mengambil baris tertentu dengan .loc dan .iloc
print(df.loc[0, "nama"])   # berdasarkan label
print(df.iloc[0, 0])        # berdasarkan posisi

Menangani Data yang Hilang (Missing Data)

Data dunia nyata hampir selalu memiliki nilai kosong (NaN). Pandas menyediakan beberapa cara untuk mendeteksi dan menanganinya.

python
import pandas as pd
import numpy as np

df = pd.DataFrame({
    "produk": ["A", "B", "C", "D"],
    "harga": [10000, None, 15000, 20000],
    "stok": [5, 3, np.nan, 2],
})

# Mendeteksi nilai kosong
df.isnull()          # True untuk nilai kosong
df.isnull().sum()    # jumlah nilai kosong per kolom

# Menghapus baris yang memiliki nilai kosong
df.dropna()

# Mengisi nilai kosong dengan nilai tertentu
df["harga"] = df["harga"].fillna(0)
df["stok"] = df["stok"].fillna(df["stok"].mean())
print(df)

Berhati-hatilah saat menghapus baris dengan dropna(). Jika banyak baris yang kosong, kamu bisa kehilangan sebagian besar data. Pertimbangkan untuk mengisi nilai kosong (fillna) dengan median atau mean terlebih dahulu.

Grouping dan Agregasi

Fungsi groupby() memungkinkanmu mengelompokkan data berdasarkan satu atau beberapa kolom, lalu menghitung agregasi seperti sum, mean, atau count. Ini mirip dengan GROUP BY di SQL.

python
import pandas as pd

df = pd.DataFrame({
    "kota": ["Jakarta", "Bandung", "Jakarta", "Bandung", "Surabaya"],
    "produk": ["A", "A", "B", "B", "A"],
    "penjualan": [100, 150, 200, 120, 90],
})

# Total penjualan per kota
total_per_kota = df.groupby("kota")["penjualan"].sum()
print(total_per_kota)

# Agregasi ganda sekaligus
ringkasan = df.groupby("kota")["penjualan"].agg(["sum", "mean", "count"])
print(ringkasan)

# Grouping dengan dua kolom
dua_kolom = df.groupby(["kota", "produk"])["penjualan"].sum()
print(dua_kolom)

Menggabungkan Data (Merge dan Concat)

Sering kali data tersebar di beberapa tabel yang perlu digabungkan. merge() menggabungkan dua DataFrame berdasarkan kolom kunci (seperti JOIN di SQL), sementara concat() menumpuk DataFrame secara vertikal atau horizontal.

python
import pandas as pd

karyawan = pd.DataFrame({
    "id": [1, 2, 3],
    "nama": ["Andi", "Budi", "Citra"],
})

gaji = pd.DataFrame({
    "id": [1, 2, 4],
    "gaji": [5000, 7000, 6000],
})

# Inner join: hanya id yang cocok di kedua tabel
hasil_inner = pd.merge(karyawan, gaji, on="id", how="inner")
print(hasil_inner)

# Left join: semua baris dari tabel kiri
hasil_left = pd.merge(karyawan, gaji, on="id", how="left")
print(hasil_left)

Kesimpulan dan Langkah Berikutnya

Selamat! Kamu sudah menguasai fondasi Pandas: Series, DataFrame, membaca file, filtering, menangani missing data, grouping, dan merge. Keterampilan ini adalah pintu masuk menuju analisis data dan machine learning yang lebih serius.

Untuk melanjutkan perjalananmu, kamu bisa mencoba membuat model klasifikasi pertamamu dengan Scikit-learn — Pandas biasanya dipakai untuk menyiapkan data sebelum dimasukkan ke model. Jika ingin mengumpulkan data sendiri dari internet, pelajari juga web scraping dengan BeautifulSoup lalu olah hasilnya menggunakan Pandas. Selamat belajar!