EDA İş Akışı ve Veri Profilleme
df.info(), df.describe(), eksik değer denetimi, veri türü kontrolü ve kardinalite analizi.
EDA İş Akışı ve Veri Profilleme, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 1. 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, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.
Keşifsel Veri Analizi Nedir?
Keşifsel Veri Analizi (EDA), herhangi bir veri kümesiyle modelleme öncesinde yaptığınız ilk iştir. Amacı yapıyı anlamak, sorunları fark etmek ve sezgi geliştirmektir.
Disiplinli bir EDA ilk inceleme kontrol listesi şu soruları yanıtlar: Veri ne kadar büyük? Sütunların türleri neler? Eksik değerler nerede? Yinelenenler var mı? Değerler nasıl dağılıyor?
- Veri kalitesi sorunlarını erkenden yakalayın
- Hangi özelliklerin temizlenmesi gerektiğine karar verin
- Daha sonra sınamak üzere hipotezler oluşturun
Verilerin Yüklenmesi
Her şey bir DataFrame yükleyip head() ve shape ile hızlıca göz atmanızla başlar.
shape, (rows, columns) demeti döndürür; böylece üzerinde çalıştığınız ölçeği anında bilirsiniz.
import pandas as pd
df = pd.read_csv("customers.csv")
print(df.shape) # (10000, 8)
print(df.head()) # first 5 rowsdf.info() — Türler ve Boş Olmayan Değer Sayıları
df.info(), en kullanışlı ilk komuttur. Her sütunun adını, veri türünü ve boş olmayan değer sayısını yazdırır.
Sayısal bir sütun object olarak görünüyorsa bir sorun vardır (başıboş metin, virgüller veya para birimi simgeleri). Sütunlardaki boş olmayan değer sayıları farklıysa verilerinizde eksik değerler vardır.
df.info()
# <class pandas.DataFrame>
# RangeIndex: 10000 entries
# age 9800 non-null float64
# city 10000 non-null object
# income 9500 non-null float64df.describe() — Sayısal Özet
df.describe(), her sayısal sütun için sayım, ortalama, standart sapma, minimum, çeyreklikler (25/50/75%) ve maksimum değerlerini verir.
Kırmızı bayrakları arayın: yaş sütununda min değerinin -1 olması, max değerinin 75. yüzdelik dilimin çok üzerinde olması (aykırı değerler) veya ortalamanın medyandan çok uzak olması (çarpıklık).
print(df.describe())
# Use include="all" to also summarize categorical columns
print(df.describe(include="all"))df.isnull().sum() — Eksik Değerleri Sayma
isnull() ile sum() işlevlerini zincirlemek, her sütundaki eksik değerleri sayar. Genel toplamı bulmak için bir .sum() daha ekleyin.
Ciddiyetini değerlendirmek için sonucu yüzdeye dönüştürün: %60'ı eksik olan bir sütunu kaldırmak mantıklı olabilirken %2'lik eksikliği doldurmak kolaydır.
print(df.isnull().sum())
missing_pct = df.isnull().sum() / len(df) * 100
print(missing_pct.sort_values(ascending=False))df.duplicated().sum() — Yinelenen Satırları Bulma
df.duplicated(), önceki bir satırın birebir kopyası olan satırları işaretleyen mantıksal bir Seri döndürür. Bu Seriyi toplamak, kaç yinelenen satır bulunduğunu sayar.
Yinelenenleri subset ile anahtar sütunlarla sınırlayabilirsiniz; bu, bir id değerinin benzersiz olması gerektiğinde kullanışlıdır.
print(df.duplicated().sum()) # exact duplicate rows
print(df.duplicated(subset=["id"]).sum()) # duplicate ids
df = df.drop_duplicates()value_counts() — Kategori Sıklıkları
value_counts(), her benzersiz değerin bir sütunda kaç kez göründüğünü sayar. Kategorik inceleme için başvurulacak araçtır.
Ham sayımlar yerine oranları görmek için normalize=True kullanın; eksik değerleri de sayıma katmak için dropna=False kullanın.
print(df["city"].value_counts())
print(df["city"].value_counts(normalize=True))
print(df["city"].value_counts(dropna=False))Kardinalite Denetimi
Kardinalite, bir sütundaki farklı değerlerin sayısıdır ve nunique() ile bulunur.
- Düşük kardinalite (birkaç kategori) → tek-sıcak kodlama için uygundur.
- Yüksek kardinalite (binlerce benzersiz metin, örneğin kullanıcı ID'leri) → olduğu haliyle genellikle kullanışlı bir özellik değildir.
for col in df.select_dtypes("object").columns:
print(col, "->", df[col].nunique(), "unique")Sabit ve ID Benzeri Sütunları Fark Etme
Profil oluşturma sırasında iki uç durumu işaretlemeye değer:
- Sabit sütunlar (
nunique() == 1) hiçbir bilgi taşımaz; bunları kaldırın. - ID benzeri sütunlar (
nunique() == len(df)) her satır için benzersizdir ve çoğu modele yararlı bilgi sağlamaz.
n = len(df)
for col in df.columns:
u = df[col].nunique()
if u == 1:
print(col, "is constant")
elif u == n:
print(col, "is ID-like")Veri Türleri ve Bellek Kullanımı
Sütunların doğru şekilde saklandığını doğrulamak için df.dtypes değerini, fazla bellek kullanan sütunları bulmak için de df.memory_usage(deep=True) değerini denetleyin.
Sayısal türleri daha küçük türlere dönüştürmek ve düşük kardinaliteli metinleri category türüne çevirmek, büyük veri kümelerinde bellek kullanımını büyük ölçüde azaltabilir.
print(df.dtypes)
print(df.memory_usage(deep=True))
df["city"] = df["city"].astype("category")Yeniden Kullanılabilir Profil Oluşturma Kod Parçacığı
Tüm kontrol listesini tek bir yardımcı işlevde birleştirerek her yeni veri kümesine aynı ilk incelemeyi uygulayabilirsiniz.
Herhangi bir DataFrame yüklediğiniz anda çalıştırarak şekli, türleri, eksik değerleri, yinelenenleri ve kardinaliteyi hemen ortaya çıkarın.
def profile(df):
print("Shape:", df.shape)
print(df.info())
print("Missing:\n", df.isnull().sum())
print("Dupes:", df.duplicated().sum())
for c in df.select_dtypes("object"):
print(c, df[c].nunique(), "unique")
profile(df)Hızlı Kontrol: Eksik Değerler
Her sütundaki eksik değerlerin yüzde oranını görmek istiyorsunuz.
Özet: EDA İlk İnceleme Kontrol Listesi
Artık her veri kümesi için tekrarlanabilir bir başlangıç rutininiz var:
- Ölçek ve önizleme için
shapevehead() - Veri türleri ve boş olmayan değer sayıları için
info() - Sayısal özetler ve aykırı değer ipuçları için
describe() - Eksik değerler için
isnull().sum() - Yinelenen satırlar için
duplicated().sum() - Kategori sıklıkları ve kardinalite için
value_counts()venunique()
Sonraki bölümde tek değişkenli analizle tek tek sütunları daha ayrıntılı inceleyeceğiz.
Sıkça Sorulan Sorular
“EDA İş Akışı ve Veri Profilleme” dersi ücretsiz mi?
Evet — “EDA İş Akışı ve Veri Profilleme” 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 Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.
“EDA İş Akışı ve Veri Profilleme” dersinde ne öğreneceğim?
df.info(), df.describe(), eksik değer denetimi, veri türü kontrolü ve kardinalite analizi. Learn AI with Python 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.
Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, 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 1. dersidir.
“EDA İş Akışı ve Veri Profilleme” 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 Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn AI with Python 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
- EDA İş Akışı ve Veri Profilleme
- Tek Değişkenli Analiz
- İki Değişkenli ve Çok Değişkenli Analiz
- Özellik Dağılımı ve Hedef Analizi