如何在Python中计算Target budget yield performance ratio并生成动态预算线
解决两个Python技术问题:预算收益率计算与动态预算线生成
一、计算Target Budget Yield Performance Ratio
首先明确该指标的通用计算逻辑(若需求文档中有特定公式,请以文档为准):
通常该指标为实际收益率与目标预算收益率的比值,公式如下:
# 通用计算公式 target_budget_yield_ratio = (actual_yield / target_budget_yield) * 100
实现步骤(基于数据集处理)
- 读取数据集(以Excel为例,使用
pandas库):
import pandas as pd # 读取数据集(替换为你的本地文件路径) df = pd.read_excel("your_dataset.xlsx")
- 提取对应列并计算指标:
# 假设数据集中列名为"实际收益率"和"目标预算收益率" df["Target budget yield performance ratio"] = (df["实际收益率"] / df["目标预算收益率"]) * 100 # 查看计算结果 print(df[["年份", "Target budget yield performance ratio"]])
二、动态生成逐年递减的预算线
需求明确:预算线初始值为73.9,每年递减0.8%,需动态计算而非硬编码数值。
实现逻辑
每年预算值 = 上一年预算值 × (1 - 年递减率),其中年递减率为0.8%(即0.008)。
代码实现
- 编写动态生成预算值的函数:
def generate_budget_line(initial_value, years, decrease_rate): """ 动态生成逐年递减的预算线数值 :param initial_value: 初始预算值(如73.9) :param years: 需要生成的年数 :param decrease_rate: 年递减率(如0.008对应0.8%) :return: 包含各年份预算值的列表 """ budget_values = [initial_value] current_value = initial_value for _ in range(1, years): current_value *= (1 - decrease_rate) # 保留1位小数,与示例结果对齐 budget_values.append(round(current_value, 1)) return budget_values # 生成3年的预算值(对应示例的73.9、73.3、72.7) budget_line = generate_budget_line(73.9, 3, 0.008) print(budget_line) # 输出: [73.9, 73.3, 72.7]
- 结合
matplotlib绘制预算线图表:
import matplotlib.pyplot as plt # 定义年份序列 years = [1, 2, 3] # 绘制绿色预算线 plt.plot(years, budget_line, color="green", marker="o", label="预算线") plt.xlabel("年份") plt.ylabel("预算值") plt.title("逐年递减的预算线") plt.legend() plt.show()
说明
- 函数支持任意初始值、年数和递减率,完全避免硬编码;
- 结果保留1位小数,与需求示例数值一致;
- 生成的
budget_line列表可直接用于图表绘制,匹配你提供的绿色预算线样式。
内容的提问来源于stack exchange,提问作者Karthik Bhandary
相关产品推荐
相关产品推荐

