波士顿矩阵|原理+Python全流程实现

简介: 很多公司中都有着不同的产品或者是业务线,但是对于繁琐的业务来说通常我们希望根据业务的好坏进行合理的资源分配,对于这种“好坏”的判断,波士顿矩阵出现了。

波士顿矩阵

很多公司中都有着不同的产品或者是业务线,但是对于繁琐的业务来说通常我们希望根据业务的好坏进行合理的资源分配,对于这种“好坏”的判断,波士顿矩阵出现了。

一、概念

波士顿矩阵又称市场(销售)增长率-相对市场份额矩阵,先来解释一下二者的概念。

  • 市场增长率

计算方式:(比较期市场销售量(额)-前期市场销售量(额))/前期市场销售量(额)*100%

举例(对某商品):(今年3月份销售500件-今年2月份销售300件)/今年2月份销售300件*100%

  • 市场份额(市场占有率)

概念:市场份额指某企业某一产品的销售量(额)在市场同类产品中所占比重。通常有如下三种市场份额的计算方法:

  1. 总体市场份额:某企业销售量(额)在整个行业中所占比重;
  2. 目标市场份额:某企业销售量(额)在其目标市场,即其所服务的市场中所占比重;
  3. 相对市场份额:指某企业销售量(额)与市场上最大竞争者销售量(额)之比,若高于1,表明其为这一市场的领导者。

在构建波士顿矩阵的时候,对于市场份额我们可以使用相对市场份额或者总体市场份额。

根据市场增长率和相对市场份额由低到高进行组合,我们可以得到如下的波士顿矩阵:

请添加图片描述

对于四种产品的描述如下:

  • 瘦狗产品:相对市场份额低,市场增长机会也没有,拖累公司发展的产品。
  • 问题产品:问题产品的问题在于未来,该类型产品有很多不确定性,可能会成为其余三种产品中的任意一种。
  • 明星产品:明星产品通常是有前景的新业务,用于抛头露面,开始时期需要大量的投入,是公司的未来(变成成熟的金牛产品)
  • 金牛产品:公司中的稳定收入来源,销售增长率低证明其稳定,属于已经进入成熟期的产品。
对于上述四种产品,金牛产品是最好的,接下来是明星、问题、瘦狗。

二、策略

对于四种产品的对应策略如下:

请添加图片描述

  • 瘦狗产品(撤退战略)):该类型产品没有前景,通常采用放弃策略将资源释放给其他产品,或者先采取“割韭菜”战略再放弃。
  • 问题产品(选择性投资战略):谨慎投资,规划中心放在如何拓宽市场上,对于该类产品也可以先“割韭菜”然后放弃。
  • 明星产品(发展战略):该类产品是未来之星,应该加大投资支持该产品的发展,以长远的利益作为目标,给予其最好的条件。
  • 金牛产品(收获战略):减少(压缩)投资,维持市场份额,充分发挥其获取“现金”的能力,争取在短时间内获取更多的利益,处境不佳时进行“割韭菜”。

三、Python实现

我们有如下的数据表格:
在这里插入图片描述
通常我们需要根据数据表去计算市场增长率和相对市场份额,按照上面所提到的公式进行计算即可。

完整Python实现如下:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

# 显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # win
plt.rcParams["font.family"] = 'Arial Unicode MS'  # mac
plt.rcParams['axes.unicode_minus'] = False

data = pd.read_excel('销售数据表.xlsx')
# data.head()

# 计算市场增长率
data['市场增长率'] = (data['2021年销量(万)'] - data['2020年销量(万)']) / data['2021年销量(万)']

# 计算相对市场份额
data['相对市场份额'] = data['2021年销量(万)'] / data['2021年竟品销量(万)']

# 构建颜色列表
color_list = [
    '#00F5FF', '#FFDAB9', '#E6E6FA', '#54FF9F', '#7B68EE', '#B0C4DE',
    '#40E0D0', '#CDC673', '#FFC125', '#FF1493', '#FFE4E1', '#00BFFF'
]

# 获取数值的最大最小值(用于对气泡进行绘制)
min_x, max_x = min(data["相对市场份额"]), max(data["相对市场份额"])
min_y, max_y = min(data["市场增长率"]), max(data["市场增长率"])

# 绘图
plt.figure(figsize=(10, 10), dpi=200)

# 根据相对份额和市场增长率绘制气泡,投资份额代表气泡大小
for i in range(data.shape[0]):
    plt.scatter(x=data["相对市场份额"][i],
                y=data["市场增长率"][i],
                c=color_list[i],
                s=data["投资份额"][i] * 100,
                alpha=0.65)

# 向气泡中添加文字
for x, y, sku in zip(data["相对市场份额"], data["市场增长率"], data["产品(编号)"]):
    plt.text(x, y, sku, ha='center', va='center', fontsize=12)

# 添加业务名称
plt.text((min_x + 0.9) / 2, (min_y - 0.2) / 2,
         "瘦狗业务",
         ha='center',
         va='center',
         fontsize=40,
         color='tomato',
         alpha=0.6)

plt.text((min_x + 0.9) / 2, (max_y + 0.5) / 2,
         "问题业务",
         ha='center',
         va='center',
         fontsize=40,
         color='tomato',
         alpha=0.6)

