0Pricing
Pandas & NumPy Academy · Ders

Veri Kümesi Profilleme Kontrol Listesi

Yeni bir veri kümesiyle karşılaştığınızda biçimi, dtypes bilgisini, eksik sayıları, benzersiz değerleri ve temel istatistikleri sistematik olarak inceleyin.

Veri Kümesi Profilleme Kontrol Listesi, CoddyKit'te ücretsiz bir Pandas & NumPy Academy 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, 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.

Bir Veri Kümesiyle İlk Beş Dakika

Deneyimli veri analistleri, yeni bir veri kümesiyle her karşılaştıklarında sistematik bir profil oluşturma kontrol listesi izler. Doğrudan analize geçmek yerine önce bir dizi tanılayıcı soruyu yanıtlarlar: Veriler ne kadar büyük? Sütunların türleri neler? Kaç değer eksik? Belirgin anormallikler var mı? Bu yapılandırılmış yaklaşım, yanlış anlaşılan veri türleri veya hesaplamaları bozan gizli boş değerler nedeniyle saatlerce boşa çalışmanızı önler.

import pandas as pd

# Simulate loading a new dataset
df = pd.read_csv('https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv')

# Step 1: size
print('Shape:', df.shape)
print('Rows:', len(df))

1. Adım: Boyut, Sütunlar ve Veri Türleri

İlk üç denetim her zaman boyut (satırlar × sütunlar), sütun adları (beklentilerle eşleşiyor mu?) ve veri türleridir (sayısal sütunlar gerçekten sayısal mı?). Yaygın bir sürpriz, sayısal sütunların 'unknown' gibi metin girdileri veya virgülle biçimlendirilmiş farklı sayı türleri içermeleri nedeniyle object veri türüyle yüklenmesidir. Bunu profil oluşturma aşamasında fark etmek, sessizce yanlış sonuçlar döndüren toplulaştırmalardan kurtulmanızı sağlar.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

print('Shape:', df.shape)
print('\nColumns:', df.columns.tolist())
print('\nData Types:')
print(df.dtypes)

2. Adım: Eksik Değer Denetimi

Sütun başına eksik değerleri saymak için df.isna().sum() çağrısını yapın, ardından yüzdeyi elde etmek için sonucu len(df) değerine bölün. Eksik değerlerin %50'den fazla olduğu sütunlar genellikle kaldırılmaya adaydır; %1-20 arası eksiklikler genellikle eksik değer tamamlama gerektirir; %0 eksiklik ise makullük denetimi gerektirir — gerçek veriler nadiren bu kadar temiz olduğundan kusursuz bütünlük şüpheli olabilir. En çok etkilenen sütunları önce görmek için çıktıyı azalan düzende sıralayın.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

# Missing value audit
missing = df.isna().sum()
missing_pct = (missing / len(df) * 100).round(1)
audit = pd.DataFrame({'count': missing, 'pct': missing_pct})
audit = audit[audit['count'] > 0].sort_values('pct', ascending=False)
print(audit)

3. Adım: Temel Betimsel İstatistikler

df.describe(), tek bir çağrıyla her sayısal sütun için sayım, ortalama, std, min, çeyreklikler ve max değerlerini döndürür. İmkânsız değerler için her zaman min ve max değerlerini tarayın (örneğin yaş = -3 veya yaş = 999); çarpıklık için ortalama ile medyanı karşılaştırın (büyük fark aykırı değerleri gösterebilir) ve sayımı inceleyin (toplam satır sayısından düşükse boş değerler vardır). Nesne sütunlarına ilişkin istatistikleri de (benzersiz sayısı, en sık değer, sıklık) dâhil etmek için include='all' ekleyin.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

# Describe numeric columns
print('Numeric statistics:')
print(df.describe().round(2))

print('\nObject column statistics:')
print(df.describe(include='object'))

4. Adım: Benzersiz Değer Sayıları

