Merhabalar,

Makine Öğrenmesine Giriş Serisi’nin İlk kütüphanesi Pandas’tan bahsedeceğim bu gün, serinin devamında numpy, matplotlib, scikit-learn vs. gibi kütüphanelerden bahsedip ardından önce basit örneklerden başlayıp daha komplike örnekler ile python’da makine öğrenmesini anlatacağım. Şimdiden İyi Okumalar!

Pandas Nedir?

Pandas Nasıl Kurulur?

import pandas as pd #burada pandası çağırıp pd kısaltması ile kullanacağımızı belirtiyoruz
data = [1,7,3,7,9,10]
seri = pd.Series(data) #burada elemanları yazıp seriyi tanımlıyoruz
seri #seriyi yazdırıyoruz
Output:
0 1
1 7
2 3
3 7
2 3
3 7
4 9
5 10

dtype : int64v

Pandas’ta indexlere değer atama

index = ["İstanbul", "Ankara", "İzmir", "Yalova", "Adana", "Diyarbakır"] #Doğru
index2 = ["İstanbul", "Ankara", "İzmir", "Yalova", "Adana", "Diyarbakır", "Bursa"] #Yalnış
pd.Series(data = data , index = index)

Output:

İstanbul       1
Ankara         7
İzmir          3
Yalova         7
Adana          9
Diyarbakır    10
dtype: int64
dataDict = {"İstanbul":3,"Ankara":2,"İzmir":4,"Yalova":7}
pd.Series(dataDict)

Output:

Ankara      2
Yalova      7
İstanbul    3
İzmir       4
dtype: int64

Pandas DataFrame Oluşturma

from numpy.random import randn
data = randn(2,2) #radn kütüphanesi bize içerideki elemanları rahatça ve random şekilde oluşturmamızı sağlıyor
columns = ["Başlık1","Başlık2"] 
df = pd.DataFrame(data,index = ["İst","Ankara"],columns = columns) 
df

  Output:

Başlık1 Başlık2
İst -0.792252 -0.047696
Ankara 1.852743 0.654519

Başlıktan Sorgu yapmak

Input:
df["Başlık1"]

Output:

İst      -0.792252
Ankara    1.852743
Name: Başlık1, dtype: float64

Input:

type(df["Başlık1"])

Output:

pandas.core.series.Series

Input:

type(df)

Output:

pandas.core.frame.DataFrame

DataFrame’ye Sutün Eklemek

df #eklemeden önceki hali

Output:

Başlık1 Başlık2
İst -0.792252 -0.047696
Ankara 1.852743 0.654519
df["Başlık3"] = pd.Series(randn(2),index = ["İst","Ankara"])
df

Output:

Başlık1 Başlık2 Başlık3
İst -0.792252 -0.047696 -1.031586
Ankara 1.852743 0.654519 1.685737
df["Başlık4"] = randn(2)

Input:

df["Başlık5"] = df["Başlık1"] + df["Başlık2"] + df["Başlık3"] + df["Başlık4"]
df

Output:

Başlık1 Başlık2 Başlık3 Başlık4 Başlık5
İst -0.792252 -0.047696 -1.031586 -0.317169 -2.188703
Ankara 1.852743 0.654519 1.685737 1.440357 5.633356

Kullanmadığınız Sutünları Düşürmek.

Input:

df.drop("Başlık5",axis = 1)

Output:

Başlık1 Başlık2 Başlık3 Başlık4
İst -0.792252 -0.047696 -1.031586 -0.317169
Ankara 1.852743 0.654519 1.685737 1.440357

Input:

df

Output:

Başlık1 Başlık2 Başlık3 Başlık4 Başlık5
İst -0.792252 -0.047696 -1.031586 -0.317169 -2.188703
Ankara 1.852743 0.654519 1.685737 1.440357 5.633356

Input:

df = df.drop("Başlık5",axis = 1)  #DOĞRU
df

Output:

