Python/普康健康审核机器人/report/main.py

109 lines
3.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- 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另外处理步骤参考抽取、转换和加载
'''