pythonpandasdataframeMenengah4 mnt baca

pandas: DataFrame Pertama

Series, DataFrame, read_csv, head, info, describe. Senjata utama data analyst.

DataFrame: spreadsheet yang bisa diprogram

Analogi paling pas: DataFrame itu seperti spreadsheet Excel, tapi tiap operasinya ditulis sebagai kode sehingga bisa diulang, diaudit, dan dijalankan ke 10 juta baris tanpa ngelag. Series adalah satu kolomnya (array berlabel), DataFrame adalah tabel yang terdiri dari banyak Series.

Kenapa penting buat data analyst? Karena inilah senjata utama sehari-hari. Alur kerja analyst pada umumnya: baca file CSV/Excel, intip isinya, cek kualitas datanya, baru analisis. Tiga langkah pertama itu semuanya terjadi di pandas, dan analyst yang skip langkah "kenali datamu" biasanya menghasilkan insight dari data kotor.

Contoh pertama, bikin DataFrame dari dictionary:

python
import pandas as pd

df = pd.DataFrame({
    "produk": ["Kopi", "Teh", "Susu", "Roti"],
    "jumlah": [10, 7, 5, 12],
    "harga": [15000, 8000, 12000, 10000],
})
print(df)
print(df.shape)   # (4, 3): 4 baris, 3 kolom

Contoh kedua, alur realistis: baca CSV penjualan, tambah kolom omzet, lalu kenali datanya.

python
df = pd.read_csv("penjualan.csv")

print(df.head())      # intip 5 baris pertama
print(df.info())      # tipe tiap kolom + data yang tidak kosong
print(df.describe())  # mean, min, max khusus kolom angka

df["omzet"] = df["jumlah"] * df["harga"]  # kolom baru, tanpa loop
print(df[["produk", "omzet"]].head())

Perhatikan df["omzet"] = df["jumlah"] * df["harga"]: perkalian antar kolom terjadi per baris secara otomatis (vectorization warisan NumPy). Tidak perlu loop, tidak perlu apply.

Tiga jurus eksplorasi (head, info, describe) wajib jadi refleks. Khususnya info(): kalau kolom harga terbaca sebagai object (teks) padahal isinya angka, berarti ada data kotor seperti "Rp15.000" atau sel kosong aneh. Perbaiki dulu, baru hitung. Analyst senior bisa menebak kualitas dataset hanya dari output info().

Jebakan umum

SALAH: ambil banyak kolom pakai satu kurung siku.

python
df["produk", "harga"]   # KeyError! Python mengira ini satu key tuple

BENAR: dua kurung siku untuk banyak kolom.

python
df[["produk", "harga"]]  # DataFrame rapi dua kolom

Aturannya: satu kurung = satu kolom = Series, dua kurung = beberapa kolom = DataFrame. Jebakan ini memakan korban tiap minggu di forum-forum pandas.

SALAH: langsung percaya isi CSV tanpa cek, lalu heran kenapa hasil hitungannya aneh.

python
df = pd.read_csv("penjualan.csv")
print(df["harga"].mean())   # error atau hasil ngaco kalau kolomnya object

BENAR: cek info() dulu, tangani data kotor saat baca.

python
df = pd.read_csv("penjualan.csv", na_values=["-", "kosong", ""])
print(df.info())   # pastikan harga = int64/float64 sebelum dihitung

Catatan teknis: iloc memilih by posisi (df.iloc[0] = baris pertama), loc memilih by label (df.loc[0, "produk"]). Kalau indeksmu masih default 0,1,2 keduanya terlihat sama, tapi setelah filter atau sort indeks bisa acak dan bedanya jadi penting.

Tantangan

Eksplorasi dataset kecil

Buat DataFrame dari dictionary dengan kolom nama, kota, transaksi (isi 5 baris bebas). Tampilkan head(), info(), describe(), dan shape. Tulis satu kalimat kesimpulan tentang datanya.