当前位置: 首页 > 编程日记 > 正文

Python实战 | 送亲戚,送长辈,月饼可视化大屏来帮忙!

中秋节介绍

中秋节,又称祭月节、月光诞、月夕、秋节、仲秋节、拜月节、月娘节、月亮节、团圆节等,是中国民间的传统节日。

中秋节自古便有祭月、赏月、吃月饼、玩花灯、赏桂花、饮桂花酒等民俗,流传至今,经久不息。

每年中秋节到,总会去姥姥那里送中秋,并买上各种各样的月饼,那个时候科技并不怎么发达,不仅没有这么多形形色色的月饼,也不知道哪些月饼卖得好? 月饼的价格分布是怎样的呢? 什么地方的月饼销量最高呢? 简直有十万个为什么,希望别人给我们解答。

随着科技的飞速发展,互联网沟通了你我他。通过淘宝上月饼的销量,就可以解决我们想要知道的好多问题。基于此,我爬取了淘宝上4000多条月饼的销售数据,为大家展示了一幅漂亮的可视化大屏,解决大家心目中的问题。

可视化大屏效果展示

数据采集

这次爬取淘宝,采用的是最简单的方式:Selenium控制Chrome浏览器进行自动化操作,中途只需要扫码登陆一次,即可完成整个数据的爬取。

这种方法及其好用,不会出现封IP、封号的情况,大家放心使用!

大家运行这个代码之前,唯一要做的就是下载与谷歌版本相对应的chromedriver驱动,然后进行相关配置即可。其实关于淘宝整个数据爬取的过程,我之前为大家写了一篇很详细的文章,供大家参考。

淘宝爬虫完整讲述:http://suo.im/6vwBc8

部分爬虫代码如下:

from selenium import 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 page


数据清洗

数据清洗很重要,这个对于我们后续做可视化展示,极其重要。因此我们需要根据后面要做的图形,然后进行对应的进行数据清洗。

爬取到的原始数据如下:

原始数据

整个数据看上去算是比较干净,但是还是有几个地方指的我们处理一下。

  1. 爬取到的原始数据没有列名,我们需要添加一个新列名;

  2. 整个爬虫过程中,会出现重复数据,我们需要提前去重处理;

  3. 将购买人数为空的记录,替换成0人付款;

  4. 将购买人数转换为销量(注意部分单位为万);

  5. 删除无发货地址的商品,并提取其中的省份;

数据清洗部分代码如下:

# 提取数值df['num'] = [re.findall(r'(\d+\.{0,1}\d*)', i)[0] for i in df['付款人数']]  # 提取数值df['num'] = df['num'].astype('float')  # 转化数值型# 提取单位(万)df['unit'] = [''.join(re.findall(r'(万)', i)) for i in df['付款人数']]  # 提取单位(万)df['unit'] = df['unit'].apply(lambda x:10000 if x=='万' else 1)# 计算销量df['销量'] = df['num'] * df['unit']

现在来看看,清洗后的数据是啥样的?

数据清洗后的数据

可视化展示


可视化是整个文章的亮点所在,所谓“字不如表、表不如图”。整个可视化大屏我们基于以下五个问题开展而来。

  1. 月饼销量Top10的柱形图;

  2. 店铺月饼销量Top10的柱形图;

  3. 全国月饼销量的地域分布地图;

  4. 不同价格区间的月饼销量圆环图;

  5. 月饼销售关键字的词云图;

鉴于整个文章排版,本文可视化部分的代码均可在本文末尾获取。

1)月饼销量Top10的柱形图

结论分析:销量Top10的月饼,其实对于我们选购月饼还是挺有指导意义的。从图中可以看到这个稻香村月饼,买的还是极其好的,销量排名前10的产品中,稻香村月饼占据了3个位置。还有一个名字特别熟悉:五芳斋,只知道他家的粽子做的好,原来月饼也做的不错,所以说品牌效应还是很好的。那么你是否可以再看看,这些店里面是否有其他更好吃的点心呢?

2)店铺月饼销量Top10的柱形图

结论分析:这里图中显示的结果,和第一张图显示的结果不谋而合,就不再过多的解释了。唯独感兴趣的还是这个稻香村,为啥销量如此好?百度一下得知原来是一家百年老店,附带一张图如下。

