拿到一个数据后往往毫无头绪,即使已经清楚我们面对的问题是分类、回归,或者是其它,但对于复杂的数据还是不知道该如何下手,这个时候就需要进行探索性的分析啦。探索性数据分析(EDA)是一种分析数据集以概括其主要特征的方法,通常使用可视化方法。
总而言之言而总之,EDA的目的是探索数据的结构,处理数据中的显著异常或缺失,提高数据质量,并初步了解数据中存在的一些规律。
1 数据源
数据来源是天池的一道赛题——二手车价格预测
数据解压后有3个csv文件。其中,训练集有15w条,共有31项(含价格信息);测试集5w条,共30项(不含价格信息);最后一个csv文件写入5w条测试数据对应的预测价格。
在训练集的31列变量中,包括价格在内的16列数据描述汽车的ID、品牌、燃油类型、行驶里程等基本信息,其中对于敏感信息已进行脱敏处理,另有15列是匿名变量。
我们的目标是用15w * 31的数据进行训练,并用5w * 30的数据进行测试,预测价格,与实际价格进行比较,评价指标:MAE(绝对误差均值)越小越好。
显然,这是一个回归问题。好的,开始探索吧~
2 初步探索
需要用pandas、numpy、matplotlib、seaborn、scipy等。
train_data = pd.read_csv(…)导入数据。
train_data.head()、train_data.tail()、train_data.shape概览数据。
train_data.describle()查看数据基本统计信息,train_data.info()查看各列数据类型(查看各列的类型有助于了解数据中是否存在除NaN以外的数据异常)。
train_data.isnull().sum()判断各项数据中存在多少空值。
train_data.isnull().sum().plot.bar(),matplotlib.pyplot.show()以柱状图的形式可视化各项中的null。
train_data[‘price’]查看该项的分布情况,也可以seaborn.displot(train_data[‘price’], kde=False, fit=st.johnsonsu)将其可视化。
skew()查看各项数据的偏度,kurt()查看各项的峰度。
train_data.corr()[‘price’]查看各项与price的相关性。