實戰案例:探索星巴克的世界分布
作者簡介Introduction
星巴克,誕生於美國西雅圖,靠咖啡豆起家,自1971年正式成立以來,從來不打廣告,卻在近20年時間裡一躍成為巨型連鎖咖啡集團,其飛速發展的傳奇讓全球矚目。星巴克不僅將醜小鴨變成白天鵝的奇蹟演繹得淋漓盡致,它背後還隱藏著動人的故事。額...有興趣讀者自己查去吧,我就不多佔篇幅了!!!
在本文中,使用兩個包繪製了兩個地圖,還使用plotly包繪製了互動條形圖,使用ggplot繪製了靜態條形圖。
這些圖主要探索了每個國家星巴克店鋪的個數及其在國家的分布、每個城市中星巴克的個數,並且探索了各個中國城市星巴克的個數和各個美國城市星巴克的個數。
## 載入程序包
library(dplyr)
library(data.table)
library(countrycode)
library(plotly)
library(highcharter)
library(leaflet)
library(ggplot2)
## 讀取數據+簡單清洗
starbucks
str(starbucks)
summary(starbucks)
names(starbucks)
colnames(starbucks)
names(starbucks)
通過str和summary函數分別對數據集的結構和主要描述性統計量進行探索,發現了數據的變數名不規範。然後使用make.names函數對變數名進行規範,儘管我們的這篇文章並沒有用到這些規範後的變數名,但是這裡就是為了讓大家去學到這個規範列名的小知識點。
## 統計各個各個國家中星巴克店鋪的個數
sta_count
starbucks %>%
group_by(Country) %>%
summarise(Counts = n()) %>%
arrange(desc(Counts))
上述代碼中,我們使用了管道函數對數據進行傳遞,優雅並減少內存的佔用;
代碼的解釋大致就是統計starbucks數據集中Country列中每個特徵值的個數,並且進行降序排列。
部分結果如下:
## 統計每個國家店鋪數量的佔比
上述在統計不同國家星巴克店鋪個數佔比的時候,使用了round函數去保留兩位小數;使用paste0函數去拼接「%」;使用transform函數去重塑一列;
對於所有的國家名的縮寫,考慮到大多數均不知道全程,所以使用match函數去匹配,然後返回countrycode_data數據中簡稱所對應的全稱,從而使國家名稱一目了然。這個也是一個不錯的小知識點,裡面不僅僅包括英文全稱,還有中文等等,希望大家去多多嘗試,然後在不同的情景下使用恰當的稱呼。
## 使用條形圖去展示星巴克店鋪數前二十的國家
sta_count$iso2
plot_ly(data = sta_count[1:20, ],
type = "bar",
hoverinfo = "text",
x = ~ iso2,
y = ~ Counts,
text = ~paste(iso2, " counts : ", Counts,
" percent: ", Percent))
上圖為使用plotly包繪製的互動的條形圖,滑鼠放在條形圖中就可以彈出詳細的信息(這些信息可以自定義),我們此圖中自定義去展示國家名、此國家中的星巴克店鋪數量和此國家的星巴克店鋪數量佔總店鋪的百分比。
從圖中可看出,美國的星巴克店鋪個數最多,其次就是中國、加拿大、日本......神奇的是日本這麼小的國家,他的星巴克店鋪數還是不少的,看來日本人挺喜歡星巴克的。
## 繪製世界地圖去展示星巴克店鋪數
data(worldgeojson, package = "highcharter")
highchart() %>%
hc_add_series_map(worldgeojson, sta_count, value = "Counts", joinBy = "iso2")
在次圖中,游標放置的國家會顯示出國家名和星巴克店鋪的數量。下面的圖例中表明了顏色越深表示店鋪數越多。
這個圖中大家能比較直接的看出星巴克店鋪數在世界各國的一個概況,但是無法展示出各個國家中星巴克店鋪的在每個國家的具體未知。下面我講繪製第二幅世界地圖去展示具體位置。
## 繪製世界地圖展示星巴克店鋪的位置
sta_us
sta_cn
sta_ca
sta_jp
sta_gb
sta_ot
leaflet() %>%
addTiles() %>%
addCircles(lat= sta_us$Latitude, lng = sta_us$Longitude,
color = "#E69F00", weight = 1) %>%
addCircles(lat= sta_cn$Latitude, lng = sta_cn$Longitude,
color = "#0072B2", weight = 1) %>%
addCircles(lat= sta_ca$Latitude, lng = sta_ca$Longitude,
color = "#009E73", weight = 1) %>%
addCircles(lat= sta_jp$Latitude, lng = sta_jp$Longitude,
color = "#F0E442", weight = 1) %>%
addCircles(lat= sta_gb$Latitude, lng = sta_gb$Longitude,
color = "#CC79A7", weight = 1) %>%
addCircles(lat= sta_ot$Latitude, lng = sta_ot$Longitude,
color = "red", weight = 1)
這幅世界地圖中,我們分別用五種顏色去區分了美國、中國、加拿大、日本和英國五個國家的星巴克店鋪的分布,然後使用紅色去填充了其他國家的星巴克的具體位置。
從圖中可以看出中國的星巴克店鋪集中分布在了沿海城市,英國的星巴克店鋪主要分布在了南部......
## 統計排名星巴克店鋪個數最多的前20個城市
city_count
starbucks %>%
group_by(City) %>%
summarise(Counts = n()) %>%
arrange(desc(Counts))
ggplot(city_count[1:20, ],
aes(x = reorder(City, Counts), y = Counts, fill = City)) +
geom_bar(stat = "identity") +
labs(x = "City", y = "Counts") +
theme_minimal() +
guides(fill = "none") +
coord_flip()
統計了每個城市的星巴克的數量之後,我們使用ggplot函數繪製了包括前20名的城市條形圖。發現上海的星巴克數量最多,比第二名高出了一倍。
## 統計中國的城市
cn_city_count
sta_cn %>%
group_by(City) %>%
summarise(Counts = n()) %>%
arrange(desc(Counts))
ggplot(cn_city_count[1:20, ],
aes(x = reorder(City, Counts), y = Counts, fill = City)) +
geom_bar(stat = "identity") +
labs(x = "城市", y = "數量(個)") +
theme_minimal() +
guides(fill = "none") +
coord_flip()
## 統計美國的城市
us_city_count
sta_us %>%
group_by(City) %>%
summarise(Counts = n()) %>%
arrange(desc(Counts))
ggplot(us_city_count[1:20, ],
aes(x = reorder(City, Counts), y = Counts, fill = City)) +
geom_bar(stat = "identity") +
labs(x = "City", y = "Counts") +
theme_minimal() +
guides(fill = "none") +
coord_flip()
## 統計英國的城市
gb_city_count
sta_gb %>%
group_by(City) %>%
summarise(Counts = n()) %>%
arrange(desc(Counts))
ggplot(gb_city_count[1:20, ],
aes(x = reorder(City, Counts), y = Counts, fill = City)) +
geom_bar(stat = "identity") +
labs(x = "City", y = "Counts") +
theme_minimal() +
guides(fill = "none") +
coord_flip()
通過上面對中國、美國和英國三個城市的星巴克數量的統計,大家也就更加直觀的看到這三個國家中含有星巴克數量最多的前20個城市了,同時通過各自的*_city_count可以去查看各個城市的對應的星巴克店鋪的數量。
到此結束了,本文主要是對星巴克店鋪的數量和分布進行的探索,大家可以對其他的變數進行探索,去發現自己不知道的事情。
注:本案例不提供數據集,如果要學習完整案例,掃描下方課程二維碼,購買包含數據集+代碼(詳細注釋)+PPT的《kaggle十大案例精講課程》,購買學員會贈送文章的數據集。
相關課程推薦
Kaggle十大案例精講課程(連載中):
掃描kaggle十大案例課程二維碼,即刻加入課程。
TAG:天善智能 |