3)全国月饼销量的地域分布地图

结论分析:从图中可以看出,广东、浙江、山东、福建、北京的月饼销量,在全国都是遥遥领先的。查阅资料可以发现,它们几乎都有自己的品牌,像广东的广式月饼、浙江的衢式月饼、山东的鲁式月饼等。广式月饼重油重糖、京式月饼重油轻糖、鲁式月饼口味清淡、苏式月饼重甜。大家可以根据自己的需求,给亲戚长辈们合理挑选符合口味的月饼哦。

4)不同价格区间的月饼销量圆环图

结论分析:当然价格才是大家关注的焦点。观察上图可以发现,月饼的价格几乎是处在中间的、能被大家接受的范围(22-115),再稍微贵一点的就是115-633这个区间(还可以接受),而处在633元以上的月饼几乎为0。毕竟中秋节是一个传统节日,适中的价格才能被大家接受,利润就这么几天,薄利多销才是王道。

5)月饼销售关键字的词云图

结论分析:从图中可以看出,广式月饼极其受欢迎(PS:我还没吃过),其次小时候经常吃的五仁月饼一直卖的挺好,豆沙月饼还一直是很多孩子的最爱呀!还有现在出来的各种各样的新鲜口味,像美心、酥皮、心奶、燕窝、白莲等等,你到底喜欢哪一个呢?

更多精彩推荐
  • 面向隐私AI的TensorFlow深度定制化实践

  • 自拍卡通化,拯救动画师,StyleGAN再次玩出新花样

  • 秋天的第一杯奶茶该买哪家?Python 爬取美团网红奶茶店告诉你

  • Azure Arc 正式商用、Power Platform+GitHub 世纪牵手,一文看懂 Ignite 2020

  • 起底 ARM:留给中国队的时间不多了

相关文章:

lamp一键安装包

lamp一键安装包 http://58.83.226.93/ http://www.centos.bz/lamp/ http://www.centos.bz/ lamp一键安装包 http://58.83.226.93/ http://www.centos.bz/lamp/ http://www.centos.bz/

快节奏的多人游戏同步 - 示例代码和在线演示

这是一个实现我《快节奏的多人游戏同步》系列文章中主要概念的客户端——服务器架构演示示例(不包括实例插值,那块我还没弄完)建议在阅读完这系列文章后再看这部分。代码是纯JavaScript写的,一页就装下了。少于400行代码&#xff…

探索IE浏览器窗口

探索IE浏览器窗口点燃灵感   星之海洋不知大家是否见过浏览器窗口(哎呦,不要打我!),其实,不要小瞧了这普普通通的windows,除了常用的window.open()与window.resizeTo()方法来开启窗口外&…

新转机!2020年想裸辞的程序员们注意了

近期,脉脉发布了《2020职场人裸辞现状调研报道》,报道显示2020最让职场人想裸辞的三大原因为:不开心、工资低、没有盼头。报告数据中还显示,工资不满预期是最让人想要裸辞的主要原因,但有超过6成职场人表示&#xff0c…

《ORACLE PL/SQL编程详细》,游标 ,函数,触发器。。

http://www.cnblogs.com/huyong/archive/2012/07/30/2614563.html

【Spark Summit East 2017】Spark化数据引擎

更多精彩内容参见云栖社区大数据频道https://yq.aliyun.com/big-data;此外,通过Maxcompute及其配套产品,低廉的大数据分析仅需几步,详情访问https://www.aliyun.com/product/odps。 本讲义出自Rohan Sharma在Spark Summit East 20…

将文本随意插入网页表单的 textarea

原作者&#xff1a;我佛山人出处&#xff1a;5D多媒体在网页表单的<textarea>中&#xff0c;我们有时候需要将文本插入到光标所在的地方&#xff0c;或是替换掉选区内的文字。这时候&#xff0c;用普通的.value"text"就无能为力了。下面这段测试代码可以解决这…

sharepoint 备份还原

sharepoint 2010备份和还原 sharepoint 2010中只有两种备份和还原的方法: 第一种: 使用命令行Stsadm来进行备份与还原 一. 备份操作 1, 首先创建一个批处理文件backup.bat,内容如下. "%systemdrive%\program Files\Common Files\Microsoft Shared\web server extension…

