kaggle:R可視化分析金拱門餐廳食物營養性(一)

2021-02-13 表哥有話講

作者:鄔書豪,車聯網數據挖掘工程師 ,R語言中文社區專欄作者。微信ID:wsh137552775

知乎專欄:https://www.zhihu.com/people/wu-shu-hao-67/activities

上市公司全球大型跨國連鎖快餐巨頭金拱門餐廳,在全世界上大約擁有32000家分店,分布在全球121個國家和地區!我們偶爾吃的這家快餐,它滴食物營養性咋樣,今天我們就來對kaggle競爭上的這份數據做一個可視化分析!

公眾號後臺回復「金拱門」下載數據集。

理解數據變量

Category(食物類別) 如Breakfast、Beef & Pork等等

Item(食物名稱)

Serving Size(份量)

Calories(卡路裡)

Calories from Fat(來自脂肪的熱量)

Total Fat(總脂肪)

Saturated Fat(飽和脂肪)

Trans Fat(反式脂肪)

Cholesterol(膽固醇)

Sodium(鈉)

Carbohydrates 碳水化合物

Dietary Fiber(膳食纖維)

Sugars(糖)

Protein(蛋白)

Vitamin A (% Daily Value)、Vitamin C (% Daily Value)

Calcium (% Daily Value) (鈣)

Iron (% Daily Value) (鐵)

分析要求是:

1、麥當勞食品的平均卡路裡是多少?

2、飲用多少飲料,例如蘇打水或者咖啡,會加強總熱量的攝入?

3、購買烤雞肉三明治,而不是炸雞肉三明治,是否會更加有營養?

4、怎麼從菜單中選擇最少數量的食品來你滿足一天的營養需求?

#加載包,讀入數據,查看數據形式suppressMessages(library(ggplot2))suppressMessages(library(dplyr))suppressMessages(library(plotly))suppressMessages(library(RColorBrewer))suppressMessages(library(devtools))suppressMessages(library(yarrr))suppressMessages(library(tidyr))suppressMessages(library(gridExtra))suppressMessages(library(viridis))menu<-read.csv("D:/金拱門食物數據/menu.csv")str(menu)

#查看缺失值:library(mice)md.pattern(menu)

缺失值情況

從上圖可以看出,menu數據沒有缺失值。

#可視化分析食物類別繪圖(圖1)m <- list(l = 50,r = 50,b = 100,t = 100,pad = 4)marker = list(color = brewer.pal(9, "Set1"))p <- plot_ly(x = menu$Category,marker = list(color = '#45171D'),type = "histogram")%>%  layout(xaxis = list(title = ""),yaxis = list(title = ""),autosize = T)p

圖1:食物類別

從上圖可以看出,食物類別中數目最多的是Coffee & Tea,其次是Breakfast

#食物卡路裡與糖分的關係繪圖(圖2)d1<-menu%>%ggplot(aes(x=Sugars,y=Calories))+stat_density_2d(geom = "polygon", aes(fill = ..level..), h=c(100,1500) ,contour = TRUE)+scale_fill_viridis(option="magma")#碳水化合物與卡路裡的可視化繪圖(圖3)d2<-menu%>%ggplot(aes(x=Carbohydrates,y=Calories))+stat_density_2d(geom = "tile", aes(fill = ..density..), h=c(100,1500) ,contour = FALSE)+scale_fill_viridis(option="magma")#鈉與卡路裡的可視化繪圖(圖4)d3<-menu%>%ggplot(aes(x=Sodium,y=Calories))+stat_density_2d(geom = "tile", aes(fill = ..density..), h=c(3000,1500) ,contour = FALSE)+scale_fill_viridis(option="magma")#膽固醇與卡路裡的可視化繪圖(圖5)d4<-menu%>%ggplot(aes(x=Cholesterol,y=Calories))+stat_density_2d(geom = "tile", aes(fill = ..density..), h=c(600,1500) ,contour = FALSE)+scale_fill_viridis(option="magma")#膳食纖維與卡路裡的可視化繪圖(圖6)d5<-menu%>%ggplot(aes(x=Dietary.Fiber,y=Protein))+scale_x_continuous(limits=c(0,8),expand=c(0,0))+stat_density_2d(geom = "tile", aes(fill = ..density..), h=c(5,70) ,contour = FALSE)+scale_fill_viridis(option="magma")

