二手车交易价格预测_Task2_EDA - 数据探索性分析

本文详细介绍了一个二手车价格预测项目的数据探索性分析(EDA)过程。从数据加载到预处理,再到特征工程,最后进行数据可视化,全面展示了如何理解数据集并为机器学习模型准备数据。

EDA - 数据探索性分析_代码示例部分

代码示例

1.载入各种数据科学以及可视化库

import warnings     # 利用过滤器实现忽略警告语句
import pandas as pd
import numpy as np
import scipy.stats as st
import pandas_profiling
import seaborn as sns
import missingno as msno    # 缺失值可视化的库
import matplotlib as mpl
mpl.use('TkAgg')
import matplotlib.pyplot as plt
warnings.filterwarnings('ignore')

2.载入数据

Train_data = pd.read_csv(r'F:\Users\TreeFei\文档\PyC\used_car\data\used_car_train_20200313.csv', sep=' ')
Test_data = pd.read_csv(r'F:\Users\TreeFei\文档\PyC\used_car\data\used_car_testA_20200313.csv', sep=' ')
# #在kaggle上看一下已知特征的解释
'''
SaleID - 交易ID,唯一编码
name - 汽车交易名称,已脱敏
regDate - 汽车注册日期,例如20160101,2016年01月01日
model - 车型编码,已脱敏
brand - 汽车品牌,已脱敏
bodyType - 车身类型-豪华轿车:0; 微型车:1;  厢型车:2;  大巴车:3;  敞篷车:4;  双门汽车:5; 商务车:6;  搅拌车:7
fuelType - 燃油类型-汽油:0;   柴油:1;   液化石油气:2;   天然气:3;   混合动力:4;   其他:5;   电动:6
gearbox - 变速箱-手动:0;   自动:1
power - 发动机功率:范围 [ 0, 600 ]
kilometer - 汽车已行驶公里,单位万km
notRepairedDamage - 汽车有尚未修复的损坏-是:0; 否:1
regionCode - 地区编码,已脱敏
seller - 销售方-个体:0;  非个体:1
offerType - 报价类型-提供:0;  请求:1
creatDate - 汽车上线时间-即开始售卖时间
price - 二手车交易价格(预测目标)
v系列特征 - 匿名特征:包含v0-14在内15个匿名特征(根据汽车的评论,标签等大量信息得到的embedding向量)
'''

3.简略观察数据

Train_data.head().append(Train_data.tail())     # 显示开头5行和最后5行
Train_data.shape

Test_data.head().append(Test_data.tail())
Test_data.shape

4.数据总览概况

'''
describe - 包括每列的统计量,个数count,平均值mean,方差std,最小值min,中位数25% 50% 75%及最大值
            看这个信息可以瞬间掌握数据的大概范围以及每个值的异常值得判断
            有时会发现999, 9999, -1等值,这些其实可能都是nan得另一种表达方式
            
info - 了解每列数据得type,有助于了解是否存在除了nan以外得特殊符号异常
'''
Train_data.describe()
Test_data.describe()

Train_data.info()   # 发现model, bodyType, fuelType-缺失的最多, gearbox 这四个特征有缺失值
Test_data.info()    # 发现bodyType, fuelType, gearbox 这三个特征有缺失值


# 我们看下每列存在nan的情况
Train_data.isnull().sum()
Test_data.isnull().sum()

5.我们将训练集的缺失数据可视化

missing = Train_data.isnull().sum()
missing = missing[missing > 0]  # 将有缺失值的列选出
missing.sort_values(inplace=True)   # 升序排序
missing.plot.bar()

在这里插入图片描述
可视化看下缺省值

msno.matrix(Train_data.sample(250))     # sample(250) - 随机抽取250个样本,再以列表的形式返回
msno.bar(Train_data.sample(1000))

在这里插入图片描述

6.异常值检测

Train_data.info()   # 发现除了notRepairedDamage是object类型,其余特征都是数值型数据
# 我们看一下notRepairedDamage里面有什么
Train_data['notRepairedDamage'].value_counts()      # 发现了有'-'的数据,明显是缺失值,我们将它统一替换成nan
Train_data['notRepairedDamage'].replace('-', np.nan, inplace=True)
Train_data['notRepairedDamage'].value_counts()      # 现在都是数值型数据了

重新看一下缺失值

Train_data.isnull().sum()      # 可以发现notRepairedDamage缺失的数据最多,有24324个

把测试集中notRepairedDamage的’-'值也做一下处理

Test_data['notRepairedDamage'].replace('-', np.nan, inplace=True)
Test_data['notRepairedDamage'].value_counts()
Test_data.isnull().sum()        # 发现缺失值最多的也是notRepairedDamage


# 通过这种方法,我们可以发现'seller-销售方' 和'offerType-报价类型' 这两个特征严重倾斜,一般不会对预测有帮助,可以删掉
Train_data['seller'].value_counts()
Train_data['offerType'].value_counts()

del Train_data['seller']
del Train_data['offerType
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值