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