plt.text((max_x + 1.5) / 2, (max_y + 0.5) / 2,
         "明星业务",
         ha='center',
         va='center',
         fontsize=40,
         color='tomato',
         alpha=0.6)

plt.text((max_x + 1.5) / 2, (min_y - 0.2) / 2,
         "金牛业务",
         ha='center',
         va='center',
         fontsize=40,
         color='tomato',
         alpha=0.6)

# 绘制坐标
plt.xlim(xmin=min_x - 0.3, xmax=max_x + 0.3)
plt.ylim(ymin=min_y - 0.3, ymax=max_y + 0.3)
# 绘制分割线
plt.axhline(y=(max_y + min_y) / 2, ls="-", color="black", linewidth=2)
plt.axvline(x=(max_x + min_x) / 2, ls="-", color="black", linewidth=2)
# 绘制X,Y轴标签
plt.xlabel("低<————— 相对市场份额(%) —————>高", fontsize=17)
plt.ylabel("低<—————— 市场增长率(%) ——————>高", fontsize=17)
plt.title("公司各项业务-波士顿矩阵", fontsize=23, color='#8B0000')
plt.show()

得到的结果如下:

请添加图片描述
得到结果后,我们按照前面提到的策略对应到具体业务上即可。

相关文章
|
8天前
|
调度 Python
揭秘Python并发编程核心:深入理解协程与异步函数的工作原理
在Python异步编程领域,协程与异步函数成为处理并发任务的关键工具。协程(微线程)比操作系统线程更轻量级,通过`async def`定义并在遇到`await`表达式时暂停执行。异步函数利用`await`实现任务间的切换。事件循环作为异步编程的核心,负责调度任务;`asyncio`库提供了事件循环的管理。Future对象则优雅地处理异步结果。掌握这些概念,可使代码更高效、简洁且易于维护。
11 1
|
14天前
|
测试技术 开发者 Python
深入浅出:Python中的装饰器使用与原理解析
【9月更文挑战第20天】本文深入探讨Python中一个强大而神秘的功能——装饰器。通过浅显易懂的语言和生动的比喻,我们将一步步揭开装饰器的面纱,理解其背后的原理,并通过实际代码示例掌握如何运用装饰器来增强我们的函数功能。无论你是初学者还是有一定基础的开发者,这篇文章都将带给你新的启发和思考。
28 7
|
10天前
|
API 开发者 Python
Python中的魔法方法:从原理到实践
【9月更文挑战第24天】本文将深入探讨Python的魔法方法,这些特殊的方法允许对象定制其行为。文章首先揭示魔法方法的本质和重要性,然后通过代码示例展示如何利用它们来增强类的功能性。最后,我们将讨论在实际应用中应注意的事项,以确保正确和高效地使用这些方法。
|
13天前
|
中间件 API 开发者
深入理解Python Web框架:中间件的工作原理与应用策略
在Python Web开发中,中间件位于请求处理的关键位置,提供强大的扩展能力。本文通过问答形式,探讨中间件的工作原理、应用场景及实践策略,并以Flask和Django为例展示具体实现。中间件可以在请求到达视图前或响应返回后执行代码,实现日志记录、权限验证等功能。Flask通过装饰器模拟中间件行为,而Django则提供官方中间件系统,允许在不同阶段扩展功能。合理制定中间件策略能显著提升应用的灵活性和可扩展性。
15 4
|
16天前
|
缓存 Python
探索Python中的装饰器:原理与应用
本文深入探讨了Python中装饰器的概念,从基本定义到实际应用进行了系统性的阐述。通过实例展示了如何利用装饰器来增强函数功能,同时详细解释了其背后的运行机制和实现原理。此外,文章还讨论了装饰器在软件开发中的实际应用场景,为读者提供了实用的编程技巧和最佳实践。
|
18天前
|
SQL 关系型数据库 MySQL
Python操作pymysql数据库的流程与技巧
在现代软件开发中,Python作为一门高效且易于学习的编程语言,广泛应用于各种场景,其中包括数据库操作。**PyMySQL** 是一个流行的Python数据库接口,用于连接和操作MySQL数据库。它提供了一种简便的方法来执行SQL语句、处理数据和管理数据库事务。以下是使用PyMySQL操作MySQL数据库的流程与技巧,旨在为开发者提供一个清晰、实用的指南。
18 0
|
25天前
|
Python
Python 练习实例44 - Python 两个矩阵相加
Python 练习实例44 - Python 两个矩阵相加
|
28天前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。
|
1天前
|
机器学习/深度学习 人工智能 数据可视化
Python比较适合哪些场景的编程?
Python比较适合哪些场景的编程?
14 7
|
1天前
|
大数据 Python
Python 高级编程:深入探索高级代码实践
本文深入探讨了Python的四大高级特性:装饰器、生成器、上下文管理器及并发与并行编程。通过装饰器,我们能够在不改动原函数的基础上增添功能;生成器允许按需生成值,优化处理大数据;上下文管理器确保资源被妥善管理和释放;多线程等技术则助力高效完成并发任务。本文通过具体代码实例详细解析这些特性的应用方法,帮助读者提升Python编程水平。
18 5
下一篇
无影云桌面