中秋佳节,除了假日团圆,月饼也是头巷尾的话题焦点今年中秋,谁的月饼呼声最高?什么口味的月饼虽受欢迎?

我将与你一起爬取淘宝网全网月饼销售数据,再经过数据分析,告诉你今年谁是“月饼之王”。不过在爬取数据与分析数据之前,插播一段月饼历史之情。

一、月饼的历史

据说早在殷周时期,江浙一带就有一种纪念太师闻仲的边薄心厚的“太师饼”,可以说是月饼的祖宗了。至于为什么要纪念闻仲,我也不知道。


后来到了北宋,被皇家看上了,在中秋节那天吃,不得不说皇室贵族的宣传力度果然是一般人的十倍以上,为月饼的传播起了跨世纪的作用。

贵族们一看这玩意火了,得蹭个热点,那给它们取个名字吧,于是想了个大名叫“月团”,小名叫“小饼”,我说你们为啥就不能把这两个名字合并一下?


至于月饼这个名字,是直到南宋时期才第一次出现在书里的。后面大概就是月饼一步一步凭借自己的努力渐渐站在中秋节身边的励志故事了。

众所周知:传统的中国四大月饼包括,广式月饼,京式月饼,苏式月饼和潮式月饼。现在随着时代的发展,也出现了好多新种类,比如冰皮月饼、海味月饼、冰淇淋月饼等等。

二、数据获取

我就以淘宝网上的月饼为目标,来获取最近全国各地近段时间月饼销售情况。(目标链接:https://s.taobao.com/search?q=月饼)

工具&模块:

工具:Python3.7+Sublime Text

模块:requests、jieba、matplotlib、wordcloud、imread、pandas、numpy 等。

目的主要是通过对数据的分析,来看看不同关键词word对应的sales的统计、月饼价格以及销量的分布情况、以及不同省份的月饼销量情况。

详情代码如下:

import requests

import re

#下载网页

def get_html_text(url):

try:

res = requests.get(url,timeout=30)

res.raise_for_status()

res.encoding = res.apparent_encoding

return res.text

except:

return ""

#解析网页并保存数据

def parse_page(html):

try:

plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)

tlt = re.findall(r'\"raw_title\"\:\".*?\"', html)

loc = re.findall(r'\"item_loc\"\:\".*?\"', html)

sale = re.findall(r'\"view_sales\"\:\".*?\"', html)

#print(plt)

for i in range(len(plt)):

price = eval(plt[i].split(':')[1])

title = eval(tlt[i].split(':')[1])

location = eval(loc[i].split(':')[1])

location = location.split(' ')[0]

sales = eval(sale[i].split(':')[1])

sales = re.match(r'\d+',sales).group(0)

print(price)

with open("月饼数据.txt",'a',encoding='utf-8') as f:

print(f)

f.write(title+','+price+','+sales+','+location+'\n')

except:

print("")

def main():

goods="月饼"

depth=100

start_url = 'https://s.taobao.com/search?q=' + goods

for i in range(depth):

try:

url = start_url + '&s=' + str(44 * i)

print('url=',url)

html = get_html_text(url)

parse_page(html)

except:

continue

main()

知识点:Response对象的属性

  • r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败 ;

  • r.text HTTP响应内容的字符串形式,即url对应的页面内容;

  • r.encoding 从HTTP header中猜测的响应内容编码方式;

  • r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式);

三、数据清洗预览

由上图可以看出,全网月饼的均价在90元左右,最贵月饼价高达9999元,最高销量为355444(数据为当前爬取数据为准)

四、数据分析可视化

广式月饼风采依旧,蛋黄、莲蓉口味深受最爱

结论:

广式月饼、礼盒装占比很高;从口味上来看,蛋黄口味占比很高,比莲蓉,五仁都高,其他口味豆沙、水果、火腿等次之;从品牌商家来看,北京稻香村、广东华美排名靠前;从礼盒装、企业、员工、团购、批发来看,淘宝网也是企业采购月饼送员工的渠道之一。

详情代码如下:

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import matplotlib

from pyecharts import Geo,Style,Line,Bar,Overlap

