欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Task2 数据分析 - 副本

程序员文章站 2022-07-14 10:54:30
...

Task2 Data Whale活动:EDA

  • 分析变量间的相互关系,变量与预测值间可能存在的关系,绘制图表。
  • 赛题地址:https://tianchi.aliyun.com/competition/entrance/231784/introduction?spm=5176.12281957.1004.1.38b02448ausjSX

赛题数据集变量描述

Field Description
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个匿名特征

操作中的小问题:

*导入warnings包,利用过滤器来实现忽略警告语句。

import warnings

filterwarnings(‘ignore’)

*missingno ,pandas_profiling 在conda包里没有,要pip install。

初步处理nan和缺失值

# nan个数可视化
missing = Train_data.isnull().sum() # 如果很小一般选择填充
missing = missing[missing > 0]      # 如果使用lgb等树模型可以直接空缺,让树自己去优化
missing.sort_values(inplace=True)   # 如果nan存在的过多、可以考虑删掉
missing.plot.bar()

Task2 数据分析 - 副本

# 缺省值可视化
msno.matrix(Train_data.sample(250))

Task2 数据分析 - 副本

msno.bar(Train_data.sample(1000))

Task2 数据分析 - 副本

可视化有四列有缺省,notRepairedDamage缺省得最多

2) 查看异常值检测 除了notRepairedDamage 为object类型其他都为数字

Train_data['notRepairedDamage'].value_counts()
0.0    111361
-       24324
1.0     14315
Name: notRepairedDamage, dtype: int64

可以看出来‘ - ’也为空缺值,因为很多模型对nan有直接的处理,这里我们先不做处理,先替换成nan

Train_data['notRepairedDamage'].replace('-', np.nan, inplace=True)
Train_data['notRepairedDamage'].value_counts()
0.0    111361
1.0     14315
Name: notRepairedDamage, dtype: int64

以下两个类别特征严重倾斜,一般不会对预测有什么帮助,删掉

Train_data["seller"].value_counts()
0    149999
1         1
Name: seller, dtype: int64
Train_data["offerType"].value_counts()
0    150000
Name: offerType, dtype: int64
del Train_data["seller"]
del Train_data["offerType"]
del Test_data["seller"]
del Test_data["offerType"]

用pandas_profiling生成数据报告

用pandas_profiling生成数据报告。大概半小时后,打开生成的html文件分析数据报告

import pandas_profiling
pfr = pandas_profiling.ProfileReport(Train_data)
pfr.to_file("./example.html")

Task2 数据分析 - 副本