Berpura-pura Menjadi Data Analis Bagian Pertama


Berpura-pura Menjadi Data Analis, terlihat keren tapi sebenarnya bukan begitu adanya. Mengisi waktu antara mepe gabah dan mek damen iseng belajar analisa data menggunakan R. Jadinya lumayan bisa untuk mengisi blog juga yang beberapa minggu ini tidak menulis karena beberapa tombol keyboard tidak bisa, sebelum meneruskan membaca jika ada kode saya yang kurang rapi, tolong bisa memabantu saya dengan melakukan pull request repositori di akun Github saya :D.

Mepe Gabah dan Mek Damen

Hahahaha…..sebenarnya tidak diceritakan tetapi untuk membuat panjang tulisan disini sepertinya perlu. Mepe gabah alias jemur padi dan Mek damen adalah ambil jerami untuk pakan sapi adalah kegiatan rutin akhir-akhir ini, melepaskan semua penat dari kegiatan ghosting diantara kedua aktifitas tersebut dibuat belajar analisa data. Dari sini, iseng cari magang virtual di Quantium dan ternyata masih belum sampai ilmunya untuk mengerjakan Task yang ada. Mek Damen

Kaggle

Tiba-tiba saja jadi teringat akun Kaggle yang sudah lama dibuat, login lalu cari dataset untuk belajar analisa data. Akhrinya ketemu dataset yang cukup menarik mudah kelihatannya, kalian bisa mengunjungi Restaurant Business Rankings 2020. Disana masih sedikit yang menggunakan R juga, baru ada 1 yang melakukan submit kode menggunakan R.

Memulai Project

Orang bilang, kalau belajar sambil praktik itu lebih mudah. Dengan keyakinan tersebut, butuh 2 hari ternyata untuk berpura-pura menjadi data analis bagian pertama. Kenapa bagain pertama? karena baru sedikit yang dianalisa wkwkwkw. Langsung saja ke projectnya.

Project

Disini saya menggunakan R Markdown karena dengan menggunakan R Markdown bisa export hasilnya ke berbagai format, bisa pdf, bisa word dan ya bisa juga presentasi.

# set options for R markdown knitting
knitr::opts_chunk$set(echo = TRUE)
knitr::opts_chunk$set(linewidth=80)
# set up line wrapping in MD knit output
library(knitr)
hook_output = knit_hooks$get("output")
knit_hooks$set(output = function(x, options)
{
  # this hook is used only when the linewidth option is not NULL
  if (!is.null(n <- options$linewidth))
  {
    x = knitr:::split_lines(x)
    # any lines wider than n should be wrapped
    if (any(nchar(x) > n))
      x = strwrap(x, width = n)
    x = paste(x, collapse = "\n")
  }
  hook_output(x, options)
})

Persiapan

Mempersiapkan library dan dataset

library(tidyverse)
library(data.table)
library(ggmosaic)
library(readr)

### Menentukan dataset

filePath <- "dataset/"
ft50 <- fread(paste0(filePath,"Future50.csv"))
ip100 <- fread(paste0(filePath,"Independence100.csv"))
tp250 <- fread(paste0(filePath,"Top250.csv"))

Eksplorasi Analisis Data

Untuk memulai analisis data adalah mengerti tentang datanya, pertama cari tipe data yang ada, di R bisa menggunakan str() dan head() melihat 10 data pertama.

Cek data

Dengan pengecekan ini kita bisa tipe datanya apakah integer, numeric atau character.

str(ft50)
str(ip100)
str(tp250)
head(ft50)
head(ip100)
head(tp250)

Setelah melihat tipe data dan datanya, ada beberapa yang perlu diperbaiki. Kita perbaiki satu persatu datasetnya.

Eksplore Future 50

Kita akan mencoba eksplore data futre 50, yang berisikan perkiraan rangking 50 besar tahun depan berdasarkan data tahun 2020. Melihat data ft50, ternyata ada bebrapa kolom yang yang harus diperbaiki, seperti pemisahan data dan perubahan tipe data.

ft50[, .N, Location]

Dari data tersebut, negara bagian masih menjadi satu. Untuk itu perlu pemisahan.

ft50_clean <- setDT(ft50)[, paste0(c("City", "State")) := tstrsplit(Location, ", ")]

Mendapat 2 tabel baru berupa franchise dan negara bagian, pada negara bagian akan dibuat dengan penamaan yang sesuai seperti Calif. menjadi CA.

