天池-贷款违约挑战赛(二)-数据分析

Task2-数据分析

1 主要内容

了解数据集的统计信息,如数据完整性、是否存在奇异数据、数据类型(离散/连续)、特征关联


2 程序示例

2.1 使用平台

使用google colab,这个平台需要科学上网,你懂的。
本次比赛提供本地数据集,在colab中导入本地数据集的传送门在此
链接: 【嗖!传送门】.

2.2 导入包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import datetime
import warnings
warnings.filterwarnings('ignore')

colab平台一般会把常用的包安装好,但是像catboost这种就木得安装,需要自己来安装,开头起一段代码段执行一下就好啦

!pip install catboost
2.3 读数据

传送门中讲的很详细了,按步骤做就可以。在本地写程序的同学可以参考注释的代码

#  data_train = pd.read_csv('./data/train.csv')
data_train = pd.read_csv('drive/My Drive/tianchi/train.csv')
# data_test_a = pd.read_csv('./data/testA.csv')
data_test_a = pd.read_csv('drive/My Drive/tianchi/testA.csv')
2.4 样本数量&特征数量
data_test_a.shape # (200000, 48)
data_train.shape # (800000, 47)
data_train.columns # 返回每一列特征的名称

列举一下特征含义:

  1. id 为贷款清单分配的唯一信用证标识
  2. loanAmnt 贷款金额
  3. term 贷款期限(year)
  4. interestRate 贷款利率
  5. installment 分期付款金额
  6. grade 贷款等级
  7. subGrade 贷款等级之子级
  8. employmentTitle就业职称
  9. employmentLength 就业年限(年)
  10. homeOwnership 借款人在登记时提供的房屋所有权状况
  11. annualIncome 年收入
  12. verificationStatus 验证状态
  13. issueDate 贷款发放的月份
  14. purpose 借款人在贷款申请时的贷款用途类别
  15. postCode 借款人在贷款申请中提供的邮政编码的前3位数字
  16. regionCode 地区编码
  17. dti 债务收入比
  18. delinquency_2years 借款人过去2年信用档案中逾期30天以上的违约事件数
  19. ficoRangeLow 借款人在贷款发放时的fico所属的下限范围
  20. ficoRangeHigh 借款人在贷款发放时的fico所属的上限范围
  21. openAcc 借款人信用档案中未结信用额度的数量
  22. pubRec 贬损公共记录的数量
  23. pubRecBankruptcies 公开记录清除的数量
  24. revolBal 信贷周转余额合计
  25. revolUtil 循环额度利用率,或借款人使用的相对于所有可用循环信贷的信贷金额
  26. totalAcc 借款人信用档案中当前的信用额度总数
  27. initialListStatus 贷款的初始列表状态
  28. applicationType 表明贷款是个人申请还是与两个共同借款人的联合申请
  29. earliesCreditLine 借款人最早报告的信用额度开立的月份
  30. title 借款人提供的贷款名称
  31. policyCode 公开可用的策略代码=1新产品不公开可用的策略代码=2
  32. n系列匿名特征 匿名特征n0-n14,为一些贷款人行为计数特征的处理
2.5 数据完整性(缺失值nan)
print(f'There are {data_train.isnull().any().sum()} columns in train dataset with missing values.')
# There are 22 columns in train dataset with missing values.

说明训练集中有22列特征值不完整,接下来查看缺失率(存在缺失的样本/总样本)>50%的特征

have_null_fea_dict = (data_train.isnull().sum()/len(data_train)).to_dict()
fea_null_moreThanHalf = {}
for key,value in have_null_fea_dict.items():
	if value > 0.5:
	fea_null_moreThanHalf[key] = value
# {} 无

再将存在nan的特征画出缺失率

missing = data_train.isnull().sum()/len(data_train)
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()
# 如下图所示

Alt



2.6 数据类型(离散/连续)

这里贴一张局部数据图。显然,离散的特征比如grade ,取值∈{A,B,C,D,…},属于有限类别。连续的特征比如installment,取值空间无限。在这里插入图片描述

我们看一下grade 的具体类别有哪些

data = pd.concat([data_train, data_test_a ], axis=0, ignore_index=True)
print(sorted(data['grade'].unique()))
# ['A', 'B', 'C', 'D', 'E', 'F', 'G']

对于离散的特征,尤其是非数值特征,需要将其转为连续型数值特征


2.6.1(离散数+字符)

再比如employmentLength这种混合型(离散数+字符)数据,也是先看一下具体的类别。

data['employmentLength'].value_counts(dropna=False).sort_index()
"""
1 year        65671
10+ years    328525
2 years       90565
3 years       80163
4 years       59818
5 years       62645
6 years       46582
7 years       44230
8 years       45168
9 years       37866
< 1 year      80226
NaN           58541
Name: employmentLength, dtype: int64
"""

employmentLength的处理就是先将“10+ years”和“<1 years”去掉数字前后的运算符,将(离散数+字符)转换为(离散数)

data['employmentLength'].replace(to_replace='10+ years', value='10 years', inplace=True)
data['employmentLength'].replace('< 1 year', '0 years', inplace=True)
def employmentLength_to_int(s):
	"""将该特征转为离散数"""
    if pd.isnull(s):
        return s
    else:
        return np.int8(s.split()[0])
    
