Günlük İşlerinizi Kolaylaştıracak Pandas ve Numpy Fonksiyonları

Python ortamında veri bilimi ile uğraşanların en çok kullanığı kütüphaneler Pandas ve Numpy’dır. Bu yazıda ise bu kütüphanelerde olan, işlerinizi oldukça kolaylaştıracak fonksiyonlardan bahsedeceğim.

Numpy

1 – argpartition()

Bu fonksiyon, bize N en büyük değerlerin indekslerini vermektedir. İhtiyaca göre bu indekslere sahip değerleri sıralayabiliriz.

x = np.array([1,9,5,8,7,13,4])

index_val = np.argpartition(x, -4)[-4:]
index_val
#--> array([4, 1, 5, 3])

np.sort(x[index_val])
#--> array([ 7,  8,  9, 13])

2 – allclose()

Bu fonksiyon, 2 tane dizinin birbirine eşit ya da benzer olup olmadığını, belirlenen tolerans değeri ile kontrol etmektedir.

array1 = np.array([0.25,0.36,0.45,0.68,0.95])
array2 = np.array([0.26,0.35,0.44,0.70,0.93])

np.allclose(array1, array2, 0.1)
#--> True

3 – clip()

Bu fonksiyon, bir dizideki değerleri belirlenen aralık içinde tutar. Aralığın dışındaki değerler, aralığın alt ve üst limitlerine kırpılır.

x = np.array([3,16,15,9,1,4,2,26,12,8])

np.clip(x,3,10)
#--> array([ 3, 10, 10,  9,  3,  4,  3, 10, 10,  8])

4 – extract()

Bu fonksiyon, bir diziden belli koşullara uyan değerlere ulaşılmasını sağlar.

# Rastgele sayı üret
array = np.random.randint(40, size=20)
array
#--> array([31,14,24,34,5,2,26,12,36,10,1,22,30,29,13,0,12,31,31,34])

# Sayıların 3'e bölümünden kalanı 1 olanları kontrol et
cond = np.mod(array, 3)==1

# Yukarıdaki koşula sahip olan değerleri çıkar
np.extract(cond, array)
#--> array([31, 34, 10,  1, 22, 13, 31, 31, 34])

5 – where()

Bu fonksiyon, bir diziden belli koşullara uyan değerlerin indeks değerlerini kullanıcıya döndürür.

y = np.array([5,9,7,12,25,16,10,19])

# Eğer koşul değeri True ise "Büyük", False ise "Küçük" yazdır
np.where(y>13, "Büyük", "Küçük")
#--> array(['Küçük','Küçük','Küçük','Küçük','Büyük','Büyük', 'Küçük','Büyük'], dtype='<U5')

Pandas

1 – read_csv(nrows=n)

Herkes read_csv() ile veri yüklüyor. Ancak gerekli olmadığı zamanlarda verinin hepsini yüklemek çok zahmetli olmaktadır. 10 GB boyutunda bir veriyi gerekli olmadığı halde yüklemeye çalışmak yerine sadece ilk 10 satırı yükleyip, daha sonra ihtiyaca göre devam edebiliriz.

import io
import requests

url = "http://archive.ics.uci.edu/ml/machine-learning-databases/autos/imports-85.data"
s = requests.get(url).content

df = pd.read_csv(io.StringIO(s.decode("utf-8")),
                 nrows=10,
                 index_col=0)
df

2 – map()

Bu fonksiyon, başka bir fonksiyon yardımı ile bir serideki değerleri değiştirmeye yarar.

# Dataframe oluştur
df = pd.DataFrame(np.random.randn(5, 5),
                  columns=list("abcde"),
                  index=['Matematik', 'Geometri',
                         'Fizik', 'Kimya',
                         'Biyoloji'])
# Sayıların virgülden sonraki 2 basamağını alan fonksiyon
changefn = lambda x: '%.2f' % x

# Değişiklikleri "d" sütununa uygula
df['d'].map(changefn)

3 – apply()

Bu fonksiyon, kullanıcıya istediği bir fonksiyonu her bir değere uygulamasına izin verir.

# max - min
fn = lambda x: x.max() - x.min()

# Yukarıda oluşturduğumuz veriye, fonksiyonu satır bazında uygulayalım
df.apply(fn)

4 – isin()

Bu fonksiyon, belirli bir sütunda belirli bir değere sahip satırların seçilmesine yardımcı olur.

df['d'].isin([1])

5 – copy()

Bu fonksiyon, bir pandas objesinin kopyasını oluşturmaya yarar. Bir dataframe objesini başka bir objeye atadığımız zaman, orjinal objede yapılan değişiklikler diğer objeye de yansımaktadır. Bu problemi çözmek için copy() fonksiyonu kullanılır.

# Seriyi oluştur
data = pd.Series(['Finlandiya', 'Norveç', 'İsveç', 'Danimarka'])

# Seriyi kopyala
new = data.copy()

# Yeni değer ata
new[1] = 'Changed Value'

print(new)
print(data)

6 – select_dtypes()

Bu fonksiyon, dataframe içindeki istenilen veri tipindeki sütunları kullanıcıya döndürmektedir.

iris = pd.read_csv('data/iris.csv')

iris.info()
iris.select_dtypes(include="float64").head()

Evet, bir yazımızın daha sonuna geldik. Umarım, bu fonksiyon işinizde size oldukça yardımcı olur. Yukarıdaki fonksiyonlar hakkında daha detaylı bilgi almak isteyenler için aşağıya ilgili linkleri koyacağım.

Sağlıkla Kalın.

Kaynakça:

https://towardsdatascience.com/12-amazing-pandas-numpy-functions-22e5671a45b8

https://numpy.org/doc/stable/reference/generated/numpy.argpartition.html?highlight=argpartition#numpy.argpartition

https://numpy.org/doc/stable/reference/generated/numpy.allclose.html?highlight=allclose#numpy.allclose

https://numpy.org/doc/stable/reference/generated/numpy.clip.html?highlight=clip#numpy.clip

https://numpy.org/doc/stable/reference/generated/numpy.extract.html?highlight=extract#numpy.extract

https://numpy.org/doc/stable/reference/generated/numpy.where.html?highlight=where#numpy.where

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.map.html?highlight=map#pandas.Series.map

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html?highlight=apply#pandas.DataFrame.apply

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.isin.html?highlight=isin#pandas.DataFrame.isin

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.copy.html?highlight=copy#pandas.DataFrame.copy

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.select_dtypes.html?highlight=select_dtypes#pandas.DataFrame.select_dtypes

Yazar Hakkında
Toplam 10 yazı
Alperen Balık
Alperen Balık
Yıldız Teknik Üniversitesi İstatistik Bölümü Mezunu. Veri Bilimcisi. İlgilendiği alanlar; Makine Öğrenmesi, Dashboard Tasarlama, Yazılım Geliştirme
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara