当前位置: 首页 > 知识库问答 >
问题:

利用python中的乘积和平均值公式创建损失率表

郎磊
2023-03-14

我正在尝试从Python中已经有的流率数据帧创建损失率表(见下文)。如果有人能帮我编写代码,我将不胜感激。我在下面复制了excel公式,但如果您需要更多信息,请让我知道。

最后,第13行公式中的平均值是计算损失率后列的简单平均值。即B13中的公式为=平均值(B8:B12)

提前感谢您的帮助!

共有1个答案

訾雅畅
2023-03-14

您可以使用ILOC只获取数据帧的数字部分,然后使用apply函数,在横轴(axis=1)上以相反的顺序(X[::-1]),从右到左计算数据的累加积。这将产生损失率表中描述的预期输出。要添加最后一行(Average),请计算Mean并将结果序列转换为转置数据帧。然后该数据帧将被连接到df_loss以实现预期的结果。如果需要,可以使用原始的月份名称创建新的索引,并使用pd.index向其添加平均值

import pandas as pd

d = {
'Month': {0: 'Feb ', 1: 'Mar ', 2: 'Apr ', 3: 'May ', 4: 'June '},
'NYD': {0: 0.4, 1: 0.74, 2: 0.67, 3: 0.57, 4: 0.5},
'DPD30': {0: 0.7, 1: 0.63, 2: 0.73, 3: 0.67, 4: 0.67},
'DPD60': {0: 0.63, 1: 0.57, 2: 0.76, 3: 0.69, 4: 0.64},
'DPD90': {0: 0.5, 1: 0.72, 2: 0.63, 3: 0.66, 4: 0.72},
'DPD120': {0: 0.9, 1: 0.8, 2: 0.83, 3: 0.64, 4: 0.72},
'DPD150': {0: 0.3, 1: 0.56, 2: 0.67, 3: 0.6, 4: 0.94},
'Loss': {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0, 4: 1.0}}

df = pd.DataFrame(d)
print(df)

df_loss = df.iloc[:, 1:].apply(lambda x: x[::-1].cumprod(), axis=1)
df_loss = df_loss[df.columns[1:]] # fix presentation order

dmean = pd.DataFrame(df_loss.mean()).T
df_loss = pd.concat([df_loss, dmean])

df_loss.index = pd.Index([*df.Month, "Average"], name="Month")

print(df_loss.round(3))

df_loss输出

           NYD  DPD30  DPD60  DPD90  DPD120  DPD150  Loss
Month
Feb      0.024  0.060  0.085  0.135   0.270   0.300   1.0
Mar      0.086  0.116  0.184  0.323   0.448   0.560   1.0
Apr      0.130  0.194  0.266  0.350   0.556   0.670   1.0
May      0.067  0.117  0.175  0.253   0.384   0.600   1.0
June     0.104  0.209  0.312  0.487   0.677   0.940   1.0
Average  0.082  0.139  0.204  0.310   0.467   0.614   1.0
 类似资料:
  • 我想在列名称中由模式定义的不同列集上按行计算累积平均值。 示例数据,两组列分别以和开头: 第一组计算在名称以< code>a开头的列中执行: 是和。 是 和 的平均值。 < code>a1_4是< code>a1 、< code>a2 、< code>a3和< code>a4的平均值。 同样,我想对“< code>b列”执行相同的计算:< code>b1_2 、< code>b1_3和< code

  • 我需要准备一个表格,其中包括几个人口统计变量和许多变量的每个级别的平均值和标准偏差。 考虑以下数据: 我想得到一个数据框,其中包含第一列中的分组变量(地点、性别、教育)及其级别(例如伦敦、巴黎等),以及其他列中以var(var1、var2、var3)开头的每个变量的均值和标准偏差。 我知道如何一次为一个组和几个变量执行此操作。但是,由于我需要重复几十次,因此我正在寻找一种自动化此过程的方法。如果有

  • 我是新来的。任何帮助都将不胜感激 这是我的原始数据: 我想得到的是: 1创建一个新的列调用平均值,以计算每个提要的平均市值。 2求加权平均数。 这是我当前的代码,我得到NaN: 对于加权平均代码: 我得到了一个错误: AttributeError:“Series”对象没有属性“value”

  • 问题内容: 我必须在Python中找到列表的平均值。到目前为止,这是我的代码 我已经知道了,所以它可以将列表中的值相加,但是我不知道如何将其划分为它们? 问题答案: 在Python 3.4+上,你可以使用 statistics.mean() 在旧版本的Python上,你可以执行 在Python 2上,你需要转换len为浮点数才能进行浮点数除法 无需使用。它慢得多,并已在Python 3 中删除。

  • 文件上说: 对于每个Pod资源指标(如CPU),控制器从HorizontalPodAutoscaler针对的每个Pod的资源指标API中获取指标。然后,如果设置了目标利用率值,控制器将利用率值计算为每个Pod中容器上等效资源请求的百分比。如果设置了目标原始值,则直接使用原始度量值。然后,控制器在所有目标Pod上取利用率或原始值的平均值(取决于指定的目标类型),并产生一个用于缩放所需副本数量的比率。

  • 给定N个数字,范围为-100.100。 要求重新排列元素以使产品价值之和最大。此任务中的乘积和定义为a1*a2+a2*a3..an-1*an 例如,给定数字10 20 50 40 30。 1,-2,3,-4,5,-6,7,-8,9,10,11,12,13,14,15,-16 预期的最大乘积为1342。 我的算法给出了下一个重排: