Ana içeriğe geç

readxl ile Excel Dosyalarını R'de Okuma ve İçe Aktarma

Bu yazıda, readxl kütüphanesiyle Excel dosyalarını R'ye nasıl içe aktaracağınızı öğrenin.
· 5 dk. oku

Yapay Zeka ile Keşfedin

Birçok kuruluş verilerini AWS, Azure ve GCP gibi veritabanları ve depolama çözümlerinde tutsa da, Microsoft Excel hesap tabloları daha küçük veri kümelerini saklamak için yaygın biçimde kullanılmaya devam ediyor.

Excel'in veri bilimi işlevleri R'ye kıyasla daha sınırlıdır; bu nedenle, verileri hesap tablolarından R'ye aktarabilmek faydalıdır.

Bu öğreticide, readxl paketini kullanarak Excel çalışma sayfalarını (ayrıca belirli satır ve sütunları) R'ye okumayı ele alacağız.

Bunu anlayabilmek için R hakkında temel düzeyde çalışma bilgisine ihtiyacınız olacak. 

R'ye farklı dosya türlerini içe aktarmaya yönelik daha genel bir rehber için R'ye Veri Nasıl İçe Aktarılır: Bir Öğretici yazısını okuyun.

Excel Dosyası

R'ye okuyacağımız veri kümesi, hangi sayfanın okunacağını belirtmeyi göstermek için yalnızca iki sayfadan oluşan küçük bir dosyadır. buradan bulunabilir.

İlk sayfa, 45.211 satır ve 17 sütundan oluşan bir banka pazarlaması veri kümesidir. Aşağıdaki ekran görüntüsü “sample.xlsx” adlı Excel dosyasının ve “bank-full” adlı sayfanın bir görüntüsüdür.

Screenshot 2023-03-08 at 9.05.49 PM.png

İkinci sayfa ise 150 satır ve 6 sütundan oluşan Iris veri kümesidir ve iris çiçeği türleri hakkında, çanak yaprak ve taç yaprak uzunlukları ile genişlikleri gibi bilgiler içerir.  Aşağıdaki ekran görüntüsü aynı Excel dosyası “sample.xlsx”ten ve “iris” adlı sayfadan alınmıştır. 

Screenshot 2023-03-08 at 9.08.53 PM.png

Paketlere Genel Bakış

Bu öğretici readxl paketini kullanır. openxlsx paketi, XLSX dosyalarına yazma yeteneğini de içeren iyi bir alternatiftir; ancak dplyr ve tidyr gibi tidyverse paketleriyle entegrasyonu daha zayıftır.

readxl paketiyle Excel dosyalarını okuyabilmek için önce paketi kurmamız, ardından “library” işleviyle içe aktarmamız gerekir.

install.packages("readxl")

Konsolda aşağıdaki çıktıyı görürsünüz; bu, kurulumun başarılı olduğunu gösterir.

trying URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.2/readxl_1.4.2.tgz'
Content type 'application/x-gzip' length 1545782 bytes (1.5 MB)
==================================================
downloaded 1.5 MB


The downloaded binary packages are in
/var/folders/mq/46mc_8tj06n0wh2xjkk08r140000gn/T//RtmpHIGYqM/downloaded_packages

“readxl” metodlarını kullanmak için R konsolunda aşağıdaki komutu çalıştırın.

library(readxl)

openxlsx paketinin, XLSX dosyalarına yazmak için başka bir iyi alternatif olduğunu unutmayın.

İlk Çalışma Kitabını Okuma

İlk çalışma sayfasındaki, “bank-full”, tüm verileri yalnızca path argümanıyla read_xlsx() kullanarak okuyalım.

bank_df <- read_xlsx(path = "sample.xlsx")

Ortaya çıkan veri bir tibble'dır.

Screenshot 2023-03-09 at 7.40.15 AM.png

read_excel() işlevini de read_xlsx() ile aynı şekilde kullanabilirsiniz ve sonraki bölümlerde göreceğiniz tüm argümanlar bu işlevle de benzer şekilde çalışır. read_excel() bir XLSX hesap tablosu mu yoksa daha eski XLS hesap tablosu türü mü kullandığınızı tahmin etmeye çalışacaktır.

bank_df <- read_excel(path = "sample.xlsx")

Screenshot 2023-03-09 at 7.40.15 AM (1).png

Diğer Çalışma Kitaplarını Okuma

Şimdi read_xlsx() işlevi ve sheet argümanıyla ikinci çalışma kitabındaki, yani “iris”, tüm verileri okuyalım.

iris <- read_xlsx("sample.xlsx", sheet = "iris")

Screenshot 2023-03-09 at 7.12.08 AM.png

Sayfa adı yerine sheet argümanında sayfa numarasını da belirtebilirsiniz.

iris2 <- read_xlsx("sample.xlsx", sheet = 1)

Screenshot 2023-03-09 at 7.12.21 AM.png

Belirli Satırları Okuma

skip ve n_max argümanlarını ayarlayarak bir çalışma kitabından belirli satırları okuyalım. İlk birkaç satırı atlamak için skip argümanını, atlamak istediğiniz satır sayısına eşit bir değerle kullanabilirsiniz.

bank_df_s2 <- read_excel("sample.xlsx", sheet = "bank-full", skip = 2)

Yukarıdaki kodun başlıkları da atlattığını lütfen unutmayın. Sonraki bölümlerde read_xlsx() işlevinde başlıkların nasıl açıkça belirtileceğini öğreneceksiniz.

Screenshot 2023-03-09 at 7.17.01 AM.png

Benzer şekilde, ilk n satırı okumak için read_xlsx() işlevinde n_max argümanını belirtin. Aşağıdaki kod “bank-full” sayfasının ilk 1000 satırını okur.

bank_df_n1k <- read_excel("sample.xlsx", sheet = "bank-full", n_max = 1000)

Screenshot 2023-03-09 at 7.18.41 AM.png

Ayrıca, birkaç satırı atlamak ve kalan veri kümesinden belirli sayıda satırı okumak için her iki argümanı birlikte kullanabilirsiniz.

Belirli Hücreleri Okuma

“skip” ve “n_max” argümanları verilerin satırlarının bir alt kümesini okumanıza olanak tanırken, range argümanını ayarlayarak bir çalışma kitabından belirli hücreleri okuyabilirsiniz.

Veri kümesinin alt kümesini belirtmek için iki gösterim vardır:

  • A1 (E4:G8) gösterimi - A sütunu, 1 ise satır numarasını temsil eder.
  • R1C1 (R4C5:R8C7) gösterimi - Satır numarası ve sütun numarası açıkça tanımlıdır

Fikir, veri kümesinden almak istediğiniz dikdörtgenin koordinatlarını belirtmektir.

Gösterim 1:

bank_df_range1 <- read_excel("sample.xlsx", sheet = "bank-full", range = "A3:E10")

Gösterim 2:

bank_df_range2 <- read_excel("sample.xlsx", sheet = "bank-full", 

                 range = "R3C1:R10C5")

Range, argümanın içine sayfa adını da dahil etmenize izin verir (örnek: wbook!E4:G8).

bank_df_range3 <- read_excel("sample.xlsx", range = "bank-full!R3C1:R10C5")

Başlık Satırı Olmadan Veri Okuma

col_names argümanını bir karakter vektörüne ayarlayarak başlık satırı olmayan verileri okuyalım. 

Not: Önce başlık satırını kaldırmak için skip argümanını kullanıyoruz.

columns <- c("ID", "Sepal Length", "Sepal Width", "Petal Length", "Petal Width", "Species Name")

iris3 <- read_excel("sample.xlsx", sheet = 2, skip = 1, col_names = columns)

Screenshot 2023-03-09 at 7.19.30 AM.png

Başlık Adlarını Onarma

Son bölümde belirttiğimiz başlıklar boşlukla ayrılmıştı. .name_repair = "universal" argümanıyla başlık adlarını sözdizimsel olarak geçerli R değişkenlerine dönüştürebilirsiniz.

iris4 <- read_excel("sample.xlsx", sheet = 2, skip = 1,
                  col_names = columns, .name_repair = "universal")

Screenshot 2023-03-09 at 7.19.56 AM.png

Sütun Türlerini Belirtme

Varsayılan olarak, bir Excel dosyasını okuduğunuzda R her değişkenin veri tipini tahmin eder.  Varsayılan argümanlarla okunan iris veri kümesinin sütun türlerini inceleyelim.

sapply(iris, class)
  Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Sütun türü tahminlerini geçersiz kılmak için col_types argümanını kullanabilirsiniz.

iris5 <- read_excel("sample.xlsx", sheet = 2,
      col_types = c("numeric", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris5, class)
    Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Screenshot 2023-03-09 at 7.20.14 AM.png

Belirli değişkenlerin sütun türlerini R'nin tahmin etmesine izin vermek için, ilgili sütun için col_types değerini “guess” olarak belirtebilirsiniz.

iris6 <- read_excel("sample.xlsx", sheet = 2,
        col_types = c("guess", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris6, class)
Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Screenshot 2023-03-09 at 7.20.27 AM.png

Sütunları Atlamak

Çoğu zaman “veri ne kadar çoksa o kadar iyi” denir. Ancak pek çok kullanım senaryosunda, bazı değişkenlerin/sütunların herhangi bir sinyal taşımadığını görürsünüz; bunun aşağıdaki nedenlerden herhangi biri olabilir. 

  • yüksek kartlılık: neredeyse her değer farklı
  • sıfır kartlılık: her değer aynı
  • iş kullanım senaryosuyla ilgisiz
  • çok fazla eksik değer
  • çok fazla gereksiz değer

Aşağıda gösterildiği gibi col_types'ı "skip" olarak ayarlayarak bazı sütunları okumayı atlayabilirsiniz.

iris7 <- read_excel("sample.xlsx", sheet = 2,
            col_types = c("numeric", "skip", "skip", "numeric", "numeric", "text"))

sapply(iris7, class)

Screenshot 2023-03-09 at 7.20.36 AM.pngBir Sonraki Seviyeye Taşıyın

Verilerin muazzam bir hızla ve çok çeşitli biçimlerde üretildiği bir dünyada, programlama dilinizin bu veri türlerini okumayı desteklemesi gerekir. R, bu çabayı destekleyen güçlü dillerden biridir. R'nin çeşitli veri kümelerini içe aktarmak için nasıl paketler sunduğunu öğrenmek üzere “R'de Veri İçe Aktarmaya Giriş” kursuna kaydolun. Bu kurs, R'de veri içe aktarma konusundaki anlayışınızı güçlendirmek için öğreticiler ve kısa sınavlar sunar.

Sıkça Sorulan Sorular

R projeler için hem CSV hem de Excel verilerini içe aktarabilir mi?

Evet, R projeler için hem CSV hem de Excel verilerini içe aktarabilir ve her iki biçimi de işlemek için güçlü paketler ve işlevler sunar. Veri projeleriniz için doğru seçimi yapmaya yönelik ayrıntılı bir karşılaştırma ve rehber için CSV ve Excel hakkındaki yazımızı okuyun.

Konular

İlgili