上篇是Cacao的分析報告,本篇就像Data Analytic Hotel Bookings 一樣進行流程分享與遇到的疑難解決方案,希望有與小雷遇到一樣問題的朋友們可以當作參考
有需要返回觀看Data Analytic Cacao的朋友們可以返回文章、進入Kaggle或是Github
Data Analytic Cacao文章 >> 請點選這裡瀏覽
小雷的Kaggle >> 請點這裡進入
小雷的Github >> 請點這裡進入
實作分析的研究流程(這是小雷個人的習慣流程,當然也會隨著經驗的變動會做最佳化的調整,各位朋友可以依照自己的習慣進行) :
1.
了解Data Set中的Col與其中的意義,可以定義好所需要的欄位作為分析,也順便思考再分析當中所需要的欄位是否數據有不足的情況,在這個Cacao的Data Set中,其實已經挺乾淨的,但是在Bean_type欄位存在著888個NULL值,所有的Row才1795行,有888個NULL已經算幾乎50%了,是否不足以用來作為分析材料?有需要填補近似值嗎?還是乾脆放棄這個欄位?另外Col中還有個欄位是Bean_origin(原豆產地),是否需要將產地的特性作為補強數據呢(氣候、經濟、勞動力等..)?若不使用,是不是會有偏見的問題產生呢?
2.
所需要的流程有幾項,這些流程是否可以合併(像是Cacao的分析報告中小雷試著將數據彙總分析、可視化併為一個流程,想嘗試這樣的流程是否會比較能掌握數據間的關係與報告的流暢性)?
3.
主要的問題與需要解決的目標,這個畢竟是自己拿數據及做研究練習,並不是有特定目的存在,所以需要自己思考可能的問題與自己想掌握的目標,Cacao的分析中,小雷以平價作為基準考量,以消費者喜好為主,所以產地氣候這些進一步的深入問題,就沒有特別添加其他Data Set一併處理。
關於Cacao分析報告中使用的的語法例子與使用時機 :
其實使用時機這幾個字,並不是在編程與分析課程學的,而是以前上數學課,老師會將公式與使用時機(可以帶入的特徵)告訴我們,小雷個人覺得很好用,只要特徵符合使用時機,可以快速帶入並解決問題,所以在編程的語法上,我自己是用這個方式學習,用習慣了就會發現省了不少時間。
read.csv() : 讀取csv檔案的語法,有兩種讀取方式,另一種是read_csv,.csv是R內建的語法,好處是會自動辨識欄位屬性,read_csv讀取時必須將欄位屬性一併制定,否則會有錯誤提示訊息,較懶的做法就是直接使用.csv吧
基礎語法 : read.csv(“data”)
使用時機 : 要讀取csv檔案時
例子 : read.csv(“cacao.csv”)
基礎語法 : read_csv(“data”)
使用時機 : 讀取csv檔案時要可以直接變更屬性與名稱
可用參數 : col_types = cols(col_name = col_character()),col_names = c(“name”, “name”..)
可變屬性 : 列出三個常用的,col_chartacter()、col_double()、col_integer()
例子 : read_csv(“cacao.csv”, col_names(“maker”, “specific_bean”, …),
col_types(maker-if know = col_character(), …)
-
encoding = UTF-8,這不是甚麼特殊語法,只是把編碼設定為utf-8以免讀取出來會有亂碼,在這份Cacao的Data Set中,有看到不是英文的字母,不知道是法文還是甚麼的,所以自然而言就把這段加上去了,在Python也是同樣的語法。
例子 : read.csv(“cacao.csv”, encoding = “utf-8”)
-
as欄位屬性變換、levels、NULL值變換在Hotel Booking的語法解析有,就不加贅述了,有需要的朋友可以點連結觀看文章 >> Hotel
Bookings連結
-
group_by() : dplyr包內的函式,將所選的欄位進行分組,搭配summarise與pipes可以分類後進行統計計算,在分析階段時可以很輕鬆的觀察所需要的欄位關係,這個與SQL中與法一樣。
基礎語法 : group_by(data,
col_name, …)
使用時機 : 彙總數據進行分析觀察時
例子 : x <- data
%>% group_by(rate, bean_type)
-
summarise() : 同樣是dplyr包內的函式,要用前需要先library(dplyr),用來統計選定欄位的值
基礎語法 : summarise(data, col_name = 計算方式, …)
可用函式 : 進行計算時列出幾個常用的函式,像平均值mean(),最大值max(),最小值min()
使用時機 : 計算欄位相關值使用
例子 : summarise(data, mean_num = mean(num), max_num = max(num), min_num
= min(num))
-
filter() : dplyr內的函式,簡單說就是數據過濾,過濾成想要的,或是把不要的過濾掉,除了大於小於之外,也可以使用&、|、!等邏輯值。
基礎語法 : filter(col_name, …)
使用時機 : 過濾出想要的,或是不要的值
例子 : filter(bean_type != “NULL”) >> 過濾掉欄位裡有NULL的值
-
arrange() : 變更排序的方式,讓檢視數據時更清楚,預設為遞增,若要遞減需要加上desc()函式
基礎語法 : arrange()
使用時機 : 數據很亂需要重新排列時
例子 : arrange(desc(rate))
-
stat = “identity”: 會想放上這個特殊參數是因為geom_bar()一般來說只能設定x軸,y軸預設會是自動計算,所以在圖形上y軸會顯示count,但是需要x,y軸相呼應時,就需要這段參數,讓y軸的設定變更為自定義,就可以按照需求進行y軸的設定了。
使用時機 : 需要設定y軸作為x軸呼應時
例子 : geom_bar(mapping = aes(x = x, y = y), stat = “identity”)
以上就是在Cacao 的分析上,小雷個人覺得有解決所遭遇的問題,若是有朋友遇到一樣的問題,希望可以有些許幫助!