一. 任务内容
- 载入各种数据科学以及可视化库:
- 数据科学库 pandas、numpy、scipy;
- 可视化库 matplotlib、seabon;
- 其他;
- 载入数据:
- 载入训练集和测试集;
- 简略观察数据(head()+shape);
- 数据总览:
- 通过describe()来熟悉数据的相关统计量
- 通过info()来熟悉数据类型
- 判断数据缺失和异常
- 查看每列的存在nan情况
- 异常值检测
- 了解预测值的分布
- 总体分布概况(无界约翰逊分布等)
- 查看skewness and kurtosis
- 查看预测值的具体频数
- 特征分为类别特征和数字特征,并对类别特征查7. 看unique分布
- 数字特征分析
- 相关性分析
- 查看几个特征得 偏度和峰值
- 每个数字特征得分布可视化
- 数字特征相互之间的关系可视化
- 多变量互相回归关系可视化
- 类型特征分析
- unique分布
- 类别特征箱形图可视化
- 类别特征的小提琴图可视化
- 类别特征的柱形图可视化类别
- 特征的每个类别频数可视化(count_plot)
- 用pandas_profiling生成数据报告
以上内容可参考天池文章
二. 一些知识点
偏度(Skewness)
偏度是用来度量随机变量概率分布的不对称性。
偏度<0时,概率分布图左偏。
偏度=0时,表示数据均匀分布在平均值两侧,但不一定是对称分布。
偏度>0时,概率分布图右偏。峰度(Kurtosis)
峰度可以用来度量随机变量概率分布的陡峭程度。
峰度的取值范围为[1, +∞),完全服从正态分布的数据的峰度值为3,峰度值越大,概率分布图越高、越尖,峰度值越小,越矮胖。
通常将峰度值减去3,也被称为超值峰度(Excess Kurtosis),这样正态分布的峰度值等于0,当峰度值>0,则表示该数据分布与正态分布相比较为高尖,当峰度值<0,则表示该数据分布与正态分布相比较为矮胖。
三、Tips
- 查看数据缺少值
train_data.isnull().sum()
- NaN可视化
msno.matrix(Train_data.sample(250))
- 数据分布情况
包括:无界约翰逊分布、正态分布、对数分布import scipy.stats as st y = Train_data['price'] plt.figure(1); plt.title('Johnson SU') sns.distplot(y, kde=False, fit=st.johnsonsu) plt.figure(2); plt.title('Normal') sns.distplot(y, kde=False, fit=st.norm) plt.figure(3); plt.title('Log Normal') sns.distplot(y, kde=False, fit=st.lognorm)
image.png
- 相关性可视化分析
相关性可以用sns包中heatmap、barplot实现数据之间的相关性;可以使用 sns.pairplot观察成对变量之间的分布情况。
heatmap:f , ax = plt.subplots(figsize = (7, 7)) plt.title('Correlation of Numeric Features with Price',y=1,size=16) sns.heatmap(correlation,square = True, vmax=0.8)
image.png
pairplot:
sns.set()
columns = ['price', 'v_12', 'v_8' , 'v_0', 'power', 'v_5', 'v_2', 'v_6', 'v_1', 'v_14']
sns.pairplot(Train_data[columns],size = 2 ,kind ='scatter',diag_kind='kde')
plt.show()
image.png