背景为物流行业箱成本需区分仓储/物流/管理三类成本计算复合成本指数。运行环境jupyter notebook(python 3.12.7)1.复合成本计算公式解读2.设定权重值用示例数据运行python代码3.根据成本波动率自动调整权重4.整合2和3的代码根据成本波动率自动调整权重并运行出复合成本指数的结果步骤1公式理解步骤2示例数据的python运行代码import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.ticker as mtick # 设置中文显示 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 生成示例数据2023年月度数据 np.random.seed(2023) dates pd.date_range(2023-01, periods12, freqME) data { 仓储成本(元/箱): np.round(np.random.uniform(2.5, 3.5, 12) np.sin(np.arange(12)*0.5)*0.3, 2), 物流成本(元/箱): np.round(np.random.uniform(8.0, 12.0, 12) np.cos(np.arange(12)*0.4)*1.2, 2), 管理成本(元/箱): np.round(np.linspace(1.8, 2.3, 12) np.random.normal(0, 0.1, 12), 2) } df pd.DataFrame(data, indexdates) # 计算复合成本指数权重系数仓储1 : 物流2 : 管理0.5 weights np.array([1, 2, 0.5]) df[复合成本指数] df.apply(lambda x: np.dot(x.values, weights)/weights.sum(), axis1) # 成本构成分析可视化 fig, axes plt.subplots(2, 2, figsize(16, 12)) # 1. 成本趋势分析 ax axes[0,0] df[[仓储成本(元/箱), 物流成本(元/箱), 管理成本(元/箱)]].plot(axax, markero) ax.set_title(单箱成本分项趋势, fontsize14) ax.set_ylabel(成本(元)) ax.yaxis.set_major_formatter(mtick.FormatStrFormatter(%.1f)) ax.grid(True, alpha0.3) # 2. 复合指数趋势 ax axes[0,1] df[复合成本指数].plot(axax, colorpurple, markers) ax.set_title(复合成本指数变化趋势, fontsize14) ax.set_ylabel(指数值) ax.axhline(df[复合成本指数].mean(), colorr, linestyle--, labelf年度均值({df[复合成本指数].mean():.2f})) ax.legend() ax.grid(True, alpha0.3) # 3. 成本构成堆叠图 ax axes[1,0] components df[[仓储成本(元/箱), 物流成本(元/箱), 管理成本(元/箱)]].T ax.stackplot(df.index, components, labels[仓储, 物流, 管理], colors[#4CAF50, #2196F3, #FF9800]) ax.set_title(成本构成堆叠分析, fontsize14) ax.set_ylabel(累计成本(元)) ax.legend(locupper left) ax.xaxis.set_tick_params(rotation45) ax.grid(True, alpha0.3) # 4. 年度成本占比 ax axes[1,1] total df[[仓储成本(元/箱), 物流成本(元/箱), 管理成本(元/箱)]].sum() ax.pie(total, labelstotal.index, autopct%1.1f%%, colors[#4CAF50, #2196F3, #FF9800], startangle90, wedgepropsdict(width0.4)) ax.set_title(年度成本结构占比, fontsize14) plt.tight_layout() plt.show() # 打印详细数据报告 print(月度成本明细报告) print(df) print(\n年度成本汇总) print(df[[仓储成本(元/箱), 物流成本(元/箱), 管理成本(元/箱)]].sum().to_string())运行结果对比表格计算结果做验证Tips参数说明ME每月最后一天Month EndME-S每月第一天Month StartQE季度最后一天YE年度最后一天步骤3根据成本波动率自动调整权重波动率越低 → 权重越高波动率越高 → 权重越低示例数据与代码import numpy as np import pandas as pd import matplotlib.pyplot as plt # 设置中文显示 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # # 生成示例数据2023年季度数据 # np.random.seed(2023) dates pd.date_range(2023-Q1, periods8, freqQE) # 生成8个季度末日期 data { # 仓储成本 - 低波动性标准差0.3 仓储成本: np.round(50 np.cumsum(np.random.normal(0, 0.3, 8)), 2), # 物流成本 - 高波动性标准差1.5 物流成本: np.round(80 np.cumsum(np.random.normal(0, 1.5, 8)), 2), # 管理成本 - 中波动性标准差0.8 管理成本: np.round(30 np.cumsum(np.random.normal(0, 0.8, 8)), 2) } df pd.DataFrame(data, indexdates) # # 动态权重计算 # # 计算波动率标准差 volatility df.std() # 计算动态权重波动率越小权重越高 epsilon 1e-6 # 防止除零 weights (1 / (volatility epsilon)).round(2) weights / weights.sum() # 标准化为总和1 # # 可视化分析 # fig, (ax1, ax2) plt.subplots(2, 1, figsize(10, 8)) # 1. 成本趋势图 df.plot(axax1, markero) ax1.set_title(成本项目趋势分析单位万元) ax1.set_ylabel(成本金额) ax1.grid(True, alpha0.3) # 2. 波动率与权重对比 ax2.bar(volatility.index, volatility, alpha0.7, label波动率标准差) ax2_twin ax2.twinx() ax2_twin.plot(weights.index, weights, ro-, markersize8, label动态权重) ax2.set_title(波动率与动态权重关系) ax2.set_ylabel(波动率) ax2_twin.set_ylabel(权重系数, colorr) ax2_twin.tick_params(axisy, labelcolorr) # 合并图例 lines, labels ax2.get_legend_handles_labels() lines2, labels2 ax2_twin.get_legend_handles_labels() ax2.legend(lines lines2, labels labels2, locupper left) plt.tight_layout() plt.show() # 打印计算结果 print(波动率分析报告) print(volatility.to_string()) print(\n动态权重分配) print(weights.to_string())运行结果步骤4整合以上代码根据成本波动率自动调整权重并运行出复合成本指数的结果代码import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.ticker as mtick from matplotlib.gridspec import GridSpec # 设置中文显示 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # # 数据生成带时间序列特征 # np.random.seed(2023) dates pd.date_range(2022-01, periods24, freqME) # 生成24个月数据用于滚动计算 data { 仓储成本: np.round(3 np.sin(np.arange(24)*0.5)*0.3 np.random.normal(0, 0.1, 24), 2), 物流成本: np.round(10 np.cos(np.arange(24)*0.4)*1.2 np.random.normal(0, 0.5, 24), 2), 管理成本: np.round(2 np.linspace(0, 0.5, 24) np.random.normal(0, 0.2, 24), 2) } df pd.DataFrame(data, indexdates) # # 动态权重计算滚动窗口 # def calculate_dynamic_weights(df, window12): 滚动计算动态权重 weights pd.DataFrame(indexdf.index, columnsdf.columns) for i in range(window-1, len(df)): # 提取滚动窗口数据 window_data df.iloc[i-window1:i1] # 计算波动率 volatility window_data.std() # 计算动态权重波动率越小权重越高 epsilon 1e-6 adjusted_weights 1 / (volatility epsilon) normalized_weights adjusted_weights / adjusted_weights.sum() weights.iloc[i] normalized_weights return weights[window-1:] # 去除前window-1个空值 # 计算动态权重12个月滚动 dynamic_weights calculate_dynamic_weights(df, window12) # 计算复合成本指数仅计算有效窗口期 def calculate_composite_index(row, weights): 根据动态权重计算复合指数 try: valid_weights weights.loc[row.name] return np.dot(row.values, valid_weights.values) except KeyError: return np.nan # 对无权重数据返回空值 df[复合成本指数] df.apply(lambda x: calculate_composite_index(x, dynamic_weights), axis1) # # 可视化分析调整数据范围 # valid_data df[df.index dynamic_weights.index[0]] # 仅展示有效数据 fig plt.figure(figsize(18, 16)) gs GridSpec(3, 2, figurefig) # 1. 成本趋势分析 ax1 fig.add_subplot(gs[0, :]) valid_data[[仓储成本, 物流成本, 管理成本]].plot(axax1, markero, linewidth2) ax1.set_title(单箱成本分项趋势有效数据范围, fontsize14) ax1.set_ylabel(成本(元)) ax1.yaxis.set_major_formatter(mtick.FormatStrFormatter(%.1f)) ax1.grid(True, alpha0.3) ax1.legend(bbox_to_anchor(1.02, 1), locupper left) # 2. 权重动态变化 ax2 fig.add_subplot(gs[1, 0]) dynamic_weights.plot(axax2, style[o-, s--, D:], markersize6) ax2.set_title(动态权重变化趋势12个月滚动窗口, fontsize14) ax2.set_ylabel(权重系数) ax2.grid(True, alpha0.3) ax2.legend(bbox_to_anchor(1.02, 1), locupper left) # 3. 复合指数分析 ax3 fig.add_subplot(gs[1, 1]) valid_data[复合成本指数].plot(axax3, colorpurple, markers, linewidth2) ax3.axhline(valid_data[复合成本指数].mean(), colorr, linestyle--, labelf均值({valid_data[复合成本指数].mean():.2f})) ax3.set_title(复合成本指数动态变化, fontsize14) ax3.set_ylabel(指数值) ax3.grid(True, alpha0.3) ax3.legend() # 4. 波动率矩阵 ax4 fig.add_subplot(gs[2, 0]) volatility df.rolling(12).std().dropna() volatility.plot(axax4, colormapcoolwarm, linewidth2) ax4.set_title(12个月滚动波动率趋势, fontsize14) ax4.set_ylabel(波动率) ax4.grid(True, alpha0.3) # 5. 成本结构占比末月 ax5 fig.add_subplot(gs[2, 1]) last_month valid_data.iloc[-1][[仓储成本, 物流成本, 管理成本]] ax5.pie(last_month, labelslast_month.index, autopct%1.1f%%, colors[#4CAF50, #2196F3, #FF9800], startangle90, wedgepropsdict(width0.4)) ax5.set_title(f末月成本结构占比 ({last_month.name.strftime(%Y-%m)}), fontsize14) plt.tight_layout() plt.show() # # 数据报告输出 # print(动态权重示例最近3个月) print(dynamic_weights.tail(3).to_string()) print(\n复合成本指数描述统计) print(valid_data[复合成本指数].describe().to_string())运行结果
企业数字化 ERP 产品动态
相关推荐
【n8n】自动化网页博客抓取与RSS订阅生成应用 在信息更新频繁的环境中,高效整合和推送内容成为数据应用的关键环节。借助自动化工作流工具,可将分散的网页信息快速转化为统一的结构化数据,从而提升信息获取与分发的效率。
本文围绕一个基于n8n构建的工作流,展示如何从指定网站提取博客文章信息,并生成符合RSS标准的订… · 2026/9/24 14:02:36
太原本地哪些行业做豆包推广获客效果更突出? AI搜索时代,太原企业获客逻辑已经发生改变。和传统竞价广告不同,豆包搜索依托大模型问答能力,用户主动提问、AI整合信息输出,天然具备强需求属性;搭配GEO搜索优化,能够锁定太原同城地域流量,让企… · 2026/9/24 14:02:30
【企业智能体开发】实现任务规划与可控的工具调用 小林的投屏问题进入第二轮:她已经说明使用线缆,服务台查到了适用指引,却在尝试后仍看不到画面。此时如果 Agent 只会“调用下一个工具”,它可能重复检索同一篇资料,甚至在员工未确认时直接建单。真正的任务规划,是把目标拆成有前置条件、有完成证据、有退出路径的少量步骤… · 2026/9/24 14:02:12
PaddleSpeech 声纹向量 RESTful API 实战指南:vector_api 接口设计与实现解析 人工智能语音音频 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword… · 2026/9/24 15:10:57
RISC-V电视主控Hi3731V110:系统架构与整机方案设计实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 15:10:27
OOMWOO 驱动轮逆向标定:Roborock S5 单通道霍尔编码器、190:1 减速箱与里程计参数的实证推导 智能硬件机器人嵌入式物联网 【免费下载链接】oomwoo Open-source vacuum robot cleaner 项目地址: https://gitcode.com/gh_mirrors/oo/oomwoo 点击查看 免费下载 本文是 OOMWOO 开源扫地机器人项目中 contributions/part-specs/OsakaTX/vacuumtiger-verified-spe… · 2026/9/24 15:10:27
Objective-C 2.0 ANTLR 4 文法:单步与双步预处理解析架构实战指南 编程语言编译器开发工具 【免费下载链接】grammars-v4 Grammars written for ANTLR v4; expectation that the grammars are free of actions. 项目地址: https://gitcode.com/gh_mirrors/gr/grammars-v4 点击查看 免费下载 导读
本指南围绕 grammars-v4 仓库中的… · 2026/9/24 15:10:08
cleos validate signatures 命令详解:EOS 交易签名验证与公钥恢复实战 区块链 【免费下载链接】eos An open source smart contract platform 项目地址: https://gitcode.com/gh_mirrors/eo/eos 点击查看 免费下载 本指南完整讲解 EOS 节点工具 cleos 中 validate signatures 子命令的用法、参数与底层实现。该命令不依赖钱包、不上链… · 2026/9/24 15:10:08
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44