From 75eaaee02661802a740863a86001af8c41df1f9f Mon Sep 17 00:00:00 2001 From: P3ngSaM <61768364+P3ngSaM@users.noreply.github.com> Date: Tue, 8 Mar 2022 13:42:18 +0800 Subject: [PATCH] =?UTF-8?q?update=20ESG=E6=A8=A1=E5=9E=8B=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=8D=95=E8=8E=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Esg/scripts/environmental.py | 88 ++++++++++++++++++++---------------- Esg/scripts/governance.py | 27 ++++++----- Esg/scripts/social.py | 38 +++++++++------- 3 files changed, 87 insertions(+), 66 deletions(-) diff --git a/Esg/scripts/environmental.py b/Esg/scripts/environmental.py index 3396631..98a69ca 100644 --- a/Esg/scripts/environmental.py +++ b/Esg/scripts/environmental.py @@ -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 + diff --git a/Esg/scripts/governance.py b/Esg/scripts/governance.py index 49559f3..5ac0d2a 100644 --- a/Esg/scripts/governance.py +++ b/Esg/scripts/governance.py @@ -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 diff --git a/Esg/scripts/social.py b/Esg/scripts/social.py index a5a63ba..1679388 100644 --- a/Esg/scripts/social.py +++ b/Esg/scripts/social.py @@ -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