Chapter sebelumnya membahas quantile, yang merangkum sebaran satu kolom secara mandiri. Dalam pekerjaan analisis, kita sering butuh menjawab pertanyaan yang lebih menyeluruh: apakah dua kolom bergerak bersama? Ketika suhu di luar meningkat, apakah penjualan es krim ikut naik, dan apakah penjualan teh hangat justru turun? Method corr() menjawab pertanyaan seperti itu dengan satu angka antara -1 dan 1. Pada Chapter ini kita menghitung korelasi dari sebuah DataFrame, membaca makna angkanya, lalu menghitung korelasi antara dua Series tertentu.

Menghitung Matriks Korelasi dengan corr() #

Kita memakai data lapak minuman selama satu minggu. Kolom suhu mencatat suhu udara siang itu, kolom es_krim mencatat jumlah gelas es krim yang terjual, dan kolom teh_hangat mencatat jumlah gelas teh hangat yang terjual. Intuisi awal kita: es krim laris saat cuaca panas, teh hangat justru sepi saat cuaca panas. Untuk menguji intuisi itu dengan angka, kita panggil corr() pada DataFrame yang hanya berisi ketiga kolom numerik tersebut.

python
import pandas as pd

dagangan = pd.DataFrame({
    "hari": ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"],
    "suhu": [24, 26, 27, 29, 30, 32, 31],
    "es_krim": [120, 135, 150, 170, 185, 210, 200],
    "teh_hangat": [95, 88, 84, 70, 62, 45, 50],
})

angka = dagangan[["suhu", "es_krim", "teh_hangat"]]

print(angka.corr())
print()
print(dagangan["suhu"].corr(dagangan["es_krim"]))
print(dagangan["suhu"].corr(dagangan["teh_hangat"]))

Output yang Dihasilkan:

text
                suhu   es_krim  teh_hangat
suhu        1.000000  0.995612   -0.983865
es_krim     0.995612  1.000000   -0.993585
teh_hangat -0.983865 -0.993585    1.000000

0.9956120415713523
-0.9838649175333289

Mari kita telaah apa yang terjadi pada kode di atas:

  1. Baris 1 (import pandas as pd): memuat library pandas dengan alias pd sesuai konvensi umum.
  2. Baris 3-8 (dagangan = pd.DataFrame({...})): kita membangun DataFrame dari dictionary; setiap key menjadi nama kolom, sementara hari tetap berperan sebagai kolom penanda biasa.
  3. Baris 10 (angka = dagangan[[...]]): kita memilih tiga kolom numerik; corr() menghitung hubungan pada data angka, bukan pada kolom teks.
  4. Baris 12-15: angka.corr() menghasilkan matriks korelasi 3x3, lalu dua baris terakhir menghitung korelasi satu pasangan kolom melalui Series.corr().

Matriks hasilnya simetris: nilai pada posisi (suhu, es_krim) selalu sama dengan posisi (es_krim, suhu). Diagonal utama berisi 1.000000, karena setiap kolom berkorelasi sempurna dengan dirinya sendiri. Angka yang benar-benar kita cari berada di luar diagonal, yaitu 0.995612 untuk pasangan suhu dan es_krim serta -0.983865 untuk pasangan suhu dan teh_hangat.

Membaca Nilai Korelasi dari -1 sampai 1 #

Korelasi Pearson selalu berada di rentang -1 sampai 1. Tanda menunjukkan arah hubungan, sedangkan jarak dari nol menunjukkan kekuatan hubungan linear. Tabel berikut menjadi panduan membacanya:

Nilai korelasiMakna hubungan linear
1.0Hubungan positif sempurna; data berada persis pada garis lurus naik
0.7 sampai 0.99Hubungan positif kuat
0.3 sampai 0.69Hubungan positif sedang
-0.29 sampai 0.29Hubungan lemah atau tidak ada pola linear yang jelas
-0.69 sampai -0.3Hubungan negatif sedang
-0.99 sampai -0.7Hubungan negatif kuat
-1.0Hubungan negatif sempurna; data berada persis pada garis lurus turun

Batas-batas pada tabel hanya aturan praktis, bukan standar resmi. Dengan panduan tersebut, 0.995612 antara suhu dan es_krim berarti hubungan positif kuat: semakin panas cuaca, semakin banyak gelas es krim terjual, dan titik-titik datanya mendekati garis lurus. Sebaliknya, -0.983865 antara suhu dan teh_hangat berarti hubungan negatif kuat: semakin panas cuaca, teh hangat semakin sepi. Karena kedua nilai mendekati batas -1 dan 1, data minggu ini hampir mengikuti pola linear sempurna.

Korelasi Bukan Kausalitas #

Kedua batasan tersebut bukan alasan untuk menghindari corr(). Method ini tetap menjadi alat pemeriksaan pertama yang cepat sebelum kita menyelidiki hubungan antar kolom lebih jauh; cukup pastikan kesimpulan akhir didukung pemahaman domain, bukan angka korelasi semata. Detail parameter metode tersedia di dokumentasi pandas.DataFrame.corr dan pandas.Series.corr , sementara ringkasan statistik seperti ini juga dibahas pada halaman Essential basic functionality .

Korelasi memberi angka baku yang mudah dibaca, tetapi angka tersebut lahir dari perhitungan yang lebih mendasar bernama kovarians. Chapter berikutnya membuka lapisan itu: kita menghitung cov(), method yang menjadi bahan hitungan korelasi, serta melihat kapan kovarians justru lebih informatif daripada korelasi.