当前位置: 首页 > article >正文

数分基础(06)商业分析四种类型简介

文章目录

  • 1. 商业分析
  • 2. 四种类型
    • 2.1 描述性分析和诊断性分析
      • 2.1.1 加载Global_Superstore数据集
      • 2.1.2 描述性分析
      • 2.1.3 诊断性分析
      • 2.1.4 再进一步
        • 各地区的订单数量和平均订单金额
        • 按客户群体分析销售额和利润
        • 折扣率和利润
        • 产品类别和子类别的销售和利润
      • 本小节小结
    • 2.2 销售预测
      • 2.2.1 步骤
      • 2.2.2 分析
    • 2.3 规范性分析

1. 商业分析

利用数据优化业务流程,用以提升绩效并支持数据驱动决策的过程。

2. 四种类型

  • 描述性分析 Descriptive Analysis,总结和描述当前状态(例如销售额、平均订单量)
  • 诊断性分析 Diagnostic Analysis,分析问题(例如特定地区的销售下滑)
  • 预测性分析 Predictive Analysis,预测未来趋势(例如未来销售额)
  • 规范性分析 Prescriptive Analysis,提供建议(例如定价策略)

2.1 描述性分析和诊断性分析

2.1.1 加载Global_Superstore数据集

我们仍旧使用这个数据集,数分基础(01)示例数据集Global_Superstore

加载数据集

import pandas as pd

file_path = "Global_Superstore2.xlsx"
excel_data = pd.ExcelFile(file_path)

excel_data.sheet_names

data = pd.read_excel(file_path, sheet_name='Sheet1')
data.head()

2.1.2 描述性分析

用数据总结和描述当前的状况,回答“发生了什么”。业务报告、仪表盘、绩效监控等。常见于日常的运营分析和月度、季度报告中。

计算总销售额
销售额字段求和,获取公司整体的销售情况。直观反映公司的业务规模和市场表现。

计算平均订单金额
总销售额除以订单数量,得出平均每笔订单的金额。反映客户的平均消费水平。

比较不同产品类别的表现
分组计算各产品类别的销售额和利润率,以识别哪些类别产品销售表现突出,哪些类别产品利润贡献较大。以便制定更有针对性的产品策略。

total_sales = data['Sales'].sum()
print(f"总销售额: {total_sales}")

average_order_value = data['Sales'].mean()
print(f"平均订单金额: {average_order_value}")

category_performance = data.groupby('Category')[['Sales', 'Profit']].sum().reset_index()
print(category_performance)

在这里插入图片描述
可以从中看出哪些产品或服务是销售的主力

2.1.3 诊断性分析

回答“为什么”的问题,帮助识别薄弱环节,并提出问题的解决方向。多用于客户反馈分析、损益分析等。

例如,找出销售低迷的区域,并分析
识别低绩效区域
按地区分组计算销售额和利润率,定位销售表现不佳的区域,便于进一步分析

对比高绩效区域
通过对比高绩效区域和低绩效区域的数据,直观发现两者之间的差异,为后续的原因分析提供线索

分析潜在原因
检查影响销售的因素,如折扣率、物流模式等,找出可能导致低销售或低利润的原因。例如,某些区域的运输方式可能导致成本上升,从而影响利润。

# 计算每个地区的销售额和利润总和,结果按地区分组显示
# 对 'Sales' 和 'Profit' 列求和,并重置索引以便于阅读
regional_performance = data.groupby('Region')[['Sales', 'Profit']].sum().reset_index()

# 设置显示选项,避免使用科学计数法显示数值
pd.set_option('display.float_format', '{:.2f}'.format)

# 筛选出利润为负的地区,这些地区表现较差,可能存在问题
low_performance = regional_performance[regional_performance['Profit'] < 0]
# 打印低绩效地区的数据
print("低绩效地区:")
print(low_performance)

# 筛选出利润为正的地区,这些地区表现较好
high_performance = regional_performance[regional_performance['Profit'] > 0]
# 打印高绩效地区的数据
print("\n高绩效地区:")
print(high_performance)

# 对低绩效区域进行进一步分析,根据运输模式分组,计算各运输模式的销售额
# 这里通过使用 isin() 函数过滤出低绩效地区的数据,并按地区和运输模式分组
potential_issues = data[data['Region'].isin(low_performance['Region'])].groupby(['Region', 'Ship Mode'])['Sales'].sum().reset_index()
# 打印低绩效区域不同运输模式下的销售额,以分析可能的原因
print("\n低绩效地区的运输模式销售情况:")
print(potential_issues)

在这里插入图片描述
低绩效地区
输出结果为空,即没有任何地区的利润为负。即所有地区的销售额都产生了正利润。表明公司在各个地区的业务整体上是盈利的。

高绩效地区。销售额最高的地区是 Central(中部),而销售额相对较低的加拿大和东南亚也实现了一定的利润率。

