概述

上一小节,我介绍了案例 5:门店盈利能力对比图的设计和使用,掌握了如何基于对比维度,进行多个项目的对比分析。本节内容,我介绍案例 6:竞争优势多维分析图的设计和使用,本节内容在整个案例部分的位置如下所示:

图 1:章节内容定位

上图中,橙色部分是我本节要讲的内容:竞争优势多维分析。门店盈利能力对比分析,是从对比维度,描述不同门店之间,经营状况的差异。对比的维度是从单一维度进行分析,但是很多情况下,评判一个事务的状况,我们需要从多个不同的维度进行分析。我在本节内容介绍的竞争优势多维分析图就是用来解决这个问题的。

数据可视化分析案例部分,我会采用前面的操作流程,分步骤实施,逐项介绍常用的可视化图表的设计和使用方法。通过不断的重复,希望能让你建立一个固定的建设套路和思维模式。

图 2:操作流程

运行演示

竞争优势多维分析图,通过数据可视化的方式,直观地展示每一个竞争因素的分布情况。本节案例,我会采用每个门店的订单量、订单金额、客户数量、影片类型四个因素,全面综合地分析两个门店的竞争优势,并通过雷达图的形式展示出来。门店竞争优势多维分析图运行演示实例如下所示:

图 3:门店竞争优势分析图

图表基础

通过雷达图的形式,可以直观地比较出,各个门店不同维度的情况。

雷达图,又称蜘蛛网图,通常适用于三个或者更多维度的变量。雷达图以在同一点开始的轴上显示的三个,或者更多个变量的二维图表的形式,来展示多元数据

其中轴的相对位置和角度通常是无意义的。雷达图的每个变量都有一条从中心向外发射的轴线,所有轴之间夹角相等,同时每个轴都有相同的刻度。轴到轴的刻度用网格连接作为辅助元素,连接每个变量在其各自的轴线的数据点成一条多边形。一个典型的雷达图的表现形式如下图所示:

图 4:基本雷达图

雷达图通常用来查看哪些变量具有相似的值、变量之间是否有异常值、变量在数据集内分布的高低,以及排名、评估、评论等数据的展示

雷达图的常见的类型有将每个数据点连接成的多边形,可以比较直观地展示出每一个变量的数据点情况,当参与比较的项目比较多的时候可以采用面积图的形式来展现每一个项目下每个变量的数据情况。

雷达图使用需要注意以下 3 点:

  • 一个雷达图包含的是多边形的数量是有限的。如果有五个以上的项目需要评估,无论是轮廓还是填充区域,都会产生覆盖和混乱,导致数据难以阅读,图形不能有效地传达出信息。

  • 变量的个数需要控制。变量太多会产生太多的轴,也会使图表变得混乱。因此要控制变量的个数,让雷达图能够简洁有效地呈现数据。

  • 雷达图很难展示出变量的具体数值。由于径向距离很难判断,即使有网格线的参考,还是很难直观地比较图表内的具体数值。若要具体表现出数值,建议使用费线图。

通常情况下,雷达图的表现形式还可以拓展,比如我们可以用不同的颜色来填充多边形,从而更直观地展示出某个项目的各个变量值。一个典型的填充的雷达图如下所示:

图 5:填充的雷达图

业务理解

业务理解环节,我会带你从业务流程、业务规划、业务活动和总线矩阵这 4 个方面进行梳理。影片租赁业务的业务活动主要包括租赁活动、支付活动和归还活动。具体的业务过程模型如下所示:

图 6:业务过程模型

门店竞争优势多维分析涉及门店、交易、客户等业务活动,通过引入不同的分析维度:门店营业额、门店订单量、门店客户数和门店商品类型数,实现对于门店经营状况的多维分析。

定义指标

竞争优势多维分析,可以用来比较影响各个门店的业务要素的数据情况。本案例中我们选择门店的订单金额、订单数量、顾客数量、影片类型数,来看下各个门店的优势与不足之处。

