Pandalar Kategorik Değerleri Int Değerlerine Dönüştürür

Pandalar Kategorik Degerleri Int Degerlerine Donusturur



Makine öğrenimi yürütmesi için veri kümeleri hem sayısal hem de kategorik değişkenleri içerir. Kategorik değişkenler, insanların kolayca anlayabileceği dize tipi verilerdir. Makineler ise kategorik girdileri doğrudan anlayamaz. Sonuç olarak, kategorik içerik, makinelerin yorumlayabileceği sayısal değerlere dönüştürülmelidir.

Kategoriyi Int'ye Dönüştürme Yöntemleri

Bir DataFrame'in kategorik değerlerini int değerlerine dönüştürmek için 'pandalarda' mevcut olan teknikler burada verilmiştir:

    • DataFrame.replace() yöntemi
    • DataFrame.apply(factorize()) yöntemi

Bu yazımızda bu yöntemlerden yararlanacağız ve her iki yöntemin de “pandalarda” nasıl kullanılacağını detaylı olarak anlatacağız.







Örnek 1: Pandas Replace() Yöntemini Kullanma

Bir DataFrame'deki kategorik değerler, pandaların “DataFrame.replace()” yöntemi kullanılarak int'ye dönüştürülebilir. Burada bu yöntemi kullanmayı öğreneceğiz.



Bu tekniği Python'da en iyi şekilde yürütmek için “Spyder” aracını kullandık. Komut dosyasını yazmaya başlamak için “Spyder” aracında yeni bir Python dosyası açın. Komut dosyasını yazmak için en önemli gereksinim, uygun kitaplıkları içe aktarmaktır. Bir “pandas” yöntemi uygulamamız gerektiğinden, “pandaların” özelliklerine erişmek için “pandaları pd olarak içe aktar” a sahip olacağız. Ardından çekirdek Python kodumuza başlıyoruz. “pd.DataFrame()” yöntemini kullanarak bir DataFrame oluşturduk. DataFrame, “Ad”, “Derece” ve “Gelir” olmak üzere üç sütunla başlatılır. DataFrame'in tüm sütunları aynı uzunluktaki değerleri depolar.



İlk sütun olan “Ad”, “bush”, “albert”, “harry”, “peter”, “emma”, “newton”, “smith” ve “elsa” olmak üzere sekiz değere sahiptir. İkinci sütun olan “Derece”, “BS”, “MS”, “MS”, “BS”, “BS”, “BS”, “MS” ve “MS” olmak üzere sekiz kategorik değeri de saklar. Son 'Gelir' sütunu, '60000', '80000', '75000', '45000', '56000', '65000', '55000' ve '70000' sekiz tamsayı değerine sahiptir. “pd.DataFrame()” işlevini çağırmanın çıktısını depolamak için bir DataFrame nesnesi “personel” yarattık. İlk DataFrame'imizi görüntülemek için, komut dosyasının son satırında parametresi olarak DataFrame'in adı 'personel' olan 'print()' yöntemini kullandık.






Çıktıyı terminalde görüntülemek için “Spyder” aracındaki “Dosyayı Çalıştır” düğmesini kullanın veya “Shift+Enter” tuşlarına basın. Terminalde görüntülenen çıktı, başarıyla oluşturulmuş üç sütunlu bir DataFrame gösterir.


Artık DataFrame'imiz oluşturuldu, ona gerekli tekniği uygulamamız gerekiyor. Pandaların “DataFrame.replace()” yöntemi, belirtilen bir sütunun kategorik değerlerini tamsayı değerlere dönüştürmek için kullanılacak ve böylece makineler bunları okunabilir hale getirecektir.



DataFrame'in adını, değerlerini değiştirmemiz gereken belirli bir sütun adıyla sağladık, 'personel['derece']'. Kategorik değerleri olan “Derece” sütununun değerlerinin tamsayı değerlerle değiştirilmesini istiyoruz. Ardından “.replace()” yöntemi çağrılır. İki kümeye geçtik; ilki, 'Derece' sütunundan çıkardığımız iki kategorik '['BS', 'MS']' değerini içerir. Gördüğünüz gibi, “Derece” sütunu bu iki değeri tekrar tekrar kullanır. Eğer üçüncü bir değerimiz olsaydı onu da belirtmiş olmalıyız. İkinci set, sırasıyla ilk set değerlerinin yerini alacak olan iki “[0, 1]” int değerine sahiptir. Diğer parametre olan “inplace” ise “True” olarak ayarlanarak değerlerin değiştirilmesini sağlar. “Yanlış” olarak ayarlanırsa, değiştirmeyi devre dışı bırakır. Son olarak, güncellenmiş “personel” DataFrame'i görüntülemek için “print()” yöntemini kullandık.


Elde edilen DataFrame, 'Derece' sütununda tamsayı değerlerine sahiptir. “BS” değeri “0s” ile değiştirilir ve “MS” “1s” ile değiştirilir.


Hatta “dataframe.dtype” özelliğini kullanarak her sütun için veri tipini doğrulayabilirsiniz. Bu bize, belirtilen DataFrame'deki tüm sütunların veri türlerini verecektir.


