Veri Bilimi için Temel Python Kütüphaneleri 2–1: Pandas-Series

Aysel Aydin
5 min readJul 26, 2022

--

Önceki Bölüm: Veri Bilimi için Temel Python Kütüphaneleri 1: NumPy

Merhabalar, bir önceki yazımızda veri bilimi için temel python kütüphanelerinden NumPy kütüphanesini detaylı bir şekilde ele almıştık. Bu yazımızda da Pandas kütüphanesini ele alıyor olacağız.

Veriye sahip olmak kadar verinin işlenmesi, kalitesi de bir o kadar önemlidir. Sahip olduğumuz büyük veri setleri genellikle eksik değerlere ya da içeriğinde istemediğimiz aykırı, yanlış değerlere sahip olabilmektedir. Bu şekilde bir veri setiyle eğitilen modelimiz iyi bir performans göstermeyecektir. Bu nedenle veriye sahip olmanın yanı sıra, verilerimizi işlemek, veri analiziyle uygun formata getirmek de bir o kadar önemlidir.

Verinin keşfi ve temizlenmesi sırasında işlerimizi kolaylaştıran kütüphanelerden biridir Pandas.

  • Pandas, Numpy’ın sütun adları ve homojen olmayan verilerle çalışamama gibi eksik kaldığı kısımlara ve daha fazlasına çözümler üreten Python programlama dili için yüksek performanslı, kullanımı kolay veri yapıları ve veri analiz araçları sağlayan açık kaynaklı bir kütüphanedir.
  • ‘.csv’ ve ‘.txt’ uzantılı dosyaları açmak ve içerisinde bulunan verileri okuyarak istenen sonuca kolayca ulaşmak için kullanılmaktadır.
  • Pandas tarafından hazırlanan veriler genellikle Matplotlib’in fonksiyonlarını çizmek, SciPy’de istatistiksel analiz ve Scikit-learn’de makine öğrenme algoritmaları için girdi verileri olarak kullanılır.

Pandas ile veri analizi yaparken kullanacağımız temel veri yapıları Seriler ve DataFrame’lerdir. Bu yazımızda Seriler konusunu ele alıyor olacağız.

Seriler

Herhangi bir veri tipinde veri tutabilen tek boyutlu etiketli bir dizidir. Bir başka deyişle bir excel dosyasındaki bir sütunu temsil ederler. Serileri oluşturmak için listeler, sıralı diziler ya da sözlükler kullanılabilir.

Pandas kütüphanesi Python dilinin doğrudan bir parçası değildir. Bu yüzden ayrıca kurulması ve program içerisinde tanımlanması yani import edilmesi gerekmektedir.

pip install pandas

Pandas kütüphanesini kullanmak için öncelikle bu kütüphaneyi import etmemiz gerekiyor.

import pandas as pd
  • Boş Bir Seri Oluşturma
import pandas as pdseri = pd.Series()
print(seri)
Output:
Series([], dtype: float64)

Boş bir seri oluşturursanız default veri tipi float olarak kabul edilir.

  • Listeler ile Seri Oluşturma (Index değerleri ile)
import pandas as pdcalories = pd.Series([320, 450, 140, 56], [“elma”, “çikolata”, “kavun”, “ekmek”])
print(calories)
Output:
elma 320
çikolata 450
kavun 140
ekmek 56
dtype: int64

Serilerde ilk sütunda indeksler, ikinci sütunda ise verilerimiz yer alır. İndex değerlerini özellikle belirttiğimizde 0'dan başlayıp n adet veri için n-1'e gitmeden bizim verdiğimiz değerleri alacaktır.

Serilerde indeks ve veri değerlerini ayrı ayrı yazdıralım.

print(‘Verilerimiz :’, calories.values)
print(‘İndeksler:’, calories.index)
Output:
Verilerimiz : [320 450 140 56]
İndeksler: Index([‘elma’, ‘çikolata’, ‘kavun’, ‘ekmek’], dtype=’object’)

Seri bilgilerini NumPy kütüphanesinde de kullandığımız metodlar ile öğrenebiliriz.

print(‘Şekli:’, calories.shape)
print(‘Boyutu: ‘, calories.ndim)
print(‘Eleman sayısı ‘, calories.size)
Output:
Şekli: (4,)
Boyutu: 1
Eleman sayısı 4

Çok büyük bir Pandas Serisiyle uğraşıyorsak ve bir indeksin olup olmadığından emin değilsek in komutu kullanarak kontrol edebiliriz.

x = ‘armut’ in calories
y = ‘ekmek’ in calories
print(‘Armut: ‘, x)
print(‘Ekmek: ‘, y)
Output:
Armut: False
Ekmek: True
  • Listeler ile Seri Oluşturma-2(Index değerleri olmadan)
import pandas as pdchar_list = [“A”, “T”]
seri= pd.Series(char_list)
print(seri)Output:
0 A
1 T
dtype: object

Gördüğünüz gibi özellikle bir index belirlemezsek index değerleri 0'dan başlayacak şekilde oluşturulur.

  • Dictionary ile Seri Oluşturma
capitals_dict = {“Türkiye”:”Ankara”, “Fransa”:”Paris”, “Almanya”:”Berlin”, “İtalya”:”Roma”}
capitals = pd.Series(capitals_dict)
print(capitals)
Output:
Türkiye Ankara
Fransa Paris
Almanya Berlin
İtalya Roma
dtype: object
  • NumPy Dizisi ile Seri Oluşturma
import pandas as pd
import numpy as np
nd_array = np.array([“The Office”, “The Big Bang Theory”, “Friends”, “Doctor Who”, “Person of Interest”])
movies = pd.Series(nd_array, name=”Diziler”)
print(movies)
Output:
0 The Office
1 The Big Bang Theory
2 Friends
3 Doctor Who
4 Person of Interest
Name: Diziler, dtype: object
  • NumPy Metotları ile Seri Oluşturma
