首页 > 其他分享 >挣值分析

挣值分析

时间:2024-04-04 18:22:42浏览次数:18  
标签:分析 10 ac %. get 2f bac 挣值

 

 

 

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Cursor
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 指定默认字体:解决plot不能显示中文问题
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题


# 数据
# 总时间:10 周
sac = 10
bac = np.array([[30], [70], [40], [30]])
# 每期预算分配(共10期)
bac_list = np.array([
    [10, 15, 5, 0, 0, 0, 0, 0, 0, 0],
    [0, 10, 10, 10, 20, 10, 10, 0, 0, 0],
    [0, 0, 0, 0, 5, 5, 25, 5, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 5, 5, 20]
])
# 每期实际成本(前6期)
ac_list = np.array([
    [10, 16, 8, 0, 0, 0],
    [0, 10, 10, 12, 24, 12],
    [0, 0, 0, 0, 5, 5],
    [0, 0, 0, 0, 0, 0]
])
# 每期完成任务百分率(前6期)
radio = np.array([
    [30, 80, 100, 0, 0, 0],
    [0, 10, 25, 35, 55, 65],
    [0, 0, 0, 0, 10, 20],
    [0, 0, 0, 0, 0, 0]
])


# 求PV函数
def get_PV(bac, num):
    # 取出每行前num列数据,对行对列进行相加得到PV
    pv = np.sum(np.sum(bac[:, :num], axis=1), axis=0)
    return pv


# 求EV函数
def get_EV(bac, radio, num):
    # 每项任务的ev =  每项任务的bac * ra每一行的第num列值
    ra = radio[:, num - 1:num]
    ev = np.sum(np.sum(bac * (0.01 * ra), axis=1), axis=0)
    return ev


# 求AC函数
def get_AC(ac, num):
    # 每项任务的ac = 每项任务的前num列之和,axis=1是每一行的和
    ac = np.sum(np.sum(ac[:, :num], axis=1), axis=0)
    return ac


# 求sv函数
def get_SV(ev, pv):
    return ev - pv


# 求SPI函数
def get_SPI(ev, pv):
    return ev / pv


# 求cv函数
def get_CV(ev, ac):
    return ev - ac


# 求CPI
def get_CPI(ev, ac):
    return ev / ac


# 求 TEAC
def get_TEAC(sac, spi):
    return sac / spi


# 求 EAC
def get_EAC(bac, cpi):
    bac_all = np.sum(np.sum(bac, axis=1), axis=0)
    return bac_all / cpi


# 问题:求1-3期的挣值分析
# 第一期
pv1 = get_PV(bac_list, 1)
ev1 = get_EV(bac, radio, 1)
ac1 = get_AC(ac_list, 1)
sv1 = get_SV(ev1, pv1)
cv1 = get_CV(ev1, ac1)
spi1 = get_SPI(ev1, pv1)
cpi1 = get_CPI(ev1, ac1)
teac1 = get_TEAC(sac, spi1)
eac1 = get_EAC(bac, cpi1)
print("第1期的挣值分析: \n"
      "PV=%.2f(元), EV=%.2f(元), AC=%.2f(元)\n"
      "SV=%.2f(元),CV=%.2f(元)\n"
      "SPI=%.2f,CPI=%.2f\n"
      "TEAC=%.2f(天),EAC=%.2f(元)" % (pv1, ev1, ac1, sv1, cv1, spi1, cpi1, teac1, eac1))

# 第2期
pv2 = get_PV(bac_list, 2)
ev2 = get_EV(bac, radio, 2)
ac2 = get_AC(ac_list, 2)
sv2 = get_SV(ev2, pv2)
cv2 = get_CV(ev2, ac2)
spi2 = get_SPI(ev2, pv2)
cpi2 = get_CPI(ev2, ac2)
teac2 = get_TEAC(sac, spi2)
eac2 = get_EAC(bac, cpi2)

print("第2期的挣值分析: \n"
      "PV=%.2f(元), EV=%.2f(元), AC=%.2f(元)\n"
      "SV=%.2f(元),CV=%.2f(元)\n"
      "SPI=%.2f,CPI=%.2f\n"
      "TEAC=%.2f(天),EAC=%.2f(元)" % (pv2, ev2, ac2, sv2, cv2, spi2, cpi2, teac2, eac2))

# 第三期
pv3 = get_PV(bac_list, 3)
ev3 = get_EV(bac, radio, 3)
ac3 = get_AC(ac_list, 3)
sv3 = get_SV(ev3, pv3)
cv3 = get_CV(ev3, ac3)
spi3 = get_SPI(ev3, pv3)
cpi3 = get_CPI(ev3, ac3)
teac3 = get_TEAC(sac, spi3)
eac3 = get_EAC(bac, cpi3)

print("第3期的挣值分析: \n"
      "PV=%.2f(元), EV=%.2f(元), AC=%.2f(元)\n"
      "SV=%.2f(元),CV=%.2f(元)\n"
      "SPI=%.2f,CPI=%.2f\n"
      "TEAC=%.2f(天),EAC=%.2f(元)" % (pv3, ev3, ac3, sv3, cv3, spi3, cpi3, teac3, eac3))

