收集美食网站3032份菜谱数据,对比各主要菜系的数量和成分

前言

这是一个正在发生巨大变化的中国。 人和食物的移动速度比以往任何时候都快。 近日,J哥为了探索中国,走遍了五线城市的大街小巷。 结果他累了,什么也没找到。

于是,J哥默默地打开了各大美食网站,比如豆果美食、厨房、美食世界等,经过筛选,我们最终爬取了豆果网最近发布的中国美食食谱共计3032个,然后清理了数据,做了可视化。分析一下,试图走上美食博主之路。

豆果美食网的数据爬取比较简单。 如果你对爬虫感兴趣,可以看一下。

高三学生一周食谱菜谱_食谱菜谱_三伏天食谱菜谱/

本次爬取的数据范围为川菜、粤菜、湘菜等八个中国菜系,包括菜谱名称、链接、食材、评分、图片等字段。 由于篇幅限制,只给出核心代码。

 1# 主函数
 2def main(x):
 3    url = 'https://www.douguo.com/caipu/{}/0/{}'.format(caipu,x*20)
 4    print(url)
 5    html = get_page(url)
 6    parse_page(html,caipu)
 7
 8if __name__ == '__main__':
 9    caipu_list = ['川菜', '湘菜','粤菜','东北菜','鲁菜','浙菜','湖北菜','清真菜'] #中国菜系
10    start = time.time()  # 计时
11    for caipu in caipu_list:
12        for i in range(22):
13            # 爬取多页
14            main(x=i)
15            time.sleep(random.uniform(1, 2))
16            print(caipu,"第" + str(i+1) + "页提取完成")
17    end = time.time()
18    print('共用时',round((end - start) / 60, 2), '分钟')

 

短短几分钟,就爬取了3032条菜谱信息。 为了便于可视化分析,需要对爬取的数据进行简单的清洗。

本文的数据清洗主要使用Python的Pandas库。

食谱菜谱_高三学生一周食谱菜谱_三伏天食谱菜谱/

导入数据

使用pd.read方法导入爬取的菜谱数据并添加列名。 预览数据如下:

三伏天食谱菜谱_高三学生一周食谱菜谱_食谱菜谱/

删除重复项

爬取过程中会重复爬取少量菜谱数据,需要使用drop_duplicates方法删除。

三伏天食谱菜谱_食谱菜谱_高三学生一周食谱菜谱/

缺失值处理

通过info方法找到少量包含缺失值的记录,并使用dropna方法删除。

食谱菜谱_三伏天食谱菜谱_高三学生一周食谱菜谱/

评级场清理

爬取的评分字段包含冗余字符串,且为对象类型。 需要将多余的字符串替换并转换为数值类型,以方便后续计算。

食谱菜谱_三伏天食谱菜谱_高三学生一周食谱菜谱/

添加物料数量字段

为了方便对菜谱配料的分析,需要根据配料字段计算出每个菜谱的配料数量。 由于材质字段都是用逗号分隔的,所以计算逗号的个数就可以间接得到。

三伏天食谱菜谱_食谱菜谱_高三学生一周食谱菜谱/

本文的数据可视化主要使用pyecharts库,可以轻松实现炫酷的图表效果。 如果你对可视化感兴趣,可以看看J哥之前的原创文章《数据可视化分析系列》,涵盖了房产、电商、招聘等各个领域。

配方评分分布

 1from pyecharts import options as opts
 2from pyecharts.charts import Page, Pie
 3cut = lambda x : '4分以下' if x < 4 else ('4.1-4.5分' if x <= 4.5 else('4.6-4.9分' if x <= 4.9 else '5分'))
 4df['评分分布'] = df['评分'].map(cut)
 5df2 = df.groupby('评分分布')['评分'].count()
 6df2 = df2.sort_values(ascending=False)
 7df2 = df2.round(2)
 8print(df2)
 9c = (
10        Pie()
11        .add(
12            "",
13            [list(z) for z in zip(df2.index.to_list(),df2.to_list())],
14            radius=["20%", "80%"],# 圆环的粗细和大小
15            rosetype='area' #玫瑰图
16        )
17        .set_global_opts(
18            title_opts=opts.TitleOpts(title="菜谱评分分布"
19                                     ),
20            legend_opts=opts.LegendOpts(
21                orient="vertical", pos_top="5%", pos_left="2%" ,textstyle_opts=opts.TextStyleOpts(font_size=14)# 左面比例尺
22            ),
23
24
25        )
26        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%",font_size=18),
27                      )
28    )
29c.render_notebook()

 