Kategorik sütunlarda benzersiz değerlerin sayısını df[col].nunique() ile denetleyin ve en yaygın değerleri value_counts() ile inceleyin. Kategorik görünen ancak yüzlerce benzersiz değer içeren sütunlara (muhtemelen serbest metin alanı veya bir ID) ve boole olması gereken ancak üç değere sahip sütunlara (True, False ve NaN) dikkat edin. Büyük/küçük harf tutarsızlıklarını da denetleyin: 'Male' ve 'male' ayrı kategoriler olarak değerlendirilir.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

categorical = df.select_dtypes(include='object').columns
for col in categorical:
    n = df[col].nunique()
    top_vals = df[col].value_counts().head(3).to_dict()
    print(f'{col}: {n} unique — top3: {top_vals}')

5. Adım: head ve tail ile Örnek Satırlar

df.head(10) ve df.tail(10), sırasıyla ilk ve son satırları gösterir. Her ikisini de incelemek önemlidir; çünkü veri kümelerinde genellikle temiz başlık satırları ve dışa aktarma kalıntılarından kaynaklanan karmaşık son satırlar bulunur (örneğin CSV dışa aktarımına eklenmiş bir 'Total' özet satırı). Veri kümesinin başlangıcına yönelik olası yanlılığı önleyen rastgele bir satır seçimini görmek için df.sample(10) da kullanın.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

print('First 3 rows:')
print(df.head(3))

print('\nLast 3 rows:')
print(df.tail(3))

print('\nRandom sample of 3:')
print(df.sample(3, random_state=42))

6. Adım: Yinelenenleri Denetleme

Tamamen yinelenen satırları (her sütunun eşleştiği satırları) saymak için df.duplicated().sum() çağrısını yapın. Benzersiz müşteri kayıtları içerdiğini belirten bir veri kümesinde tek bir yinelenen kaydın bile bulunması, veri kalitesi sorunlarına işaret eden önemli bir uyarıdır. Gerçek yinelenen satırları incelemek için df[df.duplicated(keep=False)] kullanın. Bir tabloda benzersiz anahtarlar olması gerekiyorsa (kullanıcı ID'si gibi), anahtar düzeyindeki benzersizliği de df['id'].duplicated().sum() ile denetleyin.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

# Full-row duplicates
full_dups = df.duplicated().sum()
print(f'Fully duplicated rows: {full_dups}')

# Key-level duplicates (e.g. passenger class + name)
key_dups = df.duplicated(subset=['pclass', 'sex', 'age', 'fare']).sum()
print(f'Near-duplicate rows (pclass+sex+age+fare): {key_dups}')

7. Adım: Tarih ve Saat Sütunları

Veri kümesi tarih veya zaman damgası sütunları içeriyorsa Pandas'ın bunları object yerine datetime64 olarak yüklediğini denetleyin. pd.to_datetime(df['col']) ile dönüştürün. Ardından tarih aralığını inceleyin: df['date'].min() ve df['date'].max(). Eksik tarihleri temsil etmek için kullanılan yer tutucu değerlerin göstergesi olan, çok ilerideki (2099 yılı) veya çok geçmişteki (epoch sıfırı: 1970-01-01) zaman damgalarını arayın.

import pandas as pd

# Synthetic example with a date column
df = pd.DataFrame({
    'order_id': [1, 2, 3, 4],
    'order_date': ['2024-01-10', '2024-02-05', '1970-01-01', '2024-12-31']
})

df['order_date'] = pd.to_datetime(df['order_date'])

print('Date range:', df['order_date'].min(), 'to', df['order_date'].max())
print('\nSuspect dates (before 2020):')
print(df[df['order_date'] < '2020-01-01'])

Kontrol Listesini Bir İşleve Dönüştürerek Otomatikleştirme

Profil oluşturma adımlarını yeniden kullanılabilir bir işleve sarmalamak, aynı denetimlerin her veri kümesinde tutarlı biçimde çalışmasını sağlar. İşlev; boyutu, eksik değerleri, veri türlerini, yinelenen kayıt sayısını ve temel istatistikleri gösteren yapılandırılmış bir rapor yazdırmalıdır. İşlevi görselleştirmelerle genişletebilir veya HTML raporu olarak kaydedebilirsiniz. Bunun gibi işlevler, birden çok analistin aynı pipeline üzerinde çalıştığı profesyonel veri bilimi ekiplerinin temel araçlarındandır.

import pandas as pd

def profile(df, name='DataFrame'):
    print(f'=== Profile: {name} ===')
    print(f'Shape: {df.shape[0]} rows x {df.shape[1]} cols')
    print(f'Duplicates: {df.duplicated().sum()}')
    print(f'\nMissing values (top 5):')
    missing = (df.isna().sum() / len(df) * 100).sort_values(ascending=False)
    print(missing[missing > 0].head(5).round(1).to_string())
    print(f'\ndtypes:')
    print(df.dtypes.value_counts().to_string())
    print('=' * 35)

import seaborn as sns
df = sns.load_dataset('titanic')
profile(df, 'Titanic')

Otomatik EDA için ydata-profiling

ydata-profiling kütüphanesi (önceden pandas-profiling), tek bir satırla bir DataFrame'den kapsamlı bir HTML raporu oluşturur: ProfileReport(df).to_file('report.html'). Raporda histogramlar, korelasyon matrisleri, eksik değer ısı haritaları, yinelenen kayıt tespiti ve etkileşim grafikleri bulunur. Kod yazmadan verileri anlaması gereken bir paydaşla tam veri kümesi profilini paylaşmanın en hızlı yoludur.

# Install: pip install ydata-profiling
# from ydata_profiling import ProfileReport
# import pandas as pd
# import seaborn as sns

# df = sns.load_dataset('titanic')
# profile = ProfileReport(df, title='Titanic Profiling Report', explorative=True)
# profile.to_file('titanic_profile.html')

# The above generates a full HTML report automatically.
# Alternatively, use minimal mode for faster generation:
# profile = ProfileReport(df, minimal=True)
print('ydata-profiling generates HTML EDA reports automatically.')
print('Run: pip install ydata-profiling')

Profil Oluşturma Kontrol Listesi Özeti

Her yeni veri kümesi için eksiksiz profil oluşturma kontrol listesi yedi adımdan oluşur: 1) boyut ve sütunlar, 2) veri türleri ve şüpheli tür atamaları, 3) sütun başına eksik değer sayısı ve yüzdesi, 4) betimsel istatistikler (min, max, ortalama, medyan), 5) kategorik sütunlar için benzersiz değerler ve değer sayımları, 6) yinelenen satır tespiti ve 7) tarih aralığı doğrulaması. Bu kontrol listesini herhangi bir analizden önce tamamlamak, sonraki aşamalarda sonuçları bozabilecek sessiz hataları önler.