### melihat negara bagian
ft50_clean[, .N, State]
### Merubah negara bagian
ft50_clean$State <- gsub( "\\.", "", str_squish(str_to_lower(ft50_clean$State)))
ft50_clean[State == "ar", State := "AR"]
ft50_clean[State == "ariz", State := "AZ"]
ft50_clean[State == "ark", State := "AR"]
ft50_clean[State == "az", State := "AZ"]
ft50_clean[State == "ca", State := "CA"]
ft50_clean[State == "calif", State := "CA"]
ft50_clean[State == "co", State := "CO"]
ft50_clean[State == "colo", State := "CO"]
ft50_clean[State == "dc", State := "DC"]
ft50_clean[State == "fl", State := "FL"]
ft50_clean[State == "fla", State := "FL"]
ft50_clean[State == "ga", State := "GA"]
ft50_clean[State == "ill", State := "IL"]
ft50_clean[State == "ind", State := "IN"]
ft50_clean[State == "ky", State := "KY"]
ft50_clean[State == "mass", State := "MA"]
ft50_clean[State == "mich", State := "MI"]
ft50_clean[State == "mo", State := "MO"]
ft50_clean[State == "nc", State := "NC"]
ft50_clean[State == "ne", State := "NE"]
ft50_clean[State == "neb", State := "NE"]
ft50_clean[State == "nj", State := "NJ"]
ft50_clean[State == "ny", State := "NY"]
ft50_clean[State == "nev", State := "NV"]
ft50_clean[State == "oh", State := "OH"]
ft50_clean[State == "ohio", State := "OH"]
ft50_clean[State == "or", State := "OR"]
ft50_clean[State == "ore", State := "OR"]
ft50_clean[State == "pa", State := "PA"]
ft50_clean[State == "sc", State := "SC"]
ft50_clean[State == "tenn", State := "TN"]
ft50_clean[State == "texas", State := "TX"]
ft50_clean[State == "tn", State := "TN"]
ft50_clean[State == "tx", State := "TX"]
ft50_clean[State == "va", State := "VA"]
ft50_clean[State == "wa", State := "WA"]
ft50_clean[State == "wash", State := "WA"]

Selanjutnya, merubah YOY Sales dan YOY Unit dari char ke num.

ft50_clean$YOY_Units <- sub("%", "", ft50_clean$YOY_Units)
ft50_clean$YOY_Sales <- sub("%", "", ft50_clean$YOY_Sales)
ft50_clean <-
  ft50_clean %>%
  mutate(YOY_Sales = as.numeric(YOY_Sales),
         YOY_Units = as.numeric(YOY_Units))
ft50_clean <- ft50_clean[,c(1,2,3,10,11,4:9)]
ft50_clean <- select(ft50_clean, -Location)

Data sudah clean, selanjutnya mencoba melihat ringkasan data ft50.

### Cek tipe data
str(ft50_clean)
### Ringkasan data
summary(ft50_clean)
### Cek data null
sum(is.na(ft50_clean))

Ternyata tidak ada data yang null, selanjutnya mari membuat grafik dari data ft50. Dengan rata-rata penjualannya adalah 33.78 dan rata-rata YOY Sales selama 2019-2020 adalah 33.70 dan rata-rata unitnya adalag 34.7.

Membuat plot

Mari kita cek, berapa persen Restoran yang Franchising dalam future 50 ini?

franchise <- data.frame(sort(table(ft50_clean$Franchising),decreasing = TRUE ))
setnames(franchise,c("Franchising","Jumlah"))

pct <- round(100*franchise$Jumlah/sum(franchise$Jumlah))

ggplot(data = franchise, aes(x = "", y = -Jumlah, 
                           fill = Franchising)) + 
  geom_bar(stat = "identity", color = "black") + 
  labs(title = "Persentase Restoran Franchise") +
  coord_polar("y") +
  geom_text(aes(label =paste0(pct, "%")), position = position_stack(vjust = 0.5)) +
  theme_void()

Dari pie chart dapat diketahui bahwa 58% Restoran dalam yang masuk future 50 adalah restoran waralaba dan sisanya 48% adalah bukan waralaba.

Penutup

Agar bisa melihat hasilnya silahkan dijalankan menggunakan R atau download file pdf disini. Saya rasa cukup segitu dulu pura-puranya jadi Data Analisis bagian pertama ini. Untuk link projectnya bisa klik link ini, terima kasih sudah membaca dan sampai jumpa pada tulisan berikutnya.

     

Referensi Tulisan dan Dataset:

Restaurant Business Rankings 2020

Restaurant Business in 2020 in US

comments powered by Disqus