Ringkasan adalah cara tercepat memahami isi tabel yang panjang. Alih-alih membaca baris demi baris, kita bertanya: berapa totalnya, berapa rata-ratanya, dan berapa nilai tengahnya. Pandas menjawab ketiganya dengan method sum(), mean(), dan median(), yang menghitung agregat per kolom secara default. Sama pentingnya, ketiga method secara default mengabaikan NaN melalui parameter skipna — perilaku yang akan kita buktikan dengan data yang sengaja dibiarkan kosong.

Menyiapkan Data dengan Nilai Kosong #

Kita memakai tabel penjualan bulanan lima cabang toko. Kolom februari sengaja memuat None untuk Jakarta dan Medan, meniru kondisi nyata ketika laporan dari dua cabang belum masuk. Saat DataFrame dibuat, None pada kolom numerik dikonversi menjadi NaN dan membuat kolom februari ber-dtype float64, sedangkan dua kolom lainnya tetap int64.

python
import pandas as pd

penjualan = pd.DataFrame(
    {
        "januari": [120, 150, 90, 80, 110],
        "februari": [135, None, 105, 95, None],
        "maret": [150, 160, 120, 100, 130],
    },
    index=["Bandung", "Jakarta", "Surabaya", "Denpasar", "Medan"],
)

print(penjualan.dtypes)
print()
print(penjualan.sum())
print()
print(penjualan.mean())
print()
print(penjualan.median())

Output yang Dihasilkan:

text
januari       int64
februari    float64
maret         int64
dtype: object

januari     550.0
februari    335.0
maret       660.0
dtype: float64

januari     110.000000
februari    111.666667
maret       132.000000
dtype: float64

januari     110.0
februari    105.0
maret       130.0
dtype: float64

Mari kita bedah kode dan output di atas:

  1. Baris 3-10: DataFrame dibuat dengan parameter index berisi nama cabang, sehingga setiap baris punya label yang mudah dirujuk.
  2. Baris 12-18: kita mencetak dtypes, lalu memanggil ketiga method agregasi; tanpa argumen tambahan, ketiganya bekerja per kolom (axis=0) dan mengembalikan Series berlabel nama kolom.
  3. Nilai 550.0 pada hasil sum() kolom januari: 120 + 150 + 90 + 80 + 110 memang 550; penulisan 550.0 terjadi karena hasil agregasi ketiga kolom disatukan ke dtype yang paling umum, yaitu float64 milik kolom februari.
  4. Kolom februari: hanya 95, 105, dan 135 yang dihitung; sum() menghasilkan 335.0, mean() menghasilkan 111.666667 (335 dibagi 3, bukan dibagi 5), dan median() menghasilkan 105.0, nilai tengah dari 95, 105, 135.

mean() versus median() #

Mean menjumlahkan seluruh nilai lalu membaginya dengan banyaknya data, sehingga satu nilai ekstrem ikut menggeser hasilnya. Median mengurutkan data lalu mengambil nilai tengah, sehingga nilai ekstrem tidak menggeser posisinya. Pada kolom maret, mean dan median sama-sama 130.0 karena datanya relatif seimbang; pada data yang mengandung transaksi luar biasa besar, keduanya bisa jauh berbeda. Kebiasaan yang sehat adalah menghitung keduanya lalu membandingkan: selisih yang besar adalah sinyal adanya pencilan yang patut ditelusuri.

skipna: Default yang Mengabaikan NaN #

Parameter skipna mengatur sikap method agregasi terhadap NaN, dan defaultnya True. Artinya, method melewatkan sel kosong lalu menghitung sisa data yang terisi. Ketika kita menggantinya menjadi skipna=False, satu saja NaN pada kolom membuat seluruh hasil agregasi kolom itu menjadi NaN, karena hasil perhitungan yang memuat data hilang dianggap tidak valid.

python
import pandas as pd

februari = pd.Series(
    [135, None, 105, 95, None],
    index=["Bandung", "Jakarta", "Surabaya", "Denpasar", "Medan"],
)

print(februari.sum())
print(februari.sum(skipna=False))
print(februari.mean())
print(februari.mean(skipna=False))
print(februari.median())
print(februari.median(skipna=False))

Output yang Dihasilkan:

text
335.0
nan
111.66666666666667
nan
105.0
nan

Output di atas memperlihatkan kontrasnya secara berurutan: sum() biasa menghasilkan 335.0, sedangkan sum(skipna=False) menghasilkan nan; pola yang sama berlaku pada mean() dan median(). Perilaku ini identik ketika method dipanggil pada DataFrame, bukan hanya pada Series tunggal.

Referensi resmi untuk chapter ini mencakup pandas.Series.sum , pandas.Series.mean , dan pandas.Series.median ; perilaku terhadap data kosong dirinci pada halaman Working with missing data .

Total, rata-rata, dan median memberi gambaran tentang pusat data. Ringkasan belum lengkap tanpa mengetahui batasnya: penjualan terendah, tertinggi, dan banyaknya data yang benar-benar terisi. Chapter berikutnya menutup kebutuhan itu dengan tiga method sederhana: min(), max(), dan count().