Sütun Veri Türlerini İnceleme
dtypes özniteliğini okuyun, int64 ile float64 ve object arasındaki farkı ayırt edin ve dönüştürülmesi gereken sütunları belirleyin.
Sütun Veri Türlerini İnceleme, 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.
Sütun Veri Türleri Neden Önemlidir?
Pandas DataFrame içindeki her sütunun, değerlerin bellekte nasıl saklandığını ve hangi işlemlerin geçerli olduğunu belirleyen bir dtype (veri türü) vardır. dtype değeri object (dize) olan bir tamsayı sütununda toplama yapılamaz. Dize olarak saklanan bir tarih, zaman serisi olarak değil metin olarak değerlendirilir. Yanlış dtype değerleri, veri analizi işlem hatlarındaki sessiz hataların ve beklenmeyen sonuçların en yaygın nedenleri arasındadır.
Yeni bir veri kümesini yükledikten sonra ilk iş olarak dtype değerlerini her zaman inceleyin.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'age': ['25', '30', '35'], # looks like int, stored as object
'salary': [50000, 60000, 70000], # int64
'hired': ['2022-01-01', '2023-06-15', '2024-03-10'] # looks like date
})
print(df.dtypes)
# age object
# salary int64
# hired object
# dtype: objectdtypes Özniteliği
DataFrame.dtypes, dizini sütun adlarından, değerleri ise her sütunun Pandas dtype değerinden oluşan bir Series döndürür. Karşılaşacağınız yaygın dtype değerleri şunlardır: int64, float64, object (dizeler ve karma değerler), bool, datetime64[ns] ve category. dtype adı, hem verinin türünü hem de her değerin kaç bayt kullandığını belirtir.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'int_col': [1, 2, 3],
'float_col': [1.5, 2.5, 3.5],
'str_col': ['a', 'b', 'c'],
'bool_col': [True, False, True]
})
print(df.dtypes)
# int_col int64
# float_col float64
# str_col object
# bool_col bool
# dtype: objectobject Dtype Değerini Belirleme
object dtype değeri, sayısal veya mantıksal türde saklanamayan sütunlar için Pandas'in genel amaçlı türüdür. Genellikle dize verisi anlamına gelir, ancak karma türde bir sütunu da gösterebilir (örneğin tamsayılarla dizelerin bir arada bulunması). Object sütunları, özel türlere göre daha fazla bellek tüketir ve üzerlerinde işlem yapmak daha yavaştır. object gördüğünüzde şu soruyu sorun: Bu sütun bir dize, sayı, kategori veya tarih mi olmalı?
import pandas as pd
df = pd.DataFrame({'mixed': [1, 'two', 3.0, None]})
print(df.dtypes)
# mixed object
# Check actual Python types inside the column
print(df['mixed'].apply(type).value_counts())
# <class 'int'> 1
# <class 'str'> 1
# <class 'float'> 2 (includes NaN which is float)Eksiksiz Tür Genel Görünümü için info()
df.info(), her sütunun adını, eksik olmayan değer sayısını ve dtype değerini, ayrıca toplam bellek kullanımını gösteren kısa bir tablo yazdırır. Bu tek komut, veri kümesinin kalitesine ilişkin eksiksiz bir görünüm sunar: hangi sütunlarda eksik veri bulunduğunu ve hangi sütunların yanlış dtype değerine sahip olduğunu aynı anda görebilirsiniz. Bu nedenle veri kümesi yüklendikten sonra kullanılan standart ilk komuttur.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'id': [1, 2, 3],
'score': [88.5, 92.0, np.nan],
'grade': ['A', 'A', 'B']
})
df.info()
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 3 entries, 0 to 2
# Data columns (total 3 columns):
# # Column Non-Null Count Dtype
# --- ------ -------------- -----
# 0 id 3 non-null int64
# 1 score 2 non-null float64
# 2 grade 3 non-null object
# dtypes: float64(1), int64(1), object(1)
# memory usage: 200.0+ bytesread_csv Sonrasında Yaygın dtype Sorunları
Pandas bir CSV dosyasını okurken değerleri tarayarak dtype değerlerini çıkarır. Birkaç yaygın sorun ortaya çıkar: virgülle ayrılmış binlik basamaklar veya para birimi simgeleri varsa sayısal sütunlar object olarak okunabilir; 'Yes'/'No' dizeleri olarak saklanıyorsa mantıksal sütunlar object olarak okunabilir; Pandas kendisine söylenmediği sürece tarihleri ayrıştırmadığından tarih sütunları object olarak okunabilir. Bu örüntüleri tanımak, tür dönüştürmeyle sorunları hızlıca düzeltmenizi sağlar.
import pandas as pd
import io
csv = '''price,date,is_active
'1,200',2024-01-15,Yes
'800',2024-02-20,No
'''
df = pd.read_csv(io.StringIO(csv))
print(df.dtypes)
# price object <- should be int
# date object <- should be datetime64
# is_active object <- should be boolFarklı dtype Değerlerinin Bellek Kullanımı
Farklı dtype değerleri çok farklı miktarlarda bellek tüketir. Bir int64 sütunu değer başına 8 bayt kullanırken, kısa dizeler saklayan bir object sütunu değer başına 50-200 bayt kullanabilir. Milyonlarca satır içeren DataFrames için doğru dtype değerini seçmek, bellek kullanımını gigabaytlardan megabaytlara düşürebilir. Sütun başına bayt maliyetini görmek için df.memory_usage(deep=True) çağrısını kullanın.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'int64_col': np.arange(1_000_000, dtype='int64'),
'float32_col': np.arange(1_000_000, dtype='float32'),
'obj_col': ['a'] * 1_000_000
})
mem = df.memory_usage(deep=True) / 1024**2 # MB
print(mem.round(2))
# Index 0.00
# int64_col 7.63
# float32_col 3.81
# obj_col 55.26 <- much more for object!Yanlış Türdeki Sayısal Sütunları Belirleme
Yaygın bir sorun, başıboş biçimlendirme karakterleri nedeniyle sayısal bir sütunun object olarak saklanmasıdır. Bunu, pd.to_numeric(df['col'], errors='coerce') sonucunun özgün sütundan farklı olup olmadığını kontrol ederek belirleyebilirsiniz. Ayrıştırılamayan tüm değerler NaN olur ve tür çıkarımının başarısız olmasına neden olan satırlar tam olarak ortaya çıkar.
import pandas as pd
df = pd.DataFrame({'revenue': ['1000', '2000', '$3000', '4,000']})
# Check which values can't be parsed as numbers
parsed = pd.to_numeric(df['revenue'], errors='coerce')
print(parsed)
# 0 1000.0
# 1 2000.0
# 2 NaN <- '$3000' failed
# 3 NaN <- '4,000' failedTamsayı ve Ondalık Sayı Belirsizliğini Denetleme
Bir sütunda herhangi bir NaN değeri olduğunda, standart NumPy tamsayı türleri NaN değerini temsil edemediği için Pandas tamsayı sütunlarını float64 olarak saklar. Sonuçta oluşan 25.0 gibi kayan noktalı sayılar tamsayı gibi görünür, ancak kayan noktalı sayı olarak saklanır. Pandas, tamsayı anlamını korurken NaN değerlerini destekleyen boş değer kabul eden tamsayı türlerini (Int64, büyük I ile) kullanıma sundu.
import pandas as pd
import numpy as np
df = pd.DataFrame({'count': [1, 2, np.nan, 4]})
print(df['count'].dtype) # float64 — because NaN is float
# Nullable integer type supports NaN
df['count'] = df['count'].astype('Int64') # capital I!
print(df)
# count
# 0 1
# 1 2
# 2 <NA>
# 3 4
print(df['count'].dtype) # Int64Tür Tabanlı Filtreleme için select_dtypes()
df.select_dtypes(include=), belirli bir tür ailesindeki tüm sütunları seçmenizi sağlar. Yaygın bağımsız değişkenler şunlardır: 'number' (tüm sayısal türler), 'object' (dizeler), 'bool', 'datetime', 'category'. Bu, bir pipeline'ın başlangıcında yalnızca sayısal sütunlara sayısal temizleme, yalnızca metin sütunlarına da dize temizleme uygulamak için çok kullanışlıdır.
import pandas as pd
df = pd.DataFrame({
'name': ['Alice', 'Bob'],
'age': [25, 30],
'salary': [50000.0, 70000.0],
'dept': ['Eng', 'HR']
})
numeric = df.select_dtypes(include='number')
print('Numeric columns:', numeric.columns.tolist())
# ['age', 'salary']
text = df.select_dtypes(include='object')
print('Text columns:', text.columns.tolist())
# ['name', 'dept']Veri Türü Raporu Oluşturma
Uygulamalı bir EDA alışkanlığı, her sütunun veri türünü, benzersiz değer sayısını ve örnek değerlerini listeleyen bir veri türü raporu oluşturmaktır. Bu, analiz başlamadan önce dönüştürülmesi gereken sütunları hızlıca belirlemenize yardımcı olur. Böyle bir raporu, sütun bazında toplulaştırmalardan oluşturulan basit bir DataFrame ile oluşturabilirsiniz.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'age': [25, 30, 35],
'salary': [50000, 60000, 70000],
'dept': ['Eng', 'HR', 'Eng'],
'hired': ['2022-01-01', '2023-06-15', '2024-03-10']
})
report = pd.DataFrame({
'dtype': df.dtypes,
'unique_count': df.nunique(),
'sample': df.iloc[0]
})
print(report)Üretim Pipeline'larında Veri Türü Tutarlılığı
Her gün yeni verileri işleyen üretim pipeline'larında veri türleri zamanla değişebilir — başlangıçta her zaman int64 olan bir sütun, tek bir NaN ortaya çıktığında float64 olarak gelebilir. Şema değişikliklerini erkenden yakalamak için pipeline'ın başlangıcına veri türü doğrulamaları ekleyin. Açık bir hatayla işlemi durdurmak, aşağı akışta fark edilmeden yanlış sonuçlar üretmekten çok daha iyidir.
import pandas as pd
df = pd.DataFrame({'user_id': [1, 2, 3], 'score': [88.0, 92.0, 76.0]})
expected_dtypes = {'user_id': 'int64', 'score': 'float64'}
for col, expected in expected_dtypes.items():
actual = str(df[col].dtype)
assert actual == expected, (
f'Column {col}: expected {expected}, got {actual}'
)
print('All dtypes are correct')Hızlı Kontrol
Sütun veri türlerini inceleme konusundaki anlayışınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: df.dtypes her sütunun türünü gösterir, object veri türü dizeler ve karma türler için genel kapsayıcıdır ve df.info() tür ile boş değer kabul edilebilirliğine ilişkin eksiksiz bir genel bakış sunar. Sütunları tür ailesine göre filtrelemek için select_dtypes() kullanın ve üretimde şema değişikliklerini tespit etmek için veri türü doğrulamaları ekleyin. Sırada sütunları doğru veri türlerine astype() ile dönüştürmek var.
Sıkça Sorulan Sorular
“Sütun Veri Türlerini İnceleme” dersi ücretsiz mi?
Evet — “Sütun Veri Türlerini İnceleme” 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.
“Sütun Veri Türlerini İnceleme” dersinde ne öğreneceğim?
dtypes özniteliğini okuyun, int64 ile float64 ve object arasındaki farkı ayırt edin ve dönüştürülmesi gereken sütunları belirleyin. 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.
“Sütun Veri Türlerini İnceleme” 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
- Sütun Veri Türlerini İnceleme
- astype() ile Tür Dönüştürme
- Kategorik Veri Türü
- Tarihleri Doğru Ayrıştırma