三伏天食谱菜谱_高三学生一周食谱菜谱_食谱菜谱/

豆果美食网的菜谱评分采用5分制。 从上图可以看出,只有不到2%的菜谱得分为4分以下,32.6%的菜谱得分为满分。 可见,用户普遍对中餐菜谱评价较高。

各菜系菜谱数量对比

 1from pyecharts import options as opts
 2from pyecharts.charts import Page, Pie 
 3df2 = df.groupby('菜系')['评分'].count() #按菜系分组,对评分计数
 4df2 = df2.sort_values(ascending=False) #降序
 5print(df2)
 6c = (
 7        Pie()
 8        .add("", [list(z) for z in zip(df2.index.to_list(),df2.to_list())])
 9        .set_global_opts(title_opts=opts.TitleOpts(title="各菜系菜谱数量占比",subtitle="数据来源:豆果美食"))
10        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
11    )
12c.render_notebook()

 

食谱菜谱_高三学生一周食谱菜谱_三伏天食谱菜谱/

从上图可以看出,川菜和粤菜的菜谱数量较多,可见其作为中国“八大菜系”成员的地位。 湖北菜和清真菜的菜谱较少,比较小众。

各菜系评分对比

 1from pyecharts import options as opts
 2from pyecharts.charts import Page, Pie
 3df2 = df.groupby('菜系')['评分'].mean()
 4df2 = df2.sort_values(ascending=False)
 5df2 = df2.round(2)
 6print(df2)
 7c = (
 8        Pie()
 9        .add(
10            "",
11            [list(z) for z in zip(df2.index.to_list(),df2.to_list())],
12            radius=["40%", "75%"],   # 圆环的粗细和大小
13        )
14        .set_global_opts(
15            title_opts=opts.TitleOpts(title="各菜系平均评分"),
16            legend_opts=opts.LegendOpts(
17                orient="vertical", pos_top="5%", pos_left="2%"  # 左面比例尺
18            ),
19        )
20        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}"))
21    )
22c.render_notebook()

 

三伏天食谱菜谱_食谱菜谱_高三学生一周食谱菜谱/

从上图可以看出,各菜系的评分非常接近,用户平均评分在4.6分以上。 相对一致的评分使得通过用户评分来评估食谱的可靠性较低。

各菜系用料数量比较

 1from pyecharts.charts import Bar,Pie
 2from pyecharts import options as opts
 3df1 = df.groupby('菜系')['用料数'].mean() #按菜系分组,对评分计数
 4df1 = df1.sort_values(ascending=False) #降序
 5df1 = df1.round(0)
 6print(df1)
 7bar = Bar()
 8bar.add_xaxis(df1.index.to_list())
 9bar.add_yaxis("用料数量",df1.to_list())
10bar.set_global_opts(title_opts=opts.TitleOpts(title="各菜系用料数量",subtitle="数据来源:豆果美食"))
11bar.render_notebook()

 

三伏天食谱菜谱_食谱菜谱_高三学生一周食谱菜谱/

从上图可以看出,川菜和东北菜用料较多。 川菜以其食材广泛、调味丰富、菜品多样而闻名。 东北菜虽然没有跻身传统的“八大菜系”,但豪放热情的东北人在菜品的用料上却从不吝惜。

粤菜更注重菜肴的原汁原味,其特点是清、鲜、爽、嫩、滑,所以用料相对较少。 清真食品习俗源于伊斯兰教。 有些成分是禁忌,所以用的成分并不多。

川菜食材分析

