本阶段我们主要是通过EDA等方式来了解数据,探索数据的特征。
关于资料有挺多疑问的地方,均在文中用删除线加以注释,并总结放在了最后
一、载入各种库和数据
使用库pandas
来便捷的载入数据,其中path
标识了我们训练集和测试集所在的路径,为了之后的读取更为便捷。
# 导入warnings包,利用过滤器来实现忽略警告语句。
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import missingno as msno
path = 'E:/学习资料/car/'
Train_data = pd.read_csv(path + 'used_car_train.csv', sep=' ') # 文件以空字符分隔数据,若以','分隔数据,则sep=','或省略(源文件都将数据存到了一列里面)
Test_data = pd.read_csv(path + 'used_car_testA.csv', sep=' ')
代码详解:我们通过观察源文件.csv
可以知,所有特征均存储在同一列中,且特征之间以空字符分隔,因此我们在使用pandas.read_csv
读入的时候需要使用关键字sep=' '
实现。sep
默认的是以逗号','
分隔,以后我们读取源文件时必须显示的使用sep=' '
。
下面我们来简略的观察一下源数据。
print(Train_data.head().append(Train_data.tail()))
代码详解:其中Train_data.head()
是获取训练集的前几行特征(默认前5行,如果想调用前10行可用Train_data.head(10)
来实现),Train_data.tail()
是或许训练集的最后几行特征,默认值同样也是后5行。因此我们可以使用上面代码观察原数据集前5行和后5行的数据。其结果如下:
SaleID name regDate model ... v_11 v_12 v_13 v_14
0 0 736 20040402 30.0 ... 2.804097 -2.420821 0.795292 0.914762
1 1 2262 20030301 40.0 ... 2.096338 -1.030483 -1.722674 0.245522
2 2 14874 20040403 115.0 ... 1.803559 1.565330 -0.832687 -0.229963
3 3 71865 19960908 109.0 ... 1.285940 -0.501868 -2.438353 -0.478699
4 4 111080 20120103 110.0 ... 0.910783 0.931110 2.834518 1.923482
149995 149995 163978 20000607 121.0 ... -2.983973 0.589167 -1.304370 -0.302592
149996 149996 184535 20091102 116.0 ... -2.774615 2.553994 0.924196 -0.272160
149997 149997 147587 20101003 60.0 ... -1.630677 2.290197 1.891922 0.414931
149998 149998 45907 20060312 34.0 ... -2.633719 1.414937 0.431981 -1.659014
149999 149999 177672 19990204 19.0 ... -3.179913 0.031724 -1.483350 -0.342674
[10 rows x 31 columns]
我们在用shape
函数观察一下整个训练集数据的“形状”:
print(Train_data.shape)
结果如下所示:
(150000, 31)
综上我们可知,训练集中共有150,000
条数据,每条数据31
个特征值。
我们用同样的方法看一下测试集数据的“形状”,结果如下:
(50000, 30)
因此测试集共有50,000
条数据,每条数据30
个特征值。细心的同学可能发现了测试集的特征数比训练集少了一个,原因是训练集中多的那个特征就是该数据的标签price
。
二、总览数据概况
1. 熟悉数据的相关统计量
通过describe()
来熟悉数据的相关统计量,看max是否有异常值,如99,999
等。
print(Train_data.describe())
结果如下所示:
SaleID name ... v_13 v_14
count 150000.000000 150000.000000 ... 150000.000000 150000.000000
mean 74999.500000 68349.172873 ... 0.000313 -0.000688
std 43301.414527 61103.875095 ...