前几天有朋友找我帮忙。他们公司最近想为餐饮行业做数据分析,为一些商家做网络营销方案。但他一头雾水,不知从何下手。我提醒他要不要从商家的在线评论作为数据分析的切入点,比如美团、大众点评、饿了么等。朋友点点头说:“想法不错,但是怎么做呢?“于是我花了一些时间用Python帮他做了一个基于网上商评的数据分析演示。本章知识点商业评价数据源的获取pyecharts直方图数据分析pyecharts饼图数据分析Python的Counter使用方法要获取商业评价数据源,首先要找到合适的商业评价。在本文中,我们以大众点评的数据为例。随机选取一家餐厅的评价数据作为数据源。出于隐私考虑,我隐藏了商家的具体店名和地址。最后通过本次演示的在线API接口获取了一些用户评价数据。如果为了真正的商业目的需要获取更完整的数据,我们还是需要自己想办法。得到的业务评估demo数据如下:需要注意的是,我们需要对返回的数据内容进行处理,将数据中的true、false、null转换成Python语言要求的True、False、None。原因是这里的在线数据API接口是根据javascript的数据类型(true,false,null)返回的。数据清洗后,我们发现数据实际上是Python中的一个大字典,所以我们可以根据字典格式解析其中的数据。现在我将这个大字典命名为review_data,并将其保存为data.py文件,以便于在正式的数据分析程序中导入。然后我新建了一个名为analysis.py的文件用于数据分析,导入刚才的数据源来测试数据是否正常。OK,至此我们的数据准备工作已经完成,下面开始实战。个性化的pyecharts柱状图首先我们来做一个汇总数据分析,就是用户对商家的整体印象。这部分数据在review_data的summary中。让我们写一个程序把它拿出来显示出来。最终效果图如下:看来这家店的菜比较新鲜,牛肉也不错,熟客也比较多,但是份量好像挺少的,哈哈。那么我们来分析一下我们的代码:程序入口从第18行开始,Page组件就不多说了。上一章讲过,它的作用是在一个页面上显示多个图表。get_summarys()函数主要用于创建商家整体评价的直方图。需要提到的是第10行和第12行。我们发现summary的数据其实是一个列表(list),包含多个dict(字典)数据。那么我们希望从直方图中得到的格式数据应该是这样的:X轴数据['菜品健康','牛肉好评','回头客'],X轴数据用于显示名称。Y轴数据[51,32,29],Y轴数据用于显示数量。所以我们利用Python的列表推导来分别获取X轴和Y轴的数据。#获取综合评价名summary_name_list=[i.get('summaryString')foriinsummaries]#获取综合评价统计summary_count_list=[i.get('summaryCount')foriinsummaries]在add_yaxis()function需要说明一个category_gap。它的作用是设置同一系列列之间的距离。默认为类别距离的20%,可以设置固定值。这里我设置为80%,这样柱子显得更远,看起来更清晰。拿到X和Y轴的数据后,没什么好说的,直接加就行了。个性化的pyecharts饼图接下来我要获取商家的用户评分比例。我们知道,在许多评论网站上,用户的评分范围为1-5星。那么这些数据在本文中是如何体现的呢?通过分析数据,我们可以发现,每个用户的评论都包含一个数据,叫做star,这里是用户的评分,30分代表3颗星。现在我们写一段代码,把评分数据做成饼图。在截图中,为了方便起见,我隐藏了之前的get_summarys()函数。你只需要关心get_star()函数。如何使用Python的CounterCounter库是Python自带的一个计数工具。主要用于统计序列中的数据。非常方便快捷,不需要我们自己造轮子。以上三行代码可以快速帮助我们理解Counter的用途。通过它的统计,我们可以发现列表中有2个号码,另外只有1个号码。那么回到刚才的评分数据,我们通过代码all_star=[i.get('reviewDataVO').get('reviewData').get('star')foriinall_review]得到了所有的评分数据。看起来像这样:[30,50,10,20,35,50,30,20,50,20]那么我们就可以很方便的用Counter来统计了。stars=dict(Counter(all_star))之所以用dict将Counter的结果转成字典,是为了方便我们获取字典的key和value,可以作为饼图需要的数据图表。你也可以通过其他方式获取你需要的内容,不要拘泥于这一种方式。饼图所需数据的最终数据压缩代码中:data=zip(list(stars.keys()),list(stars.values()))stars.keys()和starts.values()其实就是scores和scorestars的数量字典的原始数据如下:{30:2,50:3,10:1,20:3,35:1}之所以要用list来转换keys()和values()的结果变成list也是因为直接获取字典的keys()和values()得到的数据不能直接使用,需要先转成list。到现在为止,我们基本可以利用本章学到的知识对数据进行各种分析。我最终得到了四个图表,用于对一家商店进行初步数据分析。通过对pyecharts的深入学习,结合使用Python自带的各种统计工具,可以做出更多有价值的数据分析案例。当这些案例慢慢形成后,就成为了一套完整的业务解决方案,希望大家能从中得到启发。文渊网,仅供学习,侵删。学习Python的路上肯定会遇到困难,不要慌张,我这里有一套学习资料,包括40+电子书,800+教学视频,涉及Python基础、爬虫、框架、数据分析、机学习等等,别怕你学不会!https://shimo.im/docs/JWCghr8...《Python学习资料》关注公众号【蟒圈】,每日优质文章推送。
