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()
# 缺省值可视化
msno.matrix(Train_data.sample(250))
msno.bar(Train_data.sample(1000))
可视化有四列有缺省,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 数据分析