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.