Python:matplotlib 和 Seaborn 之散点图和相关性 (三十二)

散点图

如果我们想研究两个数字变量之间的关系,通常会选择散点图。在散点图中,每个数据点都单独表示为一个点,x 轴对应一个特征值,y 轴对应另一个特征值。创建散点图的一个基本方式是利用 Matplotlib 的 scatter 函数:

plt.scatter(data = df, x = 'num_var1', y = 'num_var2')

file

可以在这两个变量之间看到一个基本的正向关系,x 轴的值越高,y 轴上的变量值也增大。

替代方法

Seaborn 的 regplot 函数会创建散点图并进行回归函数拟合

sb.regplot(data = df, x = 'num_var1', y = 'num_var2')

file

默认情况下,回归函数是线性的,并包含带阴影的回归估计置信区域。在这种情况下,因为看起来像 log(y) ~ x 关系,因此用原始单位绘制回归线不合适。如果我们不关心回归线,那么可以在 regplot 函数调用中设置 reg_fit = False。否则,如果我们想对观察到的数据关系绘制回归线,需要变换数据,如上节课中所述。

def log_trans(x, inverse = False):
    if not inverse:
        return np.log10(x)
    else:
        return np.power(10, x)

sb.regplot(df['num_var1'], df['num_var2'].apply(log_trans))
tick_locs = [10, 20, 50, 100, 200, 500]
plt.yticks(log_trans(tick_locs), tick_locs)

注意,x 轴和 y 轴值可以直接设为 Series 或数组,而不是参考 dataframe 中的列。

file

为者常成,行者常至