Python二手车价格预测(一)—— 数据处理

本文介绍了一年的数据处理经验,包括删除无效列、填充空值、数值和日期类型转换、二值与One-Hot编码,最终将93738行212列数据降至190列,为机器学习模型奠定基础。


前言

        一年半前写了二手车数据获取的博客,期间经历了给导师做项目、找工作、实习、写论文,终于闲下来可以继续更新数据处理部分了。
        数据获取部分请看这里:Python数据分析-二手车数据用于机器学习二手车价格预测
        相关代码我放在我码云仓库中,感兴趣的同学可以clone、star,链接:码云仓库
        同时,分享我的秘密基地,懂得同学已经拿出手机了,顺便贴个链接:吉吉的机器学习乐园
        不想执行代码获取数据的同学,或着急使用的同学,我都把数据放在秘密基地了。
wxgzh


一、数据

        原始数据维度为:93738*212
        获取时间为:2020年7月25日
原始数据表
        数据处理十分重要,一个机器学习模型预测结果的好坏与数据处理有直接关联。每个人处理数据的思维和方式都不一样,因此本文只是依据我的一些学习经验进行数据处理,给大家当个baseline~


二、处理过程

1.引入库

代码如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import sys
import seaborn as sns
import warnings
import datetime
warnings.filterwarnings("ignore")
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
# 设置可显示的最大行列数量
pd.set_option('display.max_rows', 100,'display.max_columns', 100,"display.max_colwidth",1000,'display.width',1000)

2.读入数据

代码如下:

# 读取数据
data = pd.read_excel("cars_info.xlsx", na_values=np.nan)

3.删除无效列与填充空值

        数据的许多列包含大量的空值和单一数据,当这些数据超过一定量时,对模型来说是无效的,因此先将这一部分数据进行删除。

代码如下:

# 每列数据为空的列,数量大于80000,删除该列(无参考价值)
for c in data.columns:
    if data[c].isna().sum() > 80000:
        data.drop([c], axis=1, inplace=True)
        
# 每列数据为“无”的列,数量大于60000,删除该列(无参考价值)
for c in data.columns:
    if data[c].isin(["无"]).sum() > 60000:
        data.drop([c], axis=1, inplace=True)

# 因为数据本身含有长宽高的单独列,因此“长*宽*高(mm)”列删除
data.drop(['长*宽*高(mm)'], axis=1, inplace=True)

# 数据中许多列都包含“标配”,数量大于60000时无参考价值
for c in data.columns:
    if data[c].isin(["标配"]).sum() > 60000:
        print(c, data[c].isin(["标配"]).sum())
        data.drop([c], axis=1, inplace=True)

# 删除 “售价” 和 “排量” 为空的行
data.dropna(axis=0,subset = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值