Veri Analizi – Ders 1 – Giriş

Giriş

  • [[The Data Science Process]]
  • Veri analizinde kullanabileceğimiz programlar:
    • Python, R, RStudio, Stata, SAS, SPSS, MATLAB, Microsoft Excel, Microsoft Power BI, Tableau, Julia, Apache Hadoop, Apache Spark, EViews, GRETL (Gnu Regression, Econometrics and Time-series Library), GAUSS…
    • Programlama dillerinin popülerliği ![[TIOBE Index.jpeg]]

Temel Kavramlar, R, RStudio

1. R Çalışma Ortamı (Environment)

  • R ve RStudio farkı
  • Konsol (Console) kullanımı:
    • Komutların doğrudan yazılıp çalıştırıldığı kısım.
    • > işareti, komut satırını gösterir.
  • Script dosyası oluşturma:
    • Uzun veya tekrar kullanmak istediğiniz kodları .R uzantılı bir dosyada saklayabilirsiniz.
    • RStudio kullanıyorsanız sol üst bölmede script dosyalarını düzenleyebilir, Ctrl + Enter ile kodları çalıştırabilirsiniz.
  • Çalışma dizini (Working Directory):
    • getwd() fonksiyonu mevcut çalışma dizinini gösterir.
    • setwd("path") ile çalışma dizinini değiştirebilirsiniz.

2. Yorum Satırları ve Temel Kod Yazımı

  • Yorum satırı: R’da # işareti ile başlar. Komut satırına yazdığınız kodlar yerine getirilirken # sonrasındaki kısım dikkate alınmaz.
    # Bu bir yorum satırıdır, R tarafından çalıştırılmaz
    x <- 5  # Değişkene 5 değeri atama
    
  • Kod düzeni ve okunabilirlik:
    • Değişken isimlerini anlaşılır seçin: gelir, enflasyon_orani, vb.
    • Gerektiğinde kodu uzun satırlarda yazmak yerine uygun yerlerde bölün.

3 Değişken Atama

  • Atama Operatörleri:
    • “<-”, “->”, “=” şeklinde 3 farklı atama operatörü kullanabilirsiniz.
    • Tavsiye edilen <- operatörüdür (R topluluğunda yaygın kullanım).
    • x <- 10, 10 -> x veya x = 10 aynı işi yapar; ancak x <- 10 daha gelenekseldir.
x <- 10         # x isminde bir değişken oluşturur ve değeri 10 atar
y = 5           # y isminde bir değişken, değeri 5
3 -> z          # z isminde bir değişken, değeri 3
  • Değişken adlandırma kuralları:
    • Harfler, rakamlar, . ve _ karakterlerini kullanabilirsiniz.
    • Boşluk kullanılamaz.
    • Sayı ile başlanmaz.

4 Temel Aritmetik İşlemler

  • Toplama, çıkarma, çarpma, bölme:
a <- 10
b <- 3
a + b   # 13
a - b   # 7
a * b   # 30
a / b   # 3.3333...
  • Üs alma ve modülü işlemi:
a^b       # 10^3 = 1000
a %% b    # 10 mod 3 = 1
a %/% b   # 10 tam bölü 3 = 3 (tam sayı bölme)
  • Yerleşik matematik fonksiyonları (örnekler):
sqrt(16)   # 4
log(100)   # 4.60517 (logaritma, varsayılan doğal log)
exp(1)     # 2.71828...
sin(pi/2)  # 1

5 Örnek Uygulama

  • Öğrencilerden bir ürünün maliyet, satış fiyatı, satış adedi gibi değişkenleri tanımlamalarını isteyin.
  • Toplam satış gelirini, kârı vb. hesaplamalarını sağlayın.
maliyet <- 5
satis_fiyati <- 10
satis_adedi <- 200

gelir <- satis_fiyati * satis_adedi
kar <- (satis_fiyati - maliyet) * satis_adedi

gelir   # 2000
kar     # 1000

7. R Veri Türleri

