# -*- coding: utf-8 -*- ''' 脚本说明:将传统理赔已质检的赔案数据进行解析命否规则 ''' #导入模块 import json import pandas import os import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))) from utils.pandas_extension import SaveAsExcel print('正在打开文件并抽取数据...', end = '') #打开源文件并读取数据 dataset = pandas.read_csv(filepath_or_buffer = 'dataset.csv') print('已完成') print() print('正在转换数据...', end = '') #转换函数,用于将命否规则中结果返回 def transform(rules): result = [] try: #替换规则结果中部分字符串 rules = rules.replace('true', 'True').replace('false', 'False') #表达化 rules = eval(rules) #若规则结果数据类型为列表则遍历,获取命否的规则编码并拼接 if isinstance(rules, list): #遍历规则结果 for rule in rules: #若规则命否则将规则获取规则编码 if not rule.get('success'): #添加命否规则编码 result.append(rule.get('ruleCode')) except: result.append('failure') return ','.join(result) #清洗命否规则 dataset['清洗后命否规则'] = dataset['命否规则'].apply(func = lambda x: transform(x)) #解析预期进入自动审核字段 dataset['预期进入自动审核'] = dataset['清洗后命否规则'].apply(func = lambda x: '是' if x == '' else '否') #解析实际 dataset['自动审核通过复核'] = dataset.apply(func = lambda x: '是' if x['预期进入自动审核'] == '是' and x['审核员'] == '自动审核' else ('否' if x['预期进入自动审核'] == '是' and x['审核员'] != '自动审核' else ''), axis = 'columns') dataset = dataset[['赔案号', '质检完成时间', '预期进入自动审核', '自动审核通过复核', '清洗后命否规则']] #数据集透视 pivot_table = dataset.groupby(by = '质检完成时间').agg(质检完成赔案数 = pandas.NamedAgg(column = '质检完成时间', aggfunc = lambda x: pandas.notna(x).sum()), 预期进入自动审核赔案数 = pandas.NamedAgg(column = '预期进入自动审核', aggfunc = lambda x: sum(x == '是')), 自动审核通过复核赔案数 = pandas.NamedAgg(column = '自动审核通过复核', aggfunc = lambda x: sum(x == '是'))) #按照质检完成时间倒序排序 pivot_table.sort_values(by = '质检完成时间', ascending = False, inplace = True) #重置索引 pivot_table.reset_index(inplace = True) #计算预期进入自动化审核率 pivot_table['预期进入自动审核率'] = pivot_table.apply(lambda x: round(x['预期进入自动审核赔案数'] / x['质检完成赔案数'] * 100, 2) if x['质检完成赔案数'] != 0 else None, axis = 'columns') #计算预期进入自动化审核率 pivot_table['自动审核复核通过率'] = pivot_table.apply(lambda x: round(x['自动审核通过复核赔案数'] / x['预期进入自动审核赔案数'] * 100, 2) if x['预期进入自动审核赔案数'] != 0 else None, axis = 'columns') #添加汇总行 pivot_table.loc[pivot_table.shape[0]] = ['汇总', pivot_table['质检完成赔案数'].sum(), pivot_table['预期进入自动审核赔案数'].sum(), pivot_table['自动审核通过复核赔案数'].sum(), round(pivot_table['预期进入自动审核赔案数'].sum() / pivot_table['质检完成赔案数'].sum() * 100, 2), round(pivot_table['自动审核通过复核赔案数'].sum() / pivot_table['预期进入自动审核赔案数'].sum() * 100, 2)] print('已完成') print() print('正在将数据保存为EXCEL...', end = '') SaveAsExcel(worksheets = [['按照质检完成时间汇总', pivot_table], ['明细数据', dataset]], file_path = '普康健康_自动审核统计数据.xlsx') print('已完成') print() ''' 修改记录 1、241220 就数据转换类型进行调整,使用封装函数保存为EXCEL,另外处理步骤参考抽取、转换和加载 '''