天池二手车价格预测比赛(一)——数据分析步骤

一、数据读取及浏览

1.数据读取
a.设置展示的行数和列数
pd.set_option('max_columns', None)
pd.set_option('max_rows', 100)
b.读取数据
# 部分默认参数
pd.read_csv(sep=',',  index_col=None,  encoding=None)
2.数据概览
a.观察部分数据
# append方法
Train_data.head(3).append(Train_data.tail(3)).append(Train_data.sample(3))
Test_data.head(3).append(Test_data.tail(3)).append(Test_data.sample(3))
b.查看数据类型和缺失值情况
Train_data.info()
Test_data.info()
c.查看数据的取值是否合理(异常值)以及数据的大致分布
# 只针对数值型数据(int 和 float),不包括object;缺失数据是不计数、不统计的
Train_data.describe()
Test_data.describe()

二、EDA-探索性数据分析

养成看数据集的head()以及shape的习惯,防止某一步出错造成的连串错误!!!
训练集和测试集都看!!!

1.数据缺失和异常分析
a.查看每个特征的缺失情况
# isnull对df操作,sum的默认axis=0,然后降序排列
missing_train = Train_data.isnull().sum().sort_values(ascending=False)
# Series的条件过滤,只展示有缺失值的特征
missing_train[missing_train > 0]
# 没必要的,缺失值的pandas作图,条形图
missing_train[missing_train > 0].plot.bar()

缺失值分析的目的在于:判断缺失值(nan)的个数,如果很小一般选择填充,如果使用lgb等树模型可以直接空缺,让树自己去优化,但如果nan存在的过多、可以考虑删掉;一般的百分比界限是??

新的缺失值分析库,分析缺失值

import missingno as msno 

# 随机取些数据,可视化看下缺省值,白线越多说明缺失越严重,最右边的折线不知道是什么含义,百度也没找到
msno.matrix(Train_data.sample(250))
# 随机取些数据,计算每个特征的非缺失数量
msno.bar(Train_data.sample(1000))

缺失值里面,如果有的缺失值不是nan,而是特殊的符号,如’-’,那么isnull()函数是无法检测出来的!!!

b.异常值检测

本文中除了notRepairedDamage 特征为object类型外,其他都为数字,对该特征进行查看

统计特征的每个取值及其数量

Train_data['notRepairedDamage'].value_counts().sort_values(ascending=False)

异常值的替换:‘ - ’也为空缺值,对其进行替换,训练集和测试集都处理

Train_data['notRepairedDamage'].replace('-', np.nan, inplace=True)
Test_data['notRepairedDamage'].replace('-', np.nan, inplace=True)
c.无用特征的识别和删除

只需要看训练数据的,但是测试数据对应的也要删除!!

#以下两个类别特征严重倾斜,一般不会对预测有什么帮助,继续挖掘的意义不大,故先删掉
Train_data["seller"].value_counts()  # 两个特征值的数量比是1499991
Train_data["offerType"].value_counts() # 只有一个特征值

del Train_data["seller"]
del Train_data["offerType"]
del Test_data["seller"]
del Test_data["offerType"]
2.查看预测目标的分布
a.统计每个取值及其数量
Train_data['price'].value_counts().sort_values(ascending=False)
b. 用各种不同的分布去拟合数据

需要累积分布经验

import scipy.stats as st

y = Train_data['price']
# 无界约翰逊分布
plt.figure(1)
plt.title('Johnson SU')
sns.distplot(y, kde=False, fit=st.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值