Data Analysis 总结笔记:EDA
Exploratory data analysis (EDA) 是一种分析数据的方法。通常用于建模之前,以便总结数据的主要特征,从而更好的了解数据集,提取各变量之间的关系。
以下将总结几种常用的方法。
Descriptive Statistics
通常在开始分析数据时,我们会粗略的浏览一下数据,而 Descriptive Statistics 有助于描述数据集的基本特征。
# for numeric variables
DataFrame.describe(percentiles=None, include=None, exclude=None, datetime_is_numeric=False)
# for categorical variables
DataFrame.value_counts(subset=None, normalize=False, sort=True, ascending=False, dropna=True)[source]
box plot 是观察数值型数据的好方法。我们可以通过箱形图查看变量的数据分布。如果我们想观察两个变量之间的关系,那么可以选择 scatter plot。
# box plot
seaborn.boxplot(*, x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True, fliersize=5, linewidth=None, whis=1.5, ax=None, **kwargs)
# scatter plot
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
Grouping Data
当数据集含有分类变量的时候,我们通常会尝试根据该变量的不同类别将数据分组为多个子集进行分析。我们可以按单个变量进行分组,也可以按多个变量进行分组。
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=NoDefault.no_default, observed=False, dropna=True)
但是有时候分组后得到的数据并不是那么容易查看和理解,因此我们可以生成数据透视表以便查看。
DataFrame.pivot(index=None, columns=None, values=None)
亦或者我们可以生成 heatmap 来查看。heatmap 能更方便地观察一个变量与多个变量之间的关系。
matplotlib.pyplot.pcolor(*args, shading=None, alpha=None, norm=None, cmap=None, vmin=None, vmax=None, data=None, **kwargs)
Correlation
相关性是一个统计指标,用于衡量不同变量之间相互依赖的程度。(注意的是相关性并不是因果性。)
我们可以绘制回归线来了解两个变量是否具有相关性,是正相关和负相关。
seaborn.regplot(*, x=None, y=None, data=None, x_estimator=None, x_bins=None, x_ci='ci', scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, seed=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=True, dropna=True, x_jitter=None, y_jitter=None, label=None, color=None, marker='o', scatter_kws=None, line_kws=None, ax=None)
对于连续数值型变量之间的相关性,我们用 Pearson Correlation 来进行测量。Pearson Correlation 将会提供两个值, 一是 correlation coefficient(相关系数), 二是 P-value。 如果 correlation coefficient 接近1,表示两个变量之间较大的正相关性;如果接近-1,表示两者之间较大的负相关性;如果接近0,表示两者之间相关性不大。而 P-value 则用于衡量相关性的确定程度。对于 P-value 如果 P < 0.001 则表示计算的 correlation coefficient 的可信度高;如果 0.001 < P < 0.05,则表示具有中等的可信度;如果 0.05 < P < 0.1,则表示可信度较低;如果 P > 0.1,则表示不可信。
scipy.stats.pearsonr(x, y)
对于类别型变量之间的相关性,我们可以用卡方检验来测量。使用卡方检验旨在检测两个变量是否独立不相关。若 P < 0.05 则拒绝两变量是独立的原假设。
scipy.stats.chi2_contingency(observed, correction=True, lambda_=None)