data['employmentLength'] = data['employmentLength'].apply(employmentLength_to_int)
2.7 变量分布可视化

初步查看变量的分布区间

plt.figure(figsize=(8, 8))
sns.barplot(data_train["employmentLength"].value_counts(dropna=False)[:20],
data_train["employmentLength"].value_counts(dropna=False).keys()[:20])
plt.show()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 阿里天池淘宝2017-11用户行为数据分析是基于Hive进行的。Hive是一个构建在Hadoop之上的数据仓库基础架构,提供了类似于SQL的查询语言HiveQL,使用户能够在大规模数据集上进行数据查询和分析。 在进行淘宝用户行为数据分析时,首先需要将原始数据导入Hive数据仓库中。数据源可以是来自淘宝的用户行为日志文件,其中包含了用户在淘宝平台上的各种行为,例如浏览商品、点击广告、添加购物车、购买等等。 然后,使用HiveQL语言编写查询语句,通过Hive进行数据分析数据分析的目标可能包括但不限于:用户行为的频率分布、用户购买转化率、热门商品排行、用户购买决策的时间分布等等。通过对用户行为数据进行分析,阿里天池淘宝可以洞察用户行为的规律,发现用户需求和购物习惯,从而为优化产品和推广策略提供参考。 Hive的优势之一是可以处理大规模的数据,因此对于淘宝这样拥有海量用户和数据的平台而言,使用Hive进行用户行为数据分析非常合适。此外,Hive还提供了数据仓库的概念,可以通过不同的方式将数据进行结构化和存储,以方便后续的查询和分析。 综上所述,阿里天池淘宝2017-11用户行为数据分析基于Hive,通过将用户行为数据导入Hive数据仓库,利用HiveQL进行查询和分析,从而洞察用户行为规律,为产品和推广策略优化提供依据。Hive作为一个大数据处理工具,对于处理淘宝这样海量用户和数据的平台来说是非常适用的。 ### 回答2: 阿里巴巴天池是一个面向数据科学家和机器学习爱好者的在线数据科学竞赛平台,提供丰富多样的数据集和竞赛任务。其中,淘宝用户行为数据分析天池平台的一个竞赛任务。在这个竞赛中,参赛者需要使用Hive来完成对淘宝2017年11月的用户行为数据进行分析。 Hive是基于Hadoop的数据仓库系统,它可以处理大规模数据,并提供了类似于SQL的查询语言,使得用户可以通过编写SQL式的语句来查询和分析数据。在淘宝用户行为数据分析任务中,Hive可以帮助分析师和数据科学家从大量数据中提取有用的信息。 通过Hive,我们可以利用淘宝用户行为数据进行各种分析,如用户购买行为、浏览行为、搜索行为等。我们可以使用Hive的查询语句来筛选、聚合和统计数据,以得出用户行为的关键指标。 一种常见的使用Hive进行用户行为数据分析的方法是利用Hive提供的内置函数和操作符来进行数据的转换和计算。通过使用Hive的内置函数,我们可以对用户行为数据进行预处理,如将日期格式化、提取关键字等。然后,我们可以使用Hive的聚合函数和操作符来计算用户行为的各种指标,如总购买金额、平均浏览次数等。 此外,Hive还支持用户自定义函数和UDAF(用户自定义聚合函数),这使得分析师和数据科学家可以根据自己的需求来扩展Hive的功能。通过编写自定义函数,我们可以在Hive中实现更加复杂的计算和分析。 总的来说,通过Hive,我们可以使用SQL式的查询语言对阿里天池淘宝2017年11月的用户行为数据进行分析。通过Hive的内置函数和操作符,以及用户自定义函数和UDAF,我们可以从大规模的数据中提取有用的信息,并计算出用户行为的各项指标。 ### 回答3: 阿里天池淘宝2017-11用户行为数据分析基于Hive,可以使用Hive这个大数据存储和计算框架对淘宝2017年11月的用户行为数据进行分析。 Hive是一个基于Hadoop的数据仓库基础架构,可以将大规模数据集存储在Hadoop集群中,并同时提供类似于关系型数据库的查询和分析功能。通过Hive,可以利用SQL的方式对大规模数据进行查询和分析,使得数据分析师更加方便地处理和分析海量数据。 对于淘宝2017-11用户行为数据,可以将其导入Hive中进行分析。首先,可以创建一个Hive表,定义各个字段的名称和数据类型,然后将用户行为数据导入到这个表中。接着,可以使用Hive提供的SQL语句进行各种查询和分析。 例如,可以通过查询语句统计每个用户的购买次数、浏览次数、加入购物车次数等行为情况,从而分析用户的购买意向和行为模式。也可以对用户的购买行为进行细分,比如按照地区、商品类别等进行分组,以了解不同用户群体的购物习惯和喜好。此外,还可以对用户行为的时间分布进行分析,了解用户在不同时间段的活跃度和购买偏好。 通过Hive的数据分析功能,可以深入挖掘淘宝2017-11用户行为数据中潜在的商业价值,为企业的市场营销和业务决策提供重要参考依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值