没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
银行业务数据分析报告
数据仓库与数据挖掘第一次作业
2018-10-14
崔浩
2018214160
目录
一、数据清洗 .......................................................................................................................................................2
1.1 Java 程序架构 .......................................................................................................................................2
1.2 清洗规则定义 ......................................................................................................................................2
1.2.1 枚举规则 ...................................................................................................................................2
1.2.2 日期规则 ...................................................................................................................................4
1.2.3 生日和性别 ..............................................................................................................................5
1.2.4 数字规则 ...................................................................................................................................6
1.2.5 其他规则 ...................................................................................................................................6
二、数据导入 .......................................................................................................................................................7
2.1 导入后的数据清洗 .............................................................................................................................7
2.1.1 主键唯一性检查 .....................................................................................................................7
2.1.2 外键合法性检查 .....................................................................................................................7
2.1.3 字段间逻辑检查 .....................................................................................................................7
2.2 完善表格结构 ......................................................................................................................................8
三、维度表和事实表 ..........................................................................................................................................9
3.1 维度表 ....................................................................................................................................................9
3.1.1 年龄维度 ...................................................................................................................................9
3.1.2 信用卡类型维度 .....................................................................................................................9
3.1.3 性别维度 ................................................................................................................................ 10
3.1.4 操作类型维度 ...................................................................................................................... 10
3.1.5 收款订单额维度 .................................................................................................................. 10
3.1.6 收款订单类型维度 ............................................................................................................. 11
3.1.7 地区维度 ................................................................................................................................ 11
3.1.8 交易类型维度 ...................................................................................................................... 11
3.1.9 交易额维度 ........................................................................................................................... 12
3.1.10 余额维度 ............................................................................................................................. 12
3.1.11 年份额度 ............................................................................................................................. 13
3.2 事实表 ................................................................................................................................................. 13
3.2.1 用户数事实表 ...................................................................................................................... 14
3.2.2 操作金额事实表 .................................................................................................................. 14
3.2.3 贷款额事实表 ...................................................................................................................... 15
3.3 维度表与事实表的关系 ................................................................................................................. 17
四、数据分析 .................................................................................................................................................... 17
4.1 用户数量 ............................................................................................................................................ 18
4.2 交易金额 ............................................................................................................................................ 18
4.3 贷款总额 ............................................................................................................................................ 20
一、数据清洗
第一步数据清洗的目的是分辨 CSV 文件中单个数据字段的问题,数据之间的逻辑关系
问题在后续数据导入时再处理,在这一步不考虑。本实验通过 Java 程序进行初步的数据清
洗,算法复杂度为 O(n),在一次遍历后识别字段问题,尝试修复或丢弃数据。
1.1 Java 程序架构
CsvFilter 类定义了数据处理的模板方法,每个表只需要定义 Csv 文件的名字和处理每一
个字段的规则就可以,核心的预处理方法为 processCsv()方法,方法的主要流程为:
1)根据子类定义的 getCsvName()获取当前要处理的 csv 文件,创建读取和写出类。
2)根据子类定义的 getRules()获取当前 csv 文件每一个字段的处理规则
3)循环读取每一行数据,对每一段数据应用规则,如果返回空值则舍弃这一行数据
4)将处理好的数据写入新文件,将丢弃的数据写入丢弃日志,便于手动修改。
文件处理规则有 Rule 类定义,涵盖日期、数字、枚举等类型的数据,实现统一的 process
接口。有关 Rule 的层级结构如下图所示:
规则被分为生日/性别规则、日期规则、银行字段规则、还款期数规则、枚举字段规则、
普通字符串规则、数字规则、ID 字段规则,部分规则会根据字段的具体的情况划分为更具体
的规则,有关规则的定义,会在下文中提及。
1.2 清洗规则定义
1.2.1 枚举规则
本次实验在处理枚举类型的数据时,首先查找该字段与已定义字段是否相等,如果相等
则输出翻译后的字段值,如果不相等则使用编辑距离算法计算该字段与已定义所有字段的文
本相似度(Levenshtein Distance),选取最相似的字段输出。
关键调度算法为:
@Override
public String process(String item) {
List<String> acceptStrings = acceptStrings();//获取子类提供的定义字段
List<String> replaceStrings = replaceStrings();//获取子类提供的翻译字段
for (int i = 0; i < acceptStrings.size(); i++) {//相同则直接返回翻译字段
if (item.equals(acceptStrings.get(i))) return replaceStrings.get(i);
}
int maxIndex = 0;
double maxValue = 0;
for (int i = 0; i < acceptStrings.size(); i++) {//不相同则计算编辑距离返回相似字段
double simValue = sim(acceptStrings.get(i).toUpperCase(), item.toUpperCase());
if (simValue > maxValue) maxIndex = i;
}
return replaceStrings.get(maxIndex);
}
通过计算编辑距离对部分字段进行修复,将长度为 i 的字符串通过替换、删除和增加三
种操作转换为长度为 j 的字符串的操作数成为这两个字符串的编辑距离,编辑距离越短活命
这两个字符串越相似。编辑距离的计算公式为:
编辑距离的计算考虑三种情况:
1、可以在 k 个操作内将 s1[1…i]转换为 s2[1…j-1],s2 加上一个字符就可以,距离为 k+1
2、可以在 k 个操作内将 s1[1…i-1]转换为 s2[1…j],s1 移除最后字符就可以,距离为 k+1
3、可以在 k 个操作内将 s1[1…i-1]转换为 s2[1…j-1],如果 s1[i]=s[j],则距离为 k,否则
需要一次替换操作,距离为 k+1
算法的关键代码为:
for (int i = 1; i <= n; i++) {
ch1 = str1.charAt(i - 1);
for (int j = 1; j <= m; j++) {
ch2 = str2.charAt(j - 1);
if (ch1 == ch2) {
temp = 0;
} else {
temp = 1;
}
d[i][j] = Math.min(d[i - 1][j] + 1, Math.min(d[i][j - 1] + 1, d[i - 1][j - 1]+ temp));
}
}
剩余21页未读,继续阅读
优游的鱼
- 粉丝: 70
- 资源: 316
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0