圖2

圖3

圖4

圖5

圖6

#卡路裡的熱量分布是結果變量,取決於其他營養素變量。#繪圖脂肪的熱量與卡路裡之間的關係(圖7)p1 <- plot_ly(menu,x = ~Calories,type = "histogram",histnorm = "probability",name="Calorie",alpha=0.6)%>%  add_histogram(x = ~Calories.from.Fat,name="Calorie From Fat",alpha=0.6) %>%  layout(barmode = "overlay")p1

圖7

#食物類別與卡路裡的可視化繪圖(圖8)new_col<-c("grey50", "blue","hotpink","Magenta","seagreen","violet","brown","maroon","navyblue")plot_ly(x = menu$Category, y=menu$Calories,color = menu$Category,colors =new_col , type = "box")%>%   layout(xaxis = list(title = ""),yaxis = list(title = "Calories"),showlegend=FALSE,autosize = T)

通過箱線圖,一目了然!我們可以很清晰的看到每種食物類別的卡路裡(第一分位數,第三分位數,最大值,最小值,中位數)

#食物類別與蛋白質含量的可視化繪圖(圖9)plot_ly(x = menu$Category, y=menu$Protein,color = menu$Category,colors =new_col , type = "box")%>% layout(  xaxis = list(title = ""),  yaxis = list(title = ""),  showlegend=FALSE,  autosize = T)

通過箱線圖,一目了然!我們可以很清晰的看到食物類別中蛋白質的(第一分位數,第三分位數,最大值,最小值,中位數)

#食物種類(Category)之Chicken & Fish類與Item的蛋白質(Protein)含量可視化繪圖#圖10library(ggrepel)menu %>% select(Category,Item,Protein,Total.Fat)%>%arrange(desc(Protein))%>%filter(Category =="Chicken & Fish")%>%ggplot(aes(x=Item,y=Protein,col=Item))+geom_point(size=3)+theme(legend.position = "none",axis.title.x=element_blank(),axis.text.x=element_blank(),axis.ticks.x=element_blank())+geom_label_repel(aes(label=substr(Item,1,20)),size=2)+labs(title="High Protein/Fat Item in Chicken & Fish Category")+geom_bar(aes(y=Total.Fat),alpha=0.5,stat="identity")

圖10

#碳水化合物含量與食物種類的可視化分析(圖11)plot_ly(x = menu$Category, y=menu$Carbohydrates,color = menu$Category,colors =new_col , type = "box") %>% layout(  xaxis = list(title = ""),  yaxis = list(title = ""),  showlegend=FALSE,  autosize = T)

圖11

通過箱線圖,可以很清晰的看到各食物類別中的碳水化合物含量(第一分位數,第三分位數,最大值,最小值,中位數)

#碳水化合物與碳水化合物之間的散點圖,卡路裡大於500為紅色,卡路裡小於500為藍色(圖12)p2<-plot_ly(x=menu$Calories, y=menu$Carbohydrates, type="scatter", mode = "markers" ,           marker=list( color=ifelse(menu$Calories>500,"red","blue") , opacity=0.5 , size=20) ) p2

圖12

#食物類別與總脂肪的箱線圖繪圖,RStudio裡可見箱線圖數值(圖13)plot_ly(x = menu$Category, y=menu$Total.Fat,color = menu$Category,colors =new_col , type = "box") %>% layout(  xaxis = list(title = ""),  yaxis = list(title = ""),  showlegend=FALSE,  autosize = T)

圖13

