import operator def governance_rating(param): """ 治理部分打分 Parameters: param dict 填报问卷 Returns: score float 治理部分得分 """ result = dict() result['企业性质'] = calculation_01(param) result['公司是否设有董事会'] = calculation_02(param) result['公司是否设有监事会'] = calculation_03(param) result['董监高平均拥有的行业经验年数'] = calculation_04(param) result['董监高近三年离职率'] = calculation_05(param) result['公司近三年信息披露及时、可靠、完备、审计质量'] = calculation_06(param) result['公司董事会近三年年均开会次数'] = calculation_07(param) result['净资产收益率'] = calculation_08(param) result['公司是否有审计报告'] = calculation_09(param) fraction = list() for value in result.values(): fraction.append(value) score = sum(fraction) result['合计'] = score return result def calculation_01(param): """ 企业性质 Parameters: param dict 填报问卷 Returns: score int 得分 """ answer = param['治理问卷']['其他类型问卷'][0] if answer == 'A': score = 8 elif answer == 'B': score = 3 else: score = 0 return score def calculation_02(param): """ 公司是否设有董事会 Parameters: param dict 填报问卷 Returns: score int 得分 """ answer = param['治理问卷']['其他类型问卷'][5] if answer == '是': score = 1 else: score = 0 return score def calculation_03(param): """ 公司是否设有监事会 Parameters: param dict 填报问卷 Returns: score int 得分 """ answer = param['治理问卷']['其他类型问卷'][6] if answer == '是': score = 1 else: score = 0 return score def calculation_04(param): """ 董监高平均拥有的行业经验年数 Parameters: param dict 填报问卷 Returns: score int 得分 """ answer = param['治理问卷']['其他类型问卷'][1] if answer == 'A': score = 4 elif answer == 'B': score = 2 else: score = 0 return score def calculation_05(param): """ 董监高近三年离职率 Parameters: param dict 填报问卷 Returns: score int 得分 """ answer = float(param['治理问卷']['其他类型问卷'][2]) / float(param['治理问卷']['其他类型问卷'][3]) * 100 if answer < 35: score = 4 else: score = 0 return score def calculation_06(param): """ 公司近三年信息披露及时、可靠、完备、审计质量 Parameters: param dict 填报问卷 Returns: score int 得分 """ answer = param['治理问卷']['其他类型问卷'][7] if answer == 'A': score = 1 else: score = 0 return score def calculation_07(param): """ 公司董事会近三年年均开会次数 Parameters: param dict 填报问卷 Returns: score int 得分 """ answer = param['治理问卷']['其他类型问卷'][4] if answer == 'A': score = 3 elif answer == 'B': score = 1 else: score = 0 return score def calculation_08(param): """ 净资产收益率 Parameters: param dict 填报问卷 Returns: score int 得分 """ # Parameter three_year_data = sorted(param['治理问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False) 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 if average >= 15: score = 6 elif average >= 10: score = 4 elif average >= 8: score = 2 else: score = 0 except ZeroDivisionError: score = 0 return score def calculation_09(param): """ 公司是否有审计报告 Parameters: param dict 填报问卷 Returns: score int 得分 """ # Parameter three_year_data = sorted(param['治理问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False) year_begin = three_year_data[0]['公司是否有审计报告'] year_middle = three_year_data[1]['公司是否有审计报告'] year_end = three_year_data[2]['公司是否有审计报告'] if year_end == year_middle == year_begin == '是': score = 2 else: score = 0 return score