由于数据集中没有低绩效地区,因此在按运输模式分析低绩效区域的销售情况时,也没有对应的数据输出。

表明公司各区域的运营策略和市场表现整体较为健康。

2.1.4 再进一步

各地区的订单数量和平均订单金额
# 计算各地区的订单数量和平均订单金额
order_counts = data.groupby('Region')['Order ID'].nunique().reset_index().rename(columns={'Order ID': 'Order Count'})
average_order_value = data.groupby('Region')['Sales'].mean().reset_index().rename(columns={'Sales': 'Avg Order Value'})

# 合并并查看结果
regional_orders = pd.merge(order_counts, average_order_value, on='Region')
print(regional_orders)

在这里插入图片描述
Central 地区的订单数量最多,说明这个地区的客户活跃度最高。
Central Asia 和 North Asia 的平均订单金额较高,说明这些地区的每笔订单价值较大,销售的多为高价产品

按客户群体分析销售额和利润
# 按客户群体分析销售额和利润
segment_performance = data.groupby('Segment')[['Sales', 'Profit']].sum().reset_index()
print(segment_performance)

在这里插入图片描述

从结果中可以看出来,Consumer 是最大的销售和利润来源,大众消费者是企业的主要市场。公司客户和家庭办公室的销售额和利润明显低于这个群体。

折扣率和利润
# 折扣率和利润之间的关系
discount_impact = data.groupby('Discount')[['Sales', 'Profit']].mean().reset_index()
print(discount_impact)

在这里插入图片描述
随着折扣率的增加,利润逐渐变为负值,尤其是折扣率超过 0.3 后,大部分的利润都出现了亏损。这说明高折扣策略虽然提升了销售额,但压缩了利润,甚至导致亏损。因此,应谨慎使用高折扣,在销售增长与利润之间的关系平衡上要权衡。

产品类别和子类别的销售和利润
# 按产品类别和子类别分析
category_subcategory = data.groupby(['Category', 'Sub-Category'])[['Sales', 'Profit']].sum().reset_index()
print(category_subcategory)

在这里插入图片描述
家具类(Furniture) 中,Tables 子类别出现了较大的亏损,说明这个产品可能存在问题(如高成本、低需求或高折扣)。
技术类(Technology) 的 Copiers 是高利润的产品,市场表现优异。
整体来看,不同类别的产品利润差异较大,应聚焦高利润产品,优化低利润或亏损产品的运营策略

本小节小结

  • 各地区、客户群体、产品类别的销售和利润情况,能够反映主要贡献者和问题所在
  • 折扣策略对利润的负面影响较大,应当平衡折扣和利润
  • 细分分析可以看出来高利润和低利润产品
  • 其他,例如,可以按照地区和客户群体表现分析,分析每个区域的客户群体的表现,有助于了解不同区域的市场需求差异;可以进一步寻找高折扣但仍然营利的产品组合,优化折扣策略等。

2.2 销售预测

预测性分析,基于历史销售数据预测未来的销售额趋势

2.2.1 步骤

提取销售日期和销售额,按时间顺序排序
构建时间序列模型,使用历史销售数据构建时间序列模型
使用模型预测未来几个月的销售额

import pandas as pd
import numpy as np
from statsmodels.tsa.holtwinters import ExponentialSmoothing
import matplotlib.pyplot as plt
from scipy.ndimage import uniform_filter1d

# 设置中文字体支持
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 解析日期并确保日期格式正确
data['Order Date'] = pd.to_datetime(data['Order Date'], dayfirst=True)
# 按日期汇总销售数据,得到时间序列
sales_time_series = data.groupby('Order Date')['Sales'].sum().reset_index()

# 数据预处理:平滑数据并进行对数变换,减少波动
# 平滑处理:使用均值平滑来减少数据中的极端波动
sales_time_series['Sales_Smoothed'] = uniform_filter1d(sales_time_series['Sales'], size=3)
# 平滑销售数据,减少极端值和噪声对模型的影响,使用窗口大小为3的滑动均值

sales_time_series['Sales_Smoothed'] = sales_time_series['Sales_Smoothed'].clip(lower=1)  # 确保最小值为1
# 将平滑后的销售数据最小值设为1,使得对数变换不产生负无穷

sales_time_series['Sales_Log'] = np.log(sales_time_series['Sales_Smoothed'])
# 平滑后的销售数据取对数,使得模型更容易你和趋势和季节性变化


# 构建并拟合时间序列模型
# 使用较简单的趋势和季节性设置,减少数值波动带来的影响
model = ExponentialSmoothing(
    sales_time_series['Sales_Log'], 
    trend='add', 
    seasonal='add', 
    seasonal_periods=12,
    use_boxcox=False, 
    initialization_method='estimated'
)

# 拟合模型
model_fit = model.fit(remove_bias=True)

# 预测未来12个月的销售额
forecast_log = model_fit.forecast(12)