Burada DataFrame'imizin veri tiplerini aldık. “Derece” sütununun veri tipinin “int64” olarak değiştirildiğini görebiliriz.

Örnek # 2: Pandas Apply() yöntemini kullanma

Pandaların bize sağladığı diğer yöntem ise kategorik değerleri tamsayılara dönüştürmek için “DataFrame.apply()” işlevidir. Önceki örnekte, bir kategorik sütunu bir tam sayıya dönüştürmeyi öğrendik. Şimdi DataFrame'deki tüm kategorik sütunları bir int'ye nasıl dönüştüreceğimizi göreceğiz.

Pratik uygulama ile başlayarak, bu yöntem için gerekli olan kütüphaneyi, yani pandaları içe aktarmalıyız. Pandaları 'pd' kullanarak panda modüllerine erişmemizi sağlayacak olan 'Spyder' aracındaki Python dosyamıza pandaları içe aktarmak için 'pandaları pd olarak içe aktar' komut dosyasını kullandık. Bir DataFrame oluşturmak için “pd.DataFrame()” fonksiyonunu kullandık.

Bu DataFrame'de 'grup', 'konum', 'skorlar' ve 'yardım' olmak üzere dört sütun bulunur. Her sütun 9 değeri saklar. 'Grup' sütun değerleri 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' ve 'Y' dir. “Konum” sütununda “A”, “C”, “D”, “A”, “C”, “B”, “B”, “D” ve “B” olmak üzere 9 değer bulunur. “Skorlar” sütununda “4”, “8”, “7”, “10”, “9”, “5”, “7”, “3” ve “23” tamsayı değerleri vardır. Son sütun olan “yardım”, “10”, “2”, “3”, “9”, “3”, “7”, “4”, “2” ve “9” değerlerine sahiptir.

Bir DataFrame nesnesi 'prog' oluşturduk ve ona 'pd.DataFrame()' yöntemini çağırmanın çıktısını atadık. Böylece, “pd.DataFrame()”den üretilen elde edilen DataFrame çerçevesi “prog”da saklanacaktır. Artık bu nesneyi kullanarak DataFrame'e erişebiliriz. Bu DataFrame'i görüntülemek için, parametresi olarak DataFrame nesnesi 'prog' ile 'print()' yöntemini kullandık.


Önceki Python programı çalıştırıldığında, terminalde dört sütunlu bir DataFrame görüntülenecektir.


Birden çok kategorik sütunu tam sayılara dönüştürmek için bu tekniği izledik. Öncelikle pandaların “DataFrame.select_dtypes().columns” yöntemini kullanarak nesne veri tipini içeren tüm sütunları seçmeliyiz. Komut dosyamızda gerektiği gibi kullandığımızda “prog.select_dtypes([‘object’]).columns” olacaktır. “Prog” DataFrame'de “nesne” veri tipine sahip tüm sütunları seçecektir. Bu metodun çıktısını saklamak için bir “concate_col” değişkeni yarattık. Artık bu 'concat_col' değişkenini kullanarak 'nesne' veri türü sütunlarına erişebiliriz.

Şimdi bu sütunları tam sayılara dönüştürmek için “DataFrame.apply()” pandalarını “pd.factorize()” yöntemiyle kullandık. DataFrame adıyla “concat_col” değişkenini kullandık ve ardından “.apply()” yöntemi çağrıldı. “.apply” yönteminin parantezleri arasında “pd.factorize()” yöntemini çağırdık; burada “x”, “object” veri tipi ile “prog” DataFrame'den herhangi bir değer olabilir. Böylece, bu kod satırının tamamı “prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])” şeklinde yazılır. Factorize yöntemi ile bir değer alacaktır. bir 'nesne' veri türü ve onu 'int' e dönüştürün. Son çıktı, parametresi olarak “prog” değişkeni geçirilerek “print()” işlevi çağrılarak görüntülenebilir.


Güncellenen DataFrame'de 'grup' ve 'pozisyon' sütunlarının değerlerinin başlangıçta kategorik, yani nesne olduğunu gözlemleyebiliriz. Yine güncellenmiş çıktı DataFrame'de, her iki sütunun da tamsayı değerleri vardır. “Grup” sütununda “X”, “0” ve “Y”, “1” ile değiştirilir. Oysa “konum” sütunu “A” “0”, “C” “1”, “D” “2” ve “B” “3” ile değiştirilmiştir.


Şimdi güncellenmiş veri türlerini doğrulayalım.


Aşağıdaki sütunların tümü “int64” veri türüne sahiptir.

Çözüm

Kılavuzumuz, nesne veri türü makineler tarafından işlenemediği için makineler tarafından anlaşılabilir hale getirilmeleri için kategorik değerleri sayısal değerlere dönüştürmek etrafında döner. Gerekli veri tipini elde etmek için sizi 'pandalar' kütüphanesinin sunduğu iki yaklaşımla tanıştırdık. Ayrıca “Spyder” aracında çalıştırılan örnek kodların pratik uygulaması ile her örneğin sonucunu paylaştık. Son olarak, istenen sonuca ulaşmak için her adımı detaylandırdık.