图 7:指标定义

定义维度

门店竞争优势分析的核心是:展示各个时间节点下各门店的竞争优势,然后加以分析。因此我们需要考虑时间维度,并且是时间维度中的时间段,而非时间点。

时间维度是有粒度的,常用时间粒度包括:秒、分钟、5 分钟、15 分钟、小时、日、周、月、季和年。时间粒度可以基于业务需求选择。本案例中,我选择“年”作为时间维度的粒度。

设计呈现

门店盈利能力对比分析图的构成需要页面布局、主题样式,尤其是展示样式的选择。本案例中,我确定以雷达图的形式展现各门店在 2005 年各门店在各项指标中的数据情况,展示的基本形式如下图 8 所示:

图 8:门店营业能力分析图

程序设计

数据理解

支付交易数据记录了详细的订单支付数据,每行记录是一条支付记录,字段包括:支付 ID、客户 ID、店员 ID、交易 ID、金额、支付时间、更新时间。具体的字段和数据样本如下:

图 9:订单支付数据

店员信息表记录了店员 ID、店员姓名、地址 ID、店员照片、店员邮箱、所属商店 ID、状态、用户名、密码、最后更新日期,最后更新日期,详情如下:

图 10:店员信息表

租赁交易数据记录了详细的交易订单数据,每行记录是一条租赁交易信息,字段包括:交易 ID、交易时间、库存 ID、客户 ID、归还时间、店员 ID,更新日期。具体的字段结构和数据样本如下:

图 11:租赁交易信息

库存数据记录了当前各门店的影片库存情况,具体的字段结构和数据样本如下:

图 12:库存数据

影片数据类型数据记录了租赁的每一部影片的类型,包含的字段有影片 ID、类型 ID、更新日期。详情如下:

图 13:影片类型表

数据准备

竞争优势多维分析,首先需要关注的是影响各门店业绩的因素有哪些。

本案例中,门店订单金额、门店订单数量、门店顾客数量、门店影片类型这 4 项是我评估各门店业绩情况的数据基础。通过分析原数据,我发现当前的数据结构不能满足分析需要,因此我对数据进行加工处理,构造一个包含在特定时间节点下,各门店的 4 个因素的数据表现。

具体的处理方式如下:第一步,基于当前的数据表,创建一个含有门店订单金额、门店订单数量、门店顾客数量、门店影片类型的数据表第二步,把数据表形式进列转行的转换,以便于我们绘制图表调用数据,第三步,基于创建的数据表进行数据查询

第一步,各门店的评估因素基本信息表,包含门店 ID、时间、门店订单金额、门店顾客数量、门店订单量、门店影片类型,结果如下所示:

图 14:门店各项数据

基本 SQL 脚本如下:

  1. DROPTABLEIF EXISTS store_compare;

  2. CREATETABLEstore_compare (

  3. SELECTb1.store_id,

  4. b1.payment_date,

  5. sum(b1.amount)asstore_amount,

  6. count(distinctb1.customer_id)asstore_customer,

  7. count(b1.rental_id)asstore_order,

  8. count(distinctb2.category_id)asstore_category

  9. FROM(

  10. SELECT

  11. a1.staff_id,

  12. a1.amount,

  13. a1.rental_id,

  14. a1.customer_id,

  15. SUBSTR( a1.payment_date, 1, 4 )ASpayment_date,

  16. a2.store_id

  17. FROM

  18. payment a1,

  19. staff  a2

  20. WHEREa1.staff_id = a2.staff_id) b1

  21. LEFTJOIN(

  22. SELECT

  23. a3.rental_id,

  24. a3.inventory_id,

  25. a4.store_id,

  26. a4.film_id,

  27. a5.category_id

  28. FROM

  29. rental a3,

  30. inventory a4,

  31. film_category  a5

  32. WHEREa3.inventory_id = a4.inventory_id

  33. ANDa4.film_id = a5.film_id

  34. ) b2ONb1.rental_id = b2.rental_id

  35. GROUPBYb1.store_id,

  36. b1.payment_date);

