Giriş
Veriler sürekli olarak artmaktadır. Bu verilerin işlenmesi ve anlamlı hale getirilmesi için araçlara ihtiyaç vardır. Geleneksel programlama araçlarının bir çoğu bu verileri işlemek için gerekli özelliklere ve veri yapılarına sahip değildir. Bundan dolayı veri bilimi yapmak için bir araca/tool’a ihtiyaç vardır. Bu bölümde bu araçlardan olan Python diline özgü veri yapılarından en önemlisi olan Liste yapısı detaylı bir şekilde örneklerle açıklanmıştır.
3.1. Python’da Değişken Tanımlama
Bir Python değişkeni, sayısal ya da metinsel değerleri saklamak için bilgisayar belleğinde ayrılan konumu tanımlar. Başka bir deyişle, python programındaki bir değişken, işlenmesi için bilgisayara veri verir. Temelde sayısal ve metinsel olmak üzere iki tip veri vardır. Python’daki değişkenler, herhangi bir adla veya a, bb, abc gibi harflerle[9] bildirilebilir/tanımlanabilir (Şekil 3.1).
Bunun için sağdaki örnekleri inceleyelim. Python’da ilk olarak sayısal tipe atfen “s” adlı bir değişkeni tanımlayıp içeriğine sayısal bir değer aktarılmıştır. Daha sonra metinsel tipe atfen “m” adlı bir değişken tanımlayıp içeriğine metinsel bir değer aktarılmıştır. Metinsel ifadeler; ” ” çift tırnak içerisinde yazılır. Değişkenlere değer atama işlemi genelde sağdan sola doğru olup; atama işlemi için “=” işareti kullanılır.
Şekil 3.1. Değişken tanımlama
Yukarıdaki ekran görüntülerine dikkat edilirse bazı satırlar yeşil olarak gözükmektedir. Bu satırlar açıklama satırları olup program çalıştırılınca dikkate alınmaz. Python dilinde açıklama satırları # işareti kullanılarak oluşturulur. Buna göre yukarıdaki birinci ekranda sadece 3. satırda yer alan s=100 komutu; ikinci ekranda ise sadece 4. Satırda yer alan m=“Veri Bilimi” komutu değerlendirmeye alınır.
Belirtilen değişkenlere değerlerin atanması işleminin gerçekleşmesi için programın çalıştırılması (run) gerekir. Bunun için aşağıdaki ekranda gözüken Jupyter NoteBook ara yüzü üst kısmında bulunan ►işaretine basmak gerekir (Şekil 3.2).
Şekil 3.2. Yazılan programın çalıştırılması (run edilmesi)
Değişken değerlerinin ekranda görüntülenmesi ya da çıktı işlemi için print() fonksiyonu kullanılır. Parantez içerisine, ekrana yazdırılacak değişken adı girilir. Ya da değişken adları teker teker yazdırılıp çalıştırıldıktan sonra değişken değerleri ekrana yazdırılmış olur. Aşağıda verilen Şekil 3.3’teki ekran çıktısında; Şekil 3.1’de tanımlanmış olan “s” ve “m” değişkenleri her iki yöntem kullanılarak ekrana yazdırılmıştır.
Şekil 3.3. Değişkenlerin ekrana yazdırılması
3.1.1. Temel Sayısal Veri Tipleri
Temelde sayısal veri tipleri integer ve float olmak üzere iki kısma ayrılır. Integer veri tipi, virgül içermeyen sayıları ifade eder. Float veri tipi ise virgül içeren (ondalıklı) sayıları içerir. Aşağıdaki ekran çıktısında bu iki sayı tipine örnek verilmiştir (Şekil 3.4).
Şekil 3.4. Integer ve float veri tipi
3.2. Python’a Özgü Veri Yapıları
Python’da Liste, Tuple, Küme ve Sözlük olmak üzere dört farklı veri yapısı vardır[10]. Bu veri yapıları Python diline özgüdür. Bu yapılar Python ortamında farklı veri türlerini depolamada daha fazla esneklik ve daha hızlı işlem sağlar. Sonraki bölümlerde, bu veri yapılarının her birinin Python kullanılarak nasıl uygulanabileceğinin ayrıntıları verilmiştir.
3.2.1. Liste Veri Yapısı Oluşturma
Liste, sıralı bir öğe dizisidir. Ancak liste farklı veri türlerini içerebilir. Yani bir listedeki tüm öğelerin aynı türde olması gerekmez. Bu özelliği ile liste, Python’da en çok kullanılan veri yapılarından biri olup esnek bir yapıya sahiptir[11]. Listeler ile birden fazla numarayı, metni veya farklı veri tipini aynı değişken yapı içerisinde saklamak mümkündür. Liste [ ] köşeli parantez kullanılarak oluşturulur. Listelerde veriler [ ] içerisinde yer alır ve virgüllerle ayrılırlar. Aşağıdaki ekran görüntüsünde (Şekil 3.5) “ liste”1 adı ile oluşturulmuş bir liste örneği yer almaktadır.
Şekil 3.5 Liste oluşturma örneği
Python’da liste elemanlarına erişim indis değeri ile gerçekleşmektedir. Python’da indis değerleri 0’dan başlar. Erişilmek istenen indis değerine Liste_adı [indis_no] yazılarak erişim sağlanır. Benzer biçimde değişim istenen elemanın indis değeri girilir. Liste_adı [indis_no] =yeni_deger ve eşitlikten sonra yeni değer yazılır. Aşağıdaki ekran görüntüsünde (Şekil 3.6) ilk olarak listenin birinci elemanının (indis değeri=0) değeri ekrana yazdırılmıştır. Daha sonra bu değer yeni bir değer ile değiştirilmiştir.
Şekil 3.6. Liste elemanlarına erişim örneği
Liste uzunluğunu öğrenmek için Len() metodu kullanılır. Listeye eleman eklemek için .append( ) metodu kullanılır. Listeye eklenecek eleman .append(eklenecek_eleman) tırnak içerisine yazılır. Bu işlemlere ait örnekler aşağıdaki ekran görüntülerinde Şekil 3.7 ve Şekil 3.8’de sırası ile verilmiştir.
Şekil 3.7. Listenin uzunluğunu öğrenme
Şekil 3.8. Listeye yeni bir eleman ekleme
3.2.2. Liste İçerisine Başka Bir Liste Eklemek
Bu işlem için ilk olarak elemanları metin olan bir liste oluşturalım. Daha sonra bu listeyi, önceden oluşturduğumuz sayısal liste içerisine ekleyelim. Aşağıdaki şekilde (Şekil 3.9) yapılan işlemlerin ekran çıktısı gözükmektedir.
Şekil 3.9. Listeye farklı bir liste eklemek
3.2.3. Listenin Birden Çok Elemanına Erişmek
Birden çok elemana erişmek için “:” kullanılır. Ardışık elemanları yazmak için indisler [a:b] biçiminde yazılır. Bu yapıda Python, a ile başlayan fakat b-1 ile biten elemanları göstermektedir. Yani başka bir ifade ile belli aralıkta elemana erişmek istersek ilk harf başlangıç indisi, son harf ise erişilmek istenen elemanın indis değerinin bir fazlası olması gerekir.
Aşağıdaki örnekte (Şekil 3.10) görüldüğü üzere listenin ilk dört elemanına erişmek için, erişilmek istenen eleman sayısının bir üst değeri olarak indis değeri girilmesi gerekir
Şekil 3.10. Listenin birden çok elemanına erişmek
İşaretin başına [:] bir şey yazılmasa başlangıç değeri olarak “0” sıfır alınır. Yani [:b] ile [0:b] aynı anlama gelmektedir. Bu işlemin tersi de doğrudur. Yani [a:] yazıldığında liste elemanı a indisli değerden başlayıp listenin son elemanına kadar tümünü yazdırır. Bu ifadeler ekran görüntüsü Şekil 3.11’de verilen örneklerle açıklanmıştır.
Şekil 3.11. Başlangıç veya bitiş indisi belirtilmeden istenen sayıda elemana erişmek
Liste elemanlarını belli bir atlama aralığı ile yazdırmak mümkündür. Bu işlem için [a:b:k] formatı kullanılır. Burada k, liste elemanlarını yazdırırken atlanılacak aralık değerini belirtir (Şekil 3.12).
Şekil 3.12. Atlama aralığı ile liste elemanlarını yazdırmak
3.2.3. Liste Veri Yapısında Kullanılan Bazı Yararlı Metotlar
Bu bölümde liste veri yapısı ile kullanılan .index(), .pop(), .del(), .remove() ve .sorted() gibi bazı yararlı metotlarının kullanımı ile ilgili örnekler verilmiştir. Şimdi bu metotları sırası ile inceleyelim.
Listedeki bir elemanın hangi sırada olduğunu yani indis numarasını öğrenmek için .index() metodu kullanılır. Aşağıda Şekil 3.13’de verilen örnekte ilk olarak “adlar” adlı içeriği metinsel olan bir liste oluşturulmuştur. Daha sonra bu listede yer alana “Hasan” adlı ismin listedeki indis numarası ekrana yazdırılmıştır.
Şekil 3.13. Listedeki bir elemanın indis numarasını bulmak
Listede yer alan belli bir sıradaki elemanı silmek için .pop() metodu kullanılır. Silinecek elemanın indis değeri parantez içerisine yazılır. Aşağıda Şekil 3.14’te verilen örnekte indis değeri girilen eleman listeden silinmiştir.
Şekil 3.14. Listede indis numarası girilen elemanı silmek
Listedeki belli bir sıradaki elemanı silmek için ikinci bir metot olarak del() metodu kullanılır. Ancak bunun kullanımı .pop() metodundan biraz farklıdır. Benzer bir işlemi .remove() metodu ile de yapmak mümkündür.
Aşağıda Şekil 3.15’te verilen örnekte ilk olarak “final” adlı bir liste oluşturulmuştur. Daha sonra bu listeden indis değeri 2 olan eleman del() komutu yardımıyla silinmiştir. İkinci örnek ise aynı listeden değeri 77 olan eleman bu sefer .remove() metodu kullanılarak silinmiştir. Sonuçlar sırası ile ekrana yazdırılmıştır.
Şekil 3.15. Listeden del() ve .remove() metodu ile eleman silmek
Listede yer alan elemanları sıralamak için .sorted() metodu kullanılır. Sıralama işlemi büyükten küçüğe yapmak için reverse=TRUE argümanı yazılması gerekir. Listedeki elemanları tersten yazdırma için ise .reverse() metodu kullanılır.
Aşağıda Şekil 3.16’da verilen örnekte ilk olarak “sıcaklık_değerleri” adlı bir liste oluşturulmuştur. Daha sonra bu listenin elemanları küçükten büyüğe sıralanmıştır. İkinci örnek sıralama işlemi reverse=TRUE argümanı kullanılarak büyükten küçüğe doğru gerçekleştirilmiştir. Üçüncü örnekte ise liste elemanları .reverse() metodu kullanılarak ters çevrilmiştir. Yapılan işlemlerin sonuçları sırası ile ekrana yazdırılmıştır.
Şekil 3.16. Liste elemanlarını sıralama ve ters çevirme
Bölüm Özeti
Bu bölümde ilk olarak Python diline ait temel veri tipleri ve değişkenleri hakkında bilgi verilmiş ve Jupyter Notebook geliştirme ara yüzünde bu veri tipleri için yapılan örneklerin ekran görüntüleri sunulmuştur.
Ayrıca Python diline özgü yapılarından Liste veri yapısı hakkında genel bilgi verildikten sonra Liste’ye ait özelliklerle ile ilgili birçok örnek yapılarak konunun anlaşılması sağlanmaya çalışılmıştır. Her örneğe ait ekran görüntüleri ayrıca verilmiştir.
Kaynakça
Atıl Samancıoğlu, “Python Sıfırdan Uzmanlığa Programlama”, UniKod, 1. Baskı, 2020
İlker Arslan “Python ile Veri Bilimi”, Pusula, 2. Baskı, 2019
WEB: https://www.w3schools.com/python/python_lists.asp
WEB: https://www.tutorialsteacher.com/python/python-data-types
İleri okuma için önerilen kaynaklar:
1. Kodlamaya Yeni Başlayanlar için Python Programlama Dili, Dr. Öğr. Üyesi Fatih Çağatay Baz, Karahan Kitabevi
2. Yeni Başlayanlar için Python, Ahmet Aksoy,Abaküs Kitap
3. Python ile Makine Öğrenmesi, Doç. Dr. Engin Sorhun, Abaküs Kitap
Comments