Python’da Pratik Kullanım Teknikleri

Python, farklı alanlarda çok çeşitli uygulamalarla bugüne kadarki en çok yönlü programlama dili olarak kabul ediliyor.

Python’un temellerini çok detaylı bir ders içeriği olarak paylaştım. Onu çalışıp kavradıktan sonra ustalaşmak için aşağıdaki ipucularına ve notlara göz atabilirsiniz.



1. İki liste arasındaki farkı bulun

İki liste arasındaki farklı elemanları çok kolay ve hızlı olarak bulabilirsiniz.

A = [ 1, 3, 5, 7, 9 ]
B = [ 4, 5, 6, 7, 8 ]
set(A) - set(B)

2. Etkin güç: map() fonksiyonu 

Sabit bir fonksiyona toplu işlem yaptırmak için kullanılan gömülü bir python fonksiyonudur. Obje olarak geri döndürür. Oluşturulan değer kümesi listeye dönüştürülüp kullanılabilir.

Map(fonksiyon,iter1,iter2)

ÖRNEK KULLANIM:

liste = [1,2,3,4,5,6,7,8,9,10]

def kareHesapla(sayi):
    return sayi**2

map1 = map(kareAl,liste)
map1 = list(map1)
print(map1)

3. Bir adım ötesi: map() + lambda kombinasyonu

Ayrı bir fonksiyon yazmak yerine direk map() fonksiyonu içerisinde fonksiyon oluşturup kullanabilirsiniz.

list1 = (1, 2, 3, 4) 
list2 = (10,20,30,40)
result = map(lambda x,y: x * y, list1,list2) 
print(list(result))

4. Başlangıç, Bitiş ve Adım Sayısı Yapısı

(start:stop[:step]) yapısı dilimleme yaparak Python’da bir çok yerde büyük kolaylık sağlamaktadır.

ÖRNEK KULLANIM:

x = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
x[ 1: 6: 2]

Aynı düzenle tersten de işlem yapılabilir.

ÖRNEK KULLANIM:

x[::-1]

5. Zip ve Enumerate Bir Arada

Hem zip hem de enumerate fonksiyonları duymuş olabilirsiniz ama bir arada kullanılması çok daha büyük bir gücü ortaya çıkartıyor.

İkisi bir arada özellikle For döngülerinde kullanılabilir. Sadece tek bir döngüde birden fazla değeri yinelemenize izin vermez, aynı zamanda indeksi aynı anda elde etmenizi sağlar.

ÖRNEK KULLANIM:

NAME = ['Sid','John','David']
BIRD = ['Eagle','Sparrow','Vulture']
CITY =['Mumbai','US','London']
for i,(name,bird,city) in enumerate(zip(NAME,BIRD,CITY)):
    print(i,' represents ',name,' , ',bird,' and ',city)

Zip işlevi, tüm listeyi bir arada bir araya getirmenize yardımcı olur, böylece her birini aynı anda yineleyebilirsiniz, Enumerate ise dizin almanın yanı sıra bu dizine eklenmiş bir öğeyi elde etmenize yardımcı olur.

6. Rastgele Örnekleme

Bazen çok büyük bir veri kümesiyle karşılaştığınızda, verilerin rastgele alt kümeleri üzerinde çalışmaya karar verirsiniz. Panda veri çerçevesinin örnek işlevi bundan daha fazlasını elde etmenize yardımcı olur.

df.sample(n=10) / DF veri kümesinden 10 tane örneklem alır. 

Kullanımı biraz daha özelleştirelim. Aşağıdaki ifade veri kümenizin 10 rasgele satırını almanıza yardımcı olur.

df.sample(frac=0.5).reset_index(drop=True)

frac parametresi, 1 dahil 1 ile 0 arasındaki değerleri alır. Kendisine atanan veri çerçevesinin bir kısmını alır. Yukarıdaki snippet’te 0,5 belirttik, bu nedenle rastgele boyut alt kümesi → 0,5 * orijinal boyut döndürecektir.
Önündeki reset_index işlevini fark edebilirsiniz. Bu, rasgele altkümeyi aldığımızda dizin de karıştırıldığı için dizinin düzgün bir şekilde sıfırlanmasına yardımcı olur.

7. Uyarı Mesajlarını Göz Ardı Edin

Geliştirme esnasında çok da kritik olmayan uyarı mesajları ile karşılabilirsiniz. Bunlardan hızlıca kurtulmak için aşağıdaki snippet’ı kullanmanız yeterli olur.

import warnings
warnings.filterwarnings(action='ignore')
import keras

8. Kaynaklarınızı Doğru Kullanın

Kodlamaya derinlemesine girdikçe, bellek verimli kodların önemini fark etmeye başlarsınız. Bunun için kullanılacak doğru ifade yield‘dir. Yield tüm durumlarını kaydetme işlevini duraklatır ve daha sonra arka arkaya aramalarda devam eder.

Bu, hafızanın verimli bir şekilde kullanılmasına yardımcı olur ve bu nedenle öncelikle sonsuz uzun bir dizide yineleme yaparken kullanılır.

def SampleGenerator(n):
    yield n
    n = n+1
    yield n
    n = n+1
    yield n
gen = SampleGenerator(1)

Gördüğünüz gibi,yield önceki durumu kaydeder ve bir sonraki işlevi çağırdığımızda, yeni çıktısını döndürerek bir sonrakiyield‘e geçer.

print(next(gen))
print(next(gen))
print(next(gen))

Generator olarak hazırladığınız fonksiyonunuzun içinde sonsuz bir şekilde çalışan bir while döngüsü ekleyerek tek bir verimi yineleyebilirsiniz.

def updatedGenerator(n):
    while(1):
        yield n
        n = n + 1
a = updatedGenerator(1)
for i in range(5):
    print(next(a))

9. Kaynaklarınızı Doğru Kullanmaya devam: Skiprows

Hiç çok büyük boyutlu bir csv dosyası üzerinde işlem yapmaya çalıştınız mı? Skiprows, kolayca başa çıkmanıza yardımcı olur.

df = pd.read_csv('artist.csv')
df_new = pd.read_csv('artist.csv',skiprows=50)
df.shape, df_new.shape

1 milyon satırlık bir veri kümesini düşünün. skiprows = 0,5 milyon atarsanız, veri kümenizden 0,5 milyon satır atlar ve okurken veri çerçevesinin bir alt kümesini kolayca okumanızı sağlar. Yukarıdaki snippet’ten, df, 112 satırlık bir veri kümesini temsil eder. Skiprows = 50 ekledikten sonra, veri kümenizden 50 satır atladı ve yeni veri kümemiz olarak 62 satırı okudu.