Pandas, python programlama dilinde veri analizi için kullanılan bir kütüphanedir.
Numpy kütüphanesinde kullandığımız bütün fonksiyonları pandas kütüphanesinde de kullanabiliriz.
Peki o zaman neden numpy kütüphanesini kullanmıyoruz da pandas kütüphanesini kullanıyoruz?
Numpy kütüphanesinin en büyük eksiği sadece aynı türden verileri alabilmesidir. Mesela sayısal bir veri vermişsek bütün verilerin sayısal olarak olması gerekmektedir. Ancak bizim kullandığımız ve gerçek hayatta karşımıza çıkan birçok veri kümesi farklı veri türlerinden oluşmaktadır.
Mesela bir okuldaki öğrencilerin verilerinden oluşan bir veri seti düşünün.
Burada öğrencinin adı(string), boyu(float), memleketi(string), sınıftan geçip kalma durumu(boolean) gibi farklı veri türleri vardır. İşte bu tarz durumlarda numpy kütüphesi ile işlem yapamayız. Bunun yerine pandas kütüphanesini kullanmamız gerekmektedir.
Pandas kütüphanesi ile kolay bir şekilde .csv, .txt, xls gibi dosyalardan veri alabilir bunlar üzerinde istediğimiz manipülasyonu yapabiliriz.
Pandas kütüphanesini kurmak için konsol ekranına aşağıdaki kodu yazmamız ve enter e basmamız yeterlidir.
pip install pandas
Pandas kütüphanesinde temel olarak 2 veri nesnesi bulunur. Bunlar seriler ve veri çerçeveleridir.
1- Seriler(Series)
Numpy dizilerine benzer.
Etiketli verilerdir. Bu yapısı ile bir çeşit sözlük yapısı gibi düşünelebilir. Ancak sözlüklerde arka arkaya gelen veriler seçilemezken serilerde bu yapılabilir.
Seriler Indekslenmiş(sıralanmış) tek boyutlu dizilerdir.
Serileri ouşturmak için liste, sözlük vb. kullanılabilir.
Örnek pandas serisi
import pandas as pd liste=[4,6,7,9,23] pandas_seri= pd.Series(liste) print(pandas_seri)

Pandas serilerinde varsayılan olarak index 0 dan başlar. İstersek bunu değiştirebilir veya barklı index numaraları verebiliriz.
import pandas as pd liste=[4,6,7,9,23] pandas_seri= pd.Series(liste,index=["a","b","c","d","e"]) print(pandas_seri)

2- Veri Çerçeveleri(DataFrame)