Başlık1 Başlık2 Başlık3 Başlık4
İst -0.792252 -0.047696 -1.031586 -0.317169
Ankara 1.852743 0.654519 1.685737 1.440357

Loc ile DataFrame Listelemek

Input:

df.loc["İst"] # df=df.loc["A"] yapmazsanız kaydolmaz

Output:

Başlık1   -0.792252
Başlık2   -0.047696
Başlık3   -1.031586
Başlık4   -0.317169
Name: İst, dtype: float64

Input:

df.iloc[0] #buda 0. index yani istanbul.

Output:

Başlık1   -0.792252
Başlık2   -0.047696
Başlık3   -1.031586
Başlık4   -0.317169
Name: İst, dtype: float64

Input:

df.loc["İst","Başlık1"] #BAŞLIK1'İN İST İNDEXİNE SAHİP OLAN ELEMANINI ÇAĞIRIYORUZ

Output:

-0.7922522962389578

DataFrame Filtreleme

Input:

df > -1 #Burada DataFramedeki -1'den büyük değerlerin True Dönmesini istiyorum hepsi döndü

Output:

Başlık1 Başlık2 Başlık3 Başlık4
İst True True False True
Ankara True True True True

Input:

df["Başlık1"] < 1 #Başlık1deki değerlerden 1'den büyük olanların true dönmesini istiyorum.

Output:

İst        True
Ankara    False
Name: Başlık1, dtype: bool

İndex ve Eleman Değerlerini Değiştirmek.

Input:

df["Başlık1"] = ["1","3"] #başlık1'in değerlerini değiştiriyorum
df

Output:

Başlık1 Başlık2 Başlık3 Başlık4
İst 1 -0.047696 -1.031586 -0.317169
Ankara 3 0.654519 1.685737 1.440357

Input:

df.set_index("Başlık1") #başlık1 bizim index'imiz olacaktır.

Output:

Başlık2 Başlık3 Başlık4
Başlık1
1 -0.047696 -1.031586 -0.317169
3 0.654519 1.685737 1.440357

Input:

df #değişikliklerin geçerliliği için

Output:

Başlık1 Başlık2 Başlık3 Başlık4
İst 1 -0.047696 -1.031586 -0.317169
Ankara 3 0.654519 1.685737 1.440357

Input:

df = df.set_index("Başlık1")
df

Output:

Başlık2 Başlık3 Başlık4
Başlık1
1 -0.047696 -1.031586 -0.317169
3 0.654519 1.685737 1.440357

Kayıp Veriler

Input:

import numpy as np #burada numpy'i ilerideki yazılarda anlatacağım şu an eleman oluşturmak için kullanacağız
data = np.array([[1,5,np.nan],[np.nan,7,np.nan],[np.nan,9,8]])

Input:

df = pd.DataFrame(data,columns = ["Başlık1","Başlık2","Başlık3"])
df

Output:

Başlık1 Başlık2 Başlık3
0 1.0 5.0 NaN
1 NaN 7.0 NaN
2 NaN 9.0 8.0

Input:

df.dropna() #bu direkt NaN bulunan İndex'i düşürür

Output:

Başlık1 Başlık2 Başlık3

Input:

df.dropna(axis = 1) #burada başlığa göre düşürüyor.

Output:

Başlık2
0 5.0
1 7.0
2 9.0

Input:

df.dropna(thresh = 2) # burada bir limit belirliyoruz. Index'te 2 değerden fazlası NaN ise o indexi düşür.

Output:

Başlık1 Başlık2 Başlık3
0 1.0 5.0 NaN
2 NaN 9.0 8.0

Input:

df.fillna(value = 15) #burada NaN'ları ne ile dolduracağımızı belirliyoruz.

Output:

Başlık1 Başlık2 Başlık3
0 1.0 5.0 15.0
1 15.0 7.0 15.0
2 15.0 9.0 8.0

Input:

df.sum() #NaN Değerleri tüm değerlerin ortalamasına bakarak belirlemek

Output:

Başlık1     1.0
Başlık2    21.0
Başlık3     8.0
dtype: float64

Input:

