Rata-rata saja bisa menyesatkan. Dua kelas dengan rata-rata ujian 80 sama-sama tampak baik, tetapi nilai kelas pertama bisa seragam di antara 70 sampai 90, sementara kelas kedua tersebar dari 40 sampai 100. Variance dan standard deviation mengukur jarak rata-rata data terhadap pusatnya, sehingga perbedaan semacam itu terlihat sebagai angka, bukan kesan. Chapter ini membahas var() dan std() pada pandas, termasuk parameter ddof yang membuat hasilnya berbeda dari alat lain.
var(): Varians Sampel #
Varians dihitung dalam empat langkah: hitung mean, hitung selisih setiap nilai terhadap mean, kuadratkan selisih itu, lalu jumlahkan dan bagi dengan n-1. Pembagi n-1 inilah default pandas, dikenal sebagai sample variance, dan diatur lewat parameter ddof=1. Mari kita hitung varians dari lima nilai skor ujian sehingga setiap langkahnya bisa diverifikasi manual.
import pandas as pd
skor = pd.Series([70, 75, 80, 85, 90], index=["Budi", "Siti", "Dewi", "Andi", "Rina"])
print(skor.var())
print(skor.var(ddof=0))
print(skor.std())
print(skor.std(ddof=0))
print()
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.var())
print()
print(penjualan.std())
print()
print(penjualan["februari"].std(skipna=False))Output yang Dihasilkan:
62.5
50.0
7.905694150420948
7.0710678118654755
januari 750.000000
februari 433.333333
maret 570.000000
dtype: float64
januari 27.386128
februari 20.816660
maret 23.874673
dtype: float64
nanMari kita telusuri angka-angkanya:
- Baris 3: Series
skorberisi 70, 75, 80, 85, 90 dengan label nama siswa. - Baris 5 (
skor.var()): mean data adalah 80; selisihnya adalah -10, -5, 0, 5, 10; kuadratnya adalah 100, 25, 0, 25, 100; jumlah kuadrat 250 dibagi 5-1 = 4 menghasilkan 62.5. - Baris 6 (
skor.var(ddof=0)): jumlah kuadrat 250 yang sama dibagi 5 menghasilkan 50.0, yaitu population variance. - Baris 7-8 (
skor.std()): dua angka terakhir adalah akar kuadrat dari kedua varians di atas, yang kita baca lebih lanjut pada bagianstd().
ddof: Membagi n-1 atau n #
Parameter ddof (delta degrees of freedom) menentukan pembagi pada perhitungan varians. Default ddof=1 menghasilkan sample variance, pilihan yang tepat ketika data kita hanyalah sampel dari populasi yang lebih besar. Setelan ddof=0 menghasilkan population variance, dipakai ketika data yang dimiliki memang seluruh populasi yang dianalisis. Hasil ddof=0 selalu lebih kecil atau sama dengan ddof=1 karena pembaginya lebih besar.
| Parameter | Pembagi | Nama | Dipakai ketika |
|---|---|---|---|
ddof=1 (default pandas) | n-1 | sample variance | Data adalah sampel dari populasi yang lebih besar |
ddof=0 | n | population variance | Data adalah seluruh populasi yang dianalisis |
std(): Akar Varians #
Method std() menghitung akar kuadrat varians, sehingga satuannya kembali ke satuan data asli. Varians skor kita 62.5 berada di kuadrat poin, angka yang sulit ditafsirkan; std() mengembalikannya menjadi 7.905694150420948 poin, yang dapat dibaca sebagai simpangan tipikal dari rata-rata 80. Dengan ddof=0, standar deviasinya 7.0710678118654755 poin. Dalam laporan, standard deviation jauh lebih sering ditampilkan daripada varians karena satuannya langsung dipahami pembaca.
var() dan std() per Kolom #
Pada DataFrame, kedua method bekerja per kolom dan menghormati aturan skipna yang sama dengan method agregasi lain. Kolom februari dihitung hanya dari tiga nilai terisinya, sehingga std() menghasilkan 20.816660. Ketika skipna=False, satu NaN membuat seluruh hasil kolom itu menjadi nan, persis seperti pola pada sum() dan mean() yang kita bahas sebelumnya.
Referensi resmi chapter ini: pandas.Series.var , pandas.Series.std , dan bagian Descriptive statistics pada user guide.
Varians dan standar deviasi merangkum sebaran data dalam satu angka global. Cara lain memotong distribusi adalah statistik posisi: urutkan data, lalu baca nilai pada titik potong tertentu. Chapter berikutnya membahas jalur itu lewat quantile(), sekaligus menghubungkannya dengan median dan IQR.