from wordcloud import WordCloud, ImageColorGenerator

from os import path

from pylab import mpl

import jieba

f = open(r"C:\Users\Administrator\Desktop\月饼数据.txt",encoding='utf-8')

df = pd.read_csv(f,sep=',',names=['title','price','sales','location'])

title = df.title.values.tolist()

#对每个标题进行分词

title_s = []

for line in title:

title_cut = jieba.lcut(line)

title_s.append(title_cut)

title_clean = []

#停用词表

stopwords = ["月饼","礼品","口味","礼盒","包邮","【","】","送礼","大",

"中秋节","中秋月饼","2","饼","蓉","多","个","味","斤","送"," ","老",

"北京","云南","网红老"]

#剔除停用词表

for line in title_s:

line_clean = []

for word in line:

if word not in stopwords:

line_clean.append(word)

title_clean.append(line_clean)

title_clean_dist = []

#进行去重

for line in title_clean:

line_dist = []

for word in line:

if word not in line_dist:

line_dist.append(word)

title_clean_dist.append(line_dist)

allwords_clean_dist = []

for line in title_clean_dist:

for word in line:

allwords_clean_dist.append(word)

df_allwords_clean_dist = pd.DataFrame({'allwords':allwords_clean_dist})

#对过滤_去重词语进行汇总统计

word_count = df_allwords_clean_dist.allwords.value_counts().reset_index()

word_count.columns = ['word','count']

backgroud_Image = plt.imread('1.jpg')

wc = WordCloud(width=1024,height=768,background_color='white',

mask=backgroud_Image,font_path="C:\simhei.ttf",max_font_size=400,

random_state=50)

wc = wc.fit_words({x[0]:x[1] for x in word_count.head(100).values})

plt.imshow(wc,interpolation='bilinear')

plt.axis("off")

plt.show()

d = path.dirname(__file__)

wc.to_file(path.join(d,"yuebing.png"))

知识点:

font_path : string //字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = '黑体.ttf';

mask : nd-array or None (default=None) //如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。 除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:bg_pic = imread('读取一张图片.png'), 背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要显示的形状复制到一个纯白色的画布上再保存,就ok了;

stopwords : set of strings or None //设置需要屏蔽的词,如果为空,则使用内置的STOPWORDS ;

background_color : color value (default=”black”) //背景颜色,如background_color='white',背景颜色为白色;

max_font_size : int or None (default=None) //显示的最大的字体大小 ;

fit_words(frequencies) //根据词频生成词云(frequencies,为字典类型)

不同关键词word对应的sales之和的统计分析

(说明:例如 词语 ‘广式’,则统计商品标题中含有‘广式’一词的商品的销量之和,即求出具有‘广式’风格的商品销量之和)

由上图可以看出:礼盒装、广式、蛋黄、莲蓉、五仁、稻香村、华美等关键词靠前,也再次验证了广式月饼堪称月饼之王,实际付款人高达近700万,广式月饼可谓是风采依旧。虽然广式月饼起源于广州,但凭借其松软的饼皮和多元丰富的馅料,实际已经在全国各地流行开来,成为名副其实的“月饼之王”。

详情代码如下:

w_s_sum = []

for w in word_count.word:

i = 0

s_list = []

for t in title_clean_dist:

if w in t:

s_list.append(df.sales[i])

i+= 1

w_s_sum.append(sum(s_list))

df_w_s_sum = pd.DataFrame({'w_s_sum':w_s_sum})

df_word_sum = pd.concat([word_count,df_w_s_sum],axis=1,ignore_index=True)

df_word_sum.columns = ['word','count','w_s_sum']

df_word_sum.sort_values('w_s_sum',inplace=True,ascending=True)

df_w_s = df_word_sum.tail(30)

attr = df_w_s['word']

v1 = df_w_s['w_s_sum']

bar = Bar("月饼关键词销量分布图")

bar.add("关键词",attr,v1,is_stack=True,xaxis_rotate=30,yaxix_min=4.2,

xaxis_interval=0,is_splitline_show=False)

overlap = Overlap()

overlap.add(bar)

overlap.render('月饼关键词_销量分布图.html')


多数商品销量为3000以下,占比高达90%

由上图看出,销售量在10万以上的寥寥无几,共8种,其中销售量30万以上就有6款。当今网红经济下,爆品为王,一款独大;正所谓网红就是营销,爆品就是产品,有了好的产品再经过营销的运作就能产生十倍的放大效益, 如果没有好的产品,光有营销企业也难以长久。要利用网红经济来打造爆款,选择爆款一定要有自己的特色,在销售的过程中,客户的评价对产品的搜索排序和客户下单转化起着至关重要的作用;

消费降级?均价在10-100元占比50%

商品数量随着价格总体呈现下降阶梯形势,价格越高,在售的商品越少;低价位商品居多,价格在10-100之间的商品最多,100-200之间的次之,价格8000以上的商品较少。

详情代码如下:

f = open(r"C:\Users\Administrator\Desktop\月饼数据.txt",encoding='utf-8')

df = pd.read_csv(f,sep=',',names=['title','price','sales','location'])

print(df.sort_values(by='price'))

price_info = df[['price','location']]

bins = [0,10,50,100,150,200,300,500,1000,5000,8000]

level = ['0-10','10-50', '50-100','100-150' ,'150-200', '200-500','500-1000','1000-5000','5000-8000','8000以上']

price_stage = pd.cut(price_info['price'], bins = bins,labels = level).value_counts().sort_index()

print(price_stage)

attr = price_stage.index

v1 = price_stage.values

bar = Bar("价格区间&月饼种类数量分布")

bar.add("",attr,v1,is_stack=True,xaxis_rotate=30,yaxix_min=4.2,

xaxis_interval=0,is_splitline_show=False)

overlap = Overlap()

overlap.add(bar)

overlap.render('价格区间&月饼种类数量分布.html')

后记:


由上图可看出,全网Top15中,广式口味占80%,全国各地都在卖广式月饼。月饼种类那么多,为何偏偏是广式月饼横行中国?广式月饼外层是糖浆皮,以小麦粉、糖浆、植物油、碱水等原料制作烘烤而成,这并非中国传统的糕饼技艺,这与广式月饼的起源有关。广东流行中秋月饼比中国其他地区的时间更晚,要迟到晚清时期。在此之前,广州沙面地区已因鸦片战争变为英、法租界,各类西饼店纷纷踏上广州地界。以糖浆皮包裹烘烤而成的广式月饼,其实是学习西式糕点作法的产物。

广式月饼能一统天下,最重要的一条是广式月饼的原料,这个原料就是莲蓉。早在1889年,当时广州城西的一家叫“莲香楼”的糕酥店,将莲子熬成莲蓉作馅料,做成的酥饼清香可口,大受欢迎。后来,莲香楼的生产者将这种莲蓉馅料的饼点定型为月饼,逐渐形成后来的广式月饼。

今年你吃到哪些好吃的月饼了吗?

投稿邮箱:pythonpost@163.com

欢迎点击申请Python中文社区新专栏作者计划

Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以公安部、工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

▼ 点击下方阅读原文免费成为社区会员

用Python分析月饼之王花落谁手相关推荐

  1. 月饼之王花落谁手?全网都在销售它!

    本文经授权转载自恋习Python(ID:sldata2017) 作者|丁彦军 中秋佳节,除了假日团圆,月饼也是头巷尾的话题焦点今年中秋,谁的月饼呼声最高?什么口味的月饼虽受欢迎? 笔者将与你一起爬取淘 ...

  2. kdj python实现_一颗韭菜的自我修养:用Python分析下股市,练练手

    一颗韭菜的自我修养. 机器之心报道,编辑:魔王.陈萍. 股市跌宕起伏.7 月初 A 股飙升,股票瞬间成为大家的热门讨论话题,「现在入场还来得及吗?」几乎成为新的问候语. 然而,经历了连续近 10 个交 ...

  3. python mysql股票分析_一颗韭菜的自我修养:用Python分析下股市,练练手

    股市跌宕起伏.7 月初 A 股飙升,股票瞬间成为大家的热门讨论话题,「现在入场还来得及吗?」几乎成为新的问候语. 然而,经历了连续近 10 个交易日的快牛行情后,上证指数上涨势头放缓.这是牛市,还是熊 ...

  4. python 计算每日累计_一颗韭菜的自我修养:用 Python 分析下股市,练练手

    (给Python开发者加星标,提升Python技能) 来源:机器之心 一颗韭菜的自我修养. 股市跌宕起伏.7 月初 A 股飙升,股票瞬间成为大家的热门讨论话题,「现在入场还来得及吗?」几乎成为新的问候 ...

  5. 一颗韭菜的自我修养:用Python分析下股市,练练手

    一颗韭菜的自我修养. 股市跌宕起伏.7 月初 A 股飙升,股票瞬间成为大家的热门讨论话题,「现在入场还来得及吗?」几乎成为新的问候语. 然而,经历了连续近 10 个交易日的快牛行情后,上证指数上涨势头 ...

  6. python怎么计算总值_一颗韭菜的自我修养:用Python分析下股市,练练手

    一颗韭菜的自我修养. 机器之心报道,编辑:魔王.陈萍. 股市跌宕起伏.7 月初 A 股飙升,股票瞬间成为大家的热门讨论话题,「现在入场还来得及吗?」几乎成为新的问候语. 然而,经历了连续近 10 个交 ...

  7. Python分析今年的月饼之王花落谁家?

    程序IT圈 www.cxyquan.com 优秀程序猿技术公众号 作者|丁彦军 来源|恋习Python(ID:sldata2017) 转载请联系授权(微信ID:2394608316) 中秋佳节,除了假 ...

  8. 用Python分析了1w场吃鸡数据,原来吃鸡要这么玩!

    微信改版,加星标不迷路! 用Python分析如何才能高效吃鸡? 作者:阿广 概述 前言 获取数据 观察数据 数据处理 吃鸡到底和哪个数据相关性最强? 分析热度图 期望研究的问题 结论 阿广说 推荐阅读 ...

  9. python分析nginx日志_利用python分析nginx日志

    最近在学习python,写了个脚本分析nginx日志,练练手.写得比较粗糙,但基本功能可以实现. 脚本功能:查找出当天访问次数前十位的IP,并获取该IP来源,并将分析结果发送邮件到指定邮箱. 实现前两 ...

最新文章

  1. 手机端仿ios的1-n级联动脚本二
  2. RT ROM boot简介
  3. 运动框架实现思路(js)
  4. linux-free命令
  5. db2导入发生错误显示不是绝对路径_python编程常见错误总结
  6. 设计模式--缺省适配模式
  7. Dart学习笔记01:环境搭建与开发环境配置
  8. 基于matlab 的图像重建,基于Matlab的2D-FFT图像重建软件的设计
  9. 技术升级推动云游戏产业全面发展——白鹭科技陈书艺
  10. Java并发编程之volatile关键字
  11. Dstream如何应用RDD特有算子?
  12. w25q64 linux,我用W25Q16的读写函数测试w25Q64怎么总是失败?需要改动什么吗?
  13. 网工必会stp /rstp /mstp (笔记)
  14. 博客自定义html模块代码,如何添加博客自定义代码HTML?
  15. span之间的空隙怎样解决?
  16. 程序员业务,微信全文搜索技术优化
  17. 等额本息贷款与等额本金贷款比较
  18. 大数据知识框架体系总结梳理
  19. 2020亚洲品牌500强榜单发布 ;肯德基中国门店将限时发售植物肉汉堡 | 美通企业日报...
  20. 齿轮系统动力学模型matlab程序代码

热门文章

  1. 偏序关系Dilworth定理
  2. fineui grid ajax,基于FineUI Grid控件添加右键菜单
  3. 清空input输入框的历史记录
  4. 手游服务器压力,为什么手游都是几百上千个区?真的这么多人吗?
  5. NSString的stringWithFormat用法
  6. Android经典蓝牙开发全流程
  7. 30余种加密编码类型的密文特征分析建议收藏
  8. 失落的C语言结构体封装艺术
  9. wow十强技能排行!
  10. 计算机网络的分类及基本特点,计算机网络的定义、分类、特点