R programlama dilinde başlıca 6 temel veri türü bulunmaktadır. Bu veri türleri ve açıklamaları şöyledir:

Numeric (Sayısal)

  • Tanım: Reel (gerçek) sayıları ifade eder. Hem tam sayılar hem de ondalıklı sayılar bu kategoriye girer. Varsayılan olarak R, sayıları double precision (çift hassasiyetli) olarak saklar.
  • Örnek: x <- 42 veya y <- 3.14
  • Kontrol: is.numeric(x)TRUE

Integer (Tam Sayı)

  • Tanım: Sadece tam sayıları içerir. Bir sayıyı tam sayı olarak tanımlamak için sonuna L eklenir.
  • Örnek: x <- 42L (Burada L tam sayı olduğunu belirtir.)
  • Kontrol: is.integer(x)TRUE

Character (Karakter)

  • Tanım: Metinsel verileri ifade eder. Tek veya çift tırnak içinde yazılır.
  • Örnek: name <- "Onur" veya text <- 'Merhaba Dünya'
  • Kontrol: is.character(name)TRUE

Logical (Mantıksal/Boolen)

  • Tanım: Sadece TRUE veya FALSE (veya T ve F olarak da kısaltılabilir) değerlerini alır.
  • Örnek: x <- TRUE veya y <- F
  • Kontrol: is.logical(x)TRUE

Complex (Karmaşık Sayı)

  • Tanım: Karmaşık sayıları ifade eder; i sanal birim olarak kullanılır.
  • Örnek: z <- 3 + 4i
  • Kontrol: is.complex(z)TRUE

Raw (Ham Veri)

  • Tanım: İkili (binary) veriyi saklamak için kullanılır. Genellikle düşük seviye işlemler için tercih edilir.
  • Örnek: x <- charToRaw("Merhaba")62 65 72 68 61 62 61
  • Kontrol: is.raw(x)TRUE

Özet Tablo

Veri Türü Örnek Açıklama
Numeric 3.14, 42 Ondalıklı ve tam sayılar (varsayılan double).
Integer 42L Sadece tam sayılar (L ile belirtilir).
Character "Onur", 'Merhaba' Metinsel veriler.
Logical TRUE, FALSE Mantıksal değerler.
Complex 3 + 4i Karmaşık sayılar.
Raw charToRaw("A") İkili formatta ham veri.

8. R Veri Yapıları

R’de farklı veri türleri olduğu gibi farklı veri yapıları da bulunmaktadır. Her birinin kullanım alanı ve özelliği farklıdır. En yaygın kullanılanlar şunlardır:

Vektörler (Vectors)

  • Tanım: R’deki en temel veri yapısıdır. Aynı türden (numeric, character, logical vb.) değerleri tek boyutlu biçimde saklar.

  • Oluşturma:

# c() fonksiyonu vektör oluşturmak için kullanılır. R dilinde `c()` fonksiyonu, **combine** (birleştir) kelimesinin kısaltmasıdır ve **aynı türdeki** verileri içeren **vektörler** oluşturmak için kullanılır. `c()` fonksiyonu, sayılar, karakterler, mantıksal değerler gibi veri türlerini bir araya getirerek tek bir vektör haline getirir.
sayi_vektor <- c(1, 2, 3, 4, 5)
karakter_vektor <- c("Ali", "Veli", "Ayşe")
mantiksal_vektor <- c(TRUE, FALSE, TRUE)
  • Vektöre Eleman Ekleme:
sayi_vektor <- c(sayi_vektor, 6)   # Mevcut vektöre 6 eklenir
  • Vektör Elemanlarına Erişim (İndeksleme):
sayi_vektor[1]       # 1. eleman
sayi_vektor[2:4]     # 2., 3., ve 4. elemanlar
sayi_vektor[c(1, 5)] # Birinci ve beşinci elemanları getirir.
sayi_vektor[-1]      # birinci indeks değeri hariç vektörü çağırır.
  • Yaygın Vektör İşlemleri:
