Task2
一、赛题的理解
- 确定问题的分类。是分类,回归,还是topk等问题
- 背景分析(赛题背景可能包含一些重要的隐藏信息,对数据的清洗有很大的帮助)
- 对模型的性能要求
- 判断某些值是否合理,异常值,
- 是否遗漏了某些属性
二、数据的解析
1.载入数据
import pandas as pd
import numpy as numpy
import os
path='C:\\Users\\Aishuilife\\Desktop\\二手车\\data'
train_path=os.path.join(path,"used_car_train_20200313.csv")
test_path=os.path.join(path,"used_car_testA_20200313.csv")
Train_data=pd.read_csv(train_path,sep=" ")
Test_data=pd.read_csv(test_path,sep=" ")
print('Train data shape:',Train_data.shape)
print('TestA data shape:',Test_data.shape)
2.数据总体分析
- 通过info()函数查看数据类型
- 通过describe函数查看数据的相关统计量,对于数据分布进行初步了解
3.判断数据缺失和异常
-
#%%判断缺失值和异常值 Train_data.isnull().sum() #%% Test_data.isnull().sum() #%%nan可视化 missing=Train_data.isnull().sum(); missing=missing[missing>0] missing.sort_values(inplace=True) missing.plot.bar() plt.show()
#采样查看属性的缺省值 msno.matrix(Train_data.sample(250))
通过以上两句可以很直观的了解哪些列存在 “nan”, 并可以把nan的个数打印,主要的目的在于 nan存在的个数是
否真的很大,如果很小一般选择填充,如果使用lgb等树模型可以直接空缺,让树自己去优化,但如果nan存在的
过多、可以考虑删掉
2.异常值
- 通过info()函数可以查看属性得数值类型,可以发现notRepairedDamage 为object类型
- 可以使用 value_counts() 函数 查看某一属性具体值得分布
Train_data['notRepairedDamage'].value_counts()
‘ - ’也为空缺值,因为很多模型对nan有直接的处理,这里我们先不做处理,先替换成nan
Train_data['notRepairedDamage'].replace('-', np.nan, inplace=True)