#總脂肪、脂肪的熱量,飽和脂肪三維圖比較分析繪圖(圖14)m1<-menu%>%select(Total.Fat,Calories.from.Fat,Saturated.Fat)m2<-as.matrix(m1)colnames(m2)<-NULL#m2p3 <- plot_ly(z=~m2) %>% add_surface()%>%layout(scene = list(xaxis = list(title = 'Total.Fat'),                                                            yaxis = list(title = 'Calories from Fat'),                                                            zaxis = list(title = 'Saturated Fat')))p3

未完待續。

相關焦點

  • 【R語言】相關性分析、相關係數的顯著性檢驗及可視化
    本篇文章介紹基於R語言的相關性分析、相關係數的顯著性檢驗及可視化,該教程為個人筆記,大家也可參考學習,不足之處也歡迎大家批評指正!相關性分析用於評估兩個或多個變量之間的關聯,能通過定量指標描述變量之間的強弱、直接或間接聯繫。
  • 14個超有趣的數據分析項目,數據集都給你整理好啦
    項目分為三種類型: 可視化項目 探索性數據分析(EDA)項目 預測建模 可視化項目 最容易上手的就是數據可視化, 以下
  • ...降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實戰教程
    利用一項名為主成分分析(PCA)的技術,我們能夠在降維的同時,儘可能保留數據集的寶貴變化。這裡的思路是,我們能夠創建一系列(更少)新的特徵,每一項新特徵都由幾項舊特徵合併得到。舉個例子,其中一項新特徵也許會同時代表形狀和顏色,另一項代表尺寸和毒性。大體上,每一項新特徵都會由原始特徵的加權和得到。下面,是一副幫助你直覺性理解數據降維的圖示。
  • 精選一組關於美國的冷知識;美國是世界食物浪費第一大國
    一,金拱門1955年創立於1955年芝加哥,遍布全球六大洲119個國家,擁有約32000間分店, (麥當勞兄弟站在世界第一家金拱門餐廳門口;正在籌備,尚未開張。)
  • 東沛製藥治療神經營養性角膜炎新藥歐適維(R)中國獲批
    歐適維是第一款專門治療神經營養性角膜炎(NK)的藥物,在作用機制上採用了靶向疾病根源病理的對因治療方案。   歐適維有望在8周一個療程內治癒NK這一罕見的進展性眼病;在臨床試驗當中,約有72%的患者在經過8周使用歐適維治療後,能實現完全形膜癒合,而且這些患者中,約有82%在一年後仍可保持穩定的治癒狀態。   歐適維於2017年取得歐洲藥品管理局(EMA)批准,2018年取得美國FDA批准。
  • 普氏分析結果可視化--物種與環境、物種與物種、物種與功能關聯分析
    當然除了分析群落結構與環境因子的相關性之外,這兩個分析還可以用於分析同一樣品不同類型微生物群落之間的相關性,比如同一樣品的稀有和豐富物種或者同一樣品細菌和真菌群落結構的相關性。最後還有一種不太常用的用法,就是分析配對的兩種不同類型樣品微生物群落的相關性,比如河流或海洋同一位置水體和沉積物細菌群落組成結構的相關性,從而分析這兩種關聯樣品類型中微生物群落的轉移。這兩種方法的具體原理我這裡就不講了,網上有很多,感興趣的朋友可以自行搜索一下,本推文主要介紹分析的實現方法以及對結果可視化的美化。
  • Kaggle Grandmaster 的 NLP 方法
    我想看看 Abhishek 的經驗,了解任何關於 kaggle 的 NLP 問題。我選擇了 Abhishek 的 kernel。我一直在努力學習更多關於自然語言處理的知識,怎麼能錯過學習 Abhishek 的 Halloween-themed Spooky Authors 數據集呢?我強烈建議你打開 kernel 閱讀本文。
  • 數據可視化之R語言
    分類數據的可視化使用條形圖、點圖、柱形圖、脊柱圖、馬賽克圖、餅圖及四折圖連續數據的可視化使用箱線圖、直方圖、散點圖及其變種、帕累託圖==============================================一、分類數據的可視化
  • 教你用Pandas和Plotly進行數據可視化
    講真的,數據可視化了解一下。數據可視化是將原始數據轉換成可視化的圖形和圖表,從而更易於理解,它的主要目的是更快地進行研究和數據分析,並有效傳達趨勢和模式。相較於冗長的純文本,人腦能夠更好地理解具有視覺吸引力的數據。
  • 【R】ggcor相關性可視化
    上周,我們寫了一個 ggcor 對相關性可視化的帖子 (【ggcor】相關性圖的另外一種展示)。裡面用到的例子是厚老師的示例數據。這次,我自己構建數據集,探索如何使用 ggcor 進行展示。# 顯示左側標籤        scale_size_manual(values = c(0.5, 1, 2)) +        scale_colour_manual(values = c("#D95F02", "#1B9E77", "#A2A2A288")) +        guides(size = guide_legend(title = "Pearson's r"
  • phyloseq | 用 R 分析微生物組數據及可視化(三)
    排序分析排序分析(Ordination analysis)是探索複雜的系統發育測序數據的得力工具。簡而言之,排序(ordination)的過程就是在一個可視化的低維空間重新排列這些樣方,使得樣方之間的距離最大程度地反映出平面散點圖內樣方之間的關係信息。phyloseq分別通過ordinate()和plot_ordination()函數,來進行排序分析及其可視化。
  • 下丘腦POMC神經元中E-Syt3在營養性肥胖的形成中起重要的作用
    PNAS上發表題為Hypothalamic extended synaptotagmin-3 contributes to the development of dietary obesity and related metabolic disorders的研究論文,揭示了下丘腦神經元中Extended synaptotagmin-3(E-Syt3)在營養性肥胖
  • R語言可視化之UpSetR包
    作者:嚴濤簡介集合可視化我們用得最多的是韋恩圖今天介紹一個R包UpSetR,專門用來集合可視化,來源於UpSet,Python裡面也有一個相似的包py-upset。此外還有個UpSetR shiny app以及原始碼.
  • t-SNE:可視化效果最好的降維算法
    PCA-主成分分析是降維領域最主要的算法。它最初是由皮爾遜(Pearson)在1901年開發的,許多人對此做了即興創作。即使PCA是一種廣泛使用的技術,但它的主要缺點是無法維護數據集的局部結構。為了解決這個問題,t-SNE出現了。 什麼是t-SNE?
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    numpy的基本的東西我們學習差不多了,後面具體應用中遇到問題具體分析,然後去深入了解遇到的新的知識點就行。現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。
  • Nature子刊經典網絡圖在R中的繪製,網絡模塊性可視化
    read.csv("D://PJJ/test_design.csv")#### 加載包library(psych)library(igraph)##加載函數 (可後臺獲取)setwd("D:/R_input")source("CorrDF.R")source("cor.mtest.R")## 進行相關分析
  • 數據分析小白學習指南
    對於某些人來說,這是分析來自特定域的信息的過程,例如網站分析。對於其他公司,它正在將BI功能的廣度應用於特定的內容區域(例如,銷售,服務,供應鏈等)。特別是,BI供應商使用「分析」綽號將其產品與競爭對手區分開。越來越多地使用「分析」來描述統計和數據分析,以進行聚類,細分,評分並預測最有可能發生的情況。無論用例如何,「分析」都已深入到業務領域。
  • 餐廳中食物熱量大揭秘
    今天西希就結合靠譜的研究來個餐廳中食物熱量大揭秘 01 外食熱量高,說出來嚇一跳 外食熱量很高,而且當食物不是我們自己做的,而是從餐廳點菜或者是外賣時,我們很難確定食物的熱量。西希就嘗試過自己在家模仿餐廳中的某道菜,結果需要放大量的糖和油才能讓口味達到餐廳的水準。
  • 東沛製藥治療神經營養性角膜炎新藥在中國獲批
    東沛製藥治療神經營養性角膜炎新藥在中國獲批 2020-08-21 18:28 來源:澎湃新聞·澎湃號·媒體