Veri Bilimi için Pandas Kütüphanesi

Hüseyin Şahin
9 min readMay 2, 2021

--

Merhabalar herkese, bugün veri manipülasyonu için kullanılan Pandas’ın ne olduğundan bahsedip, neler yapılabildiğine değindikten sonra genel özelliklerden de söz ederek, görsellerle destekleyip anlaşılır bir şekilde anlatmaya çalışacağım.

Panel Data ifadesinin kısaltması olan Pandas; veri manipülasyonu ve analizi için yazılmış açık kaynak kodlu bir Python kütüphanesidir. Numpy kütüphanesinin özeliklerini kullanılır; farklı olarak yapısal veri setleriyle daha esnek bir çalışma imkanı sağlar. Pandas kütüphanesi, R DataFrame yapısını Python dünyasına taşıyarak DataFrame’ler üzerinde hızlı ve etkili çalışabilme imkanı sunar. Aynı zamanda birçok farklı veri tipini yazma ve okuma imkanı sağlar.

Bu yazıdaki mevcut kodları Google Colab üzerinde yazdım, isterseniz sizde yazımdaki kodların tamamını Google Colab, JupyterLab veya Jupyter Notebook üzerinde çalıştırabilir, kendinize göre notlar alabilirsiniz. Şimdi Pandas kütüphanemizi import ederek yavaş yavaş başlayalım.

Pandas kütüphanesinin import edilmesi

Pandas Serisi Oluşturma (Creating Pandas Series)

Pandas serilerini tek boyutlu bir array olarak düşünebiliriz ancak Numpy arraylerinden farklı olarak bir de index bilgilerini de tutmaktadır. Yandaki görselde Pandas serisinin temsili gösterilmektedir. Sol tarafta index bilgileri yer alırken sağ tarafta ise değerin kendisi bulunmaktadır.

Liste Üzerinden Seri Oluşturma

Aşağıda bir liste yardımıyla nasıl Pandas serinin oluşturulduğunu görebilirsiniz.

Daha sonrasında ise oluşturduğumuz serinin türünü gözlemleyebilmek için type fonksiyonunu kullanabiliriz.

Oluşturduğumuz serinin index bilgilerine ise axes fonksiyonu ile erişim sağlayabilmekteyiz. Aşağıdaki görselden de anlaşılacağı üzere serinin index numarası 0'dan başlayıp 3'e kadar 1'er 1'er artmaktadır.

Eğer oluşturduğumuz serinin index numaralarını kendimiz vermek yada değiştirmek istersek aşağıdaki gibi gerçekleştirebiliriz.

Not : İndex bilgilerimizi sadece rakamla değil aynı zamanda karakterlerden de oluşturabiliriz.

Sözlük Üzerinden Seri Oluşturma

Aşağıda bir sözlük yardımıyla nasıl Pandas serinin oluşturulduğunu görebilirsiniz.

Not : Aynı zamanda iki seriyi concat fonksiyonu birleştirerekte yeni bir seri meydana getirebiliriz.

Pandas DataFrame Oluşturma

DataFrameler, satırlar ve sütunlardan oluşan 2 boyutlu yapılardır. Farklı türlerdeki verileri(int, string) depolayabilir. Bir elektronik tabloya veya SQL tablosuna benzer. Aşağıda görselle birlikte dediğimi daha net bir şekilde anlayabilirsiniz.

Temsili Pandas DataFrame

Pandas DataFrame oluştururken ilk argümanımız oluşturacağımız veri, ikinci argüman ise isimlendirmedir.

Pandas DataFrame örneği

Daha sonrasında ise oluşturduğumuz DataFrame’in türünü gözlemleyebilmek için type fonksiyonunu kullanabiliriz.

Oluşturduğumuz DataFrame’in değişken adını yani sütun isimlendirmesini aşağıdaki şekilde kolayca değiştirebiliriz.

DataFrame Eleman İşlemleri (DataFrame Element Operations)

Elimizde Numpy kütüphanesi yardımıyla oluşturduğumuz 3 listeyi içeren bir sözlüğümüz olsun. Sözlüğümüzü parametre olarak verip aşağıdaki şekilde bir DataFrame oluşturabiliriz.

Aşağıda satırlar arasında dilimleme (slicing) örneği yer almaktadır. 1 numaralı index’ten 3 numaralı indexe kadar olan satırlar gösterilmektedir.

Örneğin 1 numaralı indexi yani satırı DataFrame’den silmek istersek drop fonksiyonunu kullanmalıyız. Burada ilk argüman, silmek istediğimiz satır veya sütunun etiketi, ikinci argüman satır için 0 sütun için 1'dir. Son argüman ise DataFrame üzerinde gerçekleşen silme işleminin kalıcı olması için inplace değişkenine True atanmaktadır.

Tablo Verileri Okumak (Read Tabular Data)

