[Python]用Python做一个价值数万的市场调查报告程序,分分钟完成工作( 二 )


那么我们的柱状图希望得到的格式数据应该是下面这样:
X轴数据 [‘菜品健康’'牛肉赞''回头客'
, X轴数据用于显示名称 。
Y轴数据[513229
, 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 = https://mparticle.uc.cn/api/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数据分析系列 , 学习更多有价值的数据分析方法 。


推荐阅读