1# 绘制词云图
2text1 = get_cut_words(content_series=df[df['菜系']=='川菜']['用料'])
3stylecloud.gen_stylecloud(text=' '.join(text1), max_words=1000,
4                          collocations=False,
5                          font_path='字酷堂清楷体.ttf',
6                          icon_name='fas fa-thumbs-up',
7                          size=653,
8                          output_name='./川菜.png')
9Image(filename='./川菜.png') 

 

高三学生一周食谱菜谱_三伏天食谱菜谱_食谱菜谱/

从川菜食材词云中我们可以看出,川菜的主要食材包括花椒、豆瓣酱和干辣椒。 不怕辣的四川人都喜欢种花椒,四川火锅也因为花椒的加入而更加吸引人。 成千上万的国内外美食爱好者蜂拥而至。

配料很扎实,总体来说很美味。 川菜中用料最多的菜谱是足不出户的川式砂锅,总共有35种食材。

三伏天食谱菜谱_高三学生一周食谱菜谱_食谱菜谱/

配料:牛肚、黄喉、新鲜牛肉片、自家肉、鸭血、金针菇、平菇、豆芽、红薯淀粉、冬笋片、白菜、生菜叶、鹌鹑蛋(煮熟去壳)、猪骨汤、猪油、黄油、植物油(植物油最好)、姜片、大蒜、郫县豆瓣、八角、茴香、肉桂、丁香、陈皮、香叶、白胡椒、冰糖、生抽、盐、葱结、花椒、干辣椒、鸡精丸、午餐肉

粤菜食材分析

三伏天食谱菜谱_高三学生一周食谱菜谱_食谱菜谱/

从粤菜食材词云中我们可以看出,粤菜的主要食材包括辣椒、五花肉和糖。 粤菜圣地是顺德。 粤菜讲究品质和口味,口味比较清淡。 它力求在光线下清新,在光线下美丽。

粤菜中用料最多的菜谱是粤肠粉,共有23种食材。

三伏天食谱菜谱_食谱菜谱_高三学生一周食谱菜谱/

配料详情:面糊、糯米粉(米粉)、城面(小麦淀粉)、马铃薯淀粉、玉米粉(玉米淀粉)、水、酱料配料、大蒜、蒜籽、姜片、香菜(可以用其他代替)葱(不吃香菜的话就加葱)、鸡汤、鲜味酱油、老抽、蚝油、蜂蜜、鱼露(可选)、鸡精(喜欢的可以放,不吃的话还是新鲜的)不要)、水、肠粉材料、肉末、鸡蛋、生菜叶

湘菜食材词云图

食谱菜谱_三伏天食谱菜谱_高三学生一周食谱菜谱/

从湘菜食材词云可以看出,湘菜的主要食材有辣椒、大蒜、花椒等。不怕辣的湖南人,就是靠辣椒为生的。尤其以切碎的辣椒而闻名。 J哥虽然不是湖南人,但在湖南呆了几年,也变成了一个胖子。 食物虽美,但也别贪心哦~

湘菜中用料最多的菜谱是三片香辣卤鸭,一共使用了20种食材。

食谱菜谱_三伏天食谱菜谱_高三学生一周食谱菜谱/

配料详情:鸭脚(用水浸泡一小时)、鸭翅(用水浸泡一小时)、鸭肠(洗净扎成小捆)、白芷、肉桂、香叶、大料(两颗焯水备用)水、卤水三颗)、干辣椒(根据个人喜好)、小茴香、花椒、花椒、草果、生姜(焯水一根、卤水一根)、蒜瓣(全部去皮)、辣椒酱(根据个人喜好)、老抽、生抽、料酒、糖、盐

东北菜食材词云

高三学生一周食谱菜谱_三伏天食谱菜谱_食谱菜谱/

从东北菜所用食材词云可以看出,东北菜所用的主要食材包括土豆、面粉、胡萝卜等。东北菜在烹饪方法上还融合了一些宫廷菜和汉菜,采用东北特产原料材料纯绿色食品原料。 黑土地孕育的土豆、胡萝卜,源源不断地为东北美食提供美味食谱。

东北菜中用料最多的菜谱是玉白菜饺子,有20种常见食材。

三伏天食谱菜谱_高三学生一周食谱菜谱_食谱菜谱/