前些天有个朋友向我求救,他们公司最近要针对餐饮行业做数据分析,并为某些商家做出线上营销方案。但是他一头雾水,不知道该从哪方面下手。

我提醒他,是否先从商家的线上评价作为数据分析的入口例如美团、大众点评、饿了么等等。

朋友点头称是:”是个好主意,但是具体怎么做呢?“

于是我花了点时间用Python帮他做了一个基于线上商家评价的数据分析演示。

本章知识点:

商家评价数据源的获取pyecharts 柱状图数据分析pyecharts 饼图数据分析Python的Counter使用方法

商家评价数据源的获取

首先我们要找到合适的商家评价,在本文以大众点评的数据为例,我随机选择一家餐厅的评价数据作为数据源。

因为隐私的关系,我隐去了商家具体的店名和地址,最终我通过线上的API接口拿到了一部分用户评价数据,用于本次演示,如果出于真正的商业目的需要获得更完整的数据,还需要大家自己去想办法。

拿到的商家评价演示数据如下:

需要注意的是,我们需要对返回的数据内容做一下处理,把数据里的true、false、null分别转换为Python语言所需要的True、False和None。原因在于这里线上数据API接口返回时是按照javascript的数据类型来的(true、false、null)。

数据清洗了之后,我们发现这个数据在Python其实就是一个大的字典,那么我们按照字典的格式对其中的数据进行解析即可。

现在我给这个大字典命名为review_data,并保存为data.py文件,方便在正式的数据分析程序里进行import使用。

随后我新建了一个名为analysis.py的文件用于数据分析,并导入刚才的数据源测试一下数据是否正常。

OK,至此我们的数据准备工作已经做好,开始进行实战吧。

个性化的pyecharts柱状图

首先我们来获取概要性的数据分析,就是用户对于该商家的整体印象嘛,这部分数据在review_data的summarys里,让我们写一段程序把它取出来进行展示。

最后图表显示效果如下:

看来这家店菜品比较新鲜、牛肉也不错、老顾客也相对较多,不过分量好像挺少,哈哈。

接着我们来解析下我们的代码:

程序入口从18行开始,Page组件就不多说了,上一章讲过,作用是在一个页面里显示多个图表。

get_summarys()函数主要用于创建一个商家整体评价的柱状图,需要讲的是第10行和12行

我们发现sumarrys的数据其实是一个list(列表)包含着多个dict(字典)数据。

那么我们的柱状图希望得到的格式数据应该是下面这样:

X轴数据 [‘菜品健康’,‘牛肉赞’,‘回头客’] ,X轴数据用于显示名称。

Y轴数据[51,32,29],Y轴数据用于显示数量。

所以我们就用Python的列表推导式分别得到了X,Y轴的数据。

#获取整体评价名称 summary_name_list = [i.get(‘summaryString’) for i in summarys] #获取整体评价次数统计 summary_count_list = [i.get(‘summaryCount’) for i in summarys]

关于add_yaxis()函数里有个category_gap需要解释一下,它的作用是设置同一系列的柱间距离,默认为类目间距的 20%,可设固定值。在这里我设置为80%,就显得柱子比较远,看起来更清晰一点。

拿到X,Y轴的数据后就没什么好说的了,直接添加即可。

关于Python列表推导的内容请查看我之前的教程。

个性化的pyecharts饼图

接下来我想获取该商家的用户打分比例,我们知道在很多点评网站上,用户的分数从1-5颗星星不等。

那么在本文中这些数据是怎么体现的呢?

通过分析数据,我们可以发现每个用户的评论里都包含一个叫star的数据,这里就是用户的打分,30分代表3星。

现在我们写一段代码来把打分数据做成饼图。

在截图里为了看起来方便我隐藏了之前get_summarys()函数,大家只需要关心get_star()函数即可。

最终图表效果如下:

可以发现这家店的评价其实偏低,2星和3星加起来占了很大一部分,5星评价只有30%。

现在来解释一下代码:

Python的Counter使用方法

其实饼图大家在上一章已经学过了,我在这里着重讲一下Counter库。

Counter库是Python自带的一个计数工具,主要用于对序列里的数据进行计数,非常方便快捷,不用我们自己造轮子了。

以上三行代码可以很快帮助我们明白Counter的用途,经过它的统计,我们可以发现列表里10数字有2个,其他数字只有1个。

那么回到刚才的打分数据里,我们通过

all_star = [i.get(‘reviewDataVO’).get(‘reviewData’).get(‘star’) for i in all_review]

这段代码获取到了所有的打分数据。看起来像这样:

[30, 50, 10, 20, 35, 50, 30, 20, 50, 20]

那么我们可以很方便的用Counter对其进行统计即可。

stars = dict(Counter(all_star))

在这里之所以要用dict对Counter结果进行转换成字典,是为了方便我们获取字典的keys和values,正好可以作为饼图所需的数据。大家也可以通过其他方式获取所需内容,不用拘泥于这一种方式。

饼图所需数据

最后的数据压缩代码里:

data = zip(list(stars.keys()), list(stars.values()))

stars.keys()和starts.values()其实分别就是分数和该分数的个数

stars这个字典原始数据如下:

{30: 2, 50: 3, 10: 1, 20: 3, 35: 1}

之所以要用list把keys()和values()的结果转换成列表,也是因为直接获取字典的keys()和values()得到的数据没办法直接使用,需要先转换成列表才行。

