Pandas - median

median() Metodu

pandas.DataFrame.median() metodu, bir DataFrame'deki (veri çerçevesi) değerlerin, belirtilen eksen (satır veya sütun) üzerindeki medyanını (ortanca değerini) döndürmek için kullanılır.

Medyan, bir veri kümesindeki değerler küçükten büyüğe sıralandığında tam ortada kalan değerdir.

Bu yöntem genellikle bir Series (Seri) veya bir Scalar (tek bir sayı) döndürür.

⚙️ Parametreler

Yöntemin temel parametreleri şunlardır:

Parametre Varsayılan Değer Açıklama
axis 0 (index)

 0 (index): Her sütunun medyanını hesaplar ve sonuç olarak bir Series döndürür (varsayılan). 

 1 (columns): Her satırın medyanını hesaplar ve sonuç olarak bir Series döndürür. 

 None: Tüm DataFrame'in tek bir medyanını hesaplar (Sürüm 2.0.0'dan itibaren).
İşlevin uygulanacağı ekseni belirtir.
skipna True Hesaplama yapılırken NA (boş/null) değerlerinin hariç tutulup tutulmayacağını belirtir. True ise hariç tutulur.
numeric_only False Hesaplamaya yalnızca float, integer (tam sayı) ve boolean (mantıksal) sütunların dahil edilip edilmeyeceğini belirtir.
**kwargs Fonksiyona iletilecek ek anahtar kelime argümanları.

📝 Kullanım Örnekleri

1. Varsayılan Kullanım (axis=0)

Varsayılan olarak axis=0 kullanılır, yani her sütunun medyanı hesaplanır:

import pandas as pd

df = pd.DataFrame({ 'a': [1, 2, 8, 12], 
                    'b': [10,15, 24, 32], 
                    'c': [33, 50, 80, 100]})
print(df)

Veri çerçevemize bakalım, Çıktı:

    a   b    c
0   1  10   33
1   2  15   50
2   8  24   80
3  12  32  100

Veri çerçevesinin medyanını bulalım;

median_result = df.median()
print(median_result)

Çıktı:

a     5.0 # ortadaki iki değerin ortalaması (2 + 8) / 2
b    19.5 # ortadaki iki değerin ortalaması (15 + 24) / 2
c    65.0 # ortadaki iki değerin ortalaması (50 + 80) / 2
dtype: float64

Sütunlarda 4'er veri olduğu için tam ortadaki değer seçilemiyor, bunun yerine tam ortada bulunan sayıların ortalaması alınıyor.

2. Satır Bazında Medyan (axis=1)

Satırlar arasındaki medyanı hesaplamak için axis=1 kullanılır:

median_result_axis_1 = df.median(axis=1)
print(median_result_axis_1)

Çıktı:

0    10.0 # Ortadaki sayı 10 [1, 10, 23]
1    15.0 # Ortadaki sayı 10 [2, 15, 50]
2    24.0 # Ortadaki sayı 10 [8, 24, 80]
3    32.0 # Ortadaki sayı 10 [12, 32, 100]
dtype: float64

Satırlarda 3 adet (tek sayılı) veri olduğu için tam ortadaki sayı, medyan olarak hesaplanıyor.

Bir de tüm Veri çerçevesinin medyanını bulalım.

median_result_axis_None = df.median(axis=None)
print(median_result_axis_None)

Çıktı:

19.5 # (15 + 24) / 2 <- Tablonun tam ortasındaki değerler 15 ve 24'tür.

3. Sadece Sayısal Sütunları Kullanma (numeric_only=True)

DataFrame'de sayısal olmayan (örneğin metin/string) sütunlar varsa, yalnızca sayısal sütunları dahil etmek için numeric_only=True ayarlanmalıdır. Aksi takdirde hata oluşabilir:

df = pd.DataFrame({ 'a': [1, 2, 8, 12], 
                    'b': [10,'V', 24, 'N'], 
                    'c': [33, 50, 80, 100]})
print(df)

Veri Çerçevemiz:

    a   b    c
0   1  10   33
1   2   V   50
2   8  24   80
3  12   N  100

Sadece numerik (sayılardan oluşan) verilerin ortalamasını bulalım;

median_numeric = df.median(numeric_only=True)
print(median_numeric)

Çıktı:

a     5.0
c    65.0
dtype: float64

Satırların medyanını bulalım;

median_numeric = df.median(axis = 1, numeric_only=True)
print(median_numeric)

Çıktı:

0    17.0 # (1 + 33) / 2
1    26.0 # (2 + 50) / 2
2    44.0 # (8 + 80) / 2
3    56.0 # (12 + 100) / 2
dtype: float64

B Sütunundaki Tüm Değerler devre dışı bırakılıp kalan değerlerin ortalaması alınarak medyan hesaplandı.

Kaynak: