import pandasas pd
import numpyas np
import sklearn
from sklearnimport metrics
import matplotlib.pyplotas plt
import seabornas sns
import missingnoas msno
#1.载入数据 打印前10行看看 且全部打印 不会...
pd.set_option("display.max.columns",100)
Train_data=pd.read_csv("/Users/macos/Desktop/tianchi_data/car_train_0110.csv",sep=" ")
Test_data=pd.read_csv("/Users/macos/Desktop/tianchi_data/car_testA_0110.csv",sep=" ")
#注意:这两个csv是以空格间隔的,所以sep=" "
print(Train_data.head(10))
print(Test_data.head(10))
#了解数据条数和列数
print("训练集(条数,列数)",Train_data.shape)
print("测试集(条数,列数)",Test_data.shape)
print(Train_data.head())
#会自动取前5行给你看看
#简略观察数据
#(head()+shape)
print(Train_data.head().append(Train_data.tail()))
print(Train_data.shape)
print(Test_data.head().append(Test_data.tail()))
print(Test_data.shape)
#总览数据概况
#describe熟悉每一列值的各种统计量
#describe:个数count、平均值mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值
#瞬间掌握数据的大概范围以及每个列的异常值的判断,比如有的时候会发现999 9999 -1 等值其实是nan的另外一种表达方式,需要注意
print(Train_data.describe())
print(Test_data.describe())
#info通过info来了解数据每列的type
#有助于了解是否存在除了nan以外的特殊符号异常
print(Train_data.info())
print(Test_data.info())
#判断数据缺失和异常
##查看每列的存在nan情况
print(Train_data.isnull().sum())
# model 1
# bodyType 4506
# fuelType 8680
# gearbox 5981
print(Test_data.isnull().sum())
# bodyType 1413
# fuelType 2893
# gearbox 1910
##将nan可视化,画出条形图
missing_value = Train_data.isnull().sum()
missing_value = missing_value[missing_value >0]
print(missing_value)
#一共有四列有缺省值,这四列的缺省总数为
# bodyType 25380
# fuelType 22490
# gearbox 13513
# notRepairedDamage 48536
missing_value.sort_values(inplace=True)
#这里是按照缺失总值大小把这四个列排升序 便于条形图好看 不用赋值回去
missing_value.plot.bar()
plt.xticks(rotation=15)
plt.show()
#为什么打印nan呢?
#判断nan存在的个数是否真的很大?
#1.如果很小一般选择填充,比如使用lgb等树模型可以直接空缺,让树自己去优化。
#2.但如果nan个数确实太大,可以考虑删掉。
# 可视化看下缺省值
msno.matrix(Train_data.sample(250))
plt.show()
msno.bar(Train_data.sample(1000))
plt.show()