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

数分基础(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 pdfile_path = "Global_Superstore2.xlsx"
excel_data = pd.ExcelFile(file_path)excel_data.sheet_namesdata = 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}")

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 技术Leader在训练团队思考力中的核心职责
  • 环信高质量全球网络——70%丢包环境,消息100%送达,抗弱网能力大幅提升!
  • DAMA数据管理知识体系(第4章 数据架构)
  • B站视频自动驾驶master(2)
  • ARP协议(原理,特点,报文格式,具体过程),ARP缓存(有效时间,为什么),ARP欺骗(定向断网,成为中间人),RARP简单介绍
  • leetcode 2816.翻倍以链表形式表示的数字
  • 访问Neo4j验证失败(The client is unauthorized due to authentication failure.)
  • ubuntu环境下部署LNMP集成环境超详细图文教程
  • <Rust>egui学习之小部件(七):如何在窗口中添加颜色选择器colorpicker部件?
  • 【行测笔记】
  • AN7536PT时钟电路
  • 基于VsCode和Git的代码版本管理
  • 如何把自动获取的ip地址固定
  • vue项目使用艺术字体
  • 【话题】全能型AI与专精型AI:未来之路
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 2017-09-12 前端日报
  •  D - 粉碎叛乱F - 其他起义
  • Java超时控制的实现
  • Material Design
  • SAP云平台里Global Account和Sub Account的关系
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 力扣(LeetCode)21
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 最简单的无缝轮播
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​什么是bug?bug的源头在哪里?
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #DBA杂记1
  • ${ }的特别功能
  • (70min)字节暑假实习二面(已挂)
  • (PADS学习)第二章:原理图绘制 第一部分
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (六)Hibernate的二级缓存
  • (区间dp) (经典例题) 石子合并
  • (五)MySQL的备份及恢复
  • (一)kafka实战——kafka源码编译启动
  • (一)SvelteKit教程:hello world
  • (轉)JSON.stringify 语法实例讲解
  • .cfg\.dat\.mak(持续补充)
  • .Net的DataSet直接与SQL2005交互
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • /etc/motd and /etc/issue
  • @Bean, @Component, @Configuration简析
  • @Transactional 竟也能解决分布式事务?
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [C#小技巧]如何捕捉上升沿和下降沿
  • [C++]unordered系列关联式容器
  • [CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 视觉模型篇
  • [ffmpeg] x264 配置参数解析