导读:本文会介绍一些技术,帮你更好地理解数据,以及探索特征之间的关系。
本文使用Python建立对数据的理解。我们会分析变量的分布,捋清特征之间的关系。最后,你会学习给样本分层,并将数据集拆分成测试集与训练集。
作者:托马兹·卓巴斯(Tomasz Drabas)
如需转载请联系大数据(ID:hzdashuju)
01 生成描述性的统计数据
要完全理解任何随机变量的分布,我们需要知道其平均数与标准差、最小值与最大值、中位数、四分位数、偏度和峰度。
1. 准备
要实践本技巧,你只需装好pandas模块。此外没有要求了。
2. 怎么做
下面的代码可以快速达成对数据的初步理解。假设数据已从CSV文件读出,并存于csv_read变量(data_describe.py文件)中:
csv_desc = csv_read[
[
'beds', 'baths', 'sq_tf', 'price', 's_price',
'n_price', 's_sq__ft', 'n_sq__ft', 'b_price',
'p_price', 'd_Condo', 'd_Multi-Family',
'd_Residential', 'd_Unkown'
]
].describe().transpose()
# 加上偏度,众数与峰度
csv_desc['skew'] = csv_read.skew(numeric_only=True)
csv_desc['mode'] = csv_read.mode(numeric_only=True).transpose()
csv_desc['kurtosis'] = csv_read.kurt(numeric_only=True)
3. 原理
pandas有个很管用的.describe()方法,它替我们做了大部分的工作。这个方法能生成我们想要的大部分描述变量;输出看起来是这样的(为清晰做了相应简化):
beds
count 981.000000
mean 2.914373
std 1.306502
min 0.000000
25% 2.000000
50% 3.000000
75% 4.000000
max 8.000000
DataFrame对象的索引标明了描述性统计数据的名字,每一列代表我们数据集中一个特定的变量。不过,我们还缺偏度、峰度和众数。为了更方便地加入csv_desc变量,我们使用.transpose()移项了.describe()方法的输出结果,使得变量放在索引里,每一列代表描述性的变量。
你也可以手动计算平均数、标准差及其他描述性的统计数据。可用的方法列表见:
http://pandas.pydata.org/pandas-docs/stable/api.html#api-dataframe-stats
有了基础的统计数据,我们可以补上其他的。要留意的是,.skew(...)和.kurt(...)方法以类似的格式返回数据,而.mode(...)不然;.mode(...)方法返回的数据要进行调整,以便和.describe()方法的输出格式保持一致。