Yukarıda iris(zambak) datasetinden(veri kümesinden) bir örnek görmektesiniz. Pandas kütüphanesinde bu şekilde iki boyutlu verilere DataFrame denmektedir. (Veriler excel tablosu gibidir)
Burada dikkat etmeniz gereken nokta en son sütun(Species). Buradaki veriler string(sözel)veri tipindedir ancak diğer alanlar float(ondalık) veri tipindedir. İşte pandas kütüphanesi ile bu tarz verisetlerinde kolaylıkla işlemler yapabiliriz.
Verilere Nerden Ulaşabilirim?
Günümüzde verilere ulaşmak şu ana kadar hiç olmadığı kadar kolaydır.
Çeşitli web sitelerinden, veritabanlarından, excel tablolarından, metin belgelerinden vb. verilere ulaşabiliriz.
Buralardan verileri nasıl alacağımızı ilerleyen derslerimzde detaylı olarak göreceğiz.
Iris(zambak) Verisetinin Kullanımı
İnternette daha önce oluşturulumuş birçok verisetine ulaşabilirsiniz. (Örneğin: https://www.kaggle.com/)
Bu verisetlerinden bazıları eğitim amaçlı kullanılmaktadır. Irıs veriseti de eğitim amaçlı kullanılan bir verisetidir.
Bu setinde 150 tane zambak çiçeğinin taç yaprak boyu ve eni, çanak yaprak boyu ve eni ve zambağın türü bulunmaktadır.
Biz de dersimizde bu verisetini kullanarak verileri üzerinde çeşitli işlemler yapacağız.
import pandas as pd iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data") print(iris)
Bu şekilde kütüphaneni internetten indirerek kullanabiliriz.
import pandas as pd iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data") #normalde pd.read_csv() dememiz yeterli iris.columns iris.columns=["Taç Boy","Taç En","Çanak Boy","Çanak En","Tür"] #başlıkları değiştir iris.head(10) #10 satır göster

import pandas as pd iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data") #normalde pd.read_csv() dememiz yeterli iris.columns iris.columns=["Taç Boy","Taç En","Çanak Boy","Çanak En","Tür"] #başlıkları değiştir iris.tail(5) #sondan 5 satırı göster.

Bazı önemli fonksiyonlar.
iris.info() #genel bilgi almak için np_dizi=iris.values #pandas numpy tipine çevir iris.copy() #veri çerçevesini başka veri çerçevesine aktarmak iris.head() #baştan 5 değer iris.tail() #sondan 5 değer iris.describe() #genel bilgi
iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data") iris.columns=["Taç Boy","Taç En","Çanak Boy","Çanak En","Tür"] #başlıkları değiştir iris.loc[2,"Çanak En"] #2. satırdaki çanak en
iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data") iris.columns=["Taç Boy","Taç En","Çanak Boy","Çanak En","Tür"] #başlıkları değiştir iris.loc[:,"Çanak En"] #bütün satırlarda çanak en
Dataset olarak getirmek için
iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data") iris.columns=["Taç Boy","Taç En","Çanak Boy","Çanak En","Tür"] #başlıkları değiştir iris.iloc[[1]] #1 numaralı

iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data") iris.columns=["Taç Boy","Taç En","Çanak Boy","Çanak En","Tür"] #başlıkları değiştir iris.iloc[[17,18,20]]
iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data") iris.columns=["Taç Boy","Taç En","Çanak Boy","Çanak En","Tür"] #başlıkları değiştir iris.iloc[[17,18,20],[2,3]] #sadece 2 ve 3.sütunlar
iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data") iris.columns=["Taç Boy","Taç En","Çanak Boy","Çanak En","Tür"] #başlıkları değiştir iris["fark"]=iris["Taç Boy"]-iris["Taç En"] print(iris)

import pandas as pd iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data") #dosyayı yükle iris.columns=["Taç Boy","Taç En","Çanak Boy","Çanak En","Tür"] #başlıkları değiştir iris["Taç En"] #sütün seçme # tek boyutlu dizi olarak döner. yani series iris[["Taç En"]] #veri çerçevesi olarak gösterir iris[["Taç En","Çanak Boy"]] iris[2:5] #2 ile 5. satır arası #loc - location yani kodum iloc (sayısal konum) integer loc #.index(["abc","def"]) ile satır isimlendirilir. #eğer read_csv() ile okutursak ve satırlar 1. sutündaysa index_col=0 deriz read_csv içine iris.loc[2] #2. satırı getirdi. burada satır ismi varsa o da yazılır iris.loc[[2]] #dataset olarak gelir iris.loc[[2,4]] #2 ve 4. satırı getir. #hisseler['acilis']['ERN'] #satır ve sütün ismine göre #hisseler.acilis['ERN'] #yukarıdaki ile aynı iris.loc[[2,4],["Çanak Boy","Tür"]] #2 ile 4 arası çanak boy ve tür
#numpy formülleri pandas ta da uygulanır import pandas as pd import numpy as np iris = pd.read_csv("https://gist.githubusercontent.com/curran/a08a1080b88344b0c8a7/raw/0e7a9b0a5d22642a06d3d5b9bcbad9890c8ee534/iris.csv") #normalde pd.read_csv() dememiz yeterli dizi=iris.iloc[:,[0,1,2,3]] #bütün satır ve 0,1,2,3 sütünlarını seç dizi_log=np.log(dizi) #logaritmasını al print(dizi_log.head()) #baştan ilk 5 değer
Seaborn Kütüphanesi
Pythonda eğitim amaçlı verisetlerini indirmek için güzel bir kütüphane vardır. (seaborn)
Seaborn kütüphanesi ile istediğimiz verisetini kolay bir şekilde kullanabiliriz. Bunun için aşağıdaki kodu yazarak kütüphaneyi indiriyoruz.
pip install seaborn
Yukarıdaki kod ile aynı görevi gören aşağıdaki kodu inceleyebilirsiniz.
import seaborn as sns iris=sns.load_dataset('iris') print(iris)
Pandas verilerini istersek numpy dizisine çevirebiliriz.
import seaborn as sns iris=sns.load_dataset('iris') np_dizi=iris.values #numpy dizisine çevir print(np_dizi)
Dataset hakkında genel bir bilgi almak
import seaborn as sns iris=sns.load_dataset('iris') print(iris.describe)
Sadece 1 sütunun bilgilerini almak
import seaborn as sns iris=sns.load_dataset('iris') iris['species'].describe()

count: uzunluk, unique: birbirinden farklı 3 veri var, top:en çok görünen, freq: kaç gözlem olduğu
Uzunluğunu almak için
import seaborn as sns iris=sns.load_dataset('iris') iris.count()

import seaborn as sns iris=sns.load_dataset('iris') veriler=['petal_length','petal_width'] iris[veriler].count()
import seaborn as sns iris=sns.load_dataset('iris') veriler=['petal_length','petal_width'] iris[veriler].mean() #ortalama iris[veriler].std() # standart sapma iris[veriler].median() #ortanca iris[veriler].quantile(0.25) #yüzdelik dilim
import seaborn as sns iris=sns.load_dataset('iris') iris['petal_length'].min() iris['petal_length'].max()
import seaborn as sns iris=sns.load_dataset('iris') iris.mean(axis='columns') #satır bazında hesaplama
import seaborn as sns iris=sns.load_dataset('iris') kosul=iris['species'] == 'versicolor' type(kosul) kosul
import seaborn as sns iris=sns.load_dataset('iris') kosul=iris['species'] == 'versicolor' versicolor=iris.loc[kosul,:] versicolor.head()
import seaborn as sns iris=sns.load_dataset('iris') kosul=iris['species'] == 'versicolor' versicolor=iris.loc[kosul,:] versicolor.describe()
#yukarıdakinin kısa yoldan yapılışı import seaborn as sns iris=sns.load_dataset('iris') iris[iris['species'] == 'versicolor'].describe()
#yukarıdakinin değişik yapılışı import seaborn as sns iris=sns.load_dataset('iris') kosul=iris['species'].str.contains('setosa') setosa=iris[kosul] print(setosa.head())
import seaborn as sns iris=sns.load_dataset('iris') iris[iris.sepal_length>7]
import seaborn as sns iris=sns.load_dataset('iris') iris[(iris.sepal_length>6.5) & (iris.petal_length<4.5)]
import seaborn as sns iris=sns.load_dataset('iris') iris[(iris.sepal_length>7.5) | (iris.petal_length<6.5)]
import seaborn as sns iris=sns.load_dataset('iris') iris.petal_length[iris.sepal_length>7.5]
#.all() #hiç sıfır içermeyen sütünları görmek için # .any() # sıfırdan farklı değerler içeren sütünları görmek için #.isnull() #null değeri içeren sütünlar #.notnull() #null değer içermeyenler görmek için
#ÖRNEKLERDEN KULLANMAK İÇİN DATASET OLUŞTURDUK import pandas as pd import numpy as np degisken=np.repeat(['A','B','C','D'],[3,3,3,3],axis=0) deger=np.random.random(12) df_dict={'degisken':degisken,'deger':deger} df=pd.DataFrame(df_dict) df=df[['degisken','deger']] print(df)
import pandas as pd import numpy as np degisken=np.repeat(['A','B','C','D'],[3,3,3,3],axis=0) deger=np.random.random(12) df_dict={'degisken':degisken,'deger':deger} df=pd.DataFrame(df_dict) df=df[['degisken','deger']] df2=df.pivot(columns='degisken',values='deger') #değişken isimlerini sütün ismi yaptık print(df2)
#TEKRAR ESKİ HALİNE GETİR import pandas as pd import numpy as np degisken=np.repeat(['A','B','C','D'],[3,3,3,3],axis=0) deger=np.random.random(12) df_dict={'degisken':degisken,'deger':deger} df=pd.DataFrame(df_dict) df=df[['degisken','deger']] df2=df.pivot(columns='degisken',values='deger') #değişken isimlerini sütün ismi yaptık df3=df2.melt(value_vars=['A','B','C','D'],value_name='deger').dropna() print(df3)
#VERİ ÇERÇEVESİNİ BİRLEŞTİRMEK #how = left, right, inner, outer #left ile önce yazılan veri çerçevesi ele alınır, right tam tersi #inner seçildiğinde sadece kesişimler ele alınır. #outher seçildiğinde bileşim kümesi alınır. Birbirinde olmayan değerler için nan seçilir. #on hangi sütünün dikkate alınacağı. Burada X seçilddi. df3=pd.merge(df1,df2,how='left',on='X')