Pengenalan Struktur Data Pandas (Series & DataFrame)
19 Sel • Python 3 (WebAssembly Kernel)Pengenalan Struktur Data Pandas (Series & DataFrame)
Di dunia analisis data dan sains data, ada satu pustaka yang paling sering digunakan setiap hari: Pandas.
Mungkin Anda bertanya:
"Kalau cuma mengolah data tabel, kenapa kita tidak pakai Microsoft Excel atau database SQL saja?"
Masing-masing alat punya keunggulan, tetapi juga memiliki batasan:
- Microsoft Excel sangat nyaman untuk melihat data secara visual, tetapi terbatas maksimal sekitar 1 juta baris. Jika file Anda berisi puluhan juta transaksi atau formula rumit, Excel akan sangat lambat bahkan crash. Selain itu, alur kerja di Excel sulit diautomasi secara mandiri dalam pipeline sistem.
- SQL sangat andal untuk menyimpan dan mengambil data dari database relasional, tetapi kurang fleksibel untuk transformasi data yang rumit, pembersihan teks yang kotor, rekayasa fitur (feature engineering), dan pemodelan statistik.
Pandas hadir menggabungkan keunggulan keduanya:
Ia memberikan kemudahan memanipulasi tabel seperti di Excel, kecepatan pemfilteran data seperti di SQL, dan fleksibilitas tanpa batas dari bahasa pemrograman Python. Dengan Pandas, kita bisa memuat jutaan data dalam sekejap, membersihkan data yang hilang, menggabungkan tabel, hingga menghitung statistik kompleks hanya dengan beberapa baris kode.
1. Memasang Pustaka Pandas
Pastikan pustaka Pandas sudah terpasang di lingkungan Python Anda sebelum digunakan:
Requirement already satisfied: pandas in c:\laragon\bin\python\python-3.10\lib\site-packages (2.3.1)
Requirement already satisfied: tzdata>=2022.7 in c:\laragon\bin\python\python-3.10\lib\site-packages (from pandas) (2025.2)
Requirement already satisfied: python-dateutil>=2.8.2 in c:\laragon\bin\python\python-3.10\lib\site-packages (from pandas) (2.9.0.post0)
Requirement already satisfied: numpy>=1.22.4 in c:\laragon\bin\python\python-3.10\lib\site-packages (from pandas) (2.2.6)
Requirement already satisfied: pytz>=2020.1 in c:\laragon\bin\python\python-3.10\lib\site-packages (from pandas) (2025.2)
Requirement already satisfied: six>=1.5 in c:\laragon\bin\python\python-3.10\lib\site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)
[notice] A new release of pip available: 22.2.2 -> 26.2.1
[notice] To update, run: python.exe -m pip install --upgrade pip2. Pandas Series: Struktur Data 1 Dimensi Berlabel
Di Pandas ada dua struktur data utama: Series dan DataFrame.
Series adalah array satu dimensi yang memiliki label penunjuk (index). Kalau di list biasa Anda hanya bisa memanggil data lewat angka 0, 1, 2, pada Series Anda bisa memberikan nama indeks sesuka hati (misalnya nama kota, tanggal, atau kode barang).
=== Data Series Populasi ===
Jakarta 10.56
Surabaya 2.93
Bekasi 2.51
Bandung 1.83
Name: Populasi (Juta Jiwa), dtype: float64
Populasi Surabaya : 2.93 juta jiwa
Rata-rata Populasi: 4.46 juta jiwa3. Pandas DataFrame: Struktur Tabel 2 Dimensi
Jika Anda menggabungkan beberapa Series berdampingan, Anda akan mendapatkan DataFrame—yaitu representasi tabel dua dimensi lengkap dengan baris (rows) dan kolom (columns), persis seperti lembar kerja spreadsheet Excel.
Cara termudah membuat DataFrame adalah menggunakan struktur Dictionary Python, di mana key menjadi nama kolom dan value (list) menjadi data isinya:
=== Tabel Data Karyawan ===
Nama Divisi Gaji_Juta Pengalaman_Tahun
0 Andi Engineering 15.5 3
1 Budi Data 18.0 5
2 Citra Data 16.5 4
3 Dewi Design 12.0 2
4 Eko Engineering 14.0 3
5 Fani Marketing 11.5 14. Inspeksi Cepat: Mengenal Bentuk dan Kesehatan Data
Saat pertama kali menerima file data dari rekan kerja atau database, jangan langsung melakukan perhitungan. Lakukan inspeksi awal terlebih dahulu menggunakan 4 fungsi andalan ini:
df.head(n): Melihatnbaris data teratas.df.shape: Mengetahui ukuran tabel (total baris, total kolom).df.info(): Memeriksa tipe data setiap kolom dan mendeteksi apakah ada data yang bolong/kosong.df.describe(): Ringkasan statistik otomatis (rata-rata, standar deviasi, nilai minimum, kuartil, dan maksimum).
Ukuran tabel (baris, kolom): (6, 4)
3 Baris Pertama (head):
Nama Divisi Gaji_Juta Pengalaman_Tahun
0 Andi Engineering 15.5 3
1 Budi Data 18.0 5
2 Citra Data 16.5 4
Ringkasan Statistik Deskriptif:
Gaji_Juta Pengalaman_Tahun
count 6.000000 6.000000
mean 14.583333 3.000000
std 2.557668 1.414214
min 11.500000 1.000000
25% 12.500000 2.250000
50% 14.750000 3.000000
75% 16.250000 3.750000
max 18.000000 5.0000005. Memilih Data: Memahami Perbedaan .loc vs .iloc
Ini adalah materi yang paling sering membingungkan pemula saat belajar Pandas. Bagaimana cara mengambil baris dan kolom tertentu?
Kuncinya adalah mengingat dua method berikut:
.loc(Label-based): Mengambil data berdasarkan nama label teks (nama kolom atau nama indeks)..iloc(Integer-based): Mengambil data murni berdasarkan posisi nomor indeks angka (dimulai dari0, 1, 2, ...).
Menggunakan .loc (berdasarkan nama kolom):
Nama Andi
Gaji_Juta 15.5
Name: 0, dtype: object
Menggunakan .iloc (baris 0 s.d 1, kolom 0 s.d 1):
Nama Divisi
0 Andi Engineering
1 Budi Data6. Menyaring Data (Filtering & Boolean Indexing Multi-Kondisi)
Sering kali kita ingin menyaring data berdasarkan satu atau beberapa kriteria sekaligus, mirip seperti perintah WHERE di SQL.
Aturan penulisan kondisi di Pandas:
- Gunakan tanda kurung
(kondisi_1) & (kondisi_2)untuk logika AND (keduanya harus terpenuhi). - Gunakan tanda kurung
(kondisi_1) | (kondisi_2)untuk logika OR (salah satu terpenuhi).
Karyawan dengan Gaji > 15 Juta:
Nama Divisi Gaji_Juta
0 Andi Engineering 15.5
1 Budi Data 18.0
2 Citra Data 16.5
Karyawan Divisi Data Senior (Pengalaman >= 4 tahun):
Nama Pengalaman_Tahun Gaji_Juta
1 Budi 5 18.0
2 Citra 4 16.57. Menambah dan Memodifikasi Kolom
Di dunia nyata, kita sering perlu membuat kolom baru hasil perhitungan matematis (misalnya menghitung bonus tahunan atau konversi mata uang):
Tabel Karyawan setelah penambahan kolom kompensasi:
Nama Divisi Gaji_Juta Bonus_Akhir_Tahun Total_Tahunan
0 Andi Engineering 15.5 23.25 209.25
1 Budi Data 18.0 27.00 243.00
2 Citra Data 16.5 24.75 222.75
3 Dewi Design 12.0 18.00 162.00
4 Eko Engineering 14.0 21.00 189.00
5 Fani Marketing 11.5 17.25 155.258. Menangani Data Kosong (Missing Values / NaN)
Hampir tidak ada dataset di dunia nyata yang 100% bersih. Pasti ada baris yang nilainya kosong karena pengguna lupa mengisi form, sensor terputus, atau kesalahan sistem. Di Pandas, data kosong ditandai dengan NaN (Not a Number).
Tiga langkah menangani data kosong:
- Cek data kosong:
df.isna().sum()menghitung berapa banyak data kosong di setiap kolom. - Isi data kosong:
df.fillna(nilai)mengisi data kosong dengan nilai tertentu (misalnya nilai rata-rata atau angka 0). - Hapus baris kosong:
df.dropna()membuang baris yang memiliki nilai kosong jika data tersebut tidak bisa diperbaiki.
=== Data Awal Pelanggan ===
Nama Kota Usia Skor_Kepuasan
0 Rian Jakarta 28.0 4.5
1 Siti Surabaya NaN 4.8
2 Agus NaN 35.0 4.2
3 Lina Bandung 24.0 NaN
4 Doni Jakarta 31.0 4.6
Jumlah data kosong per kolom:
Nama 0
Kota 1
Usia 1
Skor_Kepuasan 1
dtype: int64
=== Data Setelah Dibersihkan ===
Nama Kota Usia Skor_Kepuasan
0 Rian Jakarta 28.0 4.5
1 Siti Surabaya 30.0 4.8
2 Agus Tidak Diketahui 35.0 4.2
3 Lina Bandung 24.0 NaN
4 Doni Jakarta 31.0 4.69. Studi Kasus: Analisis Penjualan & Inventaris Toko Retail
Mari kita terapkan kemampuan Pandas untuk menganalisis data inventaris produk e-commerce.
Pertanyaan bisnis yang ingin dijawab oleh manajemen:
- Berapa total omset potensial (Harga dikali Stok Terjual) untuk setiap produk?
- Kategori produk mana yang menyumbang pendapatan total tertinggi?
- Produk apa saja yang terjual lebih dari 25 unit dan memiliki rating kepuasan di atas 4.5?
=== Tabel Penjualan Produk Toko ===
Produk Kategori Terjual Total_Omset_Juta
0 Laptop Asus Komputer 14 119.00
1 Mouse Logitech Aksesoris 85 12.75
2 Keyboard Mechanical Aksesoris 40 18.00
3 Monitor LG Komputer 20 44.00
4 Headset Sony Audio 28 33.60
5 Webcam Razer Aksesoris 32 25.60
=== Peringkat Pendapatan per Kategori (Juta Rupiah) ===
Kategori
Komputer 163.00
Aksesoris 56.35
Audio 33.60
Name: Total_Omset_Juta, dtype: float64
=== Produk Terlaris dengan Rating Tinggi (>= 4.5) ===
Produk Kategori Terjual Rating
1 Mouse Logitech Aksesoris 85 4.5
2 Keyboard Mechanical Aksesoris 40 4.7