# 将预测值从对数变换还原为实际值
forecast = np.exp(forecast_log)

# 绘制历史销售额和预测值
plt.figure(figsize=(12, 6))
plt.plot(sales_time_series['Order Date'], sales_time_series['Sales'], label='历史销售额')
plt.plot(pd.date_range(sales_time_series['Order Date'].max(), periods=12, freq='ME'), forecast, label='预测销售额', linestyle='--')
plt.xlabel('日期')
plt.ylabel('销售额')
plt.title('销售额预测')
plt.legend()
plt.show()

2.2.2 分析

在这里插入图片描述
实线代表实际的历史销售数据,销售随时间的真实表现,包括季节性模式。显示2011-2015年期间,波动上升,存在高峰和低谷,可能与季节性因素、市场促销等想相关。虽然销售额整体上升,波动较为剧烈,每年的销售高峰和低谷期并不完全一致,季节性特征受到短期因素的影响

虚线代表未来12个月的销售预测值,显示了未来可能的走势比较稳定,有略微下降,模型认为上升趋势趋于平稳,可能由于处理历史季节性数据选择了平滑的加法模式,显示为平稳的预测线,季节性捕捉不足,也需要在模型中优化对季节性因素的识别,另一方面,应当对于可能的略微下降,保持警惕,如调整运营策略、优化产品组合等。

2.3 规范性分析

结合预测性分析,提供建议。假设,预测性分析显示未来销售平稳(假如模型已经调整过了,仍然是平稳的),那么可以减少因过度波动导致的库存压力,进行库存和定价优化。

假设我们要寻找定价策略,同时考虑库存成本和时长需求,最大化企业利润。

首先,需要获取产品的销售量、价格、成本等信息
其次,构建模型,假设用线性规划模型,定义目标函数(如利润),设定约束条件(例如库存水平、市场需求)
第三,求解优化问题,求出库存和定价

通过线性规划(Linear Programming)进行定价和库存优化的示例代码(和示例数据集无关)

import pandas as pd
from scipy.optimize import linprog

# 假设数据集中有以下信息:价格、成本、需求量(数据为示例)
# 可以从数据集中筛选或假设这些信息
prices = [20, 25, 30]  # 产品的三个定价选项
costs = [10, 12, 15]   # 对应的产品成本
demand = [100, 80, 60]  # 不同定价下的市场需求量

# 定义目标函数:利润 = (价格 - 成本) * 需求
profit_coefficients = [(price - cost) for price, cost in zip(prices, costs)]
# 定义约束:库存数量
A = [[1, 1, 1]]  # 约束系数矩阵,表示每个产品的需求消耗库存
b = [150]  # 约束条件,总库存量

# 使用线性规划求解最大利润问题
# 将 method 修改为 'highs',以使用更新的求解器
result = linprog(c=-1 * pd.Series(profit_coefficients), A_ub=A, b_ub=b, method='highs')

# 输出最优解
optimal_prices = [prices[i] for i, x in enumerate(result.x) if x > 0]
optimal_profit = -result.fun
print(f"最优定价策略: {optimal_prices}")
print(f"预计最大利润: {optimal_profit}")

在这里插入图片描述


http://www.kler.cn/news/289429.html

相关文章:

  • VsCode + Go + macOS 小白 demo运行
  • 数学建模强化宝典(9)遗传算法
  • 财富趋势金融大模型已通过备案
  • 贪心算法---合并区间
  • Flutter之CRC校验
  • python使用selenium,实现简单爬虫功能
  • 《从C/C++到Java入门指南》- 22.对象的转型
  • 机器学习面试题(9月3日笔记)
  • 跨境多账号登录如何防止IP、cookie和设备关联?
  • pil 常见用法
  • 如何打造在线音乐网站?java springboot架构,vue前端开发,音乐分享新体验
  • sealos快速搭建k8s集群
  • 记录 PyQt6 / PySide 6 自定义边框窗口的 Bug 及可能可行的解决方案:窗口抖动和添加 DWM 环绕阴影的大致原理
  • Java的IO模型详解-BIO,NIO,AIO
  • 常见接口限流算法
  • 4. 第一个3D案例—创建3D场景
  • idea中git提交或push到远程后回退到之前的某次提交简单有效的解决方案
  • go语言的闭包
  • gitea + drone实现CI/CD
  • 浅谈新能源汽车充电桩安装以及防范
  • Java中的类加载过程
  • 关于武汉高芯coin417G2红外机芯的二次开发
  • AFFiNE简介
  • 代码随想录八股训练营第三十二天| C++
  • SQL 编程基础
  • 一阶微分方程的解的存在唯一性定理
  • day06 1.继承和多态
  • 【JavaEE初阶】计算机是如何运行的?
  • 缓存分布式一致性问题
  • OpenCV下的视频和帧图片转换(Video2FrameFrame2Video, VideoCaptureVideoWriter)