提问人:Evan 提问时间:11/18/2023 最后编辑:Evan 更新时间:11/18/2023 访问量:25
使用 Python 进行方差分析 [已关闭]
Variance Analysis with Python [closed]
问:
我需要将方差驱动因素解释为 abs 阈值,在我的情况下是 50,000。我的想法是使用 abs 值 % 的整体和方差标志。在提供的 DateFrame 中,我将从 var -1,300,000 的“Basic LLC”开始,因为它的“abs_comp”是最大的。由于它大于 50k,我需要找到下一个最大的abs_comp并且“var_sign” = 1 作为偏移量。在我的例子中,它将是“大公司”,所以 -1,300,000 + 950,000 = -350,000。这仍然高于 abs thresh 并且是一个负值,所以我需要找到下一个最大的“abs_comp”值,该值具有“var_sign”= 1。这是“通用公司”,所以 1,300,000 + 950,000 + 320,000 = 30,000。这低于我的腹肌,我想返回一个 df,它是用于计算到阈值的行。
我认为这是迭代器实现的一个很好的例子。我只是不知道在哪里添加标牌的反转并跟踪已计算的内容。
import pandas as pd
data = {
'Vendor': ['Generic Co', 'Basic LLC', 'Big Corp', "Small Co", "Mid Mkt", "Name"],
'Actuals': [100000, 1300000, 50000, 1500000, 97000, 45000],
'Budget': [420000, 0, 1000000, 1000000, 97000, 50000]
}
df = pd.DataFrame(data)
df['var'] = df['Budget'] - df['Actuals']
df['var_abs'] = abs(df['var'])
df['abs_comp'] = (df['var_abs']/ df['var_abs'].sum())*100
df = df.sort_values('abs_comp', ascending = False).reset_index(drop=True)
df['var_sign'] = pd.np.sign(df['var'])
total_var = 0
result_rows = []
for index, row in df.iterrows():
total_var += row['var'] * row['var_sign'] #how do I .loc and ensure signage here
result_rows.append(row)
if abs(total_var) >= threshold:
break
result_df = pd.DataFrame(result_rows)
答: 暂无答案
评论