size = df.size
nan = df.isnull().sum().sum()
print("DataFramedeki Toplam Eleman Sayısı:", size)
print("DataFramedeki Toplam NaN Sayısı:", nan)
DataFramedeki Toplam Eleman Sayısı: 9
DataFramedeki Toplam NaN Sayısı: 4

DataFrameleri birleştirme Yöntemleri

Input:

dataset1 = {
    "A": ["A1","A2","A3","A4"],
    "B":["B1","B2","B3","B4"],
    "C":["C1","C2","C3","C4"],
}
dataset2 = {
    "A": ["A5","A6","A7","A8"],
    "B":["B5","B6","B7","B8"],
    "C":["C5","C6","C7","C8"],
}

Input:

df1 = pd.DataFrame(dataset1,index = [1,2,3,4])
df2 = pd.DataFrame(dataset2,index = [5,6,7,8] )

Input:

df1

Output:

A B C
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
4 A4 B4 C4

Input:

df2

Output:

A B C
5 A5 B5 C5
6 A6 B6 C6
7 A7 B7 C7
8 A8 B8 C8

Pd.Concat

Input:

newdata = pd.concat([df1,df2]) 
newdata

Output:

A B C
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
4 A4 B4 C4
5 A5 B5 C5
6 A6 B6 C6
7 A7 B7 C7
8 A8 B8 C8

Input:

pd.concat([df1,df2],axis = 1)

Output:

A B C A B C
1 A1 B1 C1 NaN NaN NaN
2 A2 B2 C2 NaN NaN NaN
3 A3 B3 C3 NaN NaN NaN
4 A4 B4 C4 NaN NaN NaN
5 NaN NaN NaN A5 B5 C5
6 NaN NaN NaN A6 B6 C6
7 NaN NaN NaN A7 B7 C7
8 NaN NaN NaN A8 B8 C8

Pd.Merge

Input:

dataset1 = {
    "A" : ["A1","A2","A3"],
    "B" : ["B1","B2","B3"],
    "anahtar" : ["K1","K2","K3"]
}
dataset2 = {
    "X" : ["X1","X2","X3","X4"],
    "Y" : ["Y1","Y2","Y3","Y4"],
    "anahtar" : ["K1","K2","K5","K4"]
}

Input:

df1 = pd.DataFrame(dataset1)
df1

Output:

A B anahtar
0 A1 B1 K1
1 A2 B2 K2
2 A3 B3 K3

Input:

df2 = pd.DataFrame(dataset2)
df2

Output:

X Y anahtar
0 X1 Y1 K1
1 X2 Y2 K2
2 X3 Y3 K5
3 X4 Y4 K4

Input:

pd.merge(df1,df2,on = "anahtar")

Output:

A B anahtar X Y
0 A1 B1 K1 X1 Y1
1 A2 B2 K2 X2 Y2

Join

Input:

dataset1 = {
    "A" : ["A1","A2","A3"],
    "B" : ["B1","B2","B3"],
}
dataset2 = {
    "X" : ["X1","X2","X3","X4"],
    "Y" : ["Y1","Y2","Y3","Y4"],
}
df1 = pd.DataFrame(dataset1)
df2 = pd.DataFrame(dataset2)

Input:

df1.join(df2)

Output:

A B X Y
0 A1 B1 X1 Y1
1 A2 B2 X2 Y2
2 A3 B3 X3 Y3

Input:

df2.join(df1)

Output:

X Y A B
0 X1 Y1 A1 B1
1 X2 Y2 A2 B2
2 X3 Y3 A3 B3
3 X4 Y4 NaN NaN

Gerçek Datalar İle oynama Zamanı

Dataset’e Tıklayarak ulaşabilirsiniz.

https://www.kaggle.com/neuromusic/avocado-prices

URL’den Dataset Çekme

Input:

url = "https://raw.githubusercontent.com/unforgiventr/Facebook-DataLeak-TextMining/master/avocado.csv"
data = pd.read_csv(url)
data.head()

Output:

