使用 Python 编程语言进行供应链分析

news2025/2/5 19:49:17

前言

要分析一家公司的供应链,我们需要供应链不同阶段的数据,如有关采购、制造、运输、库存管理、销售和客户人口统计的数据。我为这项任务找到了一个理想的数据集,其中包括一家时尚和美容初创公司的供应链数据。

1. 相关数据集

让我们导入必要的 Python 库,开始执行供应链分析任务

import pandas as pd
import plotly.express as px
import plotly.io as pio
import plotly.graph_objects as go
pio.templates.default = "plotly_white"

data = pd.read_csv("supply_chain_data.csv")
print(data.head())
  Product type   SKU      Price  Availability  Number of products sold  \
0     haircare  SKU0  69.808006            55                      802   
1     skincare  SKU1  14.843523            95                      736   
2     haircare  SKU2  11.319683            34                        8   
3     skincare  SKU3  61.163343            68                       83   
4     skincare  SKU4   4.805496            26                      871   

   Revenue generated Customer demographics  Stock levels  Lead times  \
0        8661.996792            Non-binary            58           7   
1        7460.900065                Female            53          30   
2        9577.749626               Unknown             1          10   
3        7766.836426            Non-binary            23          13   
4        2686.505152            Non-binary             5           3   

   Order quantities  ...  Location Lead time  Production volumes  \
0                96  ...    Mumbai        29                 215   
1                37  ...    Mumbai        23                 517   
2                88  ...    Mumbai        12                 971   
3                59  ...   Kolkata        24                 937   
4                56  ...     Delhi         5                 414   

  Manufacturing lead time Manufacturing costs  Inspection results  \
0                      29           46.279879             Pending   
1                      30           33.616769             Pending   
2                      27           30.688019             Pending   
3                      18           35.624741                Fail   
4                       3           92.065161                Fail   

   Defect rates  Transportation modes   Routes       Costs  
0      0.226410                  Road  Route B  187.752075  
1      4.854068                  Road  Route B  503.065579  
2      4.580593                   Air  Route C  141.920282  
3      4.746649                  Rail  Route A  254.776159  
4      3.145580                   Air  Route A  923.440632  

[5 rows x 24 columns]

让我们来看看数据集的描述性统计:

print(data.describe())
            Price  Availability  Number of products sold  Revenue generated  \
count  100.000000    100.000000               100.000000         100.000000   
mean    49.462461     48.400000               460.990000        5776.048187   
std     31.168193     30.743317               303.780074        2732.841744   
min      1.699976      1.000000                 8.000000        1061.618523   
25%     19.597823     22.750000               184.250000        2812.847151   
50%     51.239831     43.500000               392.500000        6006.352023   
75%     77.198228     75.000000               704.250000        8253.976921   
max     99.171329    100.000000               996.000000        9866.465458   

       Stock levels  Lead times  Order quantities  Shipping times  \
count    100.000000  100.000000        100.000000      100.000000   
mean      47.770000   15.960000         49.220000        5.750000   
std       31.369372    8.785801         26.784429        2.724283   
min        0.000000    1.000000          1.000000        1.000000   
25%       16.750000    8.000000         26.000000        3.750000   
50%       47.500000   17.000000         52.000000        6.000000   
75%       73.000000   24.000000         71.250000        8.000000   
max      100.000000   30.000000         96.000000       10.000000   

       Shipping costs   Lead time  Production volumes  \
count      100.000000  100.000000          100.000000   
mean         5.548149   17.080000          567.840000   
std          2.651376    8.846251          263.046861   
min          1.013487    1.000000          104.000000   
25%          3.540248   10.000000          352.000000   
50%          5.320534   18.000000          568.500000   
75%          7.601695   25.000000          797.000000   
max          9.929816   30.000000          985.000000   

       Manufacturing lead time  Manufacturing costs  Defect rates       Costs  
count                100.00000           100.000000    100.000000  100.000000  
mean                  14.77000            47.266693      2.277158  529.245782  
std                    8.91243            28.982841      1.461366  258.301696  
min                    1.00000             1.085069      0.018608  103.916248  
25%                    7.00000            22.983299      1.009650  318.778455  
50%                   14.00000            45.905622      2.141863  520.430444  
75%                   23.00000            68.621026      3.563995  763.078231  
max                   30.00000            99.466109      4.939255  997.413450 