第二步,我们在查询数据时需要对数据形式进行转化,把每一个商店每一列的数据转化为行数据,便于我们代入图表中赋予图表数值。查询结果数据形式如下所示:

图 15:数据形式转换

具体的 SQL 脚本如下所示:

  1. DROPTABLEIF  EXISTS store_all;

  2. CREATETABLEstore_all(

  3. SELECT'store_amount'AScategory,

  4. year,

  5. MAX(casestore_idwhen1thenstore_amountelse0end)asA,

  6. MAX(casestore_idwhen2thenstore_amountelse0end)asB

  7. FROMstore_compare

  8. GROUPBYyear

  9. UNIONALL

  10. SELECT'store_order'AScategory,

  11. year,

  12. MAX(casestore_idwhen1thenstore_orderelse0end)asA,

  13. MAX(casestore_idwhen2thenstore_orderelse0end)asB

  14. FROMstore_compare

  15. GROUPBYyear

  16. UNIONALL

  17. SELECT'store_customer'AScategory,

  18. year,

  19. MAX(casestore_idwhen1thenstore_customerelse0end)asA,

  20. MAX(casestore_idwhen2thenstore_customerelse0end)asB

  21. FROMstore_compare

  22. GROUPBYyear

  23. UNIONALL

  24. SELECT'store_category'AScategory,

  25. year,

  26. MAX(casestore_idwhen1thenstore_categoryelse0end)asA,

  27. MAX(casestore_idwhen2thenstore_categoryelse0end)asB

  28. FROMstore_compare

  29. GROUP BY year);

图表设计

概述

图表设计包括数据查询和图表创建两部分。数据查询实现与 MySQL 数据库建立连接、读取数据和格式化输出;图表创建包括文件导入、对象声明、参数配置和页面渲染。完整的程序设计流程如下:

图 16:程序设计流程

数据查询

竞争优势多维分析数据查询程序负责从数据库中,查询门店的多维数据,然后返回给调用程序。具体的数据查询代码如下:

  1. from pyecharts import options as opts

  2. importpymysql.cursors

  3. frompyecharts.chartsimportRadar

  4. # 不同门店的营业额

  5. defstore_query():

  6. # 连接到数据库

  7. connection = pymysql.connect(host='127.0.0.1 ',

  8. port=3306,

  9. user='root',

  10. password='',

  11. db='sakila',

  12. charset='utf8',

  13. cursorclass=pymysql.cursors.DictCursor)

  14. try:

  15. with connection.cursor() as cursor:

  16. # SQL 查询语句

  17. sql ="select * from store_all "

  18. try:

  19. # 执行 SQL 语句,返回影响的行数

  20. row_count = cursor.execute(sql)

  21. # 获取所有记录列表

  22. results = cursor.fetchall()

  23. data1 = []

  24. data2 = []

  25. data3 = []

  26. forrowinresults:

  27. # 此处不可以用索引访问:row[0]

  28. data1.append(row["A"])

  29. data2.append(row["B"])

  30. data3.append(row["category"])

  31. returndata1, data2, data3

  32. except:

  33. print("错误:数据查询操作失败")

  34. finally:

  35. connection.close()

