金融风控 Task2-数据探索性分析

1 数据总体了解:

#导包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import datetime
import warnings
warnings.filterwarnings('ignore')
1.1 读取数据集并了解数据集大小,原始特征维度
train = pd.read_csv('./data/train.csv')
testA = pd.read_csv('./data/testA.csv')
print(train.shape)
print(testA.shape)
train.head(3).append(train.tail(3))

在这里插入图片描述

testA.head(3).append(testA.tail(3))

在这里插入图片描述

train.columns

在这里插入图片描述

1.2 通过info熟悉数据类型
train.info()

在这里插入图片描述

1.3粗略查看数据集中各特征基本统计量
train.describe()

在这里插入图片描述

2 缺失值和唯一值

2.1 查看数据缺失值情况
#存在缺失值的列数
train.isnull().any().sum()
#查看是否存在一半以上缺失值的列
have_null_fea_dict = ((train.isnull().sum())/len(train)).to_dict()
fea_null = {}
for k,v in have_null_fea_dict.items():
    if v > 0.5:
        fea_null[k] = v
print(fea_null)
2.2 查看缺失特征及缺失率
missing = (train.isnull().sum())/len(train)
miss = missing[missing>0]
# miss.sort_values(ascending = True)
miss = miss.sort_values(ascending=True)
miss.plot.bar()

在这里插入图片描述

2.3 查看训练集测试集中特征属性只有一值的特征
numerical_fea = list(train.select_dtypes(exclude=['object']).columns)#数据类型
category_fea = list(filter(lambda x: x not in numerical_fea,list(train.columns)))#对象类型
print(numerical_fea)
print(category_fea)

在这里插入图片描述

2.5 数值型变量分析,数值型包括连续型变量和离散型变量
2.5.1划分数值型变量中的连续变量和离散型变量
def get_numerical_serial_fea(data,feas):
    numerical_serial_fea = []
    numerical_noserial_fea = []
    for fea in feas:
        temp = data[fea].nunique()
        if temp <= 20:
            numerical_noserial_fea.append(fea)
            continue
        numerical_serial_fea.append(fea)
    return numerical_serial_fea,numerical_noserial_fea
numerical_serial_fea,numerical_noserial_fea=get_numerical_serial_fea(train,numerical_fea)
print(numerical_serial_fea)
print(numerical_noserial_fea)

在这里插入图片描述

2.5.2离散型变量逐一查看
train['term'].value_counts()
train['homeOwnership'].value_counts()
train['verificationStatus'].value_counts()
train['purpose'].value_counts()
train['pubRecBankruptcies'].value_counts()#数据量相差悬殊
train['initialListStatus'].value_counts()
train['applicationType'].value_counts()#数据量相差悬殊
train['policyCode'].value_counts()#单一值,无关变量
train['n11'].value_counts()#数据量相差悬殊
train['n12'].value_counts()#数据量相差悬殊
2.5.3数值连续型变量分析 -每个数字特征的分布可视化
f = pd.melt(train,value_vars=numerical_serial_fea)
g = sns.FacetGrid(f,col='variable',col_wrap=4,sharex=False,sharey=False)
g = g.map(sns.distplot,'value')

在这里插入图片描述

2.6 非数值类别变量分析
train['grade'].value_counts()
train['subGrade'].value_counts()
train['employmentLength'].value_counts()
train['issueDate'].value_counts()
train['earliesCreditLine'].value_counts()

3 变量分布可视化

3.1 单一变量分布可视化
plt.figure(figsize=(8,8))
sns.barplot(train['employmentLength'].value_counts(dropna=False)[:20],
           train['employmentLength'].value_counts(dropna=False).keys()[:20])
plt.show()

在这里插入图片描述

3.2 时间格式数据处理及查看
# train转换成时间格式
train['issueDate']=pd.to_datetime(train['issueDate'])
startdate = datetime.datetime.strptime('2007-06-01','%Y-%m-%d')
train['issueDateDT'] = train['issueDate'].apply(lambda x: x-startdate).dt.days
# testA转换成时间格式
testA['issueDate']=pd.to_datetime(testA['issueDate'])
startdate = datetime.datetime.strptime('2007-06-01','%Y-%m-%d')
testA['issueDateDT'] = testA['issueDate'].apply(lambda x: x-startdate).dt.days
# 画图
plt.hist(train['issueDateDT'],label='train')
plt.hist(testA['issueDateDT'],label='testA')
plt.legend()

在这里插入图片描述

3.3 利用透视图了解数据
#透视图 索引可以有多个,“columns(列)”是可选的,聚合函数aggfunc最后是被应用到了变量“values”中你所列举的项目上。
pd.pivot_table(train, index=['grade'], columns=['issueDateDT'], values=
['loanAmnt'], aggfunc=np.sum)

在这里插入图片描述

3.4 用pandas_profiling生成数据报告
import pandas_profiling
pfr = pandas_profiling.ProfileReport(train)
pfr.to_file("./example.html")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
时间序列预测的数据探索性分析是指在进行时间序列预测任务之前,对历史数据进行分析和探索,以了解数据的特征和模式。根据引用\[1\]和引用\[3\],时间序列分解是一种常用的方法,将时间序列分解为几个部分,每个部分代表一种更可预测的基本模式类别。这种分解可以帮助我们发现趋势、季节性和残差等模式。 在时间序列数据探索性分析中,我们可以使用各种统计方法和可视化工具来分析数据。例如,我们可以计算时间序列的统计指标,如均值、方差和自相关性,以了解数据的整体趋势和变化。此外,我们还可以绘制时间序列的折线图、散点图和自相关图,以观察数据的趋势、季节性和周期性。 另外,根据引用\[2\],我们还可以使用探索性数据分析技术来进一步分析时间序列数据。这包括绘制箱线图、直方图和密度图,以了解数据的分布情况和异常值。我们还可以使用时间序列的滚动统计和移动平均方法,以平滑数据并发现潜在的趋势和季节性模式。 总之,时间序列预测的数据探索性分析是一个重要的步骤,可以帮助我们了解数据的特征和模式,为后续的预测建模提供基础。通过使用各种统计方法和可视化工具,我们可以揭示数据中的趋势、季节性和周期性,并发现潜在的异常值和趋势。 #### 引用[.reference_title] - *1* *3* [【时间序列预测】Autoformer 长时间序列预测](https://blog.csdn.net/hymn1993/article/details/124746406)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [季节性时间序列数据分析_如何指导时间序列数据探索性数据分析](https://blog.csdn.net/weixin_26705191/article/details/108497967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigCabbageFy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值