Pandas adalah library Python yang paling populer untuk analisis data. Dengan Pandas, kamu bisa membaca, membersihkan, mengeksplorasi, dan merangkum data hanya dalam beberapa baris kode — pekerjaan yang kalau dikerjakan manual bisa memakan waktu berjam-jam. Artikel ini akan memandu kamu dari nol sampai bisa melakukan analisis data dasar menggunakan Pandas.

Sebelum mulai, pastikan kamu sudah menginstal Python (versi 3.8 ke atas). Jika belum familiar dengan Python sama sekali, disarankan untuk mempelajari dasar-dasar Python terlebih dahulu sebelum lanjut ke Pandas.

Apa Itu Pandas dan Kenapa Dipakai?

Pandas adalah singkatan dari "Panel Data" — sebuah library open-source yang dibangun di atas NumPy. Ia menyediakan dua struktur data utama: Series (satu kolom / satu dimensi) dan DataFrame (tabel dengan banyak kolom / dua dimensi). DataFrame inilah yang paling sering kamu gunakan, karena bentuknya mirip seperti tabel Excel atau hasil query SQL, sehingga mudah dipahami.

"Pandas has helped democratize data science by making data wrangling accessible to a much wider audience."

— Wes McKinney, Pencipta Pandas

Langkah 1: Instalasi dan Import Pandas

Langkah pertama adalah menginstal Pandas ke environment Python kamu. Jika kamu menggunakan Jupyter Notebook atau Google Colab, proses ini sangat mudah. Google Colab bahkan sudah menginstal Pandas secara otomatis, jadi kamu langsung bisa pakai tanpa instalasi tambahan.

#
Python
# Install via terminal (jalankan di luar Python)
# pip install pandas
Install Pandas via pip

Buka terminal atau command prompt, lalu jalankan perintah instalasi. Jika menggunakan virtual environment, pastikan environment kamu sudah aktif sebelum menjalankan perintah ini.

#
Python
# Import di script Python
import pandas as pd
import numpy as np  # Sering dipakai bersama Pandas
Import Pandas ke dalam script

Setiap kali menggunakan Pandas, kamu perlu mengimpornya di awal file. Konvensi standar adalah mengimpornya dengan alias "pd" — semua programmer Python menggunakan alias ini, sehingga kode kamu langsung mudah dibaca orang lain.

#
Python
# Cek versi
print(pd.__version__)  # Contoh output: 2.2.1
Cek versi Pandas

Setelah import, ada baiknya cek versi yang terinstal untuk memastikan tidak ada masalah kompatibilitas, terutama jika kamu mengikuti tutorial yang menggunakan fitur dari versi tertentu.

Langkah 2: Membaca Data (Read Data)

Data analyst jarang membuat data dari nol — biasanya kita menerima data dalam bentuk file CSV, Excel, atau dari database. Pandas menyediakan fungsi khusus untuk membaca berbagai format file tersebut langsung menjadi DataFrame yang siap diolah.

#
Python
# Baca file CSV
df = pd.read_csv('data_penjualan.csv')
Baca file CSV

CSV (Comma-Separated Values) adalah format paling umum untuk data. Gunakan pd.read_csv() dan masukkan path file sebagai argumen. Pandas secara otomatis akan mendeteksi header dan tipe data setiap kolom.

#
Python
# Baca file Excel (sheet tertentu)
df = pd.read_excel('laporan.xlsx', sheet_name='Sheet1')
Baca file Excel

Untuk file .xlsx atau .xls, gunakan pd.read_excel(). Jika file memiliki beberapa sheet, tambahkan parameter sheet_name untuk menentukan sheet mana yang ingin dibaca.

#
Python
# Eksplorasi awal — selalu lakukan ini setelah membaca data!
print(df.head())        # 5 baris pertama
print(df.tail())        # 5 baris terakhir
print(df.shape)         # (jumlah baris, jumlah kolom)
print(df.columns)       # nama semua kolom
print(df.dtypes)        # tipe data setiap kolom
print(df.info())        # ringkasan lengkap DataFrame
Eksplorasi awal DataFrame

Setelah data dibaca, langkah pertama yang selalu dilakukan adalah mengeksplorasi strukturnya: lihat beberapa baris pertama, cek ukuran data, dan pahami tipe data setiap kolom.