length(sayi_vektor)   # vektörün uzunluğu
sum(sayi_vektor)      # elemanların toplamı
mean(sayi_vektor)     # ortalaması
sort(sayi_vektor, decreasing = TRUE)  # büyükten küçüğe sırala

Matrisler (Matrices)

  • Tanım: İki boyutlu, aynı veri tipine sahip elemanların tablo biçiminde saklandığı yapıdır.
  • Oluşturma:
matris_ornek <- matrix(1:9, nrow = 3, ncol = 3)
matris_ornek
#      [,1] [,2] [,3]
# [1,]    1    4    7
# [2,]    2    5    8
# [3,]    3    6    9
  • Satır/ Sütun isimlendirme:
rownames(matris_ornek) <- c("Satir1", "Satir2", "Satir3")
colnames(matris_ornek) <- c("Sutun1", "Sutun2", "Sutun3")
  • Elemanlara Erişim:
matris_ornek[1, 2]   # 1. satır, 2. sütun
matris_ornek[ , 3]   # 3. sütundaki tüm elemanlar
matris_ornek[2, ]    # 2. satırdaki tüm elemanlar
  • Temel İşlemler:
t(matris_ornek)                # Transpoz alma
matris_ornek %*% matris_ornek  # Matris çarpımı

Data Frame

  • Tanım: En sık kullanılan veri yapısıdır. Sütunlar farklı veri tiplerini barındırabilir. Genellikle tabloları temsil eder (Excel gibi).
  • Oluşturma:
df_ornek <- data.frame(
isim = c("Ahmet", "Mehmet", "Ayşe"), # 1. sütundaki değerler
yas = c(25, 30, 22), # 2. sütundaki değerler
maas = c(4000, 5000, 3500) # 3. sütundaki değerler
)
df_ornek
  • Elemanlara Erişim:
df_ornek$isim       # isim sütununu çeker
df_ornek[1, 2]      # 1. satır, 2. sütun
df_ornek[ , "maas"] # maas sütununu çeker
  • Yeni Sütun Ekleme:
df_ornek$departman <- c("Finans", "Pazarlama", "IK")
  • Temel İşlemler:
str(df_ornek)      # Veri çerçevesinin yapısı hakkında bilgi
summary(df_ornek)  # Özet istatistikler
head(df_ornek, 2)  # İlk 2 satır
tail(df_ornek, 2)  # Son 2 satır

List (Listeler)

  • Tanım: Farklı veri tiplerini ve veri yapısı türlerini (vektör, matris, data.frame, başka listeler vb.) tek bir çatı altında tutabilen esnek yapılar.
  • Oluşturma:
liste_ornek <- list(
sayilar = c(1, 2, 3),
isimler = c("Ali", "Veli"),
bir_data_frame = df_ornek,
mantiksal = TRUE
)
  • Elemanlara Erişim:
    • Tek köşeli parantez [ ] kullanımı liste içinde alt liste döndürür.
    • Çift köşeli parantez [[ ]] kullanımı doğrudan elemanın kendisini döndürür.
liste_ornek[1]        # 1. eleman, alt liste olarak gelir
liste_ornek[[1]]      # 1. elemanın kendisi (c(1, 2, 3))
liste_ornek$isimler    # benzer şekilde "isimler" elemanını çeker

Tibble

  • Tanım: tidyverse paketinde bulunan tibble yapısı, data.frame’in gelişmiş ve kullanımı kolay bir versiyonudur.
  • Özellikler:
    • Daha okunabilir ekran çıktısı.
    • Çok uzun verisetlerinde sütun isimlendirmesi ve özet gösterimi daha kullanışlıdır.
  • Oluşturma:
library(tibble)

tibble_ornek <- tibble(
	isim = c("Ahmet", "Mehmet", "Ayşe"),
	yas = c(25, 30, 22),
	maas = c(4000, 5000, 3500)
)

tibble_ornek

<span style=“background:#fff88f”>Data Frame ile Tibble Arasındaki Farklar:</span>