FCOS:全卷积一阶段Anchor Free物体检测器,多种视觉任务的统一框架

作者 | ronghuaiyang来源 | AI公园导读&#xff1a;这是众多Anchor Free中比较有影响力的一篇文章&#xff0c;不光是效果好&#xff0c;而且思路清楚&#xff0c;简单&#xff0c;不需要任何trick&#xff0c;并将众多的视觉任务统一到了一个框架中&#xff0c;值得一看。介绍…

Learn Jenkins the hard way (0) - Jenkins的罪与罚

写在开头 Jenkins是非常流行的开源的持续交付平台&#xff0c;拥有丰富的插件、文档与良好的社区。是国内大多数公司私有持续集成方案CI/CD服务器的选型。开发者可以快速的通过Jenkins搭架符合自己业务场景的pipeline&#xff0c;结合大量的开源插件&#xff0c;可以轻松的满足…

python中的文档字符串(docString)

python中的文档字符串(docString) - 泥土 - 博客园python中的文档字符串(docString)Posted on 2009-02-19 15:27 泥土 阅读(2122) 评论(0) 编辑 收藏 Python有一个很奇妙的特性&#xff0c;称为 文档字符串 &#xff0c;它通常被简称为 docstrings 。DocStrings是一个重要的工…

关于层的挡隔问题的探讨

原作者&#xff1a;我佛山人出处&#xff1a;5D多媒体1.被Flash挡住 设置Flash的参数&#xff1a;<param name"wmode" value"opaque"><object classid"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase"http://download.mac…

不是我放弃AI,是AI放弃了我!!

为什么程序员都觉得AI很难&#xff1f;Google 人工智能开发者专家彭靖田老师说——超90%的程序员在初学AI时&#xff0c;都会遇到下面3个问题&#xff1a;“应用方向太多了&#xff01;不知从何学起&#xff0c;也不知道学完做什么”“Python语法、机器学习/深度学习基础都能看…

Qt中两种定时器用法

在Qt中使用定时器有两种方法&#xff0c;一种是使用QObiect类的定时器&#xff1b;一种是使用QTimer类。定时器的精确性依赖于操作系统和硬件&#xff0c;大多数平台支持20ms的精确度。 1.QObject类的定时器 QObject是所有Qt对象的基类&#xff0c;它提供了一个基本的定时器。通…

有福了,J2EE面试题集锦(附答案)

一、基础问答 1.下面哪些类可以被继承? java.lang.Thread (T) java.lang.Number (T) java.lang.Double (F) java.lang.Math (F) java.lang.Void (F) java.lang.Class (F) java.lang.ClassLoader (T) 2.抽象类和接口的区别 (1)接口可以被多重…

从零开始学ASP.NET(基础篇)

原作者&#xff1a;蓝鲸出处&#xff1a;5D多媒体 学ASPNET与ASP有区别&#xff0c;这种区别不是语言上的&#xff0c;而是思路上的区别。ASP是纯面向过程的&#xff0c;而ASPNET是完全面向对向的。这种区别使我们在编程的结构设计上要与ASP有很大的不同。 废话少说了&#xff…

2 行代码,将 .NET 执行时间降低 87%!

作者 | STEVE GORDON译者 | 弯月&#xff0c;责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;以下为译文&#xff1a;长期以来&#xff0c;我一直在致力于提高性能&#xff0c;并且努力避免在关键代码路径中进行内存分配。例如…

Ansible基础一Playbook(二)

摘自&#xff1a;http://www.ansible.com.cn/docs/playbooks_intro.htmlHandlers: 在发生改变时执行的操作&#xff08;当发生改动时&#xff09;’notify’ actions 会在 playbook 的每一个 task 结束时被触发,而且即使有多个不同的 task 通知改动的发生, ‘notify’ actions …

sendmail服务器案例配置

Linux/UNIX下的老牌邮件服务器。Sendmail作为一种免费的邮件服务器软件&#xff0c;已被广泛的应用于各种服务器中&#xff0c;它在稳定性、可移植性、及确保没有bug等方面具有一定的特色&#xff0c;且可以在网络中搜索到大量的使用资料。 实验拓扑图&#xff1a; 注&#xff…

