题目链接:天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享
前言
又是一年数据挖掘题型,第一次接触这种题型还是在去年的mathorcup上,这种题的难度就在于指标的建立和数据的处理上。后面会出一份关于数据挖掘题型,我的相关经验,常用的工具和代码。
下面的一,二问实际都在解决
- 贷不贷款?
- 贷款金额多少?
数据清洗
这道题的附件数据没有出现缺省或者异常数据,因此对于数据的预处理,更多的是根据问题的需求来做的。
-
将是否违约,违约设置为1,不违约设置为0
-
信誉等级ABCD分别对应4,3,2,1
-
发票状态,有效发票为a,作废发票为b
-
我将销项和进项所有数据,以公司代码为区别,提取到了不同的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