Python : Numpy Veri Analizi
Python'da veri analizinde büyük bir yer kapsayan Numpy Kütüphanesinin işlevsel amaçlarını ve kullanım amaçları "Düzenli Veri Kullanımı,Veri Yönetimi,Veri Düzenleme,Veri Görselleştirmeyi Geliştirme" bu esaslarda Numpy kütüphanesinin kendini özgü yapısını nasıl öğreneceğimiz hakkında öğretici bir makale olacaktır.
Numpy Nasıl Kurulur?
python -m pip install numpy
Kurulumu gerçekleştirdikten sonra terminal üzerinde "print(dir(np))" komutu ile kurulum kontrolü yapabilirsiniz Numpy Kütüphanesi içerisinde ki bütün metotları görmenizi sağlayacaktır.
Python'da Numpy Farkı Nedir?
Python'da Numpy genellikle List yapısının yetersiz olduğu koşullarda kullanılır. Numpy, C++ tabanlı olması sebebi ile List yapısından daha hızlı çalışır. List yapısı bellekte daha fazla yer kaplamakta buna karşı Numpy ise bellekte daha az yer kaplamaktadır.
List yapısından çok boyutlu veri gerçekleştirmesi çok zor bir işlem gerektirir. Numpy bunu da ele alarak çok boyutlu veriyi basitleştirerek bize sunar. Bir çok Veri Analisti, Numpy kütüphanesini günümüzde tercih etmektedir.
Numpy Metotları : Reshape ("Çok Boyutlu Veri")
Reshape ile kaç satır içerisinde kaça kaçlık bir veri betiğinin yer alacağını belirleyebilmekteyiz. List yapısı ile birlikte arada ki farkların belirli olması ve kalıcı bir öğrenim olması açısından örnek veriyorum.
Kod :
import numpy as np
py_list = [1,2,3,4,5,6,7,8,9]
np_array = np.array([1,2,3,4,5,6,7,8,9])
multi_np = np_array.reshape(3,3)
print(f"List: \n{py_list}")
print(f"Numpy: \n{multi_np}")
Çıktı :
<class 'list'>
<class 'numpy.ndarray'>
List:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Numpy:
[[1 2 3]
[4 5 6]
[7 8 9]]
Numpy Metotları : ARange ("Sayı Üretme")
Numpy Kütüphanesinin temel metotlarından birisi aRange() methodu hızlı şekilde sayı üretmek için kullanılır.
Kod :
import numpy as np
np_array = np.array([1,2,3,4,6,7])
result = np.arange(1,26)
rs = result.reshape(5,5)
print(rs)
Çıktı :
[[ 1 2 3 4 5]
[ 6 7 8 9 10]
[11 12 13 14 15]
[16 17 18 19 20]
[21 22 23 24 25]]
Numpy Metotları : Zeros ("Sıfırlı Dizi Oluşturma")
Sıfırlardan oluşan float tipinde bir dizi oluşturur.
Kod :
import numpy as np
rs = np.zeros(5)
print(rs)
Çıktı :
[0. 0. 0. 0. 0.]
Numpy Metotları : Ones ("Birli Dizi Oluşturma")
Birlerden oluşan float tipinde bir dizi oluşturur.
Kod :
import numpy as np
rs = np.ones(5)
print(rs)
Çıktı :
[1. 1. 1. 1. 1.]
Numpy Metotları : LinSpace ("Parçalara Bölme")
Elimizde ki veriyi belirlenen parametrelere göre bölme işlemi uygular.
Kod :
import numpy as np
rs = np.linspace(0,100,5)
print(rs)
Çıktı :
[ 0. 25. 50. 75. 100.]
Numpy Metotları : Random.Randİnt ("Random Sayı Oluşturma")
Belirtilen sayı aralığında rastgele bir sayı verir.
Kod :
import numpy as np
rs = np.random.randint(40,50)
print(rs)
Çıktı :
42
Birden Fazla Random Sayı Oluşturma : Randomİnt metodunun farklı bir kullanım işlevi de oluşturulmak istenilen random sayı adetini de belirtebilmemiz. Oluşturulan random sayılar dizi olarak döndürülür.
Kod :
import numpy as np
rs = np.random.randint(40,50,3)
print(rs)
Üçüncü parametre bizden kaç adet random sayı oluşturulacağının parametresini alır.
Çıktı :
[46 44 40]
Girilen parametre verisine göre dizi yapısında sayı oluşturulur.
Numpy Metotları : Random.Rand ("Sıfır Arası Random Sayı Oluşturma")
Rand komutu tek başına Float değerler döndürür. İnt değerler için Randint() metodu tercih edilir, Kısacası Float tipi sayılar için (Rand) İnt tipi sayılar için (İnt) kullanıyoruz. Rand metodu "0" ile 1 arasında dahil olmak üzere farklı sonuçlar çıkartır.
Kod :
import numpy as np
rs = np.random.rand(1)
print(rs)
Çıktı :
[0.08117817]
Randn metodu ile negatif sayı oluşturma : Rand metodu ile Negatif ( - ) sayıları oluşturmak için Randn() metodunu kullanıyoruz.
Kod :
import numpy as np
rs = np.random.randn(1)
print(rs)
Çıktı :
[-0.76638719]
Numpy Metotları : Sum(axis=0/1) ("Diziyi Toplama")
Dizi içerisinde ki rakamlar "Sum()" metodu ile toplanır. Axis dizi içerisinde ki elemanların sütun olarak mı satır olarak mı toplanacağını belirtir.
Axis Mantığı :
axis=0 ↓ ↓ ↓
[[1, 2, 3],
axis=1 → [4, 5, 6],
[7, 8, 9]]
Kod :
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
print(a.sum(axis=0))
Yukarıdan aşağı sütunları toplama işlemi "axis=0" ile gerçekleştirilir.
Çıktı :
[12 15 18]
Her bir sütunun yukarıdan aşağı toplamları yazdırıldı.
Numpy Metotları : Max("En Yüksek Sayıyı Bulma")
Oluşturulan dizi içerisinde ki en yüksek sayıyı bulmak için kullanılır.
Kod :
import numpy as np
rnd = np.random.randint(0,100,10)
print(rnd)
print(rnd.max())
Çıktı :
[78 60 76 7 61 70 44 2 72 83]
83
Numpy Metotları : Min("En Küçük Sayıyı Bulma")
Oluşturulan dizi içerisinde ki en küçük sayıyı bulmak için kullanılır.
Kod :
import numpy as np
rnd = np.random.randint(0,100,10)
print(rnd)
print(rnd.min())
Çıktı :
[99 55 17 44 27 23 42 92 99 5]
5
Numpy Metotları : Mean("Dizi Sayılarının Ortalamasını Bulma")
Oluşturulan dizi içerisinde ki bütün sayıların ortalamasını bulmak için kullanılır.
Kod :
import numpy as np
rnd = np.random.randint(0,100,10)
print(rnd)
print(rnd.mean())
Çıktı :
[24 36 39 78 7 69 43 47 93 49]
48.5
Numpy Metotları : Argmax("En Yüksek Sayı Indeks Öğrenme")
Dizi içerisinde ki en yüksek rakamın kaçıncı Indeks sayısında bulunduğunu belirtir.
Kod :
import numpy as np
rnd = np.random.randint(0,100,10)
print(rnd)
print(rnd.argmax())
Çıktı :
[45 22 91 67 37 46 35 84 83 23]
2
Numpy Metotları : Argmin("En Küçük Sayı Indeks Öğrenme")
Dizi içerisinde ki en küçük rakamın kaçıncı Indeks sayısında bulunduğunu belirtir.
Kod :
import numpy as np
rnd = np.random.randint(0,100,10)
print(rnd)
print(rnd.argmin())
Çıktı :
[18 8 57 15 19 13 0 15 81 47]
6
Numpy Dizilerin Indekslenmesi
Numpy üzerinde Diziler içerisinde ki sayıların İndekslenme sıralamaları ve veriyi filtreleyerek çıkartma hakkında bütün metot kullanım yöntemlerini kullanacağız.
Indeks Dizi Yönetimi
import numpy as np
rnd = np.arange(0,10)
result = rnd[5] # 5'nci Indeks'deki Veriyi Getirir.
result2 = rnd[-1] # Son Indeks'deki Veriyi Getirir.
result3 = rnd[1:3] # 1 Indeks ile 3 Indeks arasındaki Verileri Getirir.
print(f"[5] Çıktısı: {result} \n[-1] Çıktısı: {result2}\n
[1:3] Çıktısı: {result3}")
Çıktı :
[5] Çıktısı: 5
[-1] Çıktısı: 9
[1:3] Çıktısı: [1 2]
Listeyi Ters Çevirme [::-1]
Listeyi Sağdan Sola doğru çevirmek için dizi sonuna [::-1] olarak belirmemiz yeterli olucaktır.
import numpy as np
rnd = np.arange(0,10)
result = rnd[::-1] # [:] → baştan sona kadar al | ::-1 → sağdan sola (tersten) git
print(result)
Sondan başa ters çevrildiğinde -1 yerine girmiş olduğunuz sayı kadar ilerler -2 yaparsanız ikişer şekilde arada ki sayıları atlayarak Indeks verilerini getirecektir.
Çıktı :
[9 8 7 6 5 4 3 2 1 0]
İç İçe Liste İçerisinde Indeks Veri Çekme [:,2]
İç içe olan List yapılarında belirli bir indeks değerinde ki List verilerini çekmek için kullanılmaktadır.
Kod :
import numpy as np
rnd = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(rnd[:,2])
Çıktı :
[3 6 9]
Her List yapısının 2 indeks elemanını yazdırma işlemi gerçekleştirildi.
İç İçe Liste İçerisinde Birden Fazla Indeks Veri Çekme [:,0:2]
İç içe olan List yapılarında belirli bir indeks değerinde ki List birden fazla List verilerini çekmek için kullanılmaktadır.
Kod :
import numpy as np
rnd = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(rnd[:,0:2])
Çıktı :
[[1 2]
[4 5]
[7 8]]
List Yapısı Tersten Veri Alma [-1:]
List yapıları içerisinde iç içe liste yapısında en sondaki list yapısından başlayarak, sondan başa seçim yapmak için "-1,-2" olarak gerekli seçimlerde yapılabilmektedir.
Kod :
import numpy as np
rnd = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(rnd[-1,:])
Çıktı :
[7 8 9]
List Yapısı İçerisinde Belirli Veri Seçme [:2,:2]
NumPy kütüphanesiyle oluşturulmuş çok boyutlu dizilerde, belirli satır ve sütun aralığını almak için [:, :] biçimi kullanılır.
Örneğin [:2, :2], ilk 2 satır ve ilk 2 sütunu getirir."
Kod :
import numpy as np
rnd = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(rnd[:2,:2])
Çıktı :
[[1 2]
[4 5]]
List İçerisine Veri Yerleştirme
List yapısında var olan verileri değiştirme için değişken üzerinde belirli Indeks sayılarına atamalar yapılarak değiştirme yapmak mümkündür.
Kod :
import numpy as np
rd1 = np.arange(1,10)
rd2 = rd1
rd2[0] = 20
print(rd2)
Çıktı :
[20 2 3 4 5 6 7 8 9]
Arange metodu ile oluşturulmuş olan "1,2,3,4,5,6,7,8,9" List yapısının 0 ( List Yapısında "1" Temsil ediyor.) indeksi 1 rakamını 0 indekse atılmış olan 20 ile değiştirme işlemini uyguluyor.
Numpy List Kopyalama Metodu : Copy
Python'da NumPy kütüphanesi ile çalışırken bazen bir dizinin (array) birebir kopyasını almak isteyebilirsin. Eğer sadece bir değişkene eşitleyerek kopyalama yaparsan, aslında aynı dizinin referansını almış olursun. Bu durumda biri değiştiğinde diğeri de değişir. İşte tam bu noktada copy() metodu devreye giriyor!
Kod :
import numpy as np
rd1 = np.arange(1,10)
rd2 = rd1.copy()
rd2[0] = 20
print(rd2)
Çıktı :
[20 2 3 4 5 6 7 8 9]
Numpy List Aritmetik İşlemler
NumPy’nin en güçlü yönlerinden biri, diziler (array) üzerinde çok hızlı ve kolay bir şekilde aritmetik işlemler yapılabilmesidir. Python’daki klasik listelerde bu işlemler tek tek for döngüleriyle yapılırken, NumPy bu işi tek satırda ve süper hızlı şekilde çözer.
Kod :
import numpy as np
rd1 = np.arange(1,10)
rd2 = rd1.copy()
rd2[0] = 20
result1 = rd1 + rd2
result2 = rd1 - rd2
result3 = rd1 * rd2
result4 = rd1 / rd2
result5 = rd1 % rd2
print(f"Toplama: {result1}")
print(f"Çıkarma: {result2}")
print(f"Çarpma: {result3}")
print(f"Bölme: {result4}")
print(f"Mod Alma: {result5}")
Çıktı :
Toplama: [21 4 6 8 10 12 14 16 18]
Çıkarma: [-19 0 0 0 0 0 0 0 0]
Çarpma: [20 4 9 16 25 36 49 64 81]
Bölme: [0.05 1. 1. 1. 1. 1. 1. 1. 1. ]
Mod Alma: [1 0 0 0 0 0 0 0 0]
Numpy Sinus Hesaplama Metodu: Sin
NumPy, sadece sayılarla işlem yapmaz; aynı zamanda güçlü matematiksel fonksiyonlar da sunar. Bu fonksiyonlardan biri de trigonometrik hesaplamalarda kullanılan sin() metodudur.
Kod :
import numpy as np
Sinus = np.sin(5)
print(Sinus)
Çıktı :
-0.9589242746631385
Numpy Sinus Hesaplama Metodu: Cos
NumPy kütüphanesi, matematiksel işlemleri kolaylaştıran güçlü araçlar sunar. Bu araçlardan biri de trigonometrik fonksiyonlardan olan cos() metodudur. Bu metot sayesinde bir sayının kosinüs (cos) değerini kolayca hesaplayabilirsin.
Kod :
import numpy as np
Cosinus = np.cos(5)
print(Cosinus)
Çıktı :
0.28366218546322625
Numpy Sayının Karekök Hesaplama Metodu: Sqrt
Veri analizi veya bilimsel hesaplamalarda bir sayının karekökünü (√) almak oldukça yaygındır. Python’daki NumPy kütüphanesi bu işlemi kolayca yapmamıza olanak tanır.
Kod :
import numpy as np
KareKök = np.sqrt(5)
print(KareKök)
Çıktı :
2.23606797749979
Numpy Logaritma Hesaplama Metodu: Log
Veri analizi ve bilimsel hesaplamalarda logaritma işlemleri çok sık kullanılır. NumPy, bu işlemi kolaylaştırmak için bize log() fonksiyonunu sunar. Bu fonksiyon sayesinde sayılar üzerinde doğal logaritma (ln) işlemi yapabiliriz.
Kod :
import numpy as np
Logaritma = np.log(5)
print(Logaritma)
Çıktı :
1.6094379124341003
Numpy List Yapılarını Birleştirme Metodu : Vstack ( Dikey Birleştirme )
Veri analizinde veya dizi işlemlerinde, birden fazla veri kümesini alt alta eklemek (dikey olarak birleştirmek) sık karşılaşılan bir ihtiyaçtır. Python’un güçlü kütüphanesi NumPy, bu iş için bize çok pratik bir metot sunar: vstack()
Kod :
import numpy as np
rd = np.array([[1,2,3],[4,5,6],[7,8,9]])
rd2 = np.array([[10,11,12],[13,14,15],[16,17,18]])
number1 = rd.reshape(3,3)
number2 = rd2.reshape(3,3)
rf = np.vstack((number1,number2))
print(rf)
Çıktı :
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]
[13 14 15]
[16 17 18]]
Numpy List Yapılarını Birleştirme Metodu : Hstack ( Yatay Birleştirme )
Veri bilimi projelerinde bazen veri setlerini yan yana (sütun bazlı) birleştirmek gerekir. NumPy, bu işlemi yapmak için pratik bir metot sunar: hstack(). Bu fonksiyon sayesinde dizileri yatay olarak birleştirmek sadece tek satırla mümkündür.
Kod :
import numpy as np
rd = np.array([[1,2,3],[4,5,6],[7,8,9]])
rd2 = np.array([[10,11,12],[13,14,15],[16,17,18]])
number1 = rd.reshape(3,3)
number2 = rd2.reshape(3,3)
rf = np.hstack((number1,number2))
print(rf)
Çıktı :
[[ 1 2 3 10 11 12]
[ 4 5 6 13 14 15]
[ 7 8 9 16 17 18]]
Numpy List Yapılarını Koşullandırma
NumPy, klasik Python listelerine göre çok daha hızlı ve verimli çalışır. Bu fark özellikle koşullu işlemler sırasında belirginleşir. Python’da genellikle her bir elemanı for döngüsüyle kontrol ederken, NumPy ile tüm dizi üzerinde tek seferde koşul uygulayabiliriz. Bu sayede hem kod sadeleşir hem de işlem hızı artar.
Daha verimli bir öğrenim süreci için, sizlere hem Python’un temel for döngüsü örneklerini hem de NumPy ile hazırlanmış pratik uygulamaları sunuyorum.
Python :
import numpy as np
liste = [1, 2, 3, 4, 5, 6]
ciftler = [x for x in liste if x % 2 == 0]
print(ciftler) # [2, 4, 6]
Numpy :
dizi = np.array([1, 2, 3, 4, 5, 6])
ciftler = dizi[dizi % 2 == 0]
print(ciftler) # [2 4 6]
Bu içerikte NumPy kütüphanesinin temel ve ileri düzey kullanım alanları kapsamlı bir şekilde ele alınmıştır. NumPy sayesinde Python projelerinde daha hızlı, verimli ve ölçeklenebilir çözümler geliştirmek mümkündür. İlgili diğer yazılarımızı inceleyerek farklı konularda da detaylı bilgilere ulaşabilirsiniz.
Post a Comment