import pandas as pd
import numpy as np
seri = pd.Series(np.linspace(1, 36, 5))print(seri)Output:
0 1.00
1 9.75
2 18.50
3 27.25
4 36.00
dtype: float64

NumPy kütüphanesini ele alırken gördüğümüz linspace metodu ile 1–36 arasında eşit mesafede 5 sayı oluşturmuş olduk.

  • Liste Comprehension ile Seri Oluşturma
import pandas as pdseri = pd.Series(range(1,30,5), index=[i for i in ‘abcdef’])
print(seri)
Output:
a 1
b 6
c 11
d 16
e 21
f 26
dtype: int64
  • Seri Elemanlarına Erişim
import pandas as pdlanguages = pd.Series(["Python", "Kotlin", "Dart", "Java"])
print(languages[1])
Output:
Kotlin

Index değerlerini vermiş olsaydık o değerler üzerinden de erişebilirdik.

languages.index = [“lang1”, “lang2”, “lang3”, “lang4”]
languages["lang2"]
Output:
Kotlin

Birden fazla değere ulaşmak istersek index değerlerini seçebiliriz.

languages[["lang2", "lang4"]]Output:
lang2 Kotlin
lang4 Java
dtype: object

Indexleme işlemi ile başlangıç bitiş indekslerini belirterek de istediğimiz değerlere ulaşabiliriz.

languages["lang2":"lang4"]Output:
lang2 Kotlin
lang3 Dart
lang4 Java
dtype: object
  • Serilerde Koşullu Seçimler
    Serilerde NumPy arraylerdeki gibi bir koşul ifadesiyle seçim yapabiliriz.
import pandas as pdcalories = pd.Series([320, 450, 140, 56], [“elma”, “çikolata”, “kavun”, “ekmek”], name=”Kalori Değerleri”)
calories[calories > 100]
Output:
elma 320
çikolata 450
kavun 140
Name: Kalori Değerleri, dtype: int64

Burada calories[calories > 100] yerine direkt calories > 100 kullandığımız durumda değerler yerine True False şeklinde dönüş yapacaktı.

calories > 100Output:
elma True
çikolata True
kavun True
ekmek False
dtype: bool

NumPy kütüphanesini anlatırken bahsettiğimiz mean, standart sapma, varyans metotlarını Pandasta da kullanabiliriz.

calories[calories < calories.mean()]Output:
kavun 140
ekmek 56
dtype: int64

Bu şekilde kalori değeri ortalamadan küçük olan verileri almış olduk.

Birden fazla koşul eklemek istediğimiz durumda & operatörü ile iki koşul ifadesini ekleyebiliriz.

calories[(calories > 100) & (calories < 200)]Output:
kavun 140
dtype: int64
  • Seri Değerlerini Değiştirme
    Seride istediğimiz değerleri indexle erişip değiştirebiliriz.
calories["ekmek"] = 96
calories
Output:
elma 320
çikolata 450
kavun 140
ekmek 96
dtype: int64

Koşullu ifadeye bağlı olarak kriteri sağlayan değerleri de güncelleyebiliriz.

calories[calories < 150 ] = 120
calories
Output:
elma 320
çikolata 450
kavun 120
ekmek 120
Name: Kalori Değerleri, dtype: int64
  • Seriler üzerinde Add-Sub işlemleri
import pandas as pddata = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
data1 = pd.Series([5, 6, 7, 8], index=['d', 'a', 'f', 'g'])
data.add(data1)Output:
a 7.0
b NaN
c NaN
d 9.0
f NaN
g NaN
dtype: float64

Burada iki seride de aynı indexle yer alan değerleri topladı. Diğer indexleri de NaN olarak gösterdi. NaN değerleri yerine eğer ekleme sırasında , fill_value=0 eklersek olmayan indexler için 0 değerini kabul eder ve toplama işlemini ona göre yapar.

data.add(data1, fill_value=0)Output:
a 7.0
b 2.0
c 3.0
d 9.0
f 7.0
g 8.0
dtype: float64

Aynı işlem sub metodu için de geçerlidir.

data.sub(data1, fill_value=0)Output:
a -5.0
b 2.0
c 3.0
d -1.0
f -7.0
g -8.0
dtype: float64
  • Serilerde Dönüştürme(conversion) İşlemleri
    Serilerin veri tipini değiştirebilir ya da bir seriyi listeye dönüştürme gibi işlemler yapabiliriz. Bu işlemler için .astype() .tolist() gibi metotları kullanırız.
import pandas as pdnum = pd.Series([9, 6, 3])
print("Orijinal Hali:\n", num)
num = num.astype(float)
print("Veri tipi değiştirilmiş hali:\n", num)
Output:
Orijinal Hali:
0 9
1 6
2 3
dtype: int64 int64
Veri tipi değiştirilmiş hali:
0 9.0
1 6.0
2 3.0
dtype: float64 float64

Seriyi listeye dönüştürelim.

num_list = num.tolist()
print(print("Listeye dönüştürülmüş hali\n", num_list)
Output:
Listeye dönüştürülmüş hali
[9.0, 6.0, 3.0]

Evet arkadaşlar veri bilimi için temel Python kütüphanelerinden olan Pandas kütüphanesinin Seriler konusunu bu şekilde detaylıca ele almış olduk. Umarım hepiniz için faydalı olmuştur. Bir sonraki yazımızda Pandas -DataFrame konusunun anlatımıyla devam ediyor olacağız serimize. Bir sonraki yazımızda görüşmek dileğiyle :)

Hesaplar: Twitter, LinkedIn

--

--