# 绘制1-3期折线图
x_data = [1, 2, 3]
y_pv = [pv1, pv2, pv3]
y_ev = [ev1, ev2, ev3]
y_ac = [ac1, ac2, ac3]
plt.plot(x_data, y_pv, 'go-', alpha=0.5, linewidth=1, label='PV')
plt.plot(x_data, y_ev, 'rs-', alpha=0.5, linewidth=1, label='EV')
plt.plot(x_data, y_ac, 'b*-', alpha=0.5, linewidth=1, label='AC')
plt.legend()
plt.title("1-3期挣值分析")
plt.xlabel("时间(周)")
plt.ylabel("钱(元)")
plt.show()

 

 

 

标签:分析,10,ac,%.,get,2f,bac,挣值
From: https://www.cnblogs.com/hmy22466/p/18113911

相关文章

  • 机器学习每周挑战——旅游景点数据分析
    数据的截图,数据的说明:#字段数据类型#城市string#名称string#星级string#评分float#价格float#销量int#省/市/区string#坐标string#简介string#是否免费bool#具体地址string拿到数据第一步我们先导入数据......
  • 机器学习每周挑战——信用卡申请用户数据分析
    数据集的截图#字段说明#Ind_ID客户ID#Gender性别信息#Car_owner是否有车#Propert_owner是否有房产#Children子女数量#Annual_income年收入#Type_Income收入类型#Education教育程度#Marital_status婚姻状况#Housing_type居住......
  • Swoole 源码分析之 Channel 通道模块
    原文首发链接:Swoole源码分析之Channel通道模块大家好,我是码农先森。引言通道,用于协程间通讯,支持多生产者协程和多消费者协程。底层自动实现了协程的切换和调度。通道与PHP的Array类似,仅占用内存,没有其他额外的资源申请,所有操作均为内存操作,无IO消耗。底层使用PHP......
  • Python快速入门系列-8(Python数据分析与可视化)
    第八章:Python数据分析与可视化8.1数据处理与清洗8.1.1数据加载与查看8.1.2数据清洗与处理8.1.3数据转换与整理8.2数据可视化工具介绍8.2.1Matplotlib8.2.2Seaborn8.2.3Plotly8.3数据挖掘与机器学习简介8.3.1Scikit-learn8.3.2TensorFl......
  • 基于python的豆瓣电影数据的可视化与分析
    1项目背景意义介绍    电影是一种具有极高娱乐性和文化价值的艺术形式,自从电影产业诞生以来,已经成为了人们生活中的重要组成部分。电影产业在全球范围内都有着广泛的影响力,对经济、文化、社会等多个方面都起到了积极的作用。因此,对电影产业进行数据分析和可视化,可以帮......
  • [转帖]JVM 内存分析工具 MAT 的深度讲解与实践——入门篇
    https://juejin.cn/post/6908665391136899079  注:本文原创,转发需全文转载并标明原文链接。JVM内存分析往往由团队较资深的同学来做,本系列通过3篇文章,深度解析并帮助读者全面深度掌握MAT的使用方法。即使没有JVM内存分析的实践经验,也能快速成为内存分析高手!本系......
  • R语言主成分分析(PCA)葡萄酒可视化:主成分得分散点图和载荷图
    原文链接:http://tecdat.cn/?p=22492 原文出处:拓端数据部落公众号  我们将使用葡萄酒数据集进行主成分分析。数据数据包含177个样本和13个变量的数据框;vintages包含类标签。这些数据是对生长在意大利同一地区但来自三个不同栽培品种的葡萄酒进行化学分析的结果:内比奥罗、......
  • 网站持久代引发Full GC问题分析
     现状:Dragoon(监控系统)的日报显示trade_us_wholelsale(美国wholesale集群),日均YoungGC次数25w次左右,应用暂停295w毫秒(相当于40多分钟),FullGC次数600次左右,应用暂停190w毫秒(相当于30多分钟)。GC,尤其是FullGC,每次都会导致JVM暂停工作,处理垃圾回收任务,短时间内无法响应用户请求,大量......
  • Luogu P8710 [蓝桥杯 2020 省 AB1] 网络分析 题解 [ 绿 ] [ 带权并查集 ]
    原题分析本题由于从一个节点发信息,同一个集合内的所有点都会收到信息,显然是一道要求维护各节点间关系的题,因此采用并查集的数据结构进行求解。但由于维护关系的同时还要维护权值,所以采用带权并查集,它是一种能维护某个节点与其祖宗节点之间关系的数据结构。带权并查集找父亲的......
  • 数据结构与算法分析实验3 [进阶]通过链表实现多项式加法和乘法
    文章目录大致内容介绍多项式加法代码一览头文件Poly.h内容如下:实现文件Poly.cpp内容如下:初始化增加元素删除元素功能函数遍历函数清除销毁打印多项式向多项式内插入一个元素源文件main.cpp内容如下:实现效果:多项式乘法实现方法:在Poly.h中添加声明:在Poly.cpp中添加实现:在......