本文主要是介绍Task2 Data Whale活动:EDA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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()
# 缺省值可视化
msno.matrix(Train_data.sample(250))
msno.bar(Train_data.sample(1000))
可视化有四列有缺省,notRepairedDamage缺省的最多
检测异常值,除了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生成数据报告,分析html文件。后面再自己做更细致的分析
用pandas_profiling生成数据报告。大概半小时后,打开生成的html文件分析数据报告
import pandas_profiling
pfr = pandas_profiling.ProfileReport(Train_data)
pfr.to_file("./example.html")
这篇关于Task2 Data Whale活动:EDA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!