Unnamed: 0 Date AveragePrice Total Volume 4046 4225 4770 Total Bags Small Bags Large Bags XLarge Bags type year region
0 0 2015-12-27 1.33 64236.62 1036.74 54454.85 48.16 8696.87 8603.62 93.25 0.0 conventional 2015 Albany
1 1 2015-12-20 1.35 54876.98 674.28 44638.81 58.33 9505.56 9408.07 97.49 0.0 conventional 2015 Albany
2 2 2015-12-13 0.93 118220.22 794.70 109149.67 130.50 8145.35 8042.21 103.14 0.0 conventional 2015 Albany
3 3 2015-12-06 1.08 78992.15 1132.00 71976.41 72.58 5811.16 5677.40 133.76 0.0 conventional 2015 Albany
4 4 2015-11-29 1.28 51039.60 941.48 43838.39 75.78 6183.95 5986.26 197.69 0.0 conventional 2015 Albany

Localde bulunan dataset’i tanıtma

Input:

data2 = pd.read_csv('avocado.csv', sep = ",")
data2.head()

Output:

Unnamed: 0 Date AveragePrice Total Volume 4046 4225 4770 Total Bags Small Bags Large Bags XLarge Bags type year region
0 0 2015-12-27 1.33 64236.62 1036.74 54454.85 48.16 8696.87 8603.62 93.25 0.0 conventional 2015 Albany
1 1 2015-12-20 1.35 54876.98 674.28 44638.81 58.33 9505.56 9408.07 97.49 0.0 conventional 2015 Albany
2 2 2015-12-13 0.93 118220.22 794.70 109149.67 130.50 8145.35 8042.21 103.14 0.0 conventional 2015 Albany
3 3 2015-12-06 1.08 78992.15 1132.00 71976.41 72.58 5811.16 5677.40 133.76 0.0 conventional 2015 Albany
4 4 2015-11-29 1.28 51039.60 941.48 43838.39 75.78 6183.95 5986.26 197.69 0.0 conventional 2015 Albany

Input:

data = data.drop(["Date"],axis = 1)
data.head()

Output:

Unnamed: 0 AveragePrice Total Volume 4046 4225 4770 Total Bags Small Bags Large Bags XLarge Bags type year region
0 0 1.33 64236.62 1036.74 54454.85 48.16 8696.87 8603.62 93.25 0.0 conventional 2015 Albany
1 1 1.35 54876.98 674.28 44638.81 58.33 9505.56 9408.07 97.49 0.0 conventional 2015 Albany
2 2 0.93 118220.22 794.70 109149.67 130.50 8145.35 8042.21 103.14 0.0 conventional 2015 Albany
3 3 1.08 78992.15 1132.00 71976.41 72.58 5811.16 5677.40 133.76 0.0 conventional 2015 Albany
4 4 1.28 51039.60 941.48 43838.39 75.78 6183.95 5986.26 197.69 0.0 conventional 2015 Albany

Dataseti üzerinde ayar yaptıktan sonra kaydetme

Input:

data.to_csv("yenidata.csv",index = False)

Exceldataset’i okutma

Input:

dataexcel = pd.read_excel("data.xlsx")
dataexcel.head()

Output:

İstanbul Ankara İzmir Adana
0 1 5 7 6
1 2 1 4 5
2 5 1 6 3
3 6 7 7 8

Input:

dataexcel2 = pd.read_excel("data.xlsx", sheet_name="Sayfa2")
dataexcel2

Output:

Amsterdam CA
0 21 123
1 13 41

Input:

dataexcel.to_excel("excelyeni.xlsx")

Json Tipi Data Okutma

Input:

datajson = pd.read_json("data.json")
datajson

Output:

Adana Ankara İstanbul İzmir
0 6 5 1 7
1 5 1 2 4
2 3 1 5 6
3 8 7 6 7

Input:

type(datajson)

Output:

pandas.core.frame.DataFrame

Input:

datajson.to_json("newdatajson.json")

2 Responses

Bir yanıt yazın