• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Pandas DataFrame NumPy dizisine çevrilirken veri türleri nasıl korunur?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 0
  • Etiketler Etiketler
    veri bilimi

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
Bir pandas DataFrame’i NumPy dizisine çevirirken tek bir dtype seçilir; bu nedenle veri türleri ancak bütün sütunlar ortak bir NumPy türünde birleşebiliyorsa aynen korunur. Sayısal sütunlar için df.to_numpy(dtype=...) kullanılabilir, ancak metin, sayı ve tarih gibi farklı türler birlikteyse sonuç çoğunlukla object olur. Sütunların ayrı veri türlerini kaybetmeden korumak istiyorsanız tek bir normal NumPy dizisi yerine sütunları ayrı ayrı dönüştürmeniz veya yapılandırılmış dizi kullanmanız gerekir.

Önce DataFrame türlerini kontrol edin​


Dönüşümden önce her sütunun pandas türünü ve elde edilen NumPy türünü ayrı ayrı kontrol edin. DataFrame.dtypes sütun bazındaki türleri, to_numpy().dtype ise tek parça dizinin ortak türünü gösterir.

Python:
import pandas as pd

df = pd.DataFrame({
    "adet": pd.Series([1, 2, 3], dtype="int64"),
    "fiyat": pd.Series([10.5, 20.0, 7.25], dtype="float64")
})

print(df.dtypes)
print(df.to_numpy().dtype)

Bu örnekte adet ve fiyat sütunları sayısal olduğu için NumPy, ortak tür olarak genellikle float64 seçer. Tamsayı sütunundaki değerler bu işlemle küsuratlı görünse de sayısal bilgi kaybolmaz; ancak sütunun özgün int64 türü tek başına korunmuş olmaz.

Ortak bir veri türüne güvenli biçimde dönüştürme​


DataFrame’in bütün sütunları aynı tür ailesindeyse hedef türü açıkça belirlemek sonucu öngörülebilir kılar. Örneğin yalnızca tamsayı verileri içeren bir DataFrame’i int64 olarak alabilirsiniz:
  1. DataFrame’in sütun türlerini doğrulayın. df.dtypes çıktısında dönüştürülemeyecek metin, eksik değer veya farklı tür bulunmadığından emin olun.
  2. Hedef NumPy türünü belirtin. arr = df.to_numpy(dtype="int64") ifadesi bütün değerleri bu türe dönüştürmeyi ister; kayıpsız dönüşüm garantisi vermez. Örneğin kesirli kayan noktalı değerler tamsayıya çevrilirken kesirleri atılabilir. Hedef türü seçmeden önce değerlerin aralıklarını, kesir içerip içermediğini ve eksikliği doğrulayın.
  3. Sonucu kontrol edin. arr.dtype değerinin int64, arr.shape değerinin ise DataFrame’in satır ve sütun sayısıyla eşleştiğini doğrulayın.
Örnek:

Python:
df = pd.DataFrame({
    "x": [1, 2, 3],
    "y": [4, 5, 6]
})

arr = df.to_numpy(dtype="int64")

print(arr)
print(arr.dtype)
print(arr.shape)

Beklenen çıktı aşağıdaki yapıdadır:

Kod:
[[1 4]
 [2 5]
 [3 6]]
int64
(3, 2)

Buradaki int64, dizideki tüm değerlerin ortak veri türünü gösterir. Bu çıktı, DataFrame’de her sütunun bağımsız tür bilgisinin saklandığı anlamına gelmez.

Farklı sütun türleri birlikteyse ne olur?​


Normal NumPy dizileri tek bir dtype taşır. Bu nedenle sütun türleri farklı olduğunda NumPy ortak bir tür seçer veya değerleri object olarak saklar.
DataFrame içeriğiOlası dizi türüSonuç
Yalnızca tamsayılarint64Tür ortak biçimde korunabilir.
Tamsayı ve ondalıklı sayıfloat64Tamsayılar ortak ondalıklı türe yükseltilebilir.
Sayı ve metinobject veya metin türüTek dizide özgün sütun türlerini ayrı ayrı korumak mümkün değildir.
Tarih ve sayıobject veya ortak dönüştürülmüş türTarih sütununun türünü ayrıca doğrulamak gerekir.
Örneğin:

