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

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

被折叠的 条评论
为什么被折叠?



