Anasayfa / Uygulamalar / R / R ile Veri Manipülasyonu: Uygulama

R ile Veri Manipülasyonu: Uygulama

Elimizde tarihsel Boston hava durumu verisi var.

  • 2014 Aralık’tan başlayarak 12 aylık bir veri,
  • Dirty Data formatında,
  • Sütun isimleri birer değer,
  • Değişkenler yanlış kodlanmış,
  • Eksik ve Aykırı gözlemlerimiz bulunmakta,
  • ve daha nice problemler.

AMACIMIZ: Veriyi analiz edebileceğimiz bir formata çevirmek.

Veri manipülasyonu için üç aşamayı takip edeceğiz.

  1. Ham verileri keşfetmek
  2. Düzenli veri formatı – Tidy data
  3. Veriyi analizler için hazırlamak

İlk olarak ham veriyi keşfetmemiz gerekiyor.

  • Verinin yapısını anlamak,
  • Veriyi gözlemlemek,
  • Görselleştirme yapmak.

İkinci aşamamız ise düzenli veri prensiplerini uygulamak olacaktır.

Düzenli Veri Prensipleri – Gözlemler satır olmalıdır, – Değişkenler satır olmalıdır ve – Tablo başına gözlem birimi bir tür olmalıdır.

Üçüncü aşamamız ise veriyi analizler için hazırlayacağız.

  • Tarih formatı
  • Değişken dönüşümleri
  • Eksik, Aykırı ve Beklenmeyen Gözlemler.

Yukarıdaki aşamaları teker teker uygulayarak weather veri setini düzenli hale getirelim.

1. Ham Veriyi Keşfetmek

  • Verinin yüklenmesi.
[/crayon] class(), names(), dim() gibi fonksiyonlara girip işi uzatmadan str() veya dplyr kütüphanesinden glimpse() fonksiyonu ile verinin yapısını anlamaya çalışalım.
[/crayon] [/crayon]
  • str çıktısında elimizdeki verinin bir “Data Frame” formatında, 286 gözlem ve 35 değişkenden oluşan 286×35’lik boyutlu bir veri seti olduğunu görüyoruz.
  • Değişkenlerimiz içerisinde çok fazla sayıda X’ler mevcut ve “year” ve “month” olarak tarihsel iki değişkenimizin olduğunu ve “measure” değişkenin de ise çok fazla sayıda tekil (unique) gözlemler olduğunu görüyoruz.
[/crayon] [/crayon] [/crayon] [/crayon] Veriye küçük bir göz attığımızda ilk değişkenimizin herhangi bir anlam ifade etmediğini anlayabiliriz. Çok fazla sayıda X’imiz mevcut ve bunların ne anlama geldiğini bilmiyoruz. Buradaki X’ler yani sütun isimleri, aslında yeni değişkenimiz olacak olan günler değişkenini temsil edecek değerler olacaktır. Ayrıca measure değişkenine bakacak olursak, buradaki her bir değer aslında birer değişken ismi olmalıydı.

2. Tidy Data Süreci

Veriyi anladıktan sonra şimdi tidy data prensipleri ile veriyi düzenli hale getirmeye çalışalım. Bunun için tidyr paketine ihtiyacımız var.

[/crayon] Şimdi birinci problemimiz değişken isimleri yani X’ler aslında birer değerdir ve bu değerler ay içerisindeki günleri temisl ediyor. Bu yüzden gather fonksiyonunu devreye sokalım.

[/crayon]

[/crayon] X’lerin değişken olma belasından kurtulduk. İlk değişkenimiz olan gereksiz X değişkenini ve day değişkeni içerisindeki X’leri kaldıralım.

[/crayon]

[/crayon] stringr kütüpanesi ile “day” değişkenindeki tüm X’leri kaldıralım, elimizde sadece nümerik değerler olsun.

[/crayon]

[/crayon] İkinci büyük sorunumuz ise “measure” değişkeni. Buradaki değerler aslında birer değişken ismi olmalı. Bunu da yine tidyr’dan spread fonksiyonu ile halledebiliriz.

[/crayon] Veriye bakmadan önce verinin yapısına bir bakalım.

[/crayon]

[/crayon] Elimizdeki weather verisinin boyutu 286×35 iken düzenlemiş olduğumz weather3 verisinin boyutu ise 366×25 oldu. Ayrıca measure değişkenindeki tüm değerler ise birer değişken haline geldi ve kendilerine ait değerlere sahip oldular.

25 değişkenin hepsini yazdırmaya gerek olmadığından ilk 9 değikene bir bakalım istediğimiz formata gelmiş mi ?

[/crayon]

[/crayon] Evet istediğimiz formata sahip olduk gibi görünüyor.

3. Veriyi Analiz için Hazırlama

Analizlere geçmeden önce verinin yapısına tekrar bakalım ve nelere ihtiyacımız olduğunu görelim.

[/crayon]

[/crayon] Elimizde tarih ile alakalı değişkenlerimiz ve hava durumu şartları ile ilgili değişkenlermiz var. Bu veri bir zaman serisi formatında olduğu için tarih değişkenleri integer veya character formatından çıkartılıp date formatına dönüştürülmeli. Bunun haricinde elimizde nümerik değerler alan değişkenlerimiz mevcut ve bunlar character formatında bunların da analizlerimiz için sayısal hale getirilmesi gereklidir.

  • Tarih formatı

Öncelikle tarih değişkenlerini bir araya getirmek için tidyr kütüphanesinden unite() fonksiyonunu kullanmalıyız.

[/crayon]

[/crayon]

