Task02 零基础入门数据挖掘--数据分析

EDA-数据探索性分析

  • EDA的作用
    对已有数据在尽量减少先验假设下通过作图制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法,常用的手段包括仃阿凌分析和可视化技术。
  • 步骤如下:
    1,载入各种数据科学以及可视化库:
    数据科学库 pandas、numpy、scipy;
    可视化库matplotlib、seaborn;
    seaborn是一个基于matplotlib的数据可视化库,他用户回执有吸引力的且信息丰富的统计图形,它可以绘制高颜值的图表,专门为数据分析设计的可视化库,对pandas的兼容性非常好。
    2,载入数据
Train_data = pd.read_csv(path+"used_car_train_20200313.csv",sep = " ")
Test_data = pd.read_csv(path+"used_car_testA_20200313.csv",sep = " ")
display(Train_data.shape)
display(Test_data.shape)
3,数据总览
Train_data.head().append(Train_data.tail())#显示前五行和末尾五行
Train_data.info()#用于查看数据所有列的数目和所属类型
Train_data.describe()#显示所有列的总条数,均值,方差,最小、大值,以及1/4,1/2和3/4时的统计信息
4,判断数据缺失和异常情况
Train_data.isnull().sum()#统计每列的缺失条数
#用柱状图显示缺失列的条目
missing = Train_data.isnull().sum()
missing = missing[missing>0]
print(missing)
missing.sort_values(inplace =True)
missing.plot.bar()
#删除缺失值多的列
del Train_data["seller"]
del Train_data["offerType"]
5,了解预测值的分布
#看预测值
Train_data["price"]
#总体分布情况,用不同的图可视化,最后看那个结果能更清晰地描绘预测值的分布情况
import scipy.stats as st
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)
6,特征分为类别和数字特征,并对类别特征查看unique分布
#分离label即预测值
Y_train = Train_data["price"]
#特征nunique分布
for cat_fea in categorical_features:
    print(cat_fea + "的特征分布如下:")
    print("{}特征有{}不同的值".format(cat_fea,Train_data[cat_fea].nunique()))
    print(Train_data[cat_fea].value_counts())
7,数字特征分析
#相关性分析
price_numeric = Train_data[numeric_features]
correlation = price_numeric.corr()
print(correlation["price"].sort_values(ascending=False),'\n')
#用热力图来观察每列之间的相关性
f,ax=plt.subplots(figsize=(7,7))
plt.title("Correlation of Numeric Features with Price",y=1,size=16)
sns.heatmap(correlation,square=True,vmax=0.8)
8,类型特征分析
#  2,类别特征箱型图可视化
categorical_features = ['model',
                       'brand',
                        'bodyType',
                        'fuelType',
                        'gearbox',
                        'notRepairedDamage'
                       ]
for c in categorical_features:
    Train_data[c] = Train_data[c].astype("category")
    if Train_data[c].isnull().any():
        Train_data[c] = Train_data[c].cat.add_categories(['MISSING'])
        Train_data[c] = Train_data[c].fillna('MISSING')
        
def boxplot(x,y,**kwargs):
    sns.boxplot(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(boxplot,'value','price')

3,EDA实则是把握所有数据分布情况,将缺失值严重的列删除,根据热力图处理所有数据特征之间的相关性,观察预测值的分布情况。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值