Gunakan df.info() sebagai langkah wajib pertama. Fungsi ini sekaligus menampilkan jumlah baris, tipe data, dan jumlah nilai non-null di setiap kolom — sangat membantu untuk mendeteksi masalah data sejak awal.

Langkah 3: Eksplorasi Data (Exploratory Data Analysis)

Sebelum menganalisis atau membersihkan data, kamu perlu memahaminya terlebih dahulu. Proses ini disebut Exploratory Data Analysis (EDA). Tujuannya adalah memahami distribusi data, menemukan pola awal, dan mengidentifikasi potensi masalah seperti nilai kosong atau outlier.

#
Python
# Statistik deskriptif
print(df.describe())
Lihat statistik deskriptif

Gunakan describe() untuk mendapatkan ringkasan statistik dari semua kolom numerik: mean, median, standar deviasi, nilai minimum, maksimum, dan kuartil. Ini adalah langkah pertama yang sangat informatif.

#
Python
# Cek missing values
print(df.isnull().sum())
Cek nilai yang hilang (missing values)

Nilai yang hilang (NaN) adalah masalah paling umum dalam data nyata. Gunakan isnull().sum() untuk menghitung berapa banyak nilai kosong di setiap kolom.

#
Python
# Pilih satu kolom (menghasilkan Series)
print(df['total_penjualan'])

# Pilih beberapa kolom (menghasilkan DataFrame)
print(df[['nama_produk', 'total_penjualan', 'tanggal']])

# Filter baris: hanya tampilkan penjualan > 1 juta
df_besar = df[df['total_penjualan'] > 1_000_000]

# Filter dengan beberapa kondisi
df_filtered = df[
    (df['total_penjualan'] > 1_000_000) & 
    (df['kategori'] == 'Elektronik')
]

print(df_filtered.head())
Pilih kolom dan filter baris

Gunakan nama kolom dalam kurung kotak untuk memilih kolom tertentu. Untuk memfilter baris, gunakan kondisi logika — caranya mirip dengan WHERE di SQL.

Langkah 4: Membersihkan Data (Data Cleaning)

Data di dunia nyata hampir tidak pernah bersih. Ada nilai yang hilang, ada duplikat, ada format yang tidak konsisten. Data cleaning adalah proses memperbaiki semua masalah ini sebelum analisis. Ini biasanya memakan 60–80% dari total waktu kerja seorang data analyst — jadi kuasai baik-baik.

#
Python
# Hapus baris yang ada nilai kosongnya
df_clean = df.dropna()

# Isi nilai kosong dengan nilai tertentu
df['total_penjualan'] = df['total_penjualan'].fillna(0)
df['kategori'] = df['kategori'].fillna('Tidak Diketahui')

# Isi dengan rata-rata kolom (untuk data numerik)
df['harga'] = df['harga'].fillna(df['harga'].mean())
Tangani nilai yang hilang

Ada dua pilihan utama: hapus baris/kolom yang mengandung nilai kosong dengan dropna(), atau isi nilai kosong dengan nilai tertentu menggunakan fillna(). Pilihan mana yang tepat tergantung konteks datanya.

#
Python
# Hapus duplikat
df = df.drop_duplicates()

# Hapus duplikat berdasarkan kolom tertentu
df = df.drop_duplicates(subset=['order_id'])
Hapus data duplikat

Gunakan drop_duplicates() untuk menghapus baris yang identik. Kamu juga bisa menentukan subset kolom tertentu sebagai dasar pengecekan duplikat

#
Python
# Ubah tipe data
df['tanggal'] = pd.to_datetime(df['tanggal'])
df['total_penjualan'] = df['total_penjualan'].astype(float)

# Bersihkan teks: hapus spasi & ubah jadi lowercase
df['nama_produk'] = df['nama_produk'].str.strip().str.lower()
Ubah tipe data dan format kolom

Sering kali kolom tanggal terbaca sebagai string, atau kolom angka terbaca sebagai object. Gunakan astype() atau pd.to_datetime() untuk mengkonversi ke tipe yang benar agar bisa dianalisis dengan tepat.

Hati-hati saat mengisi missing values dengan mean atau median. Cara ini hanya masuk akal jika datamu terdistribusi normal dan jumlah nilai kosongnya relatif sedikit (< 5%). Jika banyak, pertimbangkan untuk mendrop kolom tersebut atau mencari tahu mengapa nilainya kosong.