Pandas kütüphanesi ile csv, txt veya xlsx uzantılarına sahip veri setlerini okuyabilir, üzerinde gerekli işlemleri ve analizleri gerçekleştirebiliriz. read_csv fonksiyonu ile csv ve txt uzantılarına sahip veri setlerimizi okuyabiliriz.

Not : read_excel fonksiyonunu kullanarak da excel dosyalarını okuyabilirsiniz.

Aşağıda görüleceği üzere veri setinin bulunduğunu URL’yi yada yada bulunduğu dizini vermeniz yeterli olacaktır. Veri setimiz sample_data isimli bir klasör içerisinde yer almaktadır.

Veri kümesi, belirli bir California bölgesinde bulunan evler ve 1990 nüfus sayımı verilerine dayalı olarak bunlarla ilgili bazı özet istatistikler içermektedir.

Veri kümesini indirmek veya daha fazla bilgi almak için california_housing_train adresini kullanabilirsiniz. colifornia_housing_train veri seri görüleceği üzere 17000 veriden meydana gelmektedir.

.head() Kullanarak Görüntüleme (Display Using .head())

Veri setleri genellikle binlerce verilerden meydana gelmektedir. Elimize bir veri seti geçtiğinde ilk olarak kısa bir çıkarım yapabilmek için veri setinin tamamını değilde belli bir kısmını görmemiz yeterli olacaktır. Bunun için head() fonksiyonunu kullanarak veri kümesinin ilk 5 satırını gözlemleyebiliriz.

head() fonksiyonunu kullanarak veri setini görüntüleme

Dilerseniz head() fonksiyonuna argüman vererek istediğiniz sayıda veri gözlemleyebilirsiniz. Aşağıdaki örnekte argüman olarak 3 verilmiştir.

.tail() Kullanarak Görüntüleme (Display Using .tail())

Bazende veri setlerinin sadece son verilerini inceleme ihtiyacağımız olabilmektedir. Bunun için ise tail() fonksiyonunu kullanarak veri kümesinin son 5 satırını gözlemleyebiliriz.

tail() fonksiyonunu kullanarak veri setini görüntüleme

Head fonksiyonunda olduğu gibi dilerseniz de tail() fonksiyonuna argüman vererek istediğiniz sayıda veri gözlemleyebilirsiniz.

Sütunları Görüntülemek(Display Columns)

Veri setimizin hangi sütunlara yani değişkenlere sahip olduğunu görüntülemek için pandas.DataFrame’in columns özelliğinden faydalanabiliriz. Aşağıda veri setinin hangi değişkenlere bir başka deyişle ise DataFrame’in hangi sütun etiketlerine sahip olduğunu görebilirsiniz.

pandas.DataFrame.columns özelliğinin kullanılması

Veri Türlerinin Kontrol Edilmesi (Check Data Types)

Veri kümesinde yer alan değişkenlerinin hangi türlerden meydana geldiğini gözlemlemek veya kontrol etmek için pandas.DataFrame’in dtypes özelliğinden faydalanabiliriz. Keşifsel Veri Analizi için oldukça önemlidir.

pandas.DataFrame.dtypes özelliğinin kullanılması

Yeni Sütun Oluşturma (Create New Column)

Veri kümelerinde yer alan mevcut sütunlar yani değişkenler bazen ihtiyacımıza tam olarak hizmet etmezler. Bu tarz durumlarda DataFrame üzerinde yeni bir sütun oluşturma gereksinimi doğabilmektedir. Aşağıdaki görselden yeni sütun oluşturmanın temsili bir gösterimine bakabilirsiniz.

DataFrame yeni bir sütun oluşturma

Öznitelik Mühendisliği’nde Önemli (Important in Feature Engineering)

  • Yeni sütun ekleme
  • Sütunu yeniden adlandırma
  • Mevcut sütun(lar)dan türetme

Örneğin elimizdeki mevcut veri kümesinden oluşan DataFrame’e oda başına düşen yatak odası sütununu eklemek isteyelim.

Yukarıda da görüldüğü üzere toplam oda sayısını, toplam yatak odası sayısına bölerek gerçekleştirebiliriz.

DataFrame’den Altkümeyi Ayıklamak (Extract subset from DataFrame)

DataFrame üzerinde yine ihtiyaca yönelik olarak belirli sütun veya satırları ayıklayarak gözlemleyebilir veya üzerlerinde değişiklik yapabiliriz.

Sütunları Seçmek (Select Column(s))

Temsili olarak DataFrame üzerinde sütun seçimi aşağıda gösterilmektedir.

DataFrame üzerinde sütunları seçmek
  • Örneğin DataFrame üzerinden sadece ev fiyatlarını içeren sütunu seçmek istersek aşağıdaki şekilde gerçekleştirebiliriz.
  • Örneğin ev fiyatları ile birlikte toplam oda ve yatak odası sayıları da içeren sütunları da seçmek istersek şu şekilde uygulayabiliriz. Burada birden fazla sütun seçilirken bir köşeli parantez [] daha kullanıldığını dikkat ediniz.

Satırları Seçmek (Select Row(s))

