Python Pandas Kütüphanesi
Python Pandas Kütüphanesi
Pandas, veri işlemesi ve analizi için Python programlama dilinde yazılmış olan bir yazılım kütüphanesidir. Bu kütüphane temel olarak zaman etiketli serileri ve sayısal tabloları işlemek için bir veri yapısı oluşturur ve bu şekilde çeşitli işlemler bu veri yapısı üzerinde gerçekleştirilebilir.
Python Pandas Kütüphanesi İlk olarak 2008 tarihinde piyasaya sürülmüştür. Pandas sayesinde hızlı, güçlü, esnek vbir şekilde veri analizi ve işleme yapılabilir, veri çerçeveleri hızlı ve etkilidir. Bu kütüphane sayesinde .csv ve .txt dosyalarını kolayca okuyabiliriz. Veri biliminde, veri içersinde bulunan eksik verileri bulmada, çıkarmtada Pandas kütüphanesi işimizi kolaylaştırır.
İlk olarak pandas kütüphanesi kurulu değilse:
pip install pandas
terminale yazacağınız bu kod ile padas kütüphanesini kurmanız gerekmektedir. Artık tek yapmanız gereken Pandas kütüphanesini projenize çağırmanız gerekmektedir. (import pandas as pd) projelerimizde pandası pd kısa isminde kullanacağız.
Pandas Veri Oluşturma:
Öncelikle veri oluşturalım. Veriyi sözlük (dictionary) ile oluşturuyoruz.
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
print(veri_sonuc)
pd.DataFrame ile veriyi tablo şekline dönüştürüyoruz ve ekrana yazdırıyoruz. Ekran çıktısı aşağıdaki gibi olur.
isim yas kilo not
0 ali 15 45 25
1 aslı 16 50 90
2 memet 17 40 95
3 kenan 33 77 35
4 ayse 45 54 65
5 veysel 66 53 85
6 murat 45 76 95
7 aynur 33 88 100
8 mert 23 34 45
Pandas kütüphanesi ile verimizi tablo formatında elde ettik. Bu yapıya veri çerçevesi denir. Bu verilerin ilk 5 satırını yada son 5 satırını listelemek istersek:
print(veri_sonuc.head()) print(veri_sonuc.tail())
kodlarını kullanmamız gerekecekti. Head ilk 5 satırı, tail ise son 5 satırı listeler.
Pandas Temel Özellikler:
veri_sonuc.columns # verinin sütunları
veri_sonuc.info( ) # veri ile ilgili bilgi verir.
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
print(veri_sonuc.columns)
print('--------------------------')
print(veri_sonuc.info( ))
Bu kodları incelersek; veri_sonuc.columns bize verimizin sütunlarını verir. veri_sonuc.info ( ) komut satırı ise bize veri ile ilgili detaylı bilgi verir. Ekran çıktısı şu şekilde olur:
Index([‘isim’, ‘yas’, ‘kilo’, ‘not’], dtype=’object’)
RangeIndex: 9 entries, 0 to 8
Data columns (total 4 columns):
# Column Non-Null Count Dtype
— —— ————– —–
0 isim 9 non-null object
1 yas 9 non-null int64
2 kilo 9 non-null int64
3 not 9 non-null int64
dtypes: int64(3), object(1)
memory usage: 416.0+ bytes
None
Pandas Describe Metodu
describe metodu veri içerisinde bulunan sayısal sütunlar ile ilgili bize istatistiksel özet çıkarır. Bu istatistiksel bilgiler count, mean(ortalama), std(standart sapma), min(en küçük değer), 25% (ilk çeyrek), %50(medyan, yani ortanca),%75(son çeyrek) ve max(en büyük değerdir).
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
print(veri_sonuc.describe())
Bu kodların ekran çıktısı şu şekildedir.
yas kilo not
count 9.000000 9.000000 9.000000
mean 32.555556 57.444444 70.555556
std 17.118054 18.561459 28.879539
min 15.000000 34.000000 25.000000
25% 17.000000 45.000000 45.000000
50% 33.000000 53.000000 85.000000
75% 45.000000 76.000000 95.000000
max 66.000000 88.000000 100.000000
Yukarıdaki çıktıyı inceleyecek olursak; count veri sayısı, mean ortalama değerler, std standart sapma, min en küçük değeri, max ise en büyük değeri, aradaki % değerler ise bu değerlerin % yüzde 25, 50, 75 lik kısımlardaki veri değerlerini verir.
Pandas Indexleme
Pandas kütüphanesinde de Numpy kütüphanesinde olduğu gibi indexleme yapabilmekteyiz. Yukardaki örnek üzerinden çalışmaya devam edeceğiz. Şimdi verimizin sadece not sütununu alalım.
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
print(veri_sonuc["not"])
Örneğe bakacak olursak veri_sonuc[“not”] komutu ile sadece not sütununu ekrana yazdırabiliriz. Ekran çıktımız aşağıdaki gibi olur.
0 25
1 90
2 95
3 35
4 65
5 85
6 95
7 100
8 45
Name: not, dtype: int64
Veriye Yeni Sütun Ekleme:
Bu bölümde veriye yeni bir kategori yani sütun eklemeyi göreceğiz. Öncelikle memleket isminde yeni bir kategori oluşturacağız ve içerisine verileri gireceğiz.
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
veri_sonuc["memleket"]=["Van","Mersin","Adana","Sivas","İzmir","Kocaeli","Trabzon","Aksaray","Antalya"]
print(veri_sonuc)
Görüldüğü dibi veri_sonuc [“memleket”]=[“Van”, “Mersin”, “Adana”, “Sivas”, “İzmir”, “Kocaeli”,“Trabzon”,“Aksaray”,“Antalya”] kod satırı tablomuza yeni bir sütun ekler. Aşağıda ekran çıktısı verilmiştir.
isim yas kilo not memleket
0 ali 15 45 25 Van
1 aslı 16 50 90 Mersin
2 memet 17 40 95 Adana
3 kenan 33 77 35 Sivas
4 ayse 45 54 65 İzmir
5 veysel 66 53 85 Kocaeli
6 murat 45 76 95 Trabzon
7 aynur 33 88 100 Aksaray
8 mert 23 34 45 Antalya
Pandan veriyi indexleme
Pandas’da indeksleme yaparken loc[] ve iloc[] yöntemleri kullanılır.
loc = location (konum)
iloc = index location (indeks konum)
Şimdi verimizin memleket sütununu alalım:
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
veri_sonuc["memleket"]=["Van","Mersin","Adana","Sivas","İzmir","Kocaeli","Trabzon","Aksaray","Antalya"]
print(veri_sonuc.loc[:,"memleket"])
veri_sonuc.loc[:,"memleket"] komutu ile baştan itibaren sadece memleket sütununu aldık.Ekran çıktısı aşağıdaki gibi olur.
0 Van
1 Mersin
2 Adana
3 Sivas
4 İzmir
5 Kocaeli
6 Trabzon
7 Aksaray
8 Antalya
Name: memleket, dtype: object
Eğer ilk 3 sütunu yazdırmak istersek print(veri_sonuc.loc[ : 3,“memleket”]) kod satırını kullanmalıyız.
İsim den kiloya kadar ilk 5 veriyi alma:
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
veri_sonuc["memleket"]=["Van","Mersin","Adana","Sivas","İzmir","Kocaeli","Trabzon","Aksaray","Antalya"]
print(veri_sonuc.loc[:5,"isim":"kilo"])
Yukarıdaki kodlara bakacak olursak verimizin isim sütununda kilo sütununa kadar olan bilgilerinin ilk 5 satırını bize dönderir. Ekran çıktısı aşağıdaki gibi olur.
isim yas kilo
0 ali 15 45
1 aslı 16 50
2 memet 17 40
3 kenan 33 77
4 ayse 45 54
5 veysel 66 53
Sadece yaş ve isim sütunlarını indexleme
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
veri_sonuc["memleket"]=["Van","Mersin","Adana","Sivas","İzmir","Kocaeli","Trabzon","Aksaray","Antalya"]
print(veri_sonuc.loc[:3,["isim","yas"]])
EKRAN ÇIKTISI:
isim yas
0 ali 15
1 aslı 16
2 memet 17
3 kenan 33
Tablonun Satırları Tersten Yazdırma:
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
veri_sonuc["memleket"]=["Van","Mersin","Adana","Sivas","İzmir","Kocaeli","Trabzon","Aksaray","Antalya"]
print(veri_sonuc.loc[::-1,:])
EKRAN ÇIKTISI:
isim yas kilo not memleket
8 mert 23 34 45 Antalya
7 aynur 33 88 100 Aksaray
6 murat 45 76 95 Trabzon
5 veysel 66 53 85 Kocaeli
4 ayse 45 54 65 İzmir
3 kenan 33 77 35 Sivas
2 memet 17 40 95 Adana
1 aslı 16 50 90 Mersin
0 ali 15 45 25 Van
Pandas Tabloyu iloc ile indexleme
iloc ile indexleme yaparken index numaraları kullanmamız gerekmektedir. Memleket sütununu iloc ile yazdıralım. Memleket sütunun index numarası 4 olduğu için aşağıdaki kodları yazmamız gerkiyor.
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
veri_sonuc["memleket"]=["Van","Mersin","Adana","Sivas","İzmir","Kocaeli","Trabzon","Aksaray","Antalya"]
print(veri_sonuc.iloc[:,4])
EKRAN ÇIKTISI:
0 Van
1 Mersin
2 Adana
3 Sivas
4 İzmir
5 Kocaeli
6 Trabzon
7 Aksaray
8 Antalya
Name: memleket, dtype: object
Pandas Veri Filtreleme
Veri analizinde filtreleme en çok kullanılan yöntemlerden biridir. Veriyi anlamlandırmak için gruplara ayırmak gerekir, gruplara ayırma işlemini filtreleme yöntemi ile yaparız.
1-) Şimdi aynı veri içerisinden kilosu 70′ den büyük olan verileri listeleyelim.
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
veri_sonuc["memleket"]=["Van","Mersin","Adana","Sivas","İzmir","Kocaeli","Trabzon","Aksaray","Antalya"]
filter = veri_sonuc.kilo > 70
filter_veri = veri_sonuc[filter]
print(filter_veri)
Öncelikle filter isminde bir filtre tanımlıyoruz. filtre_veri isimli değişkene filtrelenmiş tabloyu ekliyoruz. Sonra yazdırıyoruz. Ekran çıktımız aşağıdaki gibi olur.
isim yas kilo not memleket
3 kenan 33 77 35 Sivas
6 murat 45 76 95 Trabzon
7 aynur 33 88 100 Aksaray
2-) Şimdi aynı veri içerisinden kilosu 50′ den büyük olan ve yaşı 35 den büyük olan verileri listeleyelim.
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
veri_sonuc["memleket"]=["Van","Mersin","Adana","Sivas","İzmir","Kocaeli","Trabzon","Aksaray","Antalya"]
filter1 = veri_sonuc.kilo > 50
filter2= veri_sonuc.yas < 35
filter_veri = veri_sonuc[filter1 & filter2]
print(filter_veri)
Yukarıdaki örnekte filter1 ve filter2 isminde iki filtreyi beraber kullanmak için filter_veri = veri_sonuc[filter1 & filter2] satırını yazmamız gerekmektedir. Ekran Çıktısı aşağıdaki gibi olur.
isim yas kilo not memleket
3 kenan 33 77 35 Sivas
7 aynur 33 88 100 Aksaray
Pandas Mean Ortalama
import pandas as pd
veri = {"isim": ["ali","aslı","memet","kenan","ayse","veysel","murat","aynur","mert"],
"yas" : [15,16,17,33,45,66,45,33,23],
"kilo": [45,50,40,77,54,53,76,88,34],
"not": [25,90,95,35,65,85,95,100,45]
}
veri_sonuc = pd.DataFrame(veri)
veri_sonuc["memleket"]=["Van","Mersin","Adana","Sivas","İzmir","Kocaeli","Trabzon","Aksaray","Antalya"]
ortalama_yas = veri_sonuc.yas.mean()
ortalama_kilo = veri_sonuc.kilo.mean()
print("Ort_Yaş: ", ortalama_yas)
print("Ort_Kilo: ", ortalama_kilo)
Yukarıdaki kodlar incelendiğinde; mean ( ) metodu ile sayısal sütunların ortalama değerini hesaplayabiliriz. Yukarıda yaş ve kilo ortalama değerleri hesaplanmış ve ekrana yazdırılmıştır. Ekran çıktısı aşağıdaki gibi olur.
Ort_Yaş: 32.55555555555556
Ort_Kilo: 57.44444444444444
Pandas csv den Veri Çekme
Öncelikle csv uzantılı dosyalar; virgüllerle ayrılmış excel dosyalarıdır. veri.csv isimli bir dosyadan verilerimi çekeceğim. Öncelikle bu dosyanın python dosyası ile aynı klasör altında olması gerektiğini belitmeliyim.
veri.csv indirmek için tıklayınız…
import pandas as pd
veri = pd.read_csv("veri.csv")
print(veri)
pd.read_csv ile parametre olarak girilen csv uzantılı dosyadan verilerimi çekiyorum. Ekrana yazdırma işleminden sonra aşağıdaki gibi bir ekran karşımıza çıkmaktadır.
sn isim yas kilo not memleket
0 0 ali 15 45 25 Van
1 1 asli 16 50 90 Mersin
2 2 memet 17 40 95 Adana
3 3 kenan 33 77 35 Sivas
4 4 ayse 45 54 65 Izmir
5 5 Veysel 66 53 85 Kocaeli
6 6 murat 45 76 95 Trabzon
7 7 aynur 33 88 100 Aksaray
8 8 mert 23 34 45 Antalya
Bu şekilde csv dosyalarından kolaylıkla tablolarınızı pytona aktarabilirsiniz. veri.describe ( ) ile bu tabloyu ayrıntılı bir şekilde inceleyebiliriz.
import pandas as pd
veri = pd.read_csv("veri.csv")
print(veri.describe())
sn yas kilo not
count 9.000000 9.000000 9.000000 9.000000
mean 4.000000 32.555556 57.444444 70.555556
std 2.738613 17.118054 18.561459 28.879539
min 0.000000 15.000000 34.000000 25.000000
25% 2.000000 17.000000 45.000000 45.000000
50% 4.000000 33.000000 53.000000 85.000000
75% 6.000000 45.000000 76.000000 95.000000
max 8.000000 66.000000 88.000000 100.000000