• Sirius Loaderi discord üzerinden indirebilirsiniz. discord.gg/counterx

Python ve NumPy ile Performanslı Veri İşleme

enes234

Member
T.Moderator
Katılım
16 Ağu 2024
Mesajlar
43
SP
118
Günümüz veri bilimcileri ve yazılım geliştiricileri, büyük veri kümeleri üzerinde hızlı ve verimli hesaplamalar yapabilmek için genellikle Python'u tercih etmektedir. Python'un esnek ve okunabilir yapısı, özellikle makine öğrenimi, veri analitiği ve bilimsel hesaplama gibi alanlarda popüler hale gelmiştir. Ancak, Python'un özellikle hız ve hesaplama gücü açısından bazı sınırlamaları bulunmaktadır. Bu makalede, Python'un performans kısıtlamalarına ve bu zayıflıkları nasıl aşabileceğimize değineceğiz. Özellikle NumPy kütüphanesinin bu tür sorunları nasıl çözdüğünü ve neden modern makine öğrenimi uygulamalarında bu kadar yaygın olarak kullanıldığını inceleyeceğiz.

Python’un Hız Sorunları

Python, pek çok durumda kullanıcı dostu bir programlama dili olsa da, doğası gereği bazı görevlerde performans sıkıntıları yaşatabilir. Bunun nedeni, Python'un bir yazılım yorumlayıcısı üzerinde çalışması ve komutları satır satır işlemesidir. Bu, özellikle büyük veri kümeleri veya yoğun hesaplamalı görevlerde Python'un diğer dillere kıyasla yavaş olmasına neden olabilir. Python’un bu hesaplama zayıflığı, doğru araçlarla telafi edilebilir. NumPy, bu noktada en önemli yardımcı kütüphanelerden biridir.

Numpy ve Verimlilik

NumPy (Numerical Python), Python'da çok boyutlu dizi (array) ve matrisler üzerinde hızlı sayısal işlemler gerçekleştirmek için geliştirilmiş bir kütüphanedir. NumPy, Python’un temel veri yapısı olan liste ve dizilere benzer şekilde çalışır, ancak bu veri yapılarının sınırlamalarını ortadan kaldırır ve performans iyileştirmeleri sağlar. Bu hız kazanımı, NumPy'nin altında yatan C ve Fortran gibi düşük seviyeli dillerle optimize edilmiş yapısından kaynaklanmaktadır.
NumPy’nin Avantajları:
  • Çok Boyutlu Diziler: NumPy, tek boyutlu dizilerin yanı sıra iki veya daha fazla boyutlu veri yapıları oluşturabilir. Bu diziler, büyük veri setleri üzerinde daha verimli işlem yapılmasını sağlar.
  • Broadcasting: NumPy’nin sunduğu broadcasting özelliği, farklı boyutlardaki diziler üzerinde matematiksel işlemlerin kolayca uygulanmasını sağlar. Bu özellik, bir veri setinin her elemanına aynı işlemin uygulanması gerektiğinde çok kullanışlıdır.
  • Optimize Edilmiş İşlemler: NumPy, işlemleri C dilinde optimize edilmiş fonksiyonlarla gerçekleştirir. Bu, özellikle büyük veri kümelerinde Python’un geleneksel yöntemlerine göre çok daha hızlı işlem yapmayı sağlar.

NumPy ile Performansın İyileştirilmesi

Bir örnek üzerinden NumPy’nin performans avantajlarını inceleyelim. Bir Python iki boyutlu listesi oluşturalım ve her öğrencinin sınav notlarını içerdiğini düşünelim. Bu dizideki her öğrencinin not ortalamasını hesaplamak için standart bir Python çözümüne bakalım:
CODE:

grades = [[70, 80, 90], [60, 75, 85], [85, 90, 92]]
print([sum(row)/len(row) for row in grades])
Bu çözüm, her öğrencinin sınav notlarının ortalamasını verir. Ancak, bu işlemi daha büyük veri setlerinde yaparsak, işlem süresi önemli ölçüde artacaktır. Aynı problemi NumPy ile çözdüğümüzde, daha basit ve hızlı bir yöntem kullanabiliriz:

CODE:
import numpy as np
numpy_grades = np.array(grades)
print(np.average(numpy_grades, axis=1)) # Öğrencilerin sınav ortalamaları
Bu iki çözüm arasındaki fark, NumPy’nin daha verimli ve kısa kodla aynı işlemi yapabilmesidir. NumPy’nin average fonksiyonu, diziyi hızlıca işleyebilir ve Python döngülerine göre çok daha iyi performans sağlar.

Python’da Hız ve Performans İçin NumPy Kullanımı

Python’da hız ve performans sorunları yaşadığınızda, NumPy'nin sunduğu optimize edilmiş yöntemler devreye girer. Map() ve list comprehension gibi fonksiyonlarla da veri işleme yapılabilse de, NumPy’nin sunduğu hız ve verimlilik, özellikle büyük boyutlu veri setlerinde rakipsizdir.

Sonuç olarak, Python’un kendi veri yapıları ve fonksiyonları basit işlemler için yeterli olabilirken, büyük veri setleri veya çok boyutlu dizilerle çalışırken NumPy'nin sağladığı avantajlar göz ardı edilemez. NumPy, Python’un doğasındaki yavaşlığı telafi ederek bilimsel hesaplamalar, veri analitiği ve makine öğrenimi gibi alanlarda daha yüksek performans sağlar.
CODE:

Kod:
import numpy as np
import time

# Öğrencilerin sınav notlarını içeren iki boyutlu bir liste
grades = [
[70, 80, 90],  # 1. öğrencinin notları
[60, 75, 85],  # 2. öğrencinin notları
[85, 90, 92]   # 3. öğrencinin notları
] * 10000  # Performansı test etmek için veriyi genişlettik

# Python ile ortalama hesaplama (Normal)
start_time_python = time.time()
average_grades_python = [sum(row) / len(row) for row in grades]
end_time_python = time.time()
python_duration = end_time_python - start_time_python

# NumPy ile ortalama hesaplama
numpy_grades = np.array(grades)  # NumPy array'ine çeviriyoruz
start_time_numpy = time.time()
average_grades_numpy = np.average(numpy_grades, axis=1)
end_time_numpy = time.time()
numpy_duration = end_time_numpy - start_time_numpy

print(f"Normal Python süresi: {python_duration} saniye")
print(f"NumPy süresi: {numpy_duration} saniye")
Normal Python süresi: 0.012590408325195312 saniye
NumPy süresi: 0.002003192901611328 saniye
 
Üst