Tek Değişkenli Analiz
Her sütunu bağımsız olarak analiz edin: sayısal sütunların dağılımlarını, kategorik sütunların değer sayılarını çizin; aykırı değerleri ve çarpıklığı not edin.
Tek Değişkenli Analiz, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
Tek Değişkenli Analiz Nedir?
Tek değişkenli analiz, sütunlar arasındaki ilişkileri göz ardı ederek her seferinde tek bir sütunu ayrı olarak inceler. Amaç, modelleme başlamadan önce her değişkenin dağılımını anlamak, aykırı değerleri tespit etmek, çarpıklığı belirlemek ve veri kalitesi sorunlarını ortaya çıkarmaktır. Tek değişkenli analiz sayısal ve kategorik sütunlar için farklıdır: sayısal sütunlarda dağılım grafikleri ve özet istatistikler, kategorik sütunlarda ise sıklık sayımları ve oranlar gerekir.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
numeric_cols = df.select_dtypes('number').columns.tolist()
categoric_cols = df.select_dtypes('object').columns.tolist()
print('Numeric columns:', numeric_cols)
print('Categorical columns:', categoric_cols)Sayısal Sütunlar için Histogramlar
Dağılımının şeklini görmek için her sayısal sütun için bir histogram çizin. Simetriye karşı çarpıklığı (bir taraftaki kuyruk), tepe sayısını (tek tepeye karşı birkaç tepe) ve belirgin anormallikleri (uçlarda bulunan ve makul görünmeyen değerleri) arayın. Pandas'ta df.hist(), döngü yazmadan hızlı birden çok sütunlu histogram ızgarası oluşturur; ancak Seaborn'un histplot işlevi tek tek sütunlar için daha ayrıntılı denetim sağlar.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('titanic')
# Quick multi-column histogram grid
numeric = df.select_dtypes('number')
numeric.hist(bins=20, figsize=(12, 8), layout=(2, 3), color='steelblue', edgecolor='white')
plt.suptitle('Univariate Distributions (Numeric Columns)', y=1.02)
plt.tight_layout()
plt.show()Sayısal Sütunlar için Özet İstatistikler
Her sayısal sütun için ortalama ile medyanı hesaplayıp karşılaştırın. Ortalama medyandan belirgin biçimde büyük olduğunda dağılım sağa çarpıktır (gelir ve fiyat verilerinde yaygın olan uzun sağ kuyruk). Ortalama medyandan küçük olduğunda dağılım sola çarpıktır. Ayrıca standart sapmayı ortalamaya göre inceleyin: negatif olmayan bir değişken için std değerinin ortalamadan büyük olması, yüksek değişkenliğin veya aykırı değerlerin işaretidir. Çarpıklığı doğrudan df.skew() ile hesaplayın.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')
summary = pd.DataFrame({
'mean': numeric.mean(),
'median': numeric.median(),
'std': numeric.std(),
'skewness': numeric.skew(),
'missing_pct': (numeric.isna().sum() / len(df) * 100).round(1)
}).round(2)
print(summary)Aykırı Değer Tespiti için Kutu Grafikleri
Kutu grafikleri, sayısal sütunlardaki aykırı değerleri belirlemenin en hızlı görsel aracıdır. Bıyıkların ötesindeki (Q1 veya Q3'ten 1,5×IQR uzaklıktaki) her nokta ayrı olarak çizilir ve olası aykırı değer olarak işaretlenir. Çok sayıda aykırı nokta içeren bir sütun incelenmelidir: Bunlar veri giriş hataları mı, geçerli uç değerler mi, yoksa normal olmayan bir dağılımın göstergesi mi? Kutu grafikleri, kutunun içindeki medyanın asimetrik konumundan sağa veya sola çarpıklığı da ortaya çıkarır.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('titanic')
fig, axes = plt.subplots(1, 3, figsize=(14, 5))
for ax, col in zip(axes, ['age', 'fare', 'sibsp']):
df[[col]].boxplot(ax=ax)
ax.set_title(f'Box Plot: {col}')
plt.tight_layout()
plt.show()IQR Tabanlı Aykırı Değer Sayıları
IQR (Çeyrekler Açıklığı) yöntemi, aykırı değerleri Q1 - 1,5×IQR değerinin altındaki veya Q3 + 1,5×IQR değerinin üzerindeki değerler olarak tanımlar. Çizim yapmadan her sayısal sütundaki aykırı değerleri saymak ve incelemek için bunu program aracılığıyla hesaplayabilirsiniz. Bu yaklaşım, grafik oluşturmak yerine anomali sayılarını günlüğe kaydetmeniz gereken otomatik işlem hatlarında kullanışlıdır. Aykırı değerlerle ne yapılacağına (silmek, sınırlandırmak veya işaretlemek) alan bilgisine dayanarak bilinçli biçimde karar verilmelidir.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')
Q1 = numeric.quantile(0.25)
Q3 = numeric.quantile(0.75)
IQR = Q3 - Q1
lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR
outlier_counts = ((numeric < lower) | (numeric > upper)).sum()
print('Outlier counts per column:')
print(outlier_counts[outlier_counts > 0])Kategorik Sütunlar İçin Değer Sayıları
Her kategorik sütun için value_counts() çağrısıyla gözlemlerin kategorilere nasıl dağıldığını görün. Her zaman şunları kontrol edin: Tek bir kategori baskın mı (>%80)? Bu durum sınıflandırma görevlerinde sınıf dengesizliğine yol açar. Yalnızca 1-2 gözlem içeren nadir kategoriler var mı (yazım hataları veya veri giriş hataları)? Dağılım, iş beklentileriyle uyumlu mu (örneğin, 'ülke' sütunu siparişlerin çoğunun beklenmeyen bir ülkeden geldiğini mi gösteriyor)?
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
for col in ['sex', 'embarked', 'class', 'who']:
counts = df[col].value_counts(dropna=False)
pct = (counts / len(df) * 100).round(1)
result = pd.DataFrame({'count': counts, 'pct%': pct})
print(f'\n--- {col} ---')
print(result)Kategorik Değişkenler İçin Çubuk Grafikleri
Kategorik değer sayılarını sns.countplot kullanarak veya value_counts().plot(kind='bar') çağrısıyla çubuk grafikleri olarak görselleştirin. Görüntüleyen kişinin baskın kategorileri hemen görebilmesi için çubukları en sık görülenden en az görülene doğru sıralayın. İkili değişkenler (evet/hayır, erkek/kadın) için pasta grafiği kullanılabilir; ancak 3'ten fazla kategori olduğunda çubuk grafikler her zaman daha anlaşılırdır. Kategori adları uzunsa eksen işaretlerinin etiketlerini 45 derece döndürün.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('titanic')
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
sns.countplot(data=df, x='embarked', order=df['embarked'].value_counts().index, ax=axes[0])
axes[0].set_title('Embarkation Port Counts')
sns.countplot(data=df, x='class', order=['First', 'Second', 'Third'], ax=axes[1])
axes[1].set_title('Passenger Class Counts')
plt.tight_layout()
plt.show()Çarpıklığı Belirleme ve Dönüşümler Uygulama
Sağa oldukça çarpık sayısal sütunlar (çarpıklık > 1,5), dağılımı daha simetrik hâle getirmek için çoğu zaman logaritmik dönüşümden yararlanır. Bu, normallik varsayımında bulunan birçok istatistiksel test ve bazı makine öğrenmesi algoritmaları için önemlidir. np.log1p() uygulayın (log(x+1); sıfıra yakın değerler için güvenlidir) ve çarpıklığı yeniden kontrol edin. Dağılımın çan eğrisine daha çok benzediğini doğrulamak için dönüşümden önceki ve sonraki histogramları karşılaştırın.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('titanic')
fig, axes = plt.subplots(1, 2, figsize=(10, 4))
sns.histplot(df['fare'], bins=30, kde=True, ax=axes[0])
axes[0].set_title(f'fare (skew={df["fare"].skew():.2f})')
log_fare = np.log1p(df['fare'])
sns.histplot(log_fare, bins=30, kde=True, ax=axes[1], color='coral')
axes[1].set_title(f'log1p(fare) (skew={log_fare.skew():.2f})')
plt.tight_layout()
plt.show()Sıfır Varyanslı Sütunları Kontrol Etme
Sıfır varyanslı bir sütun (tüm değerleri aynı olan sütun) hiçbir modele bilgi sağlamaz ve kaldırılmalıdır. Varyansı sıfıra yakın olan bir sütun da (satırların %99'unda aynı değer bulunması) benzer şekilde işe yaramaz. Varyansı df.var() ile hesaplayıp filtreleyin. Ayrıca nunique() == len(df) koşulunu sağlayan sütunları da kontrol edin; bunlar büyük olasılıkla öznitelik olarak kullanılmaması gereken, ancak satır tanımlayıcısı olarak yararlı olabilecek ID sütunlarıdır.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')
# Zero-variance columns
zero_var = numeric.columns[numeric.var() == 0].tolist()
print('Zero-variance columns:', zero_var)
# Near-zero variance (std < 0.01)
nzv = numeric.columns[numeric.std() < 0.01].tolist()
print('Near-zero variance:', nzv)
# Likely ID columns (all unique values)
id_candidates = [c for c in df.columns if df[c].nunique() == len(df)]
print('Likely ID columns:', id_candidates)Tek Değişkenli Analiz Otomasyon Döngüsü
Her sütun için aynı analizi elle tekrarlamak yerine, tüm sayısal sütunlar üzerinde yineleme yapan ve temel istatistikleri yapılandırılmış bir biçimde yazdıran bir döngü oluşturun. Böylece onlarca sütunu hızla taramak ve ilgilenilmesi gerekenleri işaretlemek kolaylaşır. Çıktı, paydaşların veriler modellemede kullanılmadan önce inceleyebileceği bir işlem hattı denetim günlüğünün parçası olarak bir CSV dosyasına kaydedilebilir.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')
rows = []
for col in numeric.columns:
s = df[col]
Q1, Q3 = s.quantile(0.25), s.quantile(0.75)
IQR = Q3 - Q1
n_outliers = ((s < Q1 - 1.5*IQR) | (s > Q3 + 1.5*IQR)).sum()
rows.append({
'column': col,
'missing_pct': round(s.isna().mean() * 100, 1),
'mean': round(s.mean(), 2),
'std': round(s.std(), 2),
'skew': round(s.skew(), 2),
'outliers': int(n_outliers)
})
report = pd.DataFrame(rows)
print(report.to_string(index=False))Tek Değişkenli Bulguları Belgeleme
Tek değişkenli analizi tamamladıktan sonra bulgularınızı sistematik biçimde belgeleyin. Her sütun için dağılım biçimini (çarpık, iki tepeli, normale yakın), eksik değer yüzdesini ve planlanan tamamlama stratejisini, aykırı değer sayısını ve kararı (sınırlandır, kaldır, işaretle) ve alan bilgisiyle açıklığa kavuşturulması gereken şüpheli değerleri not edin. Bu belge, temizleme adımlarına yön veren ve kararların daha sonra unutulmasını veya sorgulanmasını önleyen veri kalitesi günlüğüne dönüşür.
Hızlı Kontrol
Bu dersteki tek değişkenli analiz konusunu ne kadar anladığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: histogramlar sayısal sütunların dağılım biçimini ortaya çıkarır, kutu grafikleri ve IQR çitleri aykırı değerleri belirler ve value_counts kategorik sütunlardaki kategori sıklığını gösterir. Bu kontrolleri bir döngüde otomatikleştirmek, yeniden kullanılabilir bir kalite raporu oluşturur. Sırada iki değişkenli ve korelasyon analizi var: sütun çiftleri arasındaki ilişkileri anlamayı inceleyeceğiz.
Sıkça Sorulan Sorular
“Tek Değişkenli Analiz” dersi ücretsiz mi?
Evet — “Tek Değişkenli Analiz” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
“Tek Değişkenli Analiz” dersinde ne öğreneceğim?
Her sütunu bağımsız olarak analiz edin: sayısal sütunların dağılımlarını, kategorik sütunların değer sayılarını çizin; aykırı değerleri ve çarpıklığı not edin. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Tek Değişkenli Analiz” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Veri Kümesi Profilleme Kontrol Listesi
- Tek Değişkenli Analiz
- İki Değişkenli ve Korelasyon Analizi
- Bulguları Raporla Özetleme