以上步骤只是完成了 PyEcharts 图表的数据查询,接下来我们需要绑定和渲染 PyEcharts 图表元素,门店盈利能力的绑定和渲染程序如下所示:

  1. if__name__ =='main':

  2. print(store_query())

  3. data1, data2, data3 = store_query()

  4. radar = Radar(init_opts=opts.InitOpts(width="1280px", height="720px", bg_color="#CCCCCC"))

  5. radar.add_schema(schema=[

  6. opts.RadarIndicatorItem(name="门店订单金额", max_=34000),

  7. opts.RadarIndicatorItem(name="门店订单量", max_=10000),

  8. opts.RadarIndicatorItem(name="门店顾客数", max_=10000),

  9. opts.RadarIndicatorItem(name="门店商品类型", max_=10000),

  10. ],

  11. splitarea_opt=opts.SplitAreaOpts(

  12. is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)

  13. ),

  14. textstyle_opts=opts.TextStyleOpts(color="#fff"),

  15. )

  16. radar.add(series_name="A 商店",

  17. data=[list(data1)],

  18. linestyle_opts=opts.LineStyleOpts(color="#CD0000")

  19. )

  20. radar.add(series_name="B 商店",

  21. data=[list(data2)],

  22. linestyle_opts=opts.LineStyleOpts(color="#5CACEE")

  23. )

  24. radar.set_series_opts(label_opts=opts.LabelOpts(is_show=False))

  25. radar.set_global_opts(

  26. title_opts=opts.TitleOpts(title="门店竞争优势多维分析"), legend_opts=opts.LegendOpts()

  27. )

  28. radar.render('radar.html')

以上程序,通过元素名称“chart”,绑定 HTML 页面元素,通过动态调用后台服务接口,获取 Echarts 图表配置参数,实现 Echarts 图表动态渲染。

数据验证

竞争优势多维分析的构造,我选择分析 2005 年两个门店的各项数据。每一个轴,代表一个需要分析的数据,每一个多边形轮廓代表一个门店的实际情况。

我们可以清楚地看出不同门店的各项数据的情况,同时也可以多方面全方位地对比分析两个门店间的差异。这些数据的正确与否,可以通过对比门店的实际经营情况,进行交叉验证。

数据发布

竞争优势多维分析,完成图表渲染后,以网页的形式发布。发布的形式如下图所示:

图 17:门店竞争优势多维分析

分析洞察

门店竞争优势多维分析图,具体的分析方法是:通过判断门店的某一个维度的指标,是否明显低于/高于另外一个门店,来逐项对比各项维度我们还可以,分析单个门店在各项数据上的表现情况

通过上图我们可以得到如下结论:

2005 年,两个门店的各项数据表现情况基本一致。门店 1 的订单量高于门店 2 的订单量,门店 2 的订单金额高于门店 1 的订单金额;在门店顾客数量和影片类型数方面,门店 1 和门店 2 数据表现相同。

小结

本节内容介绍了竞争优势多维对比分析的相关情况,包括业务理解、指标设计、维度设计、图表设计、数据验证、数据发布和分析洞察等七个方面。希望通过本节内容的学习,你能够掌握门店营业能力多维分析的使用场景、设计方法和图表的使用方法。下一个部分,我将给大家介绍,如何把模块三的 6 个案例,整合成一个完整的数据可视化系统。


精选评论