2. 探索性分析

现在,让我们开始分析供应链,看看产品价格与产品收益之间的关系:

fig = px.scatter(data, x='Price', 
                 y='Revenue generated', 
                 color='Product type', 
                 hover_data=['Number of products sold'], 
                 trendline="ols")
fig.show()

请添加图片描述
因此,公司从护肤品中获得了更多收入,护肤品价格越高,收入越多。现在让我们来看看按产品类型划分的销售额:

sales_data = data.groupby('Product type')['Number of products sold'].sum().reset_index()

pie_chart = px.pie(sales_data, values='Number of products sold', names='Product type', 
                   title='Sales by Product Type', 
                   hover_data=['Number of products sold'],
                   hole=0.5,
                   color_discrete_sequence=px.colors.qualitative.Pastel)
                   
pie_chart.update_traces(textposition='inside', textinfo='percent+label')
pie_chart.show()

请添加图片描述
因此,45% 的业务来自护肤产品,29.5% 来自护发产品,25.5% 来自化妆品。现在我们来看看运输公司的总收入:

total_revenue = data.groupby('Shipping carriers')['Revenue generated'].sum().reset_index()
fig = go.Figure()
fig.add_trace(go.Bar(x=total_revenue['Shipping carriers'], 
                     y=total_revenue['Revenue generated']))
fig.update_layout(title='Total Revenue by Shipping Carrier', 
                  xaxis_title='Shipping Carrier', 
                  yaxis_title='Revenue Generated')
fig.show()

请添加图片描述
因此,该公司使用三家运输公司进行运输,而 B 运输公司帮助公司创造了更多收入。现在我们来看看公司所有产品的平均交付周期和平均制造成本:

avg_lead_time = data.groupby('Product type')['Lead time'].mean().reset_index()
avg_manufacturing_costs = data.groupby('Product type')['Manufacturing costs'].mean().reset_index()
result = pd.merge(avg_lead_time, avg_manufacturing_costs, on='Product type')
result.rename(columns={'Lead time': 'Average Lead Time', 'Manufacturing costs': 'Average Manufacturing Costs'}, inplace=True)
print(result)
  Product type  Average Lead Time  Average Manufacturing Costs
0    cosmetics          13.538462                    43.052740
1     haircare          18.705882                    48.457993
2     skincare          18.000000                    48.993157

3. 分析 SKU

数据集中有一列 SKUs。你一定是第一次听说。所以,SKU 是库存单位(Stock Keeping Units)的缩写。它们就像特殊的代码,可以帮助公司追踪所有不同的销售商品。想象一下,你有一家大型玩具店,里面有很多玩具。每个玩具都不一样,都有自己的名称和价格,但当你想知道还剩多少时,你需要一种方法来识别它们。因此,你要给每个玩具一个唯一的代码,就像一个只有店里人才知道的秘密编号。数据集中有一列称为 SKU。你一定是第一次听说这个词。所以,SKU 是库存单位(Stock Keeping Units)的缩写。它们就像特殊的代码,可以帮助公司跟踪所有不同的待售商品。想象一下,你有一家大型玩具店,里面有很多玩具。每个玩具都不一样,都有自己的名称和价格,但当你想知道还剩多少时,你需要一种方法来识别它们。因此,你要给每个玩具一个唯一的代码,就像一个只有店里人才知道的秘密编号。这个秘密编号叫做 SKU。

revenue_chart = px.line(data, x='SKU', 
                        y='Revenue generated', 
                        title='Revenue Generated by SKU')
revenue_chart.show()

请添加图片描述
数据集中还有一列是库存水平。库存水平指的是商店或企业库存产品的数量。现在我们来看看每个 SKU 的库存量:

stock_chart = px.line(data, x='SKU', 
                      y='Stock levels', 
                      title='Stock Levels by SKU')
stock_chart.show()

请添加图片描述
现在我们来看看每个 SKU 的订单数量:

order_quantity_chart = px.bar(data, x='SKU', 
                              y='Order quantities', 
                              title='Order Quantity by SKU')
order_quantity_chart.show()

请添加图片描述

4. 成本分析

现在我们来分析一下承运商的运费:

shipping_cost_chart = px.bar(data, x='Shipping carriers', 
                             y='Shipping costs', 
                             title='Shipping Costs by Carrier')
shipping_cost_chart.show()

