Veri Bilimi İçin Python Notları-11: Python’da Matematiksel ve İstatistiksel İşlemler

V

İçindekiler

1. Python’da Matematiksel Operatörler

Python’da matematiksel operatörler ya da import edilebilen daha gelişmiş bir “math” modülü yardımıyla matematiksel işlemler kolaylıkla yapılabilir.

Not: Konuyla yakından ilgili olduğu için daha önceki makalelerde incelenen Python’un aritmetik operatörlerine, aşağıda tekrar yer verilmiştir.

1.1. Python’da Aritmetik Operatörler

Python’da temel matematiksel işlemlerde kullanılan aritmetik operatörlerin çalışma ilkelerini kavramak için aşağıdaki kodları çalıştırdıktan sonra incelemeniz önerilir.

  • Toplama (+) operatörü
  • Çıkarma (-) operatörü
  • Çarpma (*) operatörü
  • Bölme (/) operatörü
  • Mod (%) operatörü
  • Üs (**) operatörü
  • En büyük ortak kat (//) operatörü
x = 4
y = 2
# Toplama (+) operatörü
print(x + y) #Sonuç: 6
# Çıkarma (-) operatörü
print(x - y) #Sonuç: 2
# Çarpma (*) operatörü
print(x * y) #Sonuç: 8
# Bölme (/) operatörü
print(x / y) #Sonuç: 2.0
# Mod (%) operatörü
print(x % y) #Sonuç: 0 # x'in y'ye bölümünden kalanı verir
a = 12
b = 5
print(a % b) #Sonuç: 2 # a'nın b'ye bölümünden kalanı verir
# Üs (**) operatörü
print(x ** y) #Sonuç: 16 # x^y = 2^4 = 2*2*2*2 = 16
# En büyük ortak kat (//) operatörü
print(x // y) #Sonuç: 2
a = 12
b = 5
print(a // b) #Sonuç: 2 # a'nın için kaç tane tam b değeri var sorusunun cevabı = 2 tane 5.
  

1.2. Python’da Minimum ve Maksimum Değerler (min ve max metotları)

Python’da list, tuple vb. yinelenebilir nesneler içinde tutulan verilerin minimum ve maksimum elemanları aşağıda gösterildiği gibi elde edilebilir.

x = min(3, 7, 5, 21, 3, 8, 17)
y = max(3, 7, 5, 21, 3, 8, 17)

print(x) #Sonuç: 3
print(y) #Sonuç: 21

1.3. Python’da Mutlak Değer (abs metodu)

Python’da bir sayının mutlak değeri aşağıda gösterildiği gibi “abs” metoduyla elde edilebilir.

x = abs(-5)
y = abs(-45.72)

print(x) #Sonuç: 5
print(y) #Sonuç: 45.72

1.4. Python’da Üslü ve Köklü İfadeler (pow metodu)

Python’da bir sayının üssü ya da ikinci, üçüncü vb. dereceden kökü aşağıda gösterildiği gibi “pow” metoduyla elde edilebilir.

x = pow(2, 5) #(2^5 ya da 2**5, 2*2*2*2*2 = 32)
print(x) #Sonuç: 32 

x = pow(25, 1/2) # 25'in karekökü, yani ikinci dereceden kökü
print(x) #Sonuç: 5.0

x = pow(8, 1/3) # 8'in küp kökü, yani üçüncü dereceden kökü
print(x) #Sonuç: 2.0

2. Python’da “math” Modülü ile Matematiksel İşlemler

Python’da matematiksel işlemler “math” modülü import edilerek de yapılabilir. Aşağıda “math” modülünün en yaygın kullanılan matematiksel metotlarına yer verilmiştir.

2.1. Python’da Sayıları Aşağı ve Yukarı Yuvarlama (floor ve ceil metotları)

Python’da sayısal ifadeler “math” modülü kullanılarak aşağıda gösterildiği gibi integer tipinde aşağı ya da yukarı yuvarlanabilir.

import math

print("______________________Aşağı Yuvarlama\n")

#floor metodu: Sayısal bir değer aşağı yuvarlanır.
print(math.floor(0.2)) #Sonuç: 0
print(math.floor(5.745)) #Sonuç: 5
print(math.floor(-3.6)) #Sonuç: -4
print(math.floor(11.999)) #Sonuç: 11
print(math.floor(50.0)) #Sonuç: 50

print("______________________Yukarı Yuvarlama\n")

#ceil metodu: Sayısal bir değer yukarı yuvarlanır.
print(math.ceil(0.2)) #Sonuç: 1
print(math.ceil(5.745)) #Sonuç: 6
print(math.ceil(-3.6)) #Sonuç: -3
print(math.ceil(11.999)) #Sonuç: 12
print(math.ceil(50.0)) #Sonuç: 50

2.2. Python’da Toplam Almak (fsum metodu)

Python’da liste tipi nesnelerin elemanları olan sayısal ifadeler “math” modülü kullanılarak aşağıda gösterildiği gibi toplanabilir.

import math

print("______________________Toplam\n")

print(math.fsum([3, 4, 5])) #Sonuç: 12.0
print(math.fsum([3, 2, 7, 5])) #Sonuç: 17.0
print(math.fsum([3.5, 0.8, 2.4, 5.7])) #Sonuç: 12.4print(math.ceil(50.0)) #Sonuç: 50

2.3. Python’da Faktöriyel Hesaplamak (factorial metodu)

Python’da sayısal ifadelerin faktöriyel değeri “math” modülü kullanılarak aşağıda gösterildiği gibi elde edilebilir.

import math

print("______________________Faktöriyel\n")

print(math.factorial(3)) #Sonuç: 6
print(math.factorial(4)) #Sonuç: 24
print(math.factorial(0)) #Sonuç: 1
#Negatif sayıların faktöriyelini doğrudan bu metotla elde edemezsiniz.
#print(math.factorial(-3)) #Sonuç: ValueError: factorial() not defined for negative values
print((-1)*math.factorial(3)) #Sonuç: -6

2.4. Python’da Permütasyon ve Kombinasyon Hesaplamak (perm  ve comb metotları)

Python’da sayısal ifadelerin tekrarsız permütasyon ve kombinasyon değerleri “math” modülü kullanılarak aşağıda gösterildiği gibi elde edilebilir.

import math

print("______________________Permütasyon (Tekrarsız)\n")

n = 5
k = 3
# c(5,3)= 5!/((5-3)!) = 5.4.3.2.1 /(2.1) = 5.4.3 = 60
#Permütasyonu hesapla
print (math.perm(n, k)) #Sonuç: 60

print("______________________Kombinasyon (Tekrarsız)\n")

n = 5
k = 3
# c(5,3)= 5!/((5-3)!.3!) = 5.4.3.2.1 /((2.1).(3.2.1)) = 5.4/2.1 = 10
#Kombinasyonu hesapla
print (math.comb(n, k)) #Sonuç: 10

2.5. Python’da Mutlak Değer Hesaplamak (fabs metodu)

Python’da sayısal ifadelerin mutlak değerleri “math” modülü kullanılarak aşağıda gösterildiği gibi elde edilebilir.

import math

print("______________________Mutlak Değer\n")

#fabs metodu, yukarıda bahsedilen abs metodundan farklı olarak daima float bir değer döndürür.
print(math.fabs(-5)) #Sonuç: 5.0
print(math.fabs(-45.72)) #Sonuç: 45.72
print(math.fabs(10)) #Sonuç: 10.0

print(abs(-5)) #Sonuç: 5
print(abs(-45.72)) #Sonuç: 45.72
print(abs(10)) #Sonuç: 10

2.6. Python’da Mod Hesaplamak (fmod metodu)

Python’da sayısal ifadelerin modu “math” modülü kullanılarak aşağıda gösterildiği gibi elde edilebilir.

import math

print("______________________Mod\n")

#Bir sayının başka bir sayıya bölümünden kalanı verir.
print(math.fmod(6, 2)) #Sonuç: 0.0 #6'nın 2'ye bölümünden kalan
print(math.fmod(15, 7)) #Sonuç: 1.0
print(math.fmod(23, 8)) #Sonuç: 7.0
print(math.fmod(-26, 3)) #Sonuç: -2.0
print(math.fmod(13, 23)) #Sonuç: 13.0
print(math.fmod(23, 13)) #Sonuç: 10.0
#0'ın 0'a bölümü tanımsız olduğu için modunu da hesaplayamazsınız.
#print(math.fmod(0, 0)) #Sonuç: ValueError: math domain error

2.7. Python’da En Yakın Modu Hesaplamak (remainder metodu)

Python’da sayısal ifadelerin en yakın modu “math” modülü kullanılarak aşağıda gösterildiği gibi elde edilebilir.

import math

print("______________________Remainder\n")

#Remainder, mod'tan farklıdır. Örnekleri dikkatlice inceleyiniz.
print(math.remainder(6, 2)) #Sonuç: 0.0 #6'nın 2'ye bölümünden kalan
print(math.remainder(15, 7)) #Sonuç: 1.0
print(math.remainder(23, 8)) #Sonuç: -1.0   # 23, 8'e tam bölünebilmek için 1 eksik.
print(math.remainder(-26, 3)) #Sonuç: -2.0  # -26, 3'e tam bölünebilmek için 2 fazla.
print(math.remainder(13, 23)) #Sonuç: -10.0 # 13, 23'e tam bölünebilmek için 10 eksik.
print(math.remainder(23, 13)) #Sonuç: -3.0  # 23, 13'e tam bölünebilmek için 3 eksik.

print("________\n")

print(math.remainder(11, 5)) #Sonuç: 1.0  # 11, 5'e tam bölünebilmek için 1 fazla.
print(math.remainder(12, 5)) #Sonuç: 2.0  # 12, 5'e tam bölünebilmek için 2 fazla.
print(math.remainder(13, 5)) #Sonuç: -2.0 # 13, 5'e tam bölünebilmek için 2 eksik.
print(math.remainder(14, 5)) #Sonuç: -1.0 # 14, 5'e tam bölünebilmek için 1 eksik.

2.8. Python’da En Büyük Ortak Böleni Hesaplamak (gcd metodu)

Python’da sayısal ifadelerin en büyük ortak böleni “math” modülü kullanılarak aşağıda gösterildiği gibi elde edilebilir.

import math

print("______________________En Büyük Ortak Bölen\n")

#gcd = the greatest common divisor
print (math.gcd(5, 15)) #Sonuç: 5
print (math.gcd(4, 8)) #Sonuç: 4
print (math.gcd(24, 72)) #Sonuç: 24 
print (math.gcd(-10, -40)) #Sonuç: 10

2.9. Python’da Üslü/Köklü İfadeleri Hesaplamak (pow metodu)

Python’da sayısal ifadelerin en büyük ortak böleni “math” modülü kullanılarak aşağıda gösterildiği gibi elde edilebilir.

import math

print("______________________Üs/Kök\n")

#pow metodu, yukarıda bahsedilen pow metodundan farklı olarak daima float bir değer döndürür.
x = math.pow(2, 5) #(2^5 ya da 2**5, 2*2*2*2*2 = 32)
print(x) #Sonuç: 32.0
x = math.pow(25, 1/2) # 25'in karekökü, yani ikinci dereceden kökü
print(x) #Sonuç: 5.0
x = math.pow(8, 1/3) # 8'in küpkökü, yani üçüncü dereceden kökü
print(x) #Sonuç: 2.0

x = pow(2, 5) #(2^5 ya da 2**5, 2*2*2*2*2 = 32)
print(x) #Sonuç: 32 
x = pow(25, 1/2) # 25'in karekökü, yani ikinci dereceden kökü
print(x) #Sonuç: 5.0
x = pow(8, 1/3) # 8'in küpkökü, yani üçüncü dereceden kökü
print(x) #Sonuç: 2.0

2.10. Python’da Karekök ve Tam Sayı Karekök Hesaplamak (sqrt  ve isqrt  metotları)

Python’da sayısal ifadelerin karekökü ve tam sayı karekökü “math” modülü kullanılarak aşağıda gösterildiği gibi elde edilebilir.

import math

print("______________________Karekök\n")

#Bir sayının karekökünü verir.
print (math.sqrt(4)) #Sonuç: 2.0
print (math.sqrt(9)) #Sonuç: 3.0
print (math.sqrt(25)) #Sonuç: 5.0
print (math.sqrt(10))#Sonuç: 3.1622776601683795

print("______________________Karekök Yuvarlama\n")

#Karekökü alınan sayının sonucunu aşağı duğru integer değere yuvarlar
print (math.isqrt (10)) #Sonuç: 3
print (math.isqrt(5)) #Sonuç: 2
print (math.isqrt (24)) #Sonuç: 4
print (math.isqrt (65)) #Sonuç: 8
print (math.isqrt (36)) #Sonuç: 6

2.11. Python’da Elemanları Birbirleri ile Çarpmak (prod metodu)

Python’da liste tipi nesnelerin elemanları olan sayısal ifadeler “math” modülü kullanılarak aşağıda gösterildiği gibi birbirleri ile çarpılabilir.

import math

print("______________________Çarpan\n")

myTuple = (2, 3, 5, 1)
#Elemanları çarpar
print(math.prod(myTuple)) #Sonuç: 30

2.12. Python’da İki Sayının Değeri ve İşareti ile Yeni Bir Sayı Elde Etmek (copysign metodu)

Python’da iki sayısal ifadeden birinin değeri diğerinin işareti ile “math” modülü kullanılarak aşağıda gösterildiği gibi birleştirilip yeni bir sayı elde edilebilir.

import math

print("______________________Değer ve İşaret Birleşimi\n")

#copysign metodu, iki sayıdan ilkinin değerini diğerinin işareti ile birleştirir.
print(math.copysign(15, -5)) #Sonuç: -15.0
print(math.copysign(-23.1, 14)) #Sonuç: 23.1
print(math.copysign(-153, -66)) #Sonuç: -153.0

2.13. Python’da Euler Sabiti, Pi Sayısı, Tau Sabiti ve Nan (e, pi, tau ve nan metotları)

Python’da Euler sabiti, pi sayısı, tau sabiti ve numerik olmayan değer “math” modülü kullanılarak aşağıda gösterildiği gibi elde edilebilir.

import math

print("______________________Euler Sabiti\n")

print (math.e) #Sonuç: 2.718281828459045

print("______________________Pi Sayısı\n")

print (math.pi) #Sonuç: 3.141592653589793

print("______________________Tau Sabiti\n")

print (math.tau) #Sonuç: 6.283185307179586

print("______________________Tau Sabiti\n")

#Nan, Not a Number ifadesinin kısaltmasıdır. Yani bir sayı değil.
print (math.nan)  #Sonuç: nan

3. Python’da “statistics” Modülü ile İstatistiksel İşlemler

Python’da istatistiksel işlemler “statistics” modülü import edilerek yapılabilir. Aşağıda “statistics” modülünün en yaygın kullanılan istatistiksel metotlarına yer verilmiştir.

3.1. Python’da Ortalama (mean metodu)

Merkezi eğilim ölçüsü birimi olan aritmetik ortalama, “statistics” modülü import edildikten sonra “mean” metoduyla hesaplanabilir.

# mean-ortalama
print(statistics.mean([6,7,2,5,7,5,7,6,1])) # Sonuç: 5.111111111111111

3.2. Python’da Medyan (median metodu)

Sıralanmış bir veri setinin (sıra olarak) ortasında yer alan veriyi ifade eder. 3, 5, 2, 7, 4 serisinin küçükten büyüğe sıralandıktan (2, 3, 4, 5, 7) sonra, medyanı (n+1)/2=3 yöntemiyle elde edilen serinin 3. elemanı olan 4 değeridir. Seri 2, 3, 4, 5, 7, 8 şeklinde gözlem sayısı çift sayı olsaydı, (n+1)/2=3.5 şeklinde üç bucuğuncu sıra gibi anlamsız bir sıra elde edilir. Bu durumda 3. ve 4. Sıradaki değerlerin ortalaması alınarak medyan (4+5)/2=4.5 hesaplanır.

Merkezi eğilim ölçüsü birimi olan medyan, “statistics” modülü import edildikten sonra “median” metoduyla hesaplanabilir.

# median-ortanca (serinin ortasında yer alan değeri verir.)
print(statistics.median([6,7,2,5,7,5,7,6,1])) # Sonuç: 6

3.3. Python’da İstatistiksel Mod (mode metodu)

Bir veri setinde en sık tekrar eden elemanı ifade eder. 6,7,2,5,7,5,7,6,1 şeklinde bir seride en sık tekrar eden gözlem 7 olduğu için serinin modu 7 değeridir.

Başka bir merkezi eğilim ölçüsü birimi olan mod, “statistics” modülü import edildikten sonra “mode” metoduyla hesaplanabilir.

3.4. Python’da Varyans (pvariance, variance metoları)

# mode (serinin en sık tekrar eden değerini verir.)
print(statistics.mode([6,7,2,5,7,5,7,6,1])) # Sonuç: 7

Popülasyon ve örneklem varyanslarının hesaplama yöntemleri paydaları hariç aynıdır. Popülasyon varyansı, serinin her bir değerinin ortalamadan farkının kareleri toplamının gözlem sayısı n’ye bölümüdür.

\displaystyle \frac{1}{n}\left( {\sum\limits_{i = 1}^n {{{\left( {{x_i} - \mu } \right)}^2}} } \right)

Yukarıdaki denklemde n gözlem sayısını, \displaystyle {x_i} yapılan i. gözlemin değerini, \displaystyle \mu  ise popülasyonun ortalamasını temsil eder.

Örneklemin varyansı ise serinin her bir değerinin ortalamadan farkının kareleri toplamının n-1’e bölümüdür.

\displaystyle \frac{1}{{n - 1}}\left( {\sum\limits_{i = 1}^n {{{\left( {{x_i} - \hat \mu } \right)}^2}} } \right)

Yukarıdaki denklemde ise n gözlem sayısını, \displaystyle {x_i} yapılan i. gözlemin değerini, \displaystyle \hat \mu  ise örneklemin ortalamasını temsil eder.

Söz gelimi bir ilde yaşayan her bir sakinin yaşından oluşan bir veri seti popülasyona, içlerinden rassal olarak seçilen 500 sakinin yaşından oluşan bir veri seti ise örnekleme işaret eder.

Merkezi dağılım ölçüsü birimi olan varyans, “statistics” modülü import edildikten sonra popülasyon için “pvariance”, örneklem için “variance” metoduyla hesaplanabilir.

# popülasyonun varyansı
print(statistics.pvariance([6,7,2,5,7,5,7,6,1])) # Sonuç:4.320987654320987

# örneğin (sample) varyansı
print(statistics.variance([6,7,2,5,7,5,7,6,1])) # Sonuç: 4.861111111111111

3.5. Python’da Standart Sapma (pstdev, stdev metoları)

Popülasyon ve örneklem ayrımı yukarıda açıklandığı gibidir. Popülasyon varyansının karekökü popülasyonun standart sapmasını, örneklem varyansının karekökü örneklemin standart sapmasını ifade eder.

Merkezi dağılım ölçüsü birimi olan standart sapma, “statistics” modülü import edildikten sonra popülasyon için “pstdev”, örneklem için “stdev” metoduyla hesaplanabilir.

# popülasyonun standart sapması
print(statistics.pstdev([6,7,2,5,7,5,7,6,1])) # Sonuç: 2.078698548207745

# örneğin (sample) standart sapması
print(statistics.stdev([6,7,2,5,7,5,7,6,1])) # Sonuç: 2.204792759220492

 

 

İshak Kutlu, Veri Bilimi İçin Python Notları

Yorum Yap

İshak Kutlu

Veri & Otomasyon Uzmanı

Kurumsal iş akışlarını düzenleyen veri odaklı otomasyon sistemleri ve makine öğrenmesi tabanlı çözümler geliştirir. Gerçek operasyonel süreçler için ölçeklenebilir ve izlenebilir yapılar tasarlar.

YouTube   YouTube   YouTube   YouTube