Data Manipulation

Pandas Veri Çerçevelerini Etkin Şekilde Karıştırma

Spread the love

Pandas DataFrame’lerinde satırları rastgele karıştırmak, veri biliminde sıkça kullanılan ve eğitim ve test veri kümeleri oluşturma, rastgele örnekleme veya analize yönelik verileri rastgeleleştirme gibi görevler için çok önemli bir işlemdir. Bu makale, bunu başarmak için üç verimli yöntemi inceleyerek güçlü ve zayıf yönlerini vurgular.

İçerik Tablosu

Pandas sample() Metodu

Pandas sample() metodu, DataFrame satırlarını karıştırmak için kullanıcı dostu bir yaklaşım sunar. frac parametresini 1 olarak ayarlayarak, orijinal DataFrame’in tamamen rastgele sıralanmış bir halini elde edersiniz.


import pandas as pd

# Örnek DataFrame
data = {'col1': [1, 2, 3, 4, 5], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# sample() kullanarak karıştırma
shuffled_df = df.sample(frac=1, random_state=42)  # random_state tekrarlanabilirlik için

print("Orijinal DataFrame:n", df)
print("nKarıştırılmış DataFrame:n", shuffled_df)

random_state argümanı, tekrarlanabilirlik için çok önemlidir. Bir tamsayı belirtmek, birden fazla çalıştırmada tutarlı karıştırmayı sağlar. Yoksa her seferinde farklı karışımlar elde edilir.

NumPy permutation() Fonksiyonu

NumPy’nin permutation() fonksiyonu, indekslerin rastgele bir permütasyonunu oluşturur. Bu yaklaşım, özellikle büyük DataFrame’ler için sample()‘dan genellikle daha hızlıdır, çünkü daha verimli olan NumPy dizileri üzerinde doğrudan çalışır.


import pandas as pd
import numpy as np

# Örnek DataFrame
data = {'col1': [1, 2, 3, 4, 5], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# numpy.random.permutation() kullanarak karıştırma
shuffled_indices = np.random.permutation(len(df))
shuffled_df = df.iloc[shuffled_indices]

print("Orijinal DataFrame:n", df)
print("nKarıştırılmış DataFrame:n", shuffled_df)

Tekrarlanabilir sonuçlar için, np.random.permutation() çağrısından önce np.random.seed(42) kullanın.

Scikit-learn shuffle() Fonksiyonu

Scikit-learn’ün shuffle() fonksiyonu, bir DataFrame’i ilgili bir diziyle (örneğin, denetimli öğrenme ortamında etiketler) birlikte karıştırırken özellikle faydalıdır. DataFrame ve dizinin karıştırmadan sonra senkronize kalmasını sağlar.


import pandas as pd
from sklearn.utils import shuffle

# Örnek DataFrame
data = {'col1': [1, 2, 3, 4, 5], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# DataFrame ve ayrı bir diziyi karıştırma (gerekirse)
shuffled_df, _ = shuffle(df, random_state=42)  # alt çizgi ikinci dönüş değerini yok sayar

print("Orijinal DataFrame:n", df)
print("nKarıştırılmış DataFrame:n", shuffled_df)

Önceki yöntemler gibi, random_state tekrarlanabilirliği kontrol eder. Alt çizgi _, ikinci dönüş değerini (bir dizi verilmiş olsaydı karıştırılmış bir dizi olurdu) atar.

Sonuç: Her yöntem DataFrame satırlarını etkili bir şekilde karıştırır. Pandas sample() en sezgisel olanıdır, oysa NumPy’nin permutation()‘ı daha büyük veri kümeleri için genellikle daha iyi performans sunar. Scikit-learn’ün shuffle()‘ı, bir DataFrame ve karşılık gelen bir dizinin eş zamanlı karıştırılması için idealdir. İhtiyaçlarınıza en uygun yöntemi seçin ve tekrarlanabilir sonuçlar için her zaman random_state kullanın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir