Pandas, sayısal veriler içeren DataFrame’ler ile sıkça kullanılan güçlü bir Python veri manipülasyon kütüphanesidir. Yaygın bir görev, kayan noktalı sayı (float) sütunlarını tam sayılara dönüştürmeyi içerir. Bu makale, Pandas DataFrame’inde bu dönüşüm için verimli yöntemleri ayrıntılarıyla açıklayarak güçlü ve zayıf yönlerini vurgular.
İçerik Tablosu
- Float’tan Int’a Dönüşüm için
astype(int)
Kullanımı - Esnek Dönüşüm için
pd.to_numeric()
‘ten Faydalanma - Hata İşleme ve Gelişmiş Yuvarlama
Float’tan Int’a Dönüşüm için astype(int)
Kullanımı
astype(int)
yöntemi, Pandas’ta tür dönüşümü için basit bir yaklaşım sağlar. Bir sütunun veri türünü doğrudan bir tam sayıya dönüştürür. Bununla birlikte, davranışını anlamak çok önemlidir: ondalık kısmı keser, etkili bir şekilde bir taban işlemi gerçekleştirir. Bu, kesirli bileşeni her zaman aşağı yuvarlayarak atar.
Örnek:
import pandas as pd
data = {'col1': [1.5, 2.7, 3.2, 4.9, 5.1]}
df = pd.DataFrame(data)
df['col1_int'] = df['col1'].astype(int)
print(df)
Çıktı:
col1 col1_int
0 1.5 1
1 2.7 2
2 3.2 3
3 4.9 4
4 5.1 5
Bu yöntemin basitliği avantajıdır, ancak esnek olmayan yuvarlama davranışı, diğer yuvarlama stratejilerine ihtiyaç duyulduğunda uygulanabilirliğini sınırlar.
Esnek Dönüşüm için pd.to_numeric()
‘ten Faydalanma
pd.to_numeric()
daha fazla kontrol ve esneklik sunar. Birincil olarak çeşitli veri türlerini sayısal formatlara dönüştürmek için tasarlanmış olsa da, özellikle yuvarlama fonksiyonlarıyla birleştirildiğinde, float’tan int’e dönüşümler için oldukça etkilidir.
Yuvarlama ile Örnek:
import pandas as pd
import numpy as np
data = {'col1': [1.5, 2.7, 3.2, 4.9, 5.1, np.nan]}
df = pd.DataFrame(data)
df['col1_int'] = pd.to_numeric(df['col1'], errors='coerce').round().astype(int)
print(df)
Çıktı:
col1 col1_int
0 1.5 2
1 2.7 3
2 3.2 3
3 4.9 5
4 5.1 5
5 NaN NaN
Burada, errors='coerce'
, sayısal olmayan değerleri NaN
‘ye dönüştürerek zarif bir şekilde işler. round()
, son astype(int)
dönüşümünden önce en yakın tam sayıya yuvarlar.
Hata İşleme ve Gelişmiş Yuvarlama
Yuvarlama üzerinde daha hassas kontrol için NumPy fonksiyonlarını kullanın:
np.floor()
: En yakın tam sayıya aşağı yuvarlar.np.ceil()
: En yakın tam sayıya yukarı yuvarlar.
pd.to_numeric()
içindeki errors
parametresini kullanarak olası hataları (sayısal olmayan değerler gibi) işlemeyi unutmayın. 'coerce'
seçimi, sorunlu değerleri NaN
ile değiştirir ve hataları önler. Alternatif olarak, 'raise'
bir istisna oluşturacak ve 'ignore'
sayısal olmayan değerleri olduğu gibi bırakacaktır.