探索性数据分析(EDA)教程

欢迎来到这篇关于探索性数据分析(EDA)的教程。在这篇文章中,将深入了解EDA的概念,并实际演示如何使用SAS和Python进行EDA。将使用一个包含100514条记录和19个字段的银行贷款数据集,选择这个大型数据集是为了让大家能够从中学到更多,而不仅仅是使用一个小数据集来进行项目,那样可能不会那么有趣,也学不到太多东西。

本文旨在帮助大家理解SAS和Python这两种工具在数据分析中的工作方式。这两种工具无疑是市场上最好的数据科学和分析工具。可以根据需要调整代码,使其更加动态和可靠。

发现Python有很多资源可用,但SAS的情况并非如此,因此想给大家一个更清晰的SAS工作方式的图景。让开始深入了解这个过程...

探索性数据分析EDA

首先,将回答关于这个过程的几个问题:

  • 什么是EDA
  • 为什么要使用它?
  • 如何执行这个过程?

答案1:EDA是一个通过总结信息,甚至使用图表来更好地可视化数据来了解数据的过程。

答案2:它是数据科学生命周期的一个构建块,将帮助确定变量的属性和重要性,并为数据集构建一个更强大的模型。

答案3:只需要选择数据集并对其执行一些基本操作,如识别变量及其数据类型、数据集的描述性统计、查找缺失值、检查数据中的唯一值、单变量和双变量分析等...

在这里,将查看数据集的元数据以及其中存在的变量类型。

/* 检查数据集的内容 */ proc contents data=blog.credit_train; run; /* 查看数据集的前50条记录 */ proc print data=blog.credit_train obs=50; run; # 导入博客数据集所需的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns # 数据和数据形状的内容 df.info() # 读取数据集 df = pd.read_csv('C:\\Users\\Aspire 5\\Desktop\\creditcredit_train.csv') df df.head(50)

在这里,将检查数据集的均值、中位数、众数等...

/* 数据集的描述性统计 */ proc means data=blog.credit_train mean median mode std var min max; run; # 数据集的描述性统计 df.describe()

将检查每列中缺失值的数量。

/* 数据集中的缺失值 */ proc means data=blog.credit_train nmiss; run; # 每列中缺失值的总数 df.isnull().sum()

正在检查数据集中的唯一值,以熟悉变量在所有记录中真正持有多少值,这可能有助于在值太少时对数据进行归一化。

/* 5列的唯一值 */ proc sql; select count(distinct 'Loan Status'n) as 'Loan Status'n, count(distinct Bankruptcies) as Bankruptcies, count(distinct Term) as Term, count(distinct 'Credit Score'n) as 'Credit Score'n, count(distinct 'Monthly Debt'n) as 'Monthly Debt'n from blog.credit_train; quit; # 每列唯一值的总数 a = pd.DataFrame(df) a.nunique()

这是统计分析的一部分,只考虑一个变量并对其进行分析。

它是数值数据分布的表示。

/* 可以在这个过程中给出多个变量来创建直方图 */ proc univariate data=blog.credit_train novarcontents; histogram 'Current Loan Amount'n 'Credit Score'n /; run; /* 仅使用一个变量(即信用评分)创建直方图 */ ods graphics / reset width=6.4in height=4.8in imagemap; proc sgplot data=BLOG.CREDIT_TRAIN; histogram 'Credit Score'n /; yaxis grid; run; # 为信用评分变量创建直方图 plt.hist(df['Credit Score']) plt.xlabel('信用评分') plt.ylabel('计数') plt.show()

这是统计分析的一部分,考虑多个变量并对其进行分析。

它用于检查数值变量之间的关系。

/* 使用散点图检查两个变量之间的关系 */ ods graphics / reset width=6.4in height=4.8in imagemap; proc sgplot data=BLOG.CREDIT_TRAIN; scatter x='Number of Open Accounts'n y='Current Credit Balance'n /; xaxis grid; yaxis grid; run; ods graphics / reset; # 创建散点图以观察数值变量之间的关系 sc = sns.scatterplot(data=df, x="Number of Open Accounts", y="Current Credit Balance") sc

它说明了变量之间的相关性,这将进一步帮助考虑模型构建中的重要变量。

/* 数值变量之间的相关性 */ ods noproctitle; ods graphics / imagemap=on; proc corr data=BLOG.CREDIT_TRAIN pearson nosimple noprob plots=none; var 'Current Loan Amount'n 'Credit Score'n 'Annual Income'n 'Monthly Debt'n 'Years of Credit History'n 'Number of Open Accounts'n 'Number of Credit Problems'n 'Current Credit Balance'n 'Maximum Open Credit'n Bankruptcies 'Tax Liens'n; run; # 变量之间的相关性 df.corr() # 显示数值 df_corr = df.corr() # 生成图形可视化 sns.heatmap(df_corr, xticklabels = df_corr.columns.values, yticklabels = df_corr.columns.values, annot = True) /* 箱线图用于检查数据中的异常值 */ ods graphics / reset width=6.4in height=4.8in imagemap; proc sgplot data=BLOG.CREDIT_TRAIN; vbox 'Credit Score'n / category='Loan Status'n; yaxis grid; run; ods graphics / reset; # 为变量创建箱线图 ax = sns.boxplot(x='Loan Status', y='Credit Score', data=df) ax
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485