發表文章

目前顯示的是 2020的文章

dplyr 1.0.0 介紹應用 & 新工作感想

不知不覺這裡也是很久沒更新了呢......  筆者經歷了幾次職涯轉換,現在任職於科技業裡的人資單位,並加入其數位轉型小組擔任資料分析師, 努力一陣子,也終於過了試用期。 不過工作內容並非以AI演算法做預測,很多時候我必須使用程式語言進行資料的讀取甚至是整理充滿文字與代碼的資料, 因此會用上不少text-mining / data tidying的技巧,讀取資料則是簡單地設計ODBC的讀取匝道來連接各系統的資料庫,有時完成一個BI Dashboard會牽上N個資料庫與資料集, 我覺得自己就像遊戲王裡的決鬥者一樣,蒐集著黑暗大法師的四肢,拼起來後做出最好的呈現.... 之後或許會分享一下自己在工作上的點點滴滴,不過這篇文章主要介紹一下我在工作上常用的Tidy技巧,後續的文章可能也不會像以前一樣找主題套用演算法寫預測的方式進行,而是以實用的技術為主了。 dplyr 1.0.0 為筆者認為其撰寫的方式更加直覺也更加方便,以下還請看我為娓娓道來, 1.選擇行: (1) 跟SQL很像地,只需要用select(),可以選擇打出行名或者打上第n行,或者過運算子(&, | , !)等來進行篩選。 (2) everything() : 全部      last_col(n) : 倒數第n列 (3) 透過column name選擇,也能搭配regex作運用       starts_with(): 以某開頭的列名       ends_with(): 以某結尾的列名       contains(): 包含某字符串的列名       matches(): 匹配正則表達式的列名       num_range(): 匹配數值範圍的列名,如num_range("x", 1:3) 匹配x1, x2, x3 (4) where()       where(): 應用函數到所有列,選擇返回結果為TRUE 的列 #選擇column iris %>% select(Sepal.Length, Sepal.Width) # 或者 select( 1 , 2 ...

Corona Virus- Data Viz

圖片
(Credit to WHO) 病毒資料集: 冠狀病毒 or 新冠性病毒 or 新冠肺炎 AKA 武漢肺炎現在正在猖狂的流行,基本上全球都淪陷了,在這段期間大家要小心啊...... 資料來源: https://www.kaggle.com/sudalairajkumar/novel-corona-virus-2019-dataset 資料集是來自WHO( CHO ),而 John Hopkins University 也將其應用於製作更清楚的dashboard 以利大家參考。 視覺化的表現後,可以讓病毒在全球的蹤跡一覽無遺,也能理解病毒擴散的歷史, 當然也是本篇文章的主題啦,針對武漢肺炎的視覺化練習,Start! Data exploration library( tidyverse ) library( highcharter ) library( lubridate ) library(GridExtra) 可樂娜資料集裡有編號 / 日期/ 行政區 / 國家/ 確診(binary)/ 死亡(binary) / 康復(binary) corona <- read_csv( "covid_19_data.csv" ) head(corona) ## # A tibble: 6 x 8 ## SNo ObservationDate `Province/State` `Country/Region` `Last Update` ## <dbl> <chr> <chr> <chr> <chr> ## 1 1 01/22/2020 Anhui Mainland China 1/22/2020 17~ ## 2 2 01/22/2020 Beijing Mainland China 1/22/2020 17~ ## 3 3 01/22/2020 Chongqing Mainland China 1/22/2020 17~ ## 4 ...

Data Viz- gghighlight

圖片
     本篇主要介紹 gghighlight 的功能,他厲害的地方在於能夠直接在ggplot的語法裡針對資料作類似 filter() 的處理,如果需要了解不同變數的表現或分布,可以跳過處理資料的部分直接作處理。 d <- purrr::map_dfr( letters, ~ data.frame( idx = 1 : 400 , value = cumsum(runif( 400 , - 1 , 1 )), type = ., flag = sample(c( TRUE , FALSE ), size = 400 , replace = TRUE ), stringsAsFactors = FALSE ) ) head(d) ## idx value type flag ## 1 1 0.2778376 a TRUE ## 2 2 0.0184870 a TRUE ## 3 3 -0.7318389 a TRUE ## 4 4 -0.2737461 a FALSE ## 5 5 0.5060394 a FALSE ## 6 6 0.3209906 a TRUE 直接先看ggplot: #in ggplot & use tidyverse ggplot(d) + geom_line(aes(idx, value, colour = type)) 把最大值>20的type分出來 d_filtered <- d %>% group_by(type) %>% filter(max(value) > 20 ) %>% ungroup() ggplot(d_filtered) + geom_line(aes(idx, value, colour = type)) 有gghighlight可以直接在作圖語法處理: ggplot(d_filtered) + geom_line(aes(idx, value, colour = type)) + gghighlight(max(value) ...