Bu data.table R eğitimi, data.table paketinin çekirdeğinde yer alan DT[i, j, by] komutunun temelini açıklar. data.table paketi hakkında daha fazla bilgi edinmek isterseniz, DataCamp data.table paketi üzerine etkileşimli bir R kursu sunar. Kursta tarayıcınızın konforunda gerçekleştireceğiniz 35’ten fazla etkileşimli R alıştırması ve data.table paketinin ana yazarı Matt Dowle ile büyük katkı sağlayan Arun Srinivasan’ın yer aldığı birkaç video bulunur. Ücretsiz deneyin.
Daha önce RAM’de büyük veri kümeleriyle (1 GB’tan 100+ GB’a kadar) çalıştıysanız, bir data.frame’in sınırlayıcı olabileceğini biliyorsunuzdur: Bazı işlemler için gereken süre fazlasıyla uzundur. Data.table bunu hesaplama süresini azaltarak çözer. Dahası, daha az yazmayla daha fazlasını yapmayı da kolaylaştırır. Bu data.table R eğitiminden data.table sözdizimini öğrendiğinizde, karmaşık işlemleri yapmanın ne kadar basit olduğuna şaşıracaksınız. Böylece yalnızca hesaplama süresini değil, programlama süresini de kısaltacaksınız.
DT[i,j,by] komutu üç bölümden oluşur: i, j ve by. SQL terminolojisiyle düşünürseniz, i WHERE’a, j SELECT’e ve by GROUP BY’a karşılık gelir. Komutu şöyle ifade ederiz: “DT’yi alın, satırları ‘i’ ile altkümeye ayırın, ardından ‘by’ ile gruplayarak ‘j’yi hesaplayın.” Basit bir örnekte ve hflights veri setini kullanarak (tüm örnekleri siz de üretebilin diye) şu sonuç elde edilir:
UniqueCarrier V1
AA 68.76471
AS 255.29032
B6 176.93548
CO 141.52861...Altyapı:
Burada, yalnızca yılın 10. ayına ait satırları tutacak şekilde veri tablosunu altkümeye ayırdık, gerçekten uçan uçakların ortalama AirTime değerini hesapladık (na.omit() bu yüzden kullanılıyor; iptal edilen uçuşların AirTime için bir değeri yok) ve sonuçları taşıyıcılarına göre grupladık. Örneğin AA (American Airlines) için ortalama AirTime’ın AS’ye (Alaska Airlines) kıyasla çok daha kısa olduğunu görebiliriz. Ayrıca R’ın temel fonksiyonlarının j bölümünde kullanılabildiğini de fark ettiniz mi? Buna birazdan geleceğiz.
i Bölümü
‘i’ bölümü, tıpkı bir data frame’de olduğu gibi satır altkümeye alma için kullanılır.
#Returns all those rows where the Carrier is American Airlines
Year Month DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum TailNum ActualElapsedTime
201111614001500 AA 428 N576AA 60201112714011501 AA 428 N557AA 60201113113521502 AA 428 N541AA 70201114214031513 AA 428 N403AA 70201115314051507 AA 428 N492AA 62---20111227210211333 AA 2234 N3ETAA 13220111228310151329 AA 2234 N3FJAA 13420111229410231335 AA 2234 N3GSAA 13220111230510241334 AA 2234 N3BAAA 13020111231610241343 AA 2234 N3HNAA 139
AirTime ArrDelay DepDelay Origin Dest Distance TaxiIn TaxiOut Cancelled CancellationCode Diverted
40-100 IAH DFW 2247130045-91 IAH DFW 224690048-8-8 IAH DFW 224517003933 IAH DFW 2249220044-35 IAH DFW 2249900---112-121 IAH MIA 96481200112-16-5 IAH MIA 96491300110-103 IAH MIA 964121000110-114 IAH MIA 96491100119-24 IAH MIA 96481200Altyapı:
Bir data table’da satır altkümeye almak için virgül kullanmak zorunda olmadığınıza dikkat edin. Bir data.frame’de DF[2:5] yapmak 2. ile 5. sütun arasındaki tüm sütunların satırlarını verirdi. Bunun yerine (bunu okuyan herkesin bildiği gibi) DF[2:5,] belirtmemiz gerekir. Ayrıca DT[,2:5] ifadesinin data table’lar için bir anlamı olmadığını, data.table paketinin SSS belgesinin ilk sorusunda açıklandığını da unutmayın.
İlginç ve kullanışlı: Satır altkümeye alırken, DT[…] komutunda satır sayısını ya da son satırı ifade eden .N sembolünü de kullanabilirsiniz. Bunu son satırı veya ondan bir ofseti seçmek için kullanabilirsiniz.
#Returns the penultimate row of DT
Year Month DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum TailNum ActualElapsedTime AirTime
20111262656812 WN 621 N727SW 7664
ArrDelay DepDelay Origin Dest Distance TaxiIn TaxiOut Cancelled CancellationCode Diverted
-13-4 HOU TUL 4533900Altyapı:
j Bölümü
‘j’ bölümü, sütunları seçmek ve onlarla bir şeyler yapmak için kullanılır. Ve bir şeyler gerçekten her şey olabilir. Her tür fonksiyon kullanılabilir; bu da data.table paketinin güçlü bir yönüdür.
‘i’ bölümünün boş bırakıldığına ve parantez içindeki ilk şeyin bir virgül olduğuna dikkat edin. Bu ilk başta sezgisel gelmeyebilir. Ancak bu, satırlarda herhangi bir altkümeye alma yapmadığımız, yani tüm satırların seçildiği anlamına gelir. ‘j’ bölümünde, tüm uçuşların ortalama varış gecikmesi hesaplanır. Görünüşe göre hflights veri setindeki ortalama uçak 7 dakikadan fazla gecikmiş. Bir sonraki uçuşunuza yetişirken hazırlıklı olun!
‘j’ bölümünde birden fazla sütun seçip onlarla bir şeyler yaptığınızda, ‘.()’ gösterimini kullanmanız gerekir. Bu gösterim aslında ‘list()’ için bir takma addır. ‘.()’ kullanmak bir data table döndürür; yukarıda görüldüğü gibi kullanmamak ise yalnızca bir vektör döndürür.
Burada DT’yi aldık, ‘i’ bölümünde taşıyıcının AA olduğu tüm satırları seçtik, kalkış ve varıştaki ortalama gecikmeyi hesapladık ve ‘j’ bölümünde kalkış saatine karşı kalkış gecikmesini çizdirdik.
Özetle, ‘j’ bölümü o bölümde belirtilen sütunlar üzerinde hesaplamalar yapmak için kullanılır. Bir data table’ın sütunları değişken olarak görüldüğünden ve ‘j’ parçaları ifade olarak değerlendirildiğinden, ‘j’ bölümünde neredeyse her şey yapılabilir. Bu da programlama sürenizi kayda değer biçimde kısaltır.
by Bölümü
Bu data.table R eğitiminin son bölümü ‘by’ kısmına odaklanır. ‘by’ bölümü, ‘j’ bölümünü belirli bir değişken (ya da o değişkenin bir dönüşümü) bazında gruplamak istediğimizde kullanılır. ‘j’ ifadesinin her bir ‘by’ grubu için tekrarlandığını göreceksiniz. Kullanımı basittir: ‘by’ argümanında gruplayacağınız sütunu belirtirsiniz.
Burada, kalkıştan önceki ortalama gecikmeyi hesapladık, ancak bunu uçağın kalktığı yere göre gruplayarak yaptık. Görünüşe göre HOU’dan kalkan uçuşların ortalama gecikmesi IAH’tan kalkanlara kıyasla daha fazla.
‘j’ bölümünde olduğu gibi, ‘by’ bölümünde de pek çok şey yapabilirsiniz. ‘by’ bölümünde fonksiyonlar kullanılabilir; böylece ‘j’ bölümünde yaptığımız işlemlerin sonuçları, DT[…] komutunun içinde belirttiğimiz bir şeye göre gruplanır. DT[…] içinde fonksiyon kullanmak, o tek satırı oldukça güçlü kılar. Benzer şekilde, ‘by’ bölümünde birden fazla sütun kullanırken ‘.()’ gösterimini kullanmak gerekir.
Burada, tüm uçakların kalkıştan önceki ortalama gecikmesi (‘i’ bölümünde altkümeye alma yok, yani tüm satırlar seçili) önce hesaplandı, ardından önce uçağın kalktığı yere sonra da haftanın gününe göre gruplandı. Hafta içi, hafta sonlarında False olur. Görünüşe göre kalkıştan önceki ortalama gecikme HOU’dan kalkışlarda IAH’a kıyasla daha yüksek ve şaşırtıcı biçimde hafta sonlarında gecikmeler daha düşük.
Hepsini bir araya getirirsek, tipik bir DT[i,j,by] komutu şunu verir:
Burada Delta Air Lines tarafından işletilen uçakların altkümesi (‘i’ içinde seçilen) kalkış yerine ve hafta içine göre (‘by’ içinde) gruplandı. Havada telafi edilen süre de (‘j’ içinde) hesaplandı. Görünüşe göre hafta sonlarında, uçak IAH’tan mı yoksa HOU’dan mı kalkmış olursa olsun, havadayken telafi edilen süre (yani daha hızlı uçarak) daha büyük.
Data table paketinde keşfedilecek çok daha fazla şey var; ancak bu yazı temel DT[i,j,by] komutunu gözden geçirdi. DataCamp kursu tüm data table paketini kapsamlı biçimde açıklar. İpuçları ve geri bildirim alarak alıştırmaları tarayıcınızda kendi temponuzda yapabilir, videoları ve slaytları dilediğiniz kadar tekrar edebilirsiniz. Bu etkileşimli öğrenme yolu, data table’lar konusunda derin bilgi ve pratik deneyim kazanmanızı sağlar. Ücretsiz deneyin. DataCamp’in data.table R Paketi Cheat Sheet’ine göz atın.
Umarız bu data.table R eğitimi sayesinde data.table’ın temel sözdizimini artık anlıyorsunuz ve kendi başınıza denemeye hazırsınız. data.table paketiyle ilgili sorularınız varsa buraya bakın. Matt ve Arun çok aktiftir. data.table paketiyle ilgili bir sonraki blog yazılarından biri daha teknik olacak ve data table’ların geniş olanaklarına yakından bakacak. Takipte kalın!
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Bu data.table R eğitimi, data.table paketinin çekirdeğinde yer alan
DT[i, j, by]komutunun temelini açıklar. data.table paketi hakkında daha fazla bilgi edinmek isterseniz, DataCamp data.table paketi üzerine etkileşimli bir R kursu sunar. Kursta tarayıcınızın konforunda gerçekleştireceğiniz 35’ten fazla etkileşimli R alıştırması ve data.table paketinin ana yazarı Matt Dowle ile büyük katkı sağlayan Arun Srinivasan’ın yer aldığı birkaç video bulunur. Ücretsiz deneyin.Daha önce RAM’de büyük veri kümeleriyle (1 GB’tan 100+ GB’a kadar) çalıştıysanız, bir
data.frame’in sınırlayıcı olabileceğini biliyorsunuzdur: Bazı işlemler için gereken süre fazlasıyla uzundur. Data.table bunu hesaplama süresini azaltarak çözer. Dahası, daha az yazmayla daha fazlasını yapmayı da kolaylaştırır. Bu data.table R eğitiminden data.table sözdizimini öğrendiğinizde, karmaşık işlemleri yapmanın ne kadar basit olduğuna şaşıracaksınız. Böylece yalnızca hesaplama süresini değil, programlama süresini de kısaltacaksınız.DT[i,j,by]komutu üç bölümden oluşur:i,jveby. SQL terminolojisiyle düşünürseniz,iWHERE’a,jSELECT’e vebyGROUP BY’a karşılık gelir. Komutu şöyle ifade ederiz: “DT’yi alın, satırları ‘i’ ile altkümeye ayırın, ardından ‘by’ ile gruplayarak ‘j’yi hesaplayın.” Basit bir örnekte vehflightsveri setini kullanarak (tüm örnekleri siz de üretebilin diye) şu sonuç elde edilir:Burada, yalnızca yılın 10. ayına ait satırları tutacak şekilde veri tablosunu altkümeye ayırdık, gerçekten uçan uçakların ortalama AirTime değerini hesapladık (
na.omit()bu yüzden kullanılıyor; iptal edilen uçuşların AirTime için bir değeri yok) ve sonuçları taşıyıcılarına göre grupladık. Örneğin AA (American Airlines) için ortalama AirTime’ın AS’ye (Alaska Airlines) kıyasla çok daha kısa olduğunu görebiliriz. Ayrıca R’ın temel fonksiyonlarınınjbölümünde kullanılabildiğini de fark ettiniz mi? Buna birazdan geleceğiz.i Bölümü
‘i’ bölümü, tıpkı bir data frame’de olduğu gibi satır altkümeye alma için kullanılır.
Ama sütun adlarını da kullanabilirsiniz; çünkü bunlar DT’nin kapsamı içinde değerlendirilir.
Bir data table’da satır altkümeye almak için virgül kullanmak zorunda olmadığınıza dikkat edin. Bir data.frame’de
DF[2:5]yapmak 2. ile 5. sütun arasındaki tüm sütunların satırlarını verirdi. Bunun yerine (bunu okuyan herkesin bildiği gibi)DF[2:5,]belirtmemiz gerekir. AyrıcaDT[,2:5]ifadesinin data table’lar için bir anlamı olmadığını, data.table paketinin SSS belgesinin ilk sorusunda açıklandığını da unutmayın.İlginç ve kullanışlı: Satır altkümeye alırken, DT[…] komutunda satır sayısını ya da son satırı ifade eden
.Nsembolünü de kullanabilirsiniz. Bunu son satırı veya ondan bir ofseti seçmek için kullanabilirsiniz.j Bölümü
‘j’ bölümü, sütunları seçmek ve onlarla bir şeyler yapmak için kullanılır. Ve bir şeyler gerçekten her şey olabilir. Her tür fonksiyon kullanılabilir; bu da data.table paketinin güçlü bir yönüdür.
‘i’ bölümünün boş bırakıldığına ve parantez içindeki ilk şeyin bir virgül olduğuna dikkat edin. Bu ilk başta sezgisel gelmeyebilir. Ancak bu, satırlarda herhangi bir altkümeye alma yapmadığımız, yani tüm satırların seçildiği anlamına gelir. ‘j’ bölümünde, tüm uçuşların ortalama varış gecikmesi hesaplanır. Görünüşe göre hflights veri setindeki ortalama uçak 7 dakikadan fazla gecikmiş. Bir sonraki uçuşunuza yetişirken hazırlıklı olun!
‘j’ bölümünde birden fazla sütun seçip onlarla bir şeyler yaptığınızda, ‘
.()’ gösterimini kullanmanız gerekir. Bu gösterim aslında ‘list()’ için bir takma addır. ‘.()’ kullanmak bir data table döndürür; yukarıda görüldüğü gibi kullanmamak ise yalnızca bir vektör döndürür.‘
.()’ gösterimini gerektiren bir başka kullanışlı özellik, sütunları DT[…] komutunun içinde yeniden adlandırmanıza olanak tanır.Elbette, yeni sütun adları zorunlu değildir.
Yukarıdaki ‘i’ ve ‘j’ ile ilgili olanları birleştirirsek şunu elde ederiz:
Burada DT’yi aldık, ‘i’ bölümünde taşıyıcının AA olduğu tüm satırları seçtik, kalkış ve varıştaki ortalama gecikmeyi hesapladık ve ‘j’ bölümünde kalkış saatine karşı kalkış gecikmesini çizdirdik.
Özetle, ‘j’ bölümü o bölümde belirtilen sütunlar üzerinde hesaplamalar yapmak için kullanılır. Bir data table’ın sütunları değişken olarak görüldüğünden ve ‘j’ parçaları ifade olarak değerlendirildiğinden, ‘j’ bölümünde neredeyse her şey yapılabilir. Bu da programlama sürenizi kayda değer biçimde kısaltır.
by Bölümü
Bu data.table R eğitiminin son bölümü ‘by’ kısmına odaklanır. ‘by’ bölümü, ‘j’ bölümünü belirli bir değişken (ya da o değişkenin bir dönüşümü) bazında gruplamak istediğimizde kullanılır. ‘j’ ifadesinin her bir ‘by’ grubu için tekrarlandığını göreceksiniz. Kullanımı basittir: ‘by’ argümanında gruplayacağınız sütunu belirtirsiniz.
Burada, kalkıştan önceki ortalama gecikmeyi hesapladık, ancak bunu uçağın kalktığı yere göre gruplayarak yaptık. Görünüşe göre HOU’dan kalkan uçuşların ortalama gecikmesi IAH’tan kalkanlara kıyasla daha fazla.
‘j’ bölümünde olduğu gibi, ‘by’ bölümünde de pek çok şey yapabilirsiniz. ‘by’ bölümünde fonksiyonlar kullanılabilir; böylece ‘j’ bölümünde yaptığımız işlemlerin sonuçları, DT[…] komutunun içinde belirttiğimiz bir şeye göre gruplanır.
DT[…]içinde fonksiyon kullanmak, o tek satırı oldukça güçlü kılar. Benzer şekilde, ‘by’ bölümünde birden fazla sütun kullanırken ‘.()’ gösterimini kullanmak gerekir.Burada, tüm uçakların kalkıştan önceki ortalama gecikmesi (‘i’ bölümünde altkümeye alma yok, yani tüm satırlar seçili) önce hesaplandı, ardından önce uçağın kalktığı yere sonra da haftanın gününe göre gruplandı. Hafta içi, hafta sonlarında
Falseolur. Görünüşe göre kalkıştan önceki ortalama gecikme HOU’dan kalkışlarda IAH’a kıyasla daha yüksek ve şaşırtıcı biçimde hafta sonlarında gecikmeler daha düşük.Hepsini bir araya getirirsek, tipik bir
DT[i,j,by]komutu şunu verir:Burada Delta Air Lines tarafından işletilen uçakların altkümesi (‘i’ içinde seçilen) kalkış yerine ve hafta içine göre (‘by’ içinde) gruplandı. Havada telafi edilen süre de (‘j’ içinde) hesaplandı. Görünüşe göre hafta sonlarında, uçak IAH’tan mı yoksa HOU’dan mı kalkmış olursa olsun, havadayken telafi edilen süre (yani daha hızlı uçarak) daha büyük.
Data table paketinde keşfedilecek çok daha fazla şey var; ancak bu yazı temel
DT[i,j,by]komutunu gözden geçirdi. DataCamp kursu tüm data table paketini kapsamlı biçimde açıklar. İpuçları ve geri bildirim alarak alıştırmaları tarayıcınızda kendi temponuzda yapabilir, videoları ve slaytları dilediğiniz kadar tekrar edebilirsiniz. Bu etkileşimli öğrenme yolu, data table’lar konusunda derin bilgi ve pratik deneyim kazanmanızı sağlar. Ücretsiz deneyin. DataCamp’in data.table R Paketi Cheat Sheet’ine göz atın.Umarız bu data.table R eğitimi sayesinde data.table’ın temel sözdizimini artık anlıyorsunuz ve kendi başınıza denemeye hazırsınız. data.table paketiyle ilgili sorularınız varsa buraya bakın. Matt ve Arun çok aktiftir. data.table paketiyle ilgili bir sonraki blog yazılarından biri daha teknik olacak ve data table’ların geniş olanaklarına yakından bakacak. Takipte kalın!