iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0
自我挑戰組

使用R進行探索式資料分析之初探系列 第 15

用R告訴老闆進什麼貨_電商消費分析

  • 分享至 

  • xImage
  •  

記得!系統分析的課程教授說:資訊系統是協助人類做決策,並不是取代人類

記得!資訊管理的課程教授說:資訊管理脫離不了人類的行為模式

記得!巨量資料的課程教授說:從龐大及雜亂無章的資料萃取有用的資訊

寫這篇文章想起這三位教授所講的話,雖然我不是很優秀的學生,每次上課周公總是喜歡叫我登入,甚至強迫叫我登入,由此可見周公是如此的喜歡我,但我還是深深記得這三句話,就用此資料集來...紀念....嗯....有點怪.....啊...應該說 感謝!

承上篇資料清理完成後進入分析階段,是的!進貨是個問題,但是貨進太少會讓消費者等太久,貨進太多東西賣不出去形成庫存,而這來來回回的過程中都是錢的投資,所以身為碼農的我,如何從龐大雜亂無章的資料分析出消費者的購買行為,找出有用的資訊協助老闆做進貨的決策,是本篇的重點。

首先從大方向角度再深入剖析
一、該購物網站鞋子的銷售狀況及百分比
簡單講就是在這個網站中消費者有購買和沒購買的狀況,直接上ggplot了解狀況

ggplot(data = shoes_dup)+
  geom_bar(mapping = aes(shoes_dup$prices.isSale))

https://ithelp.ithome.com.tw/upload/images/20200915/201207566S06YR4s6s.png
看起來沒買是比較多(會不會失業!),精確的數字為何?

prop.table(table(shoes_dup$prices.isSale))

沒買的七成,有購買的約三成左右,所以來看年度銷售

二、年度銷售統計,金額以台幣呈現
首先將有購買的資料篩選出來並存在SalesTrue變數中

SalesTrue <- shoes_dup %>% 
  filter(shoes_dup$prices.isSale == TRUE)

進行年度統計將時間欄位轉換為時間格式,並使用substring切割字串取得年度,群組年度並統計每年的銷售總金額

YearSales <- SalesTrue %>% 
  mutate(Year = as.Date(SalesTrue$dateAdded, "%Y-%m-%d")) %>% 
  mutate(Year = substring(Year,1,4)) %>%
  group_by(Year) %>% 
    summarise(Income = sum(prices.amountMax) * 30) %>%
    ungroup()
View(yearSales)

ggplot(data=yearSales,mapping = aes(x=Year,y=Income))+
  geom_bar(stat = "identity",fill="blue")

https://ithelp.ithome.com.tw/upload/images/20200915/201207563nNmg4zmQJ.png
看起來是2016年網站銷售最好約5百50幾萬,因此由該年度來萃取品牌是最好,所以延伸下個問題

三、2016年的每個月份銷售總額是多少?並換算台幣
在上面我將時間從字串轉換時間,再用字串切割取得年度或月份,做法有點麻煩,所以我們將dateAdded變數正規化,將欄位切割出年度和月份,會使用separate()函數做欄位的切割

library(tidyr)
Month2016 <- SalesTrue %>% 
  separate(dateAdded,c("Year","Month"), sep = "-") %>% 
  filter(Year == "2016") %>% 
  group_by(Month) %>% 
  summarise(Income = sum(prices.amountMax)*30) %>% 
  ungroup()
View(Month2016)

執行後R會出現警告訊息,可以不理會這只是善意提醒,因為我的時間切割只切到年度和月份,而天、時、分、秒我並沒有切,所以R提醒沒切的資料遺失,但對我們的分析沒有影響,接下來繪圖。

ggplot(data = Month2016,mapping = aes(x=Month,y=Income))+
  geom_bar(stat = "identity",fill="skyblue")

https://ithelp.ithome.com.tw/upload/images/20200915/20120756x3MS5TGUOk.png
所以從圖表來1-3月穩定銷售25萬以上,到了10月開始上升,11月份到150萬元,所以就會延伸到第四個問題

四、每月是哪一些銷售品牌是最好的,並以表格呈現及以新台幣計算
通常會以表格呈現都是行銷部的姐姐的需求(我學長說的),但R經計算後會以直表呈現,但人類會比較習慣橫表的呈現,並可節省紙張,所以會使用spread()函數將品牌變數轉製成橫表,其中fill參數是沒值都填入0

Month2016Sales <- SalesTrue %>% 
  separate(dateAdded,c("Year","Month"), sep = "-") %>% 
  filter(Year == "2016") %>% 
  group_by(Month,brand) %>% 
  summarise(Income = sum(prices.amountMax)*30) %>% 
  spread(brand,Income,fill = 0)
  ungroup()
View(Month2016Sales)

https://ithelp.ithome.com.tw/upload/images/20200915/20120756L9VmgGn0k1.png

所以可以看到在2016年1-12月每各品牌的銷售總額,而在品牌總共有683各品牌在2016年每月銷售金額,所以可使用write.table()將該結果匯出,但是給老闆看不會以表格呈現,會以圖形呈現,所以就延伸下面問題

五、2016年銷售最好的前30大品牌
其實程式碼跟上面差不多,但為什麼不用%>%在加程式碼,因為我將brand變數的值變成欄位形成list資料結構,而ggpolt只吃變數。

Month2016SalesTop <- SalesTrue %>% 
  separate(dateAdded,c("Year","Month"), sep = "-") %>% 
  filter(Year == "2016") %>% 
  group_by(Month,brand) %>% 
  summarise(Income = sum(prices.amountMax)*30) %>% 
  arrange(desc(Income)) %>% head(30) %>% 
ungroup()

ggplot(data = Month2016SalesTop,
mapping = aes(x=Month,y=Income,fill=brand)) +
  geom_bar(stat = "identity")

https://ithelp.ithome.com.tw/upload/images/20200915/20120756Sf3LsmxJhJ.png

上圖主要呈現出在2016年銷售最好30各品牌,對於銷售數字很難對應,當然前幾大可以在head()函式做調整,那老闆即可知道哪些品牌的商品受到消費者的喜愛,並協助老闆做決策。

下一篇電商在做進一步分析!


上一篇
電商女鞋消費分析_資料清理完結!
下一篇
消費者能接受什麼價位的產品_我用R告訴老闆
系列文
使用R進行探索式資料分析之初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言