[/crayon] Elde ettiğimiz date değişkeninin tipi nedir ?

[/crayon]

[/crayon] Bir karakter!

Tarih değişkenlerini R’da işleyebilmemiz için değişkenleri Date formatı haline getirmemiz gerekiyor. Bunun için de lubridate kütüphanesini kullanacağız.

[/crayon]

[/crayon]

[/crayon]

[/crayon]

[/crayon] Bu işte tamam 🙂

Şimdi diğer değişkenleri de dönüştürme zamanı!

  • Değişken dönüşümleri
[/crayon] [/crayon] Veriye tekrar bakınca bir şey karşımıza çıkıyor “PreciptationIn” değişkeninde ondalıklı sayılar ile birlikte “T” harfi de yer alıyor. Bu değişkeni nümerik hale getirebilir miyiz ?
[/crayon] [/crayon] [/crayon] Böyle bir hata aldık.

Warning message: NAs introduced by coercion

Zorlanmadan kaynaklı harfleri NA – Eksik gözlem haline getirdi.

Bazen verilerde değişkenler içerisinde bu tarz değişkenler olabilir ve bu harfler aynı zamanda sayısal bir değeri temsil edyor olabilir. Buradaki PrecipitationIn değişkeni yağışı temsil etmekte ve “T” gözlemi de çok küçük ifade anlamına geliyor. Bu yüzden “T” harfi yerine bu gözlemlere 0 – sıfır yazdırırsak bu sorunda ortadan kalkmış olur.

[/crayon]

[/crayon]

[/crayon] Son olarak character formatında olan tüm sayısal değişkenleri numeric formatına dönüştürelim. Bunu da dplyr kütüphanesinden yardım alarak yapabiliriz.

[/crayon]

[/crayon]

[/crayon]

[/crayon]

[/crayon]

[/crayon]

[/crayon]

[/crayon] veya apply ailesinden bir üyeyi kullanabiliriz.

[/crayon]

[/crayon]

  • Eksik, Aykırı ve Beklenmeyen Gözlemler.

Eksik Gözlemler,

Verimizde kaç tane eksik gözlem var?

[/crayon]

[/crayon]

[/crayon]

[/crayon] 6 eksik gözlemin 6’sı da Max.Gust.SpeedMPH değişkeninde yer alıyor.

Aykırı gözlemler, beklenmeyen gözlemler ve bariz hatalar bu maddeleri kontrol etmemiz gerekiyor. Her bir değişkenin neyi temsil ettiğini iyice anladıktan sonra bu işlemleri yapmalıyız.

  1. Değişkenlerin içerikleri önemlidir.
  2. Değişkenlerin aralıkları akla yatkın olmalıdır.
  3. Veri seti ölçütleri doğrulanmalıdır.

Bizim weather veri setimizde nümerik değerlerin olması gerekir ve her bir değişken bir etiket olarak bir değeri temsil eder.

Yüzdelikler (0-100) arasına olmalıdır. Temperatures Fahrenheit derecesi olarak, Wind Speed miles per hour olarak, Pressures inches of mercury olarak Distance miles olarak, Eigths cloud cover olarak belirtilmiştir.

Max.Humidity değişkeninin özetine baktığımızda maksimum değerinin 1000 olduğunu görüyoruz. Muhtemelen burada bir tane sıfır fazladan eklenmiş. Bu yüzden 1000 yerine sıfır yazdırmamız daha makul olur.

[/crayon] Bir başka sorun Mean.VisibilityMiles değişkeninde minimum değerin negatif bir sayı olması. Burada da medyanı negatif değere atayalım.

[/crayon] Events değişkeninde eksik gözlem olduğunu görüyoruz ama bunlar NA olarak karşımıza çıkmıyor. Bu yüzden bu boşluk olan gözlemlere “None” diye br değer atayalım.

[/crayon] Son bir kez verinin özetine bakalım.

[/crayon]

[/crayon] Özetleri incelediğimizde çok büyük bir sıkıntı yok gibi duruyor. Daha fazla uzatmamak adına görselleştirme kısmına girmiyorum. Histogram, boxplot ve scatterplotlara bakara değişkenlerin derinine inebilirsiniz.

4. Bölüm Sonu Canavarı

Tebrikler, bölüm sonu canavarını yendik ve veri bilimi maceramızda bir sonraki bölümlere geçmeye hak kazandık.

Düzenli verimize bir göz atalım.

[/crayon]

[/crayon]

[/crayon]

[/crayon] Her bir satır bir gözlemi, her bir sütunda bir değişkeni temsil ediyor. date değişkeni bir zaman serisi olduğunu gösterirken, geri kalan değişkenler hava durumunu temsil eden özellikler diyebiliriz.

  • Peki neler öğrendik ?

Veriyi incelemeyi, Düzenli veri formatını, Tarih formatını ve değişken tipi dönüşümleri, Değişken etiketlendirmeleri, Eksik ve Aykırı gözlem ve bariz hata tespitini ve bunlar ile neler yapılacağını öğrenmiş olduk.

Şimdi tek yapmamız tüm öğrendiklerimizi diğer veriler üzerinde teker teker uygulamak.

Kaynak: https://www.datacamp.com/courses/cleaning-data-in-r

Hakkında Ekrem Bayar

GÖZ ATMAK İSTEYEBİLİRSİNİZ

Zaman Serileri : Geleneksel Yöntemler ile Yapay Sinir Ağlarının Karşılaştırılması

Utku Kubilay ÇINAR  R ile Derinlemesine Zaman Serisi… Zaman serileri modellemeleri ve zaman serileri 1900’lü …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir