中国统计网|Python分析4000+淘宝月饼销售数据,告诉你谁是月饼中的TOP.1?


中国统计网|Python分析4000+淘宝月饼销售数据,告诉你谁是月饼中的TOP.1?
本文插图
1
中秋节介绍
中秋节 , 又称祭月节、月光诞、月夕、秋节、仲秋节、拜月节、月娘节、月亮节、团圆节等 , 是中国民间的传统节日 。
中秋节自古便有祭月、赏月、吃月饼、玩花灯、赏桂花、饮桂花酒等民俗 , 流传至今 , 经久不息 。
每年中秋节到 , 总会去姥姥那里送中秋 , 并买上各种各样的月饼 , 那个时候科技并不怎么发达 , 不仅没有这么多形形色色的月饼 , 也不知道哪些月饼卖得好? 月饼的价格分布是怎样的呢? 什么地方的月饼销量最高呢? 简直有十万个为什么 , 希望别人给我们解答 。
随着科技的飞速发展 , 互联网沟通了你我他 。 通过淘宝上月饼的销量 , 就可以解决我们想要知道的好多问题 。
基于此 , 我爬取了淘宝上4000多条月饼的销售数据 , 为大家展示了一幅漂亮的可视化大屏 , 解决大家心目中的问题 。
中国统计网|Python分析4000+淘宝月饼销售数据,告诉你谁是月饼中的TOP.1?
本文插图
可视化大屏效果展示
2
数据采集
这次爬取淘宝 , 采用的是最简单的方式:Selenium控制Chrome浏览器进行自动化操作 , 中途只需要扫码登陆一次 , 即可完成整个数据的爬取 。
这种方法及其好用 , 不会出现封IP、封号的情况 , 大家放心使用!
大家运行这个代码之前 , 唯一要做的就是下载与谷歌版本相对应的chromedriver驱动 , 然后进行相关配置即可 。
部分爬虫代码如下:
from seleniumimport webdriver# 搜索商品 , 获取商品页码def search_product(key_word): # 定位输入框 browser.find_element_by_id("q").send_keys(key_word) # 定义点击按钮 , 并点击 browser.find_element_by_class_name('btn-search').click # 最大化窗口:为了方便我们扫码 browser.maximize_window # 等待15秒 , 给足时间我们扫码 time.sleep(15) # 定位这个“页码” , 获取“共100页这个文本” page_info = browser.find_element_by_xpath('//div[@class="total"]').text # 需要注意的是:findall返回的是一个列表 , 虽然此时只有一个元素它也是一个列表 。page = re.findall("(\d+)",page_info)[0] return page3
数据清洗
数据清洗很重要 , 这个对于我们后续做可视化展示 , 极其重要 。 因此我们需要根据后面要做的图形 , 然后进行对应的进行数据清洗 。
爬取到的原始数据如下:
中国统计网|Python分析4000+淘宝月饼销售数据,告诉你谁是月饼中的TOP.1?
本文插图
原始数据
整个数据看上去算是比较干净 , 但是还是有几个地方指的我们处理一下 。

  • 爬取到的原始数据没有列名 , 我们需要添加一个新列名;
  • 整个爬虫过程中 , 会出现重复数据 , 我们需要提前去重处理;
  • 将购买人数为空的记录 , 替换成0人付款;
  • 将购买人数转换为销量(注意部分单位为万);
  • 删除无发货地址的商品 , 并提取其中的省份;
数据清洗部分代码如下:
# 提取数值df['num'] = [re.findall(r'(\d+\.{0,1}\d*)', i)[0]for iin df['付款人数']]# 提取数值df['num'] = df['num'].astype('float')# 转化数值型# 提取单位(万)df['unit'] = [''.join(re.findall(r'(万)', i))for iin df['付款人数']]# 提取单位(万)df['unit'] = df['unit'].apply(lambda x:10000 if x=='万' else 1)# 计算销量df['销量'] = df['num'] * df['unit']现在来看看 , 清洗后的数据是啥样的?
中国统计网|Python分析4000+淘宝月饼销售数据,告诉你谁是月饼中的TOP.1?


推荐阅读