Kısa Kontrol

Bu derste öğrendiğiniz veri kümesi profil oluşturma kontrol listesini ne kadar anladığınızı sınayın.

Ders Özeti

Bu derste şunları öğrendiniz: 7 adımlı profil oluşturma kontrol listesi (boyut, veri türleri, eksik değerler, istatistikler, benzersiz sayımlar, yinelenenler, tarihler), denetimleri yeniden kullanılabilir bir profile işlevi içinde toplama ve otomatik HTML raporları için ydata-profiling kullanma. Sırada, aykırı değerleri, çarpıklığı ve olağandışı dağılımları belirlemek için her sütunu bağımsız olarak inceleyen tek değişkenli analize geçeceğiz.

Sıkça Sorulan Sorular

“Veri Kümesi Profilleme Kontrol Listesi” dersi ücretsiz mi?

Evet — “Veri Kümesi Profilleme Kontrol Listesi” 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.

“Veri Kümesi Profilleme Kontrol Listesi” dersinde ne öğreneceğim?

Yeni bir veri kümesiyle karşılaştığınızda biçimi, dtypes bilgisini, eksik sayıları, benzersiz değerleri ve temel istatistikleri sistematik olarak inceleyin. 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 1. dersidir.

“Veri Kümesi Profilleme Kontrol Listesi” 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

  1. Veri Kümesi Profilleme Kontrol Listesi
  2. Tek Değişkenli Analiz
  3. İki Değişkenli ve Korelasyon Analizi
  4. Bulguları Raporla Özetleme
← Pandas & NumPy Academy Sayfasına Dön