数据分析可视化12 案例 6:竞争优势多维分析图设计相关推荐

  1. 数据分析可视化11 案例 5:门店盈利能力对比图设计

    概述 上一小节,我介绍了客户地理位置分布图和 PyEcharts 地图的设计和使用方法.本小节,我会介绍另外一种图表:门店盈利能力对比图.本节内容在整个案例部分的位置如下图所示: 图 1:章节内容定位 ...

  2. python可视化(案例)高颜值图的复现(学术论文、商业周刊)

    前文的两个案例虽用的都是虚拟数据集,但都有一定的针对性,案例 水果分类(香蕉.苹果大战) 中,讨论了一个分类问题,并对散点图.直方图.箱线图和等比例子图的应用做了探讨:案例 多元线性回归 中,讨论了一 ...

  3. 【Python】京东消费行为数据分析可视化实战案例

    ©️数据STUDIO投稿 · 作者|理智 一.背景 京东JD.COM-专业综合网上购物商城,销售超数万品牌,4020万种商品,囊括家电.手机.电脑.服装.居家.健康.母婴.美妆.个护.食品.旅游等品类 ...

  4. 京东消费行为数据分析可视化实战案例

    一.背景 京东JD.COM-专业综合网上购物商城,销售超数万品牌,4020万种商品,囊括家电.手机.电脑.服装.居家.健康.母婴.美妆.个护.食品.旅游等品类. 数据时间是从2018年2月1日到4月1 ...

  5. 免费的大数据分析可视化网站-司南智图

                                      司南智图:  一站式大数据分析可视化平台 先来个地址: http://gde.geo-compass.com 司南智图遵从" ...

  6. Tableau可视化设计案例-04标靶图、甘特图、瀑布图

    文章目录 Tableau可视化设计案例 04标靶图.甘特图.瀑布图 1.标靶图 1.1二月份电量销售额完成情况 1.2参考线与参考区间 2.甘特图 2.1甘特图的概念与用途 2.2交货延期情况的甘特图 ...

  7. python数据分析可视化

    python数据分析&可视化 [目录] 1.jupyter 2.pandas 2.数据分析 3.数据展现与报告撰写 4.Apriori算法 5.RFM模型 6.NumPy 7.可视化进阶 8. ...

  8. 数据可视化分析案例:探索BRFSS电话调查数据

    原文链接:http://tecdat.cn/?p=9284 加载包 library(tidyr) library(knitr) opts_chunk$set(echo = TRUE, fig.alig ...

  9. 数据分析最有用的Top 50 Matplotlib图(带有完整的Python代码)(上)

    CSDN博客 作者:zsx_yiyiyi 编辑:python大本营 50个Matplotlib图的汇编,在数据分析和可视化中最有用.此列表允许您使用Python的Matplotlib和Seaborn库 ...

最新文章

  1. 学Python培训有什么用
  2. Java图形化:布局方式
  3. 双作用叶片泵图形符号_液压气动图形符号及识别
  4. BZOJ2738 矩阵乘法 【整体二分 + BIT】
  5. css长图如何展示局部,css可以设置图片以最短边为依据展示在父级中吗?
  6. ubuntu下 mysql安装以后无法登陆的的解决方法((ERROR 1698 (28000): Access denied for user 'root'@'localhost'))...
  7. 基于uFUN开发板的RGB调色板
  8. 使用VC开发的一个简单工作日志软件
  9. .net 开发工程师 面试题
  10. 华为od德科面试数据算法解析 2022-3-20 关于员工工号问题
  11. 解决进入WindowsXP系统蓝屏提示“stop:0X0000007B
  12. 说程序员吃青春饭的两种人:一种是外行,一种是这2样东西没学好
  13. 计算机磁盘怎么清理,如何清理c盘空间_WinXP系统怎么清理C盘空间
  14. [计算机网络】【网络设备】虚拟局域网
  15. java会员卡管理系统下载_基于jsp的会员卡管理系统-JavaEE实现会员卡管理系统 - java项目源码...
  16. 博实结将在创业板上会:计划募资25亿元,周小强为实际控制人
  17. 2台PLC通讯(FX5U和FX5U)
  18. python实现截取视频中特定帧进行保存功能
  19. 南理工校外调剂计算机有消息,提醒!这些学校已经开启预调剂了!
  20. 黑马程序员---Java 容器集合

热门文章

  1. 110警察叔叔训练智力
  2. 阿里云盘变本地硬盘CloudDrive卸载的方法
  3. powerDesigner 导出excel
  4. 关于技术进步的10个错误预言
  5. 基于SpringBoot+Vue的房屋租赁系统、租房平台
  6. AUTOCAD学习笔记7:单相桥式整流滤波电路的绘制
  7. 计算机控制求输出递推计算题,2020计算思维复习
  8. SEW减速器有哪些优点?产品性能是什么?
  9. zoj 3323 Somali Pirates
  10. 电力物联网应用软件开发