请添加图片描述
在上述可视化图表中,我们发现运营商 B 帮助公司获得了更多收入。同时,它也是三家承运商中成本最高的一家。现在我们来看看按运输方式划分的成本分布:

transportation_chart = px.pie(data, 
                              values='Costs', 
                              names='Transportation modes', 
                              title='Cost Distribution by Transportation Mode',
                              hole=0.5,
                              color_discrete_sequence=px.colors.qualitative.Pastel)
transportation_chart.show()

请添加图片描述
因此,公司在公路和铁路运输模式上的货物运输费用较高。

5. 分析缺陷率

供应链中的次品率是指在发货后发现有问题或破损的产品所占的百分比。让我们来看看所有类型产品的平均缺陷率:

defect_rates_by_product = data.groupby('Product type')['Defect rates'].mean().reset_index()

fig = px.bar(defect_rates_by_product, x='Product type', y='Defect rates',
             title='Average Defect Rates by Product Type')
fig.show()

请添加图片描述
因此,护发产品的缺陷率较高。现在我们来看看按运输方式划分的不良率:

pivot_table = pd.pivot_table(data, values='Defect rates', 
                             index=['Transportation modes'], 
                             aggfunc='mean')

transportation_chart = px.pie(values=pivot_table["Defect rates"], 
                              names=pivot_table.index, 
                              title='Defect Rates by Transportation Mode',
                              hole=0.5,
                              color_discrete_sequence=px.colors.qualitative.Pastel)
transportation_chart.show()

请添加图片描述
公路运输的缺陷率较高,而航空运输的缺陷率最低。
供应链分析是指分析供应链的各个组成部分,以了解如何提高供应链的效率,为客户创造更多价值。希望您喜欢这篇关于使用 Python 进行供应链分析的文章。欢迎在下面的评论区提出宝贵的建议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1703592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在anaconda的环境下安装langchain

1、安装anaconda; 2、在终端上,输入: conda install langchain -c conda-forge Proceed ([y]/n)? y 输入:Y 3、安装完成后,输入: python -c "import langchain; print(langchain.__version__)&…

红外超声波雷达测距

文章目录 一HC-SR04介绍1HC-SR04简介及工作原理 二用HAL库实现HC-SR04测量距离1STM32CubeMX配置2keil53代码的添加 三效果 一HC-SR04介绍 1HC-SR04简介及工作原理 超声波是振动频率高于20kHz的机械波。它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播等…

5.27周报

这两周邻近毕业故没有很多时间来学习课余内容,另外最近身体有些不舒服【偏头痛】,所以学的内容不多,包括SVM向量机和ResNet【不包括代码复现】 1.SVM支持向量机的大概内容 1、目的: 主要内容是如何找到分类的那条线【超平面】—…

如何一招破解全域运营加盟骗局?

随着全域运营的潜力被持续挖掘,想要通过加盟等方式做全域运营服务商的创业者数量日益增加。在此背景下,各种全域运营加盟骗局接踵而来,不少创业者不得不走上艰难的维权之路。 在采访了多位受害者后,我们总结出了目前已知的全域运营…

使用 FileZilla 在 Windows 和 Ubuntu 之间传文件

网线一端插在板子的WAN口上,另一段插在电脑上,然后要配一下板子的IP。 板侧: 使用串口链接板子与PC端; 输入指令 ifconfig eth0(具体看wan口对应哪一个) 192.168.1.99 PC端配置: 打开网络设…

二十八、openlayers官网示例Data Tiles解析——自定义绘制DataTile源数据

官网demo地址: https://openlayers.org/en/latest/examples/data-tiles.html 这篇示例讲解的是自定义加载DataTile源格式的数据。 先来看一下什么是DataTile,这个源是一个数组,与我们之前XYZ切片源有所不同。DataTile主要适用于需要动态生成…

【JavaEE进阶】——要想代码不写死,必须得有spring配置(properties和yml配置文件)

目录 本章目标: 🚩配置文件 🚩SpringBoot配置文件 🎈配置⽂件的格式 🎈 properties 配置⽂件说明 📝properties语法格式 📝读取配置文件 📝properties 缺点分析 &#x1f3…

使用THREE.js实现材质球,材质球,定制材质

项目需求,需要自定义材质球,方便使用封装成了类,可以使用在各种项目 1.效果展示 2:实现代码 使用方式,传入初始化DOM,和初始化材质配置即可 import * as THREE from "three"; import { OrbitControls } from "thr…

