update ESG模型异常捕获

This commit is contained in:
P3ngSaM 2022-03-08 13:42:18 +08:00
parent 33f9878d35
commit 75eaaee026
3 changed files with 87 additions and 66 deletions

View File

@ -85,17 +85,20 @@ def calculation_01(param):
factor_04 = -0.02 < ((year_end/year_begin)**(1/2)-1) <= 0.01 and year_begin >= year_middle >= year_end
factor_05 = -0.01 < ((year_end/year_begin)**(1/2)-1) <= 0 and year_begin >= year_middle >= year_end
if factor_01:
score = 15
elif factor_02:
score = 12
elif factor_03:
score = 9
elif factor_04:
score = 6
elif factor_05:
score = 3
else:
try:
if factor_01:
score = 15
elif factor_02:
score = 12
elif factor_03:
score = 9
elif factor_04:
score = 6
elif factor_05:
score = 3
else:
score = 0
except ZeroDivisionError:
score = 0
return score
@ -144,15 +147,18 @@ def calculation_02(param):
factor_03 = -0.02 < ((year_end/year_begin)**(1/2)-1) <= -0.01 and year_begin >= year_middle >= year_end
factor_04 = -0.01 < ((year_end/year_begin)**(1/2)-1) <= 0 and year_begin >= year_middle >= year_end
if factor_01:
score = 11
elif factor_02:
score = 8
elif factor_03:
score = 5
elif factor_04:
score = 2
else:
try:
if factor_01:
score = 11
elif factor_02:
score = 8
elif factor_03:
score = 5
elif factor_04:
score = 2
else:
score = 0
except ZeroDivisionError:
score = 0
return score
@ -176,11 +182,14 @@ def calculation_03(param):
factor_01 = ((year_end/year_begin)**(1/2)-1) <= -0.01 and year_begin >= year_middle >= year_end
factor_02 = -0.01 < ((year_end/year_begin)**(1/2)-1) <= 0 and year_begin >= year_middle >= year_end
if factor_01:
score = 6
elif factor_02:
score = 3
else:
try:
if factor_01:
score = 6
elif factor_02:
score = 3
else:
score = 0
except ZeroDivisionError:
score = 0
return score
@ -196,20 +205,22 @@ def calculation_04(param):
"""
# Parameter
three_year_data = sorted(param['环境问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False)
try:
income = param['公司收入'][three_year_data[2]['年份']]
green_income = three_year_data[2]['公司当年绿色业务收入(万元)——包括不限于清洁能源、清洁交通、绿色建筑、清洁技术等']
prop = round(green_income / income, 2)
income = param['公司收入'][three_year_data[2]['年份']]
green_income = three_year_data[2]['公司当年绿色业务收入(万元)——包括不限于清洁能源、清洁交通、绿色建筑、清洁技术等']
prop = round(green_income / income, 2)
if prop >= 50:
score = 10
elif prop >= 30:
score = 6
elif prop >= 10:
score = 3
elif prop > 0:
score = 1
else:
if prop >= 50:
score = 10
elif prop >= 30:
score = 6
elif prop >= 10:
score = 3
elif prop > 0:
score = 1
else:
score = 0
except ZeroDivisionError:
score = 0
return score
@ -358,3 +369,4 @@ def calculation_12(param):
score = 0
return score

View File

@ -114,7 +114,7 @@ def calculation_05(param):
Returns:
score int 得分
"""
answer = param['治理问卷']['其他类型问卷'][2] / param['治理问卷']['其他类型问卷'][3] * 100
answer = float(param['治理问卷']['其他类型问卷'][2]) / float(param['治理问卷']['其他类型问卷'][3]) * 100
if answer < 35:
score = 4
@ -173,19 +173,22 @@ def calculation_08(param):
# Parameter
three_year_data = sorted(param['治理问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False)
year_begin = three_year_data[0]['公司净利润(万元)'] / three_year_data[0]['公司净资产(万元)'] * 100
year_middle = three_year_data[1]['公司净利润(万元)'] / three_year_data[1]['公司净资产(万元)'] * 100
year_end = three_year_data[2]['公司净利润(万元)'] / three_year_data[2]['公司净资产(万元)'] * 100
try:
year_begin = three_year_data[0]['公司净利润(万元)'] / three_year_data[0]['公司净资产(万元)'] * 100
year_middle = three_year_data[1]['公司净利润(万元)'] / three_year_data[1]['公司净资产(万元)'] * 100
year_end = three_year_data[2]['公司净利润(万元)'] / three_year_data[2]['公司净资产(万元)'] * 100
average = (year_end + year_middle + year_begin)/3
average = (year_end + year_middle + year_begin)/3
if average >= 15:
score = 6
elif average >= 10:
score = 4
elif average >= 8:
score = 2
else:
if average >= 15:
score = 6
elif average >= 10:
score = 4
elif average >= 8:
score = 2
else:
score = 0
except ZeroDivisionError:
score = 0
return score

View File

@ -55,18 +55,21 @@ def calculation_01(param):
# Parameter
three_year_data = sorted(param['社会问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False)
year_begin = round(three_year_data[0]['当年离职人数'] / three_year_data[0]['员工总数(年底)'], 2)
year_middle = round(three_year_data[1]['当年离职人数'] / three_year_data[1]['员工总数(年底)'], 2)
year_end = round(three_year_data[2]['当年离职人数'] / three_year_data[2]['员工总数(年底)'], 2)
try:
year_begin = round(three_year_data[0]['当年离职人数'] / three_year_data[0]['员工总数(年底)'], 2)
year_middle = round(three_year_data[1]['当年离职人数'] / three_year_data[1]['员工总数(年底)'], 2)
year_end = round(three_year_data[2]['当年离职人数'] / three_year_data[2]['员工总数(年底)'], 2)
factor_01 = (year_begin + year_middle + year_end) / 3 * 100 <= 20
factor_02 = 20 < (year_begin + year_middle + year_end) / 3 * 100 <= 30
factor_01 = (year_begin + year_middle + year_end) / 3 * 100 <= 20
factor_02 = 20 < (year_begin + year_middle + year_end) / 3 * 100 <= 30
if factor_01:
score = 5
elif factor_02:
score = 2
else:
if factor_01:
score = 5
elif factor_02:
score = 2
else:
score = 0
except ZeroDivisionError:
score = 0
return score
@ -83,14 +86,17 @@ def calculation_02(param):
# Parameter
three_year_data = sorted(param['社会问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False)
year_begin = three_year_data[0]['人均薪酬水平(元/月)']
year_end = three_year_data[2]['人均薪酬水平(元/月)']
try:
year_begin = three_year_data[0]['人均薪酬水平(元/月)']
year_end = three_year_data[2]['人均薪酬水平(元/月)']
factor = (year_end / year_begin) ** (1 / 2) - 1 >= 0.03
factor = (year_end / year_begin) ** (1 / 2) - 1 >= 0.03
if factor:
score = 2
else:
if factor:
score = 2
else:
score = 0
except ZeroDivisionError:
score = 0
return score