R programında tibble ve data frame (veri çerçevesi) benzer yapılar olsa da, bazı temel farklar vardır. Tibble, tidyverse paketinin bir parçasıdır ve daha modern, kullanıcı dostu bir veri çerçevesi olarak geliştirilmiştir. Aşağıda tibble ve data frame arasındaki temel farklılıklar gösterilmiştir.

🔹 Temel Farklar

Özellik data.frame tibble
Büyük veri gösterimi Konsolda tamamını basmaya çalışır, uzun verilerde karışıklık olabilir Konsolda yalnızca ilk 10 satır ve ilk birkaç sütunu gösterir
Karakter vektörleri Varsayılan olarak faktör olarak tanımlar (stringsAsFactors = TRUE olabilir) Varsayılan olarak karakter olarak kalır
Alt kümeleme ([ işleci) Tek sütun seçildiğinde vektör döndürebilir Tek sütun seçildiğinde her zaman tibble döndürür
Performans ve Esneklik Daha eski bir yapıdadır, hata mesajları bazen belirsiz olabilir Kullanıcı dostu hata mesajları ve modern veri işleme desteği sunar

📝 Örneklerle Açıklama

📌1. Data Frame ile Çalışma

df <- data.frame(isim = c("Ali", "Ayşe", "Mehmet"),
                 yas = c(25, 30, 27),
                 maaş = c(5000, 6000, 5500))

print(df) 

Çıktı:

#    isim yas maaş
#1    Ali  25 5000
#2   Ayşe  30 6000
#3 Mehmet  27 5500

df$isim varsayılan olarak faktör (factor) olur, bu yüzden çoğu zaman as.character(df$isim) ile karaktere çevirmek gerekir.

📌 2. Tibble ile Çalışma

library(tibble)  
tb <- tibble(isim = c("Ali", "Ayşe", "Mehmet"),
             yas = c(25, 30, 27),
             maaş = c(5000, 6000, 5500))
print(tb) 

Çıktı:

# A tibble: 3 × 3
#  isim      yas  maaş
#  <chr>   <dbl> <dbl>
#1 Ali        25  5000
#2 Ayşe       30  6000
#3 Mehmet     27  5500

Gördüğün gibi:

  • Tibble, sütun veri türlerini (<chr>, <dbl>) gösterir.

  • isim sütunu karakter olarak kalır, data.frame gibi otomatik faktöre dönüştürmez.

📌 3. Tek Sütun Seçme Farkı

df$yas   # Vektör döndürür
tb$yas   # Tibble olarak kalır
df["yas"]  # Data frame döndürür
tb["yas"]  # Tibble olarak kalır

Özet:

  • df$yas doğrudan vektör döndürür.

  • tb$yas ise her zaman tibble formatında kalır.

📌 4. Konsolda Uzun Veri Gösterimi

büyük_df <- data.frame(sayi = 1:1000)
büyük_tb <- tibble(sayi = 1:1000)

#print(büyük_df)  # Konsolu kaplayabilir
print(büyük_tb)  # Sadece ilk 10 satırı gösterir

Tibble çok uzun veri çerçevelerinde konsolu kirletmez, sadece ilk birkaç satırı gösterir.

🎯 Sonuç

  • tibble, modern R kullanımı için daha uygundur, özellikle tidyverse ekosistemiyle uyumludur.
  • data.frame, R’nin eski sürümlerinden beri kullanılır ve klasik R fonksiyonları ile daha uyumludur.
  • Büyük veri setlerinde ve tidyverse kullanırken tibble önerilir.

Eğer tidyverse kullanıyorsan tibble ile çalışmak daha verimli olacaktır. Ancak eski R kodlarıyla çalışırken data.frame tercih edilebilir.

Factor (Kategorik Değişkenler)

  • Tanım: Faktörler kategorik değişkenleri (gruplamaları) temsil eder. Örneğin “Erkek/Kadın”, “Evet/Hayır”, “Düşük/Orta/Yüksek” gibi kategorik etiketleri barındırır.

  • Oluşturma:

    cinsiyet_vec <- c("Erkek", "Kadın", "Kadın", "Erkek")
    cinsiyet_factor <- factor(cinsiyet_vec)
    cinsiyet_factor
    # [1] Erkek Kadın Kadın Erkek
    # Levels: Erkek Kadın
    
  • Faktör Seviyeleri (Levels):

    • Faktörün hangi kategorilerden oluştuğunu gösterir.
    • İstenirse özel bir sıralama verilebilir: factor(cinsiyet_vec, levels = c("Kadın", "Erkek"))
  • Uygulama Alanları:

    • İstatistiksel modelleme (ANOVA, regresyon vb.) ve veri görselleştirme aşamalarında önemlidir.

9. Örnek Kapsamlı Uygulama

Aşağıdaki senaryoda farklı veri tiplerini içeren bir örnek uygulama yer almaktadır:

  1. Vektör Oluşturma ve Basit İşlemler:

    # Üç farklı ürüne ait fiyat bilgilerini bir vektörde tutalım
    urun_fiyat <- c(10.5, 8.75, 12.2)
    # Üç farklı ürünün satış miktarlarını bir vektörde tutalım
    urun_satis <- c(100, 150, 120)
    
    # Toplam satış gelirini hesaplayalım
    toplam_gelir <- urun_fiyat * urun_satis
    toplam_gelir  # vektör çarpımı sonucu, her ürünün ayrı geliri
    sum(toplam_gelir)  # Toplam gelir
    
  2. Data Frame Oluşturma:

    satis_df <- data.frame(
      urun_adi = c("Kalem", "Defter", "Silgi"),
      fiyat = urun_fiyat,
      adet = urun_satis
    )
    
  3. Yeni Sütun Ekleme (Toplam Gelir):

    satis_df$gelir <- satis_df$fiyat * satis_df$adet
    
  4. Factor Kullanımı:

    # Ürünlerin hangi kategoride olduğu (örneğin "Kırtasiye", "Kırtasiye", "Kırtasiye"):
    satis_df$kategori <- factor(c("Kırtasiye", "Kırtasiye", "Kırtasiye"))
    
  5. Tibble Dönüşümü:

    library(tibble)
    satis_tibble <- as_tibble(satis_df)
    satis_tibble
    
  6. Liste Oluşturma (Tüm Veriyi Saklama):

    satis_list <- list(
      veriler = satis_tibble,
      tarih = Sys.Date(),
      aciklama = "Kırtasiye ürünleri satış bilgisi"
    )
    

Bu kapsamlı örnek ile öğrenciler, R’de farklı veri yapılarının (vektör, data frame, factor, tibble, list) nasıl oluşturulduğunu, nasıl manipüle edildiğini, veri analizi sürecinde nasıl kullanılabileceğini pratik etmiş olur.


10. Ek İpuçları ve Öneriler

  1. Kodunuzu Yorumlayın ve Düzenli Yazın: – Kodun okunabilirliği hem kendi gelecekteki kullanımınız için hem de ekip çalışmalarında önemlidir.

  2. Str, Summary Gibi Fonksiyonları Bolca Kullanın:str(), summary() gibi fonksiyonlar, veri yapıları hakkında hızlıca fikir edinmenizi sağlar.

  3. RStudio Shortcuts:

    • Ctrl + Enter: Seçili satırı/kodu çalıştırır.
    • Ctrl + Shift + C: Yorum satırı ekler (ya da kaldırır).
    • Tab tuşu: Fonksiyon veya değişken adlarını otomatik tamamlar.
  4. Kaynak Dokümantasyon Okuma Alışkanlığı:

    • ?fonksiyon_adi veya help(fonksiyon_adi) ile fonksiyonların yardım sayfalarına bakın.
    • example(fonksiyon_adi) ile örnek kullanım görebilirsiniz.
  5. Uygulama Yapmaya Devam Edin:

    • Gerçek veri setleri indirin (örneğin TÜİK veya Dünya Bankası).
    • Bu veriler üzerinde vektör, data.frame, factor gibi yapıları kullanarak veri temizliği, temel istatistiksel analizler yapın.

11. Ders Sonrası Öneri ve Alıştırmalar

Alıştırma 1: – Kendi belirleyeceğiniz 5 ürün için birer fiyat vektörü oluşturun. – Her ürünün stok miktarı için ikinci bir vektör oluşturun. – Bu iki vektörü kullanarak bir data frame (veya tibble) oluşturun ve her ürün için “Toplam Değer = Fiyat*Stok sütunu ekleyin.

Alıştırma 2: – Size ve ailenize dair 5 farklı özelliği bir listede saklayın. Örneğin: isim, yas, hobiler, boy, kilo vb. – Bu liste elemanlarına tek ve çift köşeli parantezlerle erişim yaparak sonuçları gözlemleyin.

Alıştırma 3: – Bir factor değişkeni oluşturup seviyelerini (levels) özel bir sırada tanımlayın. – Bu factor değişkeni, örneğin c("Düşük", "Orta", "Yüksek", "Orta") gibi bir vektörden oluşsun. – Kategorik verileri bir sütunda tutan mini bir data frame veya tibble ile ilişkilendirerek özet tablo (table()) oluşturun.

Ödev 1

  1. RStudio Arayüzünü Keşfetme ve Temel Bileşenlerin İncelenmesi:
    • Bir script dosyası oluşturun.
    • RStudio açıldığında karşılaştığınız ana bölümleri (Console, Script Editor, Environment, History, Files, Plots, Packages, Help) tanımlayın. Yorum satırı kullanmayı unutmayın.
  2. Yorum Satırları ve Değişken Atama:
    • Atama operatörlerini kullanarak 5 farklı değişken tanımlayın.
  3. Vektör Oluşturma ve İndeksleme:
    • Sayısal, karakter ve mantıksal değerler içeren üç ayrı vektör oluşturun.
    • Bu vektörler üzerinde indeksleme yaparak belirli elemanlara nasıl erişileceğini gösteren örnekler yazın.
    • Vektörlerin uzunluğu, toplamı ve ortalamasını hesaplayın.
  4. Matris Oluşturma ve İşlemler:
    • 4×3 boyutlarında, 1’den 12’ye kadar sayılar içeren bir matris oluşturun.
    • Satır ve sütun isimlerini ekleyin.
    • Matrisin belirli bir satırını, sütununu ve belirli elemanları seçerek erişim örnekleri yazın.
  5. Data Frame (df) ile Basit Veri Analizi:
    • Ürün isimleri, fiyatları ve satış adetlerini içeren bir df oluşturun.
    • Bu df’e “Toplam Gelir” adında yeni bir sütun ekleyin (hesaplama: fiyat x adet).
    • df’in yapısını str() ve summary() fonksiyonlarıyla inceleyin.
  6. Factor Kullanımı:
    • Kategorik veriler içeren bir vektör oluşturun (örneğin: c("Düşük", "Yüksek")).
    • Bu vektörden bir factor oluşturun ve factor seviyelerini (levels) istediğiniz sıraya göre düzenleyin.
    • table() fonksiyonunu kullanarak kategorik dağılımı gözlemleyin.
  7. Liste Yapısı ile Çalışma:
    • Farklı veri türlerinden (vektör, data frame, tarih, karakter) elemanlar içeren bir liste oluşturun.
    • Liste içerisindeki elemanlara tek ve çift köşeli parantez kullanarak erişim örnekleri verin.
    • Oluşturduğunuz liste yapısını yorumlayın.
  8. Tibble ile Data Frame Karşılaştırması:
    • tibble paketini kullanarak, daha önce oluşturduğunuz data frame’i bir tibble’a dönüştürün. %%as_tibble()%%
    • Tibble ve klasik data frame arasındaki farkları gözlemleyin (örneğin, çıktı görünümü, sütun isimlendirme toleransı).
    • Sonuçlarınızı kısaca raporlayın.

Bu ödev maddelerini yerine getirirken, kodlarınızı yorum satırlarıyla açıklamayı, her adımın sonucunu gözlemleyip not almayı unutmayın. İyi çalışmalar!