2020 全国大学生数学建模竞赛C题思路+代码

题目链接天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享

前言

又是一年数据挖掘题型,第一次接触这种题型还是在去年的mathorcup上,这种题的难度就在于指标的建立和数据的处理上。后面会出一份关于数据挖掘题型,我的相关经验,常用的工具和代码。

下面的一,二问实际都在解决

  1. 贷不贷款?
  2. 贷款金额多少?

数据清洗

这道题的附件数据没有出现缺省或者异常数据,因此对于数据的预处理,更多的是根据问题的需求来做的。

  1. 将是否违约,违约设置为1,不违约设置为0

  2. 信誉等级ABCD分别对应4,3,2,1

  3. 发票状态,有效发票为a,作废发票为b

  4. 我将销项和进项所有数据,以公司代码为区别,提取到了不同的sheet当中,对于该公司有效发票数作废发票数负数发票数,方便对数据观察。

# 遍历所有sheet数据
for xsn in sn.sheet_names[1:]:
    # 读取文件
    datas = pd.read_excel(file_pos, sheet_name=xsn)
    datas['date']=pd.to_datetime(datas['date'],format='%Y/%m/%d')
    datas.set_index('date', drop=True)
    # 找到全部公司名称代号
    code_list = list(set(list((datas['code']))))
    for name in code_list:
        tmp_datas = datas[datas['code'] == name]
        tmp_datas.index = range(len(tmp_datas))
        # 转换日期未object类型
        tmp_datas['date'] = [x.strftime('%Y/%m/%d') for x in tmp_datas['date']]
        count1 = tmp_datas['tax_status'].value_counts()
        tmp_datas['a_count'] = list(count1)[0]
        if(len(count1) > 1):
            tmp_datas['b_count'] = list(count1)[1]
        tmp2 = tmp_datas[tmp_datas['cost'] < 0]
        tmp_datas['neg_value_tax'] = len(tmp2)
        if xsn == sn.sheet_names[1]:
            tmp_datas.to_excel(writer1,sheet_name=name,index=False)
        else:
            tmp_datas.to_excel(writer2,sheet_name=name,index=False)

负数发票:在之前购买的物品,并开具了相关正向发票,后来退货所以开具了值为负数的发票,抵消前面正数发票的值。

提取到信息:

  • 部分公司数据记录很少,或者时间跨度大,需要综合数据指标,抵消数据数量和跨度大的影响
  • 有些负数发票,在之前找不到对应的正数发票,可能是因为在数据记录日期之前购买的,在之后退款,因此在附件中找不到记录。

问题一

建立指标

进项发票作废率进项负数发票率进项每月平均交易额进项每月交易次数

销项发票作废率销项负数发票率销项每月平均交易额销项每月交易次数销售收入增长率

提取出相关指标到附件

for xsn in sn.sheet_names[1:]:
    # 读取文件
    datas = pd.read_excel(file_pos, sheet_name=xsn)
    code_list = list(set(list((datas['code']))))
    for name in code_list:
        tmp_datas = datas[datas['code'] == name]
        tmp_datas.index = range(len(tmp_datas))
        insert_datas.append(name)
        # 作废数
        cacel_count = l
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值