Langkah 5: Agregasi dan Grouping Data

Setelah data bersih, saatnya mulai menganalisis. Salah satu operasi yang paling sering dilakukan adalah groupby() — ekuivalen dari GROUP BY di SQL. Dengan groupby(), kamu bisa mengelompokkan data dan menghitung statistik untuk setiap kelompok, misalnya total penjualan per kategori atau rata-rata nilai transaksi per bulan.

#
Python
# Total penjualan per kategori
df_per_kategori = df.groupby('kategori')['total_penjualan'].sum()
print(df_per_kategori)

# Jumlah transaksi per kota
df_per_kota = df.groupby('kota')['order_id'].count()
print(df_per_kota)
Groupby satu kolom

Panggil groupby() dengan nama kolom pengelompokan, lalu pilih kolom yang ingin dihitung, dan terapkan fungsi agregasi seperti sum(), mean(), count(), min(), atau max().

#
Python
# Groupby beberapa kolom
df_multi = df.groupby(['kategori', 'bulan'])['total_penjualan'].sum()
print(df_multi)
Groupby beberapa kolom sekaligus

Kamu bisa mengelompokkan berdasarkan lebih dari satu kolom dengan memasukkan list nama kolom ke dalam groupby(). Hasilnya adalah tabel multi-level yang menampilkan kombinasi setiap grup.

#
Python
# Beberapa fungsi sekaligus dengan agg()
df_summary = df.groupby('kategori').agg(
    total_penjualan=('total_penjualan', 'sum'),
    rata_rata=('total_penjualan', 'mean'),
    jumlah_transaksi=('order_id', 'count'),
    nilai_tertinggi=('total_penjualan', 'max')
).reset_index()

print(df_summary)
Gunakan agg() untuk beberapa fungsi sekaligus

Gunakan metode agg() jika ingin menghitung beberapa statistik sekaligus dalam satu operasi. Ini lebih efisien daripada memanggil fungsi satu per satu dan menggabungkan hasilnya.

Langkah 6: Membuat Kolom Baru dan Transformasi Data

Sering kali data yang ada tidak langsung menjawab pertanyaan bisnis yang kamu miliki. Kamu perlu membuat kolom-kolom turunan — misalnya kolom profit dari selisih harga jual dan harga beli, atau kolom bulan yang diekstrak dari kolom tanggal. Inilah yang disebut feature engineering dalam konteks analisis data.

contoh
Text
# Buat kolom baru dari kalkulasi
df['profit'] = df['harga_jual'] - df['harga_modal']
df['margin_persen'] = (df['profit'] / df['harga_jual']) * 100

# Ekstrak komponen dari kolom tanggal
df['tahun'] = df['tanggal'].dt.year
df['bulan'] = df['tanggal'].dt.month
df['nama_hari'] = df['tanggal'].dt.day_name()

# Buat kolom kategori berdasarkan kondisi
df['segmen_nilai'] = pd.cut(
    df['total_penjualan'],
    bins=[0, 500_000, 2_000_000, float('inf')],
    labels=['Kecil', 'Menengah', 'Besar']
)

# Terapkan fungsi kustom ke setiap baris
def klasifikasi_profit(row):
    if row['margin_persen'] >= 30:
        return 'Tinggi'
    elif row['margin_persen'] >= 15:
        return 'Sedang'
    else:
        return 'Rendah'

df['kategori_profit'] = df.apply(klasifikasi_profit, axis=1)

💡 Hindari menggunakan loop (for) untuk operasi kolom di Pandas — ini sangat lambat untuk dataset besar. Selalu gunakan operasi vektorisasi (langsung pada kolom) atau apply() sebagai pilihan terakhir. Operasi vektorisasi bisa 10–100x lebih cepat dari loop.

Langkah 7: Ekspor Hasil Analisis

Setelah analisis selesai, langkah terakhir biasanya adalah menyimpan hasilnya ke file untuk dibagikan ke tim atau digunakan di tools lain seperti Tableau, Power BI, atau Google Sheets. Pandas mendukung ekspor ke berbagai format dengan mudah.

#
Python
# Ekspor ke CSV
df_summary.to_csv('hasil_analisis.csv', index=False)
Ekspor ke CSV

Gunakan to_excel() untuk menyimpan ke format .xlsx. Kamu bisa menentukan nama sheet dan bahkan menyimpan beberapa DataFrame ke sheet yang berbeda dalam satu file menggunakan ExcelWriter.