Python:
df = pd.DataFrame({
    "adet": [1, 2],
    "etiket": ["A", "B"]
})

arr = df.to_numpy()

print(arr)
print(arr.dtype)

Bu durumda sonuç benzeri bir yapı elde edilir:

Kod:
[[1 'A']
 [2 'B']]
object

object sonucu, değerlerin Python nesneleri olarak tutulabildiğini gösterir; fakat her sütunun pandas türünün ayrıntılı biçimde korunduğunu kanıtlamaz. Özellikle sayısal hesaplama yapacaksanız bu diziyi doğrudan kullanmak yerine ilgili sütunu ayrı alın.

Sütun türlerini gerçekten ayrı ayrı koruma​


Her sütunun türünü korumak için en güvenilir yaklaşım sütunları ayrı NumPy dizilerine dönüştürmektir:

Python:
df = pd.DataFrame({
    "adet": pd.Series([1, 2, 3], dtype="int64"),
    "fiyat": pd.Series([10.5, 20.0, 7.25], dtype="float64"),
    "etiket": pd.Series(["A", "B", "C"], dtype="string")
})

adet = df["adet"].to_numpy()
fiyat = df["fiyat"].to_numpy()
etiket = df["etiket"].to_numpy()

print(adet.dtype)
print(fiyat.dtype)
print(etiket.dtype)

Böylece her dizi kendi NumPy dtype değerini taşır; fakat pandas’ın genişletilmiş tür bilgisi her zaman aynen korunmaz. Örneğin string sütunu bu dönüşümde object dizisi verebilir; nullable tamsayıların eksiklik gösterimi de değişebilir. Sütunları ayrı dönüştürmek ortak türe zorlamayı önler, ancak her sonucun dtype değerini ve eksik değer gösterimini yine kontrol edin.

Eğer tek bir NumPy nesnesi içinde alan adlarını ve farklı alan türlerini korumanız gerekiyorsa yapılandırılmış dizi kullanılabilir; ancak bu yapı normal iki boyutlu dizi gibi davranmaz ve alanlara isimleriyle erişilir. Çoğu uygulamada sütunları ayrı diziler olarak saklamak daha anlaşılırdır.

Eksik değerleri dönüşümden önce değerlendirin​


Eksik değerler tür seçimini değiştirebilir. Örneğin tamsayı sütununa NaN eklenmesi, klasik NumPy tamsayı dizisiyle uyumsuz olabilir; pandas bu durumda genişletilmiş tamsayı türü veya kayan nokta türü kullanabilir. Bu yüzden dönüşümden önce şu kontrolleri yapın:

Python:
print(df.dtypes)
print(df.isna().sum())
print(df.to_numpy().dtype)

Amaç kesin olarak int64 almaksa eksik değerleri nasıl ele alacağınızı önce belirleyin: eksik satırları kaldırmak, geçerli bir varsayılan değer atamak veya eksikliği destekleyen uygun bir tür kullanmak. Eksik değerleri rastgele sıfırla doldurmak, veri anlamını değiştirebilir.

Hangi yöntemi seçmelisiniz?​


Tek tip sayısal veriyle çalışıyorsanız to_numpy(dtype="float64") veya to_numpy(dtype="int64") kullanın ve dönüşümden sonra dtype ile şekli kontrol edin. Sütunlar farklı türlerdeyse tek bir iki boyutlu dizide türleri bağımsız biçimde koruyamazsınız; sütunları ayrı ayrı to_numpy() ile alın. object sonucu oluştuğunda bunu başarı göstergesi saymayın; beklenen hesaplamaları yapabilmek için gerçek sütun türlerini ve eksik değerleri ayrıca doğrulayın.
 

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic
Geri
Üst