每日复盘-20240527

今日关注: 六日涨幅最大: ------1--------300956--------- 英力股份 五日涨幅最大: ------1--------300956--------- 英力股份 四日涨幅最大: ------1--------301361--------- 众智科技 三日涨幅最大: ------1--------301361--------- 众智科技 二日涨幅最大: ----…

PGP安装以及汉化

目录 1.安装 2.汉化 1.安装 (1)进入setup目录,双击安装包开始安装 (2)选择默认语言English (3)接受安装协议 I accept the license agreement (4)选择第二项 Do not display the Release Notes (5)选择“…

解决 WooCommerce 的分析报表失效问题

今天明月的一个境外电商客户反应网站的 WooCommerce 分析报表已经十多天没有更新了,明明每天都有订单交易可分析报表里的数据依旧是十多天前的,好像更新完全停滞了似的。明月也及时的查看了后台的所有设置,确认没有任何问题,WooCo…

内存泄漏案例分享3-view的内存泄漏

案例3——view内存泄漏 前文提到,profile#Leaks视图无法展示非Activity、非Fragment的内存泄漏,换言之,除了Activity、Fragment的内存泄漏外,其他类的内存问题我们只能自己检索hprof文件查询了。 下面有一个极佳的view内存泄漏例子…

安装HAP时提示“code:9568344 error: install parse profile prop check error”错误

问题现象 在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install parse profile prop check error”错误信息。 解决措施 该问题可能是由于应用使用了应用特权,但应用的签名文件发生变化后未将新的签名指纹重新配置到设备的特…

shell编程之面交互

Here Document Here Document使用注意事项 面交互 面交互修改账号密码 [rootlocalhost opt]# passwd zhangsan <<EOF > abc1234 #下面两行是输入密码 > abc1234 > EOF 更改用户 zhangsan 的密码 。 新的 密码&#xff1a;无效的密码&#xff1a;…

GBase 8s 如何查看回滚的事务 和对应的SQL

描述&#xff1a; 如何查看当前数据库中是否有事务在回滚&#xff0c; 如果有&#xff0c; 具体是哪条 SQL 在回滚&#xff1f; 解决办法&#xff1a; 方法1&#xff1a; 通过 onstat -u|grep RP&#xff1b; 可以获取相关的 sessionid。 通过 onstat -g ses sid 获取 SQL&a…

红外成像人员检测数据集VOC+YOLO格式5838张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5838 标注数量(xml文件个数)&#xff1a;5838 标注数量(txt文件个数)&#xff1a;5838 标注…

7个靠谱的副业赚钱方法,个个都可以月入过万!宝妈,上班族,学生党都可以做的兼职副业

你是不是也有过这样的困扰&#xff0c;生活费不够用&#xff0c;想要找个兼职贴补家用或者满足自己的小欲望&#xff1f;今天&#xff0c;我就带你一起走进这个五彩斑斓的兼职世界&#xff0c;让你轻松实现月入过千的小目标&#xff01; 在我多年的兼职探险历程中&#xff0c;我…

Leetcode 2028

思路&#xff1a;1-6之间的的n个数组合起来要变成sum_t mean*(rolls.size()n) - sum(rolls) ; 那么可以先假设每个数都是sum_t / n 其中这个数必须要在1 - 6 之间否者无法分配。 然后可以得出n * (sum_t / n ) < sum ; 需要对余数mod进行调整&#xff0c;为了减少调整的次…

【UE5.1 角色练习】06-角色发射火球-part1

前言 在上一篇&#xff08;【UE5.1 角色练习】05-火球发射物-CSDN博客&#xff09;基础上实现角色可以发射火球的技能 效果 步骤 一、准备 1. 打开角色蓝图&#xff0c;添加两个浮点型变量&#xff0c;分别表示当前的MP值和满状态的MP值 添加一个函数&#xff0c;这里命名…

网络原理-HTTP协议

HTTP协议 HTTP协议全称为超文本传输协议,除了能传输字符串,还能传输图片、视频、音频等。 当我们在访问网页的时候,浏览器会从服务器上下载数据,这些数据都会放在HTTP响应中,然后浏览器再根据这个HTTP响应显示出网页信息。 抓包 抓包工具本质上是一个代理工具,即我们将构造…