Temsili olarak DataFrame üzerinde satır seçimi aşağıda gösterilmektedir.

DataFrame üzerinde satırları seçmek

DataFrame üzerinde satır seçimi Numpy indexlemesine benzer ve loc veya iloc kullanılarak gerçekleştirilir. iloc ixdex bağımlı seçim yaparken, loc ise label(etiket) bağımlı seçim gerçekleştirir.

iloc kullanımı

Yukaradaki görselde görüldüğü üzere iloc index bağımlı çalıştığı için 0. indexten 3. numaralı index’e kadar seçim yaparak gösterdi. loc ise etiket bağımlı olarak seçim yaptığı için 3. numaralı indexi de seçime dahil eder.

Koşullu Eleman İşlemleri

Koşullu ifadeler ile DataFrame üzerinde belirli satır veya sütunları seçebiliriz. Aşağıda temsili gösterilmektedir.

Hemen bir örnek ile açıklayacak olursak, örneğin oda sayısı 1000'den fazla olan gözlemleri isteyip ilk 5'ini gözlemleyecek olursak aşağıda gibi basit bir şekilde gerçekleştirebiliriz.

Bir başka örneği ele alacak olursak, oda sayısı 1000'den fazla olan evlerin fiyatlarını isteyip ilk 5 gözlemi inceleyecek olursak aşağıda gibi uygulayabiliriz.

Toplulaştırma (Aggregation)

Aşağıda DataFrame üzerinde toplulaştırma için temsili bir görsel gösterilmektedir.

  • .mean()-> DataFrame üzerindeki her değişkenin ortalamasını verir.
mean() fonksiyonun kullanımı

Dilersek bir veya birden fazla değişkeni argüman olarak vererek sadece onların ortalamalarını hesaplayabiliriz.

  • median() -> Veri serisini küçükten büyüğe doğru sıraladığımızda, seriyi ortadan ikiye ayıran değeri verir. Aşağıda oda sayılarının medyanı hesaplanmıştır.
median() fonksiyonunun kullanımı
  • count() -> Veri serisinde yer alan elaman sayısını verir. Veri kümesinde her değişkenin eleman sayısı aynı olmayabilir, eksik satırlar yer alabilir. Count fonksiyonu ile bunu kontrol edebiliriz.
  • min() -> Veri serisinde yer alan elamanların en küçük değere sahip olanını verir.
min() fonksiyonunun kullanımı
  • max() ->Veri serisinde yer alan elamanların en büyük değere sahip olanını verir.
max() fonksiyonunun kullanımı
  • describe() -> Veri setinin içerisindeki tüm değişkenlerin betimsel istatistikleri görmemizi sağlar.
describe() fonksiyonun kullanımı

Not : describe().T yazarak veri setinin transpozunu alıp daha okunabilir bir hale gelmesini sağlayabiliriz.

Aynı zamanda df.dropna().describe().T yazarak, veri setinin içerisindeki eksik gözlemleri(satırları) silerek betimlemeyi gerçekleştirebiliriz.

DataFrame Birleştirme (Merge Dataframe)

Sözlük üzerinden iki adet DataFrame oluşturduk; ilkinde filmler ve filmlerin kategorileri yer alırken ikincisinde ise filmler ve çıkış yılları bulunmaktadır. Yani iki DataFramede de movies değişkeni yer almaktadır.

İki DataFrame birleştirmek için merge fonksiyonu kullanılmaktadır. Aşağıda birleşmiş halini inceleyebilirsiniz.

Pivot Tablolar

Veri setini amacına uygun gelen getirmek için kullanılan yapılardır. Python veri görselleştirme kütüphanesi olan Seaborn’u import ederek içerisinde yer alan titanic veri kümesini yükleyip pivot tabloları anlatmaya çalışacağım.

titanic veri kümesinin yüklenmesi

İlk olarak kısaca tanımlayacak olursam, pivot tablo daha geniş bir tabloyu(veri kümesini) özetleyen istatistik tablosudur. Örneğin titanic veri kümesi için cinsiyet ve sınıfa göre hayatta kalma durumunu gösteren pivot tabloyu şu şekilde oluşturabiliriz.

pivot_table’ın aldığı aldığı ilk parametre odaklandığın değişken, ikinci parametre index(satırdaki değişken), üçüncü parametre ise columns(sütundaki değişken) olarak ifade edebiliriz.

Bugünkü yazımda veri manipülasyonu için oldukça önemli olan Pandas kütüphanesini anlatmaya, görsellerle desteklemeye çalıştım. Bir sonraki yazım Keşifsel Veri Analizi (EDA) ile ilgili olacak. Umarım faydalı olmuştur; bir sonraki yazımda görüşmek üzere :)

--

--

Hüseyin Şahin

Merhaba! Ben yeni mezun bir Bilgisayar Mühendisiyim. Siber güvenlik ve yapay zeka ile ilgili araştırıyorum, öğreniyorum ve yazıyorum.