到现在为止,我们基本上可以熟练的使用本章学到的知识来对数据进行各种分析了。

最后我得到了四个图表,用于对一家店铺的初步数据分析。

因为篇幅有限,我就不在本文里提供全部源码了,对这个例子感兴趣的朋友可以加入我们的学习圈学习,每晚干货分享。

总结:

通过对pyecharts的深度学习,以及Python自带的各种统计工具的配合使用,我们可以做出更多有价值的数据分析案例,当这些案例慢慢成型后,就变成了一套完整的商业解决方案,希望大家可以从中得到启发,也欢迎继续关注我的Python数据分析系列,学习更多有价值的数据分析方法。

对Python感兴趣或者是正在学习的小伙伴,推荐我们的Python学习扣qun:784758214 ,看看前辈们是如何学习的!从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF,实战源码】,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每天都有大牛定时讲解Python技术,分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地

用Python做一个价值数万的市场调查报告程序,分分钟完成工作相关推荐

  1. 用Python做一个猜数游戏(入门)

    用Python做一个猜数游戏(入门) 目录: 用Python做一个猜数游戏(入门) 第一阶段: 第二阶段: 前言: 各位大佬大家好,我是夕阳样桑,由于最近时间有点紧,所以先做一个小程序.感谢大家的支持 ...

  2. 用python做一个木马_Python编程简单的木马程序(转载于乌云中)

    Python编程简单的木马程序 light·2015/01/26 10:07 0x00准备好了 本文的内容仅用于研究和研究,不得用于非法目的! 这一次,我们使用Python编写了一个简单的木马,它具有 ...

  3. 用python画满天星花朵_如何使用python做一个可以画一朵花的小程序?

    这篇文章可以交给你怎么在windows或macOS与python3环境下做出一个可以根据你的自定义设置画出一朵花的程序. 在开始写正式的逻辑代码之前,我们要先导入一些库: from tkinter i ...

  4. 用python做一个缩放自如的鸣人

    首先,我要非常感谢微信公众号"菜鸟学Python"的作者,是他分享了用python做一个缩放自如的圣诞老人的想法及程序. 我按照作者分享的程序整理了一下,做了一个缩放自如的鸣人,这 ...

  5. 想做价值数万的可视化图表?这款免费软件不能错过!

    都说数据可视化是数据分析的最后一公里,这年头,会数据可视在互联网到底有多吃香?小编这就来给大家科普一下,曾经在某招聘软件上看到字节跳动.腾讯等大厂在招聘要求里面明确写明应聘者需要掌握数据可视化,开出月 ...

  6. python反复猜数_如何python做一个1-100的猜数游戏,告诉我我猜的次数

    内容速读: 完整的程序参考:import randomsecret = random.randintguess = 0tries = 0while int != secret and tries &l ...

  7. 用 python 做一个动态可视化交互大屏

    你可能经常会在公司前台.展会.路演时看到可视化数据的交互大屏.今天我们就来用 python 做一个动态可视化的交互大屏图. 一.项目背景 随着科技的飞速发展,数据呈现爆发式的增长,任何人都摆脱不了与数 ...

  8. python发音机器人_只需三步,菜鸟也能用Python做一个简易版Siri

    原标题:只需三步,菜鸟也能用Python做一个简易版Siri 当下,各个手机厂商都陆续的推出了属于自己的智能手机机器人,像是苹果的Siri,小米的小爱,还有等等.这些智能机器人不仅仅方便了我们对于手机 ...

  9. python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?

    原标题:技术图文:如何利用 Python 做一个简单的定时器类? 背景 今天在B站上看有关 Python 最火的一个教学视频 -- "零基础入门学习 Python",这也是我们 P ...

最新文章

  1. 第5章 图像分类的数据集
  2. IDEA2021全局配置maven
  3. 搜python编程题_100+Python编程题给你练~(附答案)
  4. 分析对象内部结构,并详解synchronized锁膨胀升级和降级的过程
  5. PHP弱类型及一些绕过姿势
  6. bzoj2538: [Ctsc2000]公路巡逻
  7. myeclipse 项目右键没有svn_新建SVN仓库并上传项目
  8. pycharm 更改创建文件默认路径
  9. 月薪30K程序员花了一个小时,用c++做出经典扫雷游戏 !
  10. oracle 12c容器数据库备份和恢复,oracle 12c数据库备份与恢复
  11. Vue项目打包部署到apache服务器
  12. cread(creade吹风机)
  13. 记忆力:魔方基础教程
  14. android 股票行情走势图K线控件 KLineView
  15. MFC 显示对话框内鼠标单击点的坐标值
  16. TYVJ-P1035 棋盘覆盖
  17. 和能力匹配的目标才是战略
  18. 直接激光雷达里程计:基于稠密点云的快速定位
  19. 学习图神经网络相关内容
  20. 中英文名片拼写法对照

热门文章

  1. 7-1 约瑟夫环问题-hebust (10 分)
  2. web.xml放在哪个目录下_美术资源标准(文件夹目录篇)
  3. qcon_从QCon San Francisco 2008中学到的主要知识点和教训
  4. 2023江苏大学计算机考研信息汇总
  5. 文件校验工具HashTab
  6. 数字藏品平台金乌元宇助力中国数字文创发展
  7. 干货 | 这是一份详细的用户成长体系总结笔记
  8. win7系统技巧:设置共享打印机
  9. Keras实现两个优化器:Lookahead和LazyOptimizer
  10. 联想全系列官方WIN10工具