今天看到乙個好玩的資料分析小case,通過對kfc的早餐爬取部分資料,並做簡單處理,檢視肯定早餐搭配
原資料集及初始****如下:
首先讀取資料
#資料匯入,探查資料缺失
data = pd.read_csv(r'd:\ml_data\kfca8585\kfc.csv')
data.head()
檢視資料
0 1元安心大油條 產品實付滿49元(不含外送費),可1元換購安心大油條1根,每單限1份 1.0
1 1元芝士雞肉帕尼尼 產品實付滿69元(不含外送費),可1元換購芝士雞肉帕尼尼1份,每單限1份 1.0
2 有雞腿全餐雙人餐 **包含:有雞腿中式/西式全餐(可選),共2份。
有雞腿中式全餐:紐奧良烤雞腿1份+... 0.0
3 有雞腿西式全餐(香草流心可頌) 紐奧良烤雞腿1塊+培根炒蛋1份+香脆薯餅1塊+大溪地香草奶香流心可頌2只+咖啡飲品1杯(可... 29.0
4 有雞腿西式全餐(香草流心可頌) 紐奧良烤雞腿1塊+太陽蛋+香脆薯餅1塊+大溪地香草奶香流心可頌2只+咖啡飲品1杯(可加價換... 29.0
檢視一下資料情況。單價有0元,有可能是**搭配,也有可能資料爬取出錯
data.describe()
price
count 90.000000
mean 13.872222
std 7.257914
min 0.000000
25% 9.000000
50% 13.500000
75% 17.000000
max 36.000000
對**進行處理,使用平均值進行填充
#**有0的資料,暫時用平均值進行填充
def f(p):
if p==0.0:
p=14
return p
else:
return p
data['price'] = data['price'].map(f)
利用結巴拼接食物和餐名,並把一些無關食物替換掉
#食物內容和餐名
names = list(data['name'])
foods = list(data['foods'])
names.extend(foods)
names = ' '.join(names)
#分詞ls = jieba.lcut(names)
txt = ' '.join(ls)
#空格替換與食物無關的詞語
txt = txt.replace('產品','').replace('包裝','').replace('包裝實物','')\
.replace('br','').replace('隨心換','').replace('實物','')\
.replace('主要','').replace('原料','').replace('指比菜','')\
.replace('單單','').replace('加價','').replace('換購','')\
.replace('總價','').replace('金額','').replace('為準','')\
.replace('早餐','').replace('飲品','')
檢視主食應用分布情況,並視覺化
hamburger =
rice_ball =
porridge =
chicken =
x = ['漢堡','飯糰','粥','雞肉']
y1 = [250,200,50,255]
y2 = [10,11,1.5,15]
y3 = [20,21,8,10]
y4 = [10,6,2.5,21]
c = bar()
c.add_xaxis(x)
c.add_yaxis("熱量", y1, stack="stack1")
c.add_yaxis("脂肪", y2, stack="stack1")
c.add_yaxis("碳水化合物", y3, stack="stack1")
c.add_yaxis("蛋白質", y4, stack="stack1")
c.set_series_opts(label_opts=opts.labelopts(is_show=false))
c.set_global_opts(title_opts=opts.titleopts(title="主食營養分布"))
#c.render_notebook()
c.render_notebook()
小吃營養分布
youtiao =
chayedan =
shubin =
danta =
from pyecharts import options as opts
from pyecharts.charts import bar
from pyecharts.commons.utils import jscode
from pyecharts.globals import themetype
list2 = [,,
,,
]list3 = [,,
,,
]list4 = [,,
,,
]list5 = [,,
,,
]c = bar(init_opts=opts.initopts(theme=themetype.light))
c.add_xaxis(['油條','茶葉蛋','薯餅','蛋撻'])
c.add_yaxis("熱量", list2, stack="stack1", category_gap="50%")
c.add_yaxis("脂肪", list3, stack="stack1", category_gap="50%")
c.add_yaxis("碳水化合物", list4, stack="stack1", category_gap="50%")
c.add_yaxis("蛋白質", list5, stack="stack1", category_gap="50%")
c.set_series_opts(
label_opts=opts.labelopts(
position="right",
formatter=jscode(
"function(x)"),)
)c.render_notebook()
飲料分析
doujiang =
coffe =
from pyecharts import options as opts
from pyecharts.charts import pie
c = pie()
c.add(
"",[list(z) for z in zip(["熱量", "脂肪",'碳水化合物','蛋白質'],
[31,2,1.5, 3])],
center=["20%", "50%"],
radius=[60, 80],
)c.add(
"",[list(z) for z in zip(["熱量", "脂肪",'碳水化合物','蛋白質'],
[100,4,12, 4])],
center=["55%", "50%"],
radius=[60, 80],
)c.set_global_opts(
title_opts=opts.titleopts(title="豆漿(左)咖啡(右)"),
legend_opts=opts.legendopts(
type_="scroll", pos_top="200%", pos_left="80%", orient="vertical"),)
c.render_notebook()
從和鯨社群看到這個小case覺得很有意思,自己試了一下,遇到的主要問題是資料量小,不過肯德基早餐種類本身就不是很多。pyecharts畫圖很好看,但是有些包更新了,可能會有問題,需要找最新的包,比如bar()函式使用方法,有些方法廢棄了,使用的時候要多加注意。 資料分析 用RFM模型分析使用者
rfm模型 rfm模型根據客戶活躍程度和交易金額的貢獻,進行客戶價值細分的一種方法。r recency 最近一次交易時間間隔。基於最近一次交易日期計算的得分,距離當前日期越近,得分越高。如5分制。反映客戶交易活躍度。f frequency 客戶在最近一段時間內交易次數。基於交易頻率計算的得分,交易頻...
資料分析 資料分析概述
了解業務 了解資料 確認業務和資料 預期分析和管理 資料分析方式01.了解資料資料 1.測量標度型別 屬性本源並不是數字或者符號,通過測量標度將數值或者符號和物件的屬性建立關聯。屬性的型別 測量尺度 nominal 標稱 等於或者不等於 一對一的變換 ordinal 序數 大於或者小於 單調函式的變...
資料分析 資料分析的誤區
在資料分析的過程中,我們難免會走一些彎路,但有些彎路是可以避免的,下面我將介紹幾個資料分析過程中常見的誤區 我們一定都聽說過二戰中的乙個經典示例 軍方為了提高戰鬥機飛行員的生還率,打算在飛機上增加裝甲的厚度,但不能在所有部位加厚,這樣會喪失戰機的靈活性,於是軍方請了統計學家來研究,這些專家在一開始就...