【数学建模-某肿瘤疾病诊疗的经济学分析】数据清洗和特征工程

相关信息

1【数学建模-某肿瘤疾病诊疗的经济学分析】数据分析
2 【数学建模-某肿瘤疾病诊疗的经济学分析】数据清洗和特征工程
3 【数学建模-某肿瘤疾病诊疗的经济学分析】第一问模型分析
4 【代码下载】
5【30页的论文下载】

1 分析

(1)数据清洗

  • 性别、出生日期有缺失值,需要剔除

(2)特征工程

  • 性别、是否手术需要0-1编码
  • ADRG需要编码,采用目标编码
  • 给每个ADRG组中数据分为三个类,分别是高费用、中费用、低费用,并进行编码,用3、2、1表示
  • 根据出生日期和住院日期计算年龄
  • 根据DRGS编码判断并发症严重程度。1、5、7分别表示严重、一般、无

2 实现

(1)数据清洗

def clear_data(data):
    c_data = data
    datalen = len(data)
    for i in range(0,datalen):
        born_year = c_data['born'][i]
        sex = c_data['sex'][i]
        if born_year=='0 AM' or sex=='未知':
            c_data.drop([i],inplace=True)
            print()
    c_data.to_csv('clear_data.csv')
    print()

(2)性别编码

def gender_code(data):
    datalen = len(data)
    gender =[]
    for i in range(0,datalen):
        sex = data['sex'][i]
        if sex=='未知':
            continue
        elif sex=='男':
            gender.append(1)
        else:
            gender.append(0)
    return gender

(3)是否手术编码

def surgery_code(data):
    datalen = len(data)
    sur =[]
    for i in range(0,datalen):
        s = data['surgery'][i]
        if pd.isnull(s):
            sur.append(0)
        else:
            sur.append(1)
    return sur

(4)计算年龄

# 年龄计算
def age_code(data):
    age_list =[]
    datalen = len(data)
    for i in range(0,datalen):
        born_year = data['born'][i]
        if born_year=='0 AM':
            continue
        else:
            intime = ''.join(data['intime'][i])
            in_year = intime.strip().split("/")
            age = int(in_year[2])-int(born_year)
            age_list.append(age)
    return age_list

(5)并发症复杂程度编码
根据DRGS编码规则,DRGS编码的最后一位,1表示严重、5表示一般,7表示无

def complicate_code(data):
    text_len =[]
    datalen = len(data)
    g_data = pd.DataFrame()
    for i in range(0,datalen):
        one_lines = data['drgsid'][i]
        text_len.append(one_lines[-1])
    return text_len

(6)给数据集打标签
每个ADRG组下划分为三个类别,按照比例2:4:4划分为高、中、低三类

def label_code(data):
    category={}
    cate_box = pd.DataFrame()
    datalen = len(data)
    for i in range(0,datalen):
        adrgid = data['adrgid'][i]
        data_fee = data['fee'][i]
        if adrgid in category.keys():
            templist = list(category[adrgid])
            templist.append(data_fee)
            category[adrgid] =list(set(templist))
        else:
            category[adrgid] = [data_fee]
    mdict ={}
    for  k in category.keys():
        maxn =max(category[k])
        minn =min(category[k])
        avg = maxn-minn
        low = avg*(4/10)
        mid = avg*(4/10)
        high =avg*(2/10)
        inteval_n = [minn,minn+low,minn+low+mid,minn+low+mid+high]
        mdict[k] = inteval_n
    labelfee = []
    for i in range(0,datalen):
        adrgid = data['adrgid'][i]
        dfee = float(data['fee'][i])
        minn = float(mdict[adrgid][0])
        lowd = float(mdict[adrgid][1])
        midd= float(mdict[adrgid][2])
        highd = float(mdict[adrgid][3])
        if dfee>=minn and lowd>=dfee:
            labelfee.append(1)
        elif dfee>lowd and midd>=dfee:
            labelfee.append(2)    
        else:
            labelfee.append(3) 
    # print(labelfee)
    return labelfee

© 版权声明
THE END
喜欢就支持一下吧
点赞678 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容