#
PHP
# Ekspor ke Excel (satu sheet)
df_summary.to_excel('laporan.xlsx', sheet_name='Summary', index=False)
Ekspor ke Excel

Gunakan to_excel() untuk menyimpan ke format .xlsx. Kamu bisa menentukan nama sheet dan bahkan menyimpan beberapa DataFrame ke sheet yang berbeda dalam satu file menggunakan ExcelWriter.

#
Python
# Ekspor beberapa DataFrame ke sheet berbeda dalam satu file
with pd.ExcelWriter('laporan_lengkap.xlsx', engine='openpyxl') as writer:
    df_summary.to_excel(writer, sheet_name='Ringkasan', index=False)
    df_per_kategori.to_excel(writer, sheet_name='Per Kategori')
    df_per_kota.to_excel(writer, sheet_name='Per Kota')

print("File berhasil disimpan!")
Ekspor beberapa sheet dalam satu file Excel

Gunakan pd.ExcelWriter sebagai context manager untuk menulis beberapa DataFrame ke sheet yang berbeda dalam satu file Excel — sangat berguna untuk membuat laporan yang rapi.

Cheat Sheet: Fungsi Pandas yang Paling Sering Dipakai

Berikut adalah referensi cepat untuk fungsi-fungsi Pandas yang hampir selalu kamu butuhkan dalam setiap proyek analisis data. Simpan ini sebagai referensi harianmu.

Text
# ── MEMBACA DATA ──────────────────────────────────────
pd.read_csv('file.csv')               # Baca CSV
pd.read_excel('file.xlsx')            # Baca Excel
pd.read_sql(query, connection)        # Baca dari database

# ── EKSPLORASI ────────────────────────────────────────
df.head(n)                            # n baris pertama
df.tail(n)                            # n baris terakhir
df.shape                              # (baris, kolom)
df.info()                             # Ringkasan DataFrame
df.describe()                         # Statistik deskriptif
df.dtypes                             # Tipe data per kolom
df.isnull().sum()                     # Jumlah missing values
df['kolom'].value_counts()            # Frekuensi nilai unik
df['kolom'].nunique()                 # Jumlah nilai unik

# ── SELEKSI DATA ──────────────────────────────────────
df['kolom']                           # Pilih satu kolom
df[['kol1', 'kol2']]                  # Pilih beberapa kolom
df[df['kolom'] > 100]                 # Filter baris
df.loc[index, 'kolom']               # Akses by label
df.iloc[0, 1]                         # Akses by posisi

# ── CLEANING ──────────────────────────────────────────
df.dropna()                           # Hapus baris dengan NaN
df.fillna(nilai)                      # Isi NaN
df.drop_duplicates()                  # Hapus duplikat
df.rename(columns={'lama': 'baru'})  # Rename kolom
df.drop(columns=['kolom'])            # Hapus kolom

# ── AGREGASI ──────────────────────────────────────────
df.groupby('kolom').sum()             # Group + sum
df.groupby('kolom').agg({...})        # Group + multi agregasi
df.pivot_table(...)                   # Pivot table
df.merge(df2, on='kolom')             # Join dua DataFrame
pd.concat([df1, df2])                 # Gabungkan DataFrame

# ── EKSPOR ────────────────────────────────────────────
df.to_csv('output.csv', index=False)
df.to_excel('output.xlsx', index=False)

Langkah Selanjutnya

Selamat — kamu sudah menguasai fondasi analisis data dengan Pandas! Dengan tujuh langkah yang baru kamu pelajari (instalasi, membaca data, eksplorasi, cleaning, agregasi, transformasi, dan ekspor), kamu sudah siap mengerjakan proyek analisis data nyata. Langkah selanjutnya adalah memperdalam visualisasi data menggunakan Matplotlib atau Seaborn agar insight dari analisismu bisa dikomunikasikan dengan lebih efektif.

Sumber belajar lanjutan yang direkomendasikan: dokumentasi resmi Pandas di pandas.pydata.org, kursus "Python for Data Analysis" oleh Wes McKinney (pencipta Pandas), dan platform Kaggle yang menyediakan dataset nyata + notebook komunitas secara gratis. Mulai dengan dataset yang kamu minati — belajar terasa jauh lebih mudah jika topiknya menarik untukmu.