R ile Yüksek Performanslı Programlama — 4

R ile Yüksek Performanslı Programlama — 4Onur BoyarBlockedUnblockFollowFollowingJan 294.

yazımızda veri yapılarının kod performansına olan etkisini göreceğiz.

Daha Basit Veri Yapılari Kullanmakdata.

frame R’da en sık kullanılan değişken tiplerindendir.

Çok da kullanışlıdır, farklı değişken tiplerini barındırabilir.

Fakat data.

frame ile çalışmak büyük verilerde performans düşüklüğüne yol açabilir.

Bu bölümde 2 farklı alternatiften bahsedeceğim.

Birisi matrix kullanımı, diğeri de data.

table kullanımı olacak.

Matrix vs DataframeAslında bu karşılaştırma doğru bir karşılaştırma değil.

Çünkü bu iki veri tipi tamamen aynı veri tipleri değil.

Matrix sadece sayısal değişkenleri barındırırken data frame birden fazla değişken tipini barındırabilir.

Bu nedenle biz bu karşılaştırmayı sadece sayısal değerler içeren bir data frame ile matrix arasında yapacağız.

Elimizde sadece sayısal değerler varsa ve performans sıkıntısı yaşıyorsak verimizin matrix olup olmadığını kontrol etmemiz gerektiğini, değilse de matrix’e çevirmemiz gerektiğini şimdi bir örnek ile görelim.

data <- rnorm(1E4*1000)dim(data) <- c(1E4, 1000)class(data)[1] "matrix"system.

time(data_rs1 <- rowSums(data)) user system elapsed 0.

030 0.

003 0.

037 data_df <- data.

frame(data)system.

time(data_rs2 <- rowSums(data_df)) user system elapsed 0.

060 0.

005 0.

068‘data’ isimli değişken matrix tipinde bir değişken.

rowSums(data) fonksiyonu satırlardaki değerleri topluyor, bunu da data matrixini kullanarak yapıyor.

Bu işlem 0.

037 saniye sürerken data.

frame versiyonu 0.

068 saniye sürüyor.

Önceki yazımızda vektör boyutunun performans üzerindeki etkisini görmüştük, dilerseniz bu seferde vektörün boyutunu arttırınca performans farkı nasıl etkileniyor siz görün :)Şimdi data.

table hakkında konuşalım.

data.

table nedir?data.

table bir R paketidir.

Bu paket bize data frame’in gelişmiş versiyonu olan data.

table veri tipini verir.

data.

frame ile yapabileceğimiz her şeyi data.

table ile de yapabiliriz.

Ve bu işlemlerin hepsi çok daha hızlı gerçekleşir.

Veriyi almak, yazdırmak, işlemek data.

table veri tipi ve ona özel fonksiyonlarla çok daha hızlı gerçekleşir.

Ayrıca veri manipülasyonlarında da oldukça hızlıdır.

Derslerimizde sıklıkla kullandığımız ‘dplyr’ paketinden daha yüksek bir performansa sahiptir.

Yaklaşık 450 bin satırlık bir veriyi hem read.

csv hem de bu fonksiyonun data.

table versiyonu olan fread’le alıp performanslarını karşılaştıralım.

system.

time(dt <- read.

csv(“data.

csv”))user system elapsed11.

46 0.

21 11.

69system.

time(dt <- fread(“data.

csv”))user system elapsed0.

66 0.

00 0.

66dim(dt)[1] 439541 18Gördüğünüz gibi fark çok büyük.

data.

table paketi bu denli bir peformans artışı sağlar.

Şimdi de data.

frame ve dplyr paketi ile yaptığımız bir analizi bir de data.

table ile yapalım.

Kullanılan veri 11 milyon satıra ve 7 sütuna sahip.

Bu iki kod bize tamamen aynı sonucu veriyor.

Fakat performansları arasında ciddi bir fark var.

system.

time(brand <- data %>% group_by(ID, CAT, BRAND) %>% summarise(count = n(),OrtFiyat = mean(PRICE), maxFiyat = max(PRICE), range =((max(PRICE) — min(PRICE)) / min(PRICE))))user system elapsed671.

11 0.

39 671.

80system.

time(brand <- data[, .

(count = .

N, OrtFiyat = mean(PRICE), maxFiyat = max(PRICE), range =((max(PRICE) — min(PRICE)) / min(PRICE)) ), by = list(ID, CAT, BRAND), ])user system elapsed 37.

95 0.

03 37.

98Aradaki performans farkının kaç kat olduğu ortada.

dplyr bize büyük bir esneklik sağlar, syntax’i data.

table’a göre daha kolaydır fakat bir kez alıştıktan sonra data.

table çok daha kullanışlı gelecektir.

Özellikle bu örnekte olduğu gibi büyük verilerde.

Daha fazlası için data.

table dökümantasyonuna göz atabilirsiniz.

R ile ilgili daha fazla içerik ve video dersler için R Programlama ile Veri Bilimi isimli Udemy kursumu inceleyebilirsiniz.

Sıradaki yazımız için tıklayın!.

. More details

Leave a Reply