记录我的组队学习之路——基于二手车价格预测比赛——EDA

EDA

探索性数据分析(Exploratory Data Analysis 简称EDA)是一种分析数据集以概括其主要特征的方法,通常使用可视化方法,不同于初始数据分析(IDA),它更集中于检查模型拟合和假设检验所需的假设,以及处理缺少的值,并根据需要进行变量转换。EDA包含IDA。

探索性分析的过程:
1.形成假设,确定主题去探索;
2.清理数据;
3.评价数据质量;
4.数据报表;
5.探索分析每个变量;
6.探索每个自变量与因变量之间的关系;
7.探索每个自变量之间的相关性;
8、从不同的维度来分析数据。

在这里插入图片描述1.读取数据

data = pd.read_csv('used_car_train_20200313.csv')

2.查看shape,columns,head()+tail()

train_data.shape
train_data.columns
train_data.head().append(train_data.tail())

3.查看数据整体分布情况

train_data.info() #非空值,变量类型
 train_data.describe() #变量值分布

4.查看缺失变量 [注意字符型特征变量中可能也存在空值(‘-’),先转化为nan]

missing_data = train_data.isnull().sum()
missing_data = missing_data[missing_data>0]
missing_data.sort_values(inplace=True)
missing_data.plot.bar()

5.唯一值占比99%的变量可删除【回归模型可以,但分类模型注意需要参考Y变量的分布】

train_data['seller'].value_counts() #查看变量值分布

6.Y变量分布

train_data['price'].value_counts()
train_data['price'].describe()

import scipy.stats as st
import matplotlib.pyplot as plt
import seaborn as sns

y = train_data['price']
plt.figure(1)
plt.title('Johnson SU')
sns.distplot(y,kde=False,fit=st.johnsonsu)
plt.figure(2)
plt.title('Normal')
sns.distplot(y,kde=False,fit=st.norm)
plt.figure(3)
plt.title('Log Normal')
sns.distplot(y,kde=False,fit=st.lognorm)
#**价格不服从正态分布,所以在回归之前,它必须进行转换,最佳拟合是无界约翰逊分布**

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
约翰逊分布:经约翰变换后服从正态分布的随机变量的概率分布
在这里插入图片描述

plt.hist(train_data['price'],orientation='vertical',histtype='bar',color='red')
plt.show()  #查看Y值分箱分布

plt.hist(np.log(train_data['price']),orientation='vertical',histtype='bar',color='red')
plt.show()  #查看Y值分箱分布

在这里插入图片描述在这里插入图片描述
7.分别查看数值型变量和类别型变量的值分布
数值型变量与Y变量进行相关度分析

numeric_data = train_data[numeric_features]
correlation = numeric_data.corr()
print(correlation['price'].sort_values())
#可视化展示
f,ax = plt.subplots(figsize=(7,7))
plt.title('Correlation of Numeric Feature with Price',y=1,size=16)
sns.heatmap(correlation,square=True,vmax=0.8)

在这里插入图片描述
类别型变量值与Y变量之间的分布关系

def bar_plot(x,y,**kwargs):
    sns.barplot(x=x,y=y)
    x = plt.xticks(rotation=90)
    
f = pd.melt(train_data,id_vars=['price'],value_vars=categorical_features)
g = sns.FacetGrid(f,col = 'variable',col_wrap=2,sharex=False,sharey=False,size = 5)
g = g.map(bar_plot,'value','price')

在这里插入图片描述
类别型变量值频数的分布

def count_plot(x, **kwargs):
	  sns.countplot(x=x)  #此处与上处不一样
	  x=plt.xticks(rotation=90) 
f = pd.melt(Train_data, value_vars=categorical_features) 
g = sns.FacetGrid(f, col="variable", col_wrap=2, sharex=False, sharey=False, size=5) 
g = g.map(count_plot, "value")

在这里插入图片描述

8.生成数据质量报告

import pandas_profiling
pfr = pandas_profiling.ProfileReport(train_data)
pfr.to_file('used_car_data_quality_report.html')

如有其它好的分析方法,再进行补充。

参考文献:
【1】dataWhale组织的二手车价格预测分析 作者:AI蜗牛车
【2】一文带你探索性数据分析(EDA)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值