网页制作的中的一些工具代码

1. οncοntextmenu"window.event.returnvaluefalse" 将彻底屏蔽鼠标右键 <table border οncοntextmenureturn(false)><td>no</table> 可用于Table2. <body onselectstart"return false"> 取消选取、防止复制3. οnpaste"r…

神经网络其实和人一样懒惰,喜欢走捷径......

作者 | Jrn-Henrik Jacobsen, Robert Geirhos, Claudio Michaelis&#xff0c;深度学习研究专家译者 | Arvin&#xff0c;责编 | 夕颜出品 | CSDN&#xff08;ID:CSDNnews&#xff09;以下为译文&#xff1a;人工智能会很快取代放射科医生吗&#xff1f;最近&#xff0c;研究人…

nodejs获取ASP.Net WebAPI(IIS Windows验证)

处理了很多天&#xff0c;终于使用Nodejs可以发出请求至WebAPI&#xff0c;能够正常处理数据了 首先加入npm包 npm install httpntlm 在app.js中加入代码 var httpntlm require(httpntlm); var fs require(fs);var options {url: http://get001.mygroup.com/InstantNoodle_S…

ubb代码转化html代码

ubb代码转化html代码 public static string UbbDecode(string str){str HtmlEncode(str);str Regex.Replace(str, "/[url](?<url>.?)/[/url]", "<a href${url} target_blank>${url}</a>", RegexOptions.Compiled | RegexOptions.Ig…

如何定位EXC_BAD_ACCESS错误 (info malloc-history)

在 iphone 开发中使用内存时&#xff0c;我们经常会遇到 EXC_BAD_ACCESS 的错误。 出现这个错误的原因是我们访问了一个已经被释放掉的对象&#xff0c;如&#xff1a; implementation FeedbackViewController - (void)viewDidLoad {[super viewDidLoad];_scrollView [[UIScro…

一周内咸鱼疯转2.4W次,最终被所有大厂封杀!

&#xff08;含答案&#xff09;所有面试资料及技术好文精选文档都整理到网盘了。Java面试官手册需要加微信免费领取Java面试官手册需要加微信免费领取长按扫码或搜索微信号&#xff1a;gh16670101550&#xff0c;免费领取

java 基础知识三 java变量

1、作用域 {} 包围起来的代码称之为代码块&#xff0c;在块中声明的变量只能在块中使用 2、常量 就是固定不变的量&#xff0c;一旦被定义&#xff0c;它的值就不能再被改变。 3、变量 变量必须在程序中被定义&#xff08;或声明&#xff09;后才能使用&#xff0c;而且为每个变…

打通语言理论和统计NLP,Transformers/GNNs架构能做到吗?

作者 | Chaitanya K. Joshi译者 | 苏本如&#xff0c;责编 | 夕颜来源 | CSDN&#xff08;ID:CSDNnews&#xff09;我的工程师朋友经常问我&#xff1a;图深度学习听起来很棒&#xff0c;但是有没有实际应用呢&#xff1f;虽然图神经网络被用于Pinterest、阿里巴巴和推特的推荐…

艰辛的面向对象

为什么80%的码农都做不了架构师&#xff1f;>>> 所有的操作系统都不是面向对象的。 所有的操作系统都是基于函数的。ANDROID框架里面的好多类也是基于函数的。很多都是静态的方法。这个框架包括两个部分&#xff1a;一是JAVA部分&#xff0c;一是本地类。本地类不…

计算机网络第一课

1.IPv4与IPv6的区别是什么&#xff1f;在windows 7以上系统中&#xff0c;在设置本地IP地址的时候经常会看到同事含有IPV4协议项与IPV6协议项&#xff0c;并不同于以往windows xp系统中仅有TCP/IP协议项&#xff0c;不少朋友都觉得比较奇怪&#xff0c;询问编辑IPv4与IPv6的区别…

常用函数集农历函数

常用函数集农历函数原来是vb代码&#xff0c;重新整理为VB.NET版的&#xff0c;并在VS2003中编译通过Imports System.MathPublic Class UCnCalendarPrivate Structure SolarHolidayStructDim Month As IntegerDim Day As IntegerDim Recess As IntegerDim HolidayName As Strin…