palette = ['#302c36', '#037d97', '#E4591E', '#C09741',
'#EC5B6D', '#90A6B1', '#6ca957', '#D8E3E2']
fig, ax = plt.subplots(n_rows, n_cols, figsize=(20, n_rows*4))
ax = ax.flatten() # 将ax由n*m的Axes组展平成1*nm的Axes组 拉平后方便单个变量直接遍历
ax[i].set_title(f'{column} Distribution') # 给子图写标题
ax[i].set_xlabel(None) # 是否设置子图的x轴名称
用来估计未知的密度函数,属于非参数检验方法之一。通过核密度估计图可以比较直观的看出数据样本本身的分布特征。
sns.kdeplot(
train[column], label='Train',
ax=ax[i], color=palette[0] # 使用ax = ax.flatten()将ax拉平了 否则应使用ax[i, j]来进行定位
)
集合了matplotlib的hist()与核函数估计kdeplot的功能,增加了rugplot分布观测条显示与利用scipy库fit拟合参数分布的新颖用途。
sns.distplot(x,ax=axes[0]) # 直方图与密度分布图都显示
sns.distplot(x,hist=False,ax=axes[1]) # 只显示密度分布
sns.distplot(x,kde=False,ax=axes[2]) # 只显示直方图
sns.histplot(
data=train,
x="cost",
hue=ft, # 绘制分组直方图 值是对应数据的列名
multiple="stack", # 分组直方图的展示形式 这里是堆叠
palette=palette, # 调色盘
edgecolor=".3",
linewidth=.5,
log_scale=True,
ax=ax[i],
)
def plot_correlation_heatmap(df: pd.core.frame.DataFrame, title_name: str='Train correlation') -> None:
"""Draws the correlation heatmap plot.
Args:
df: train or test dataframes
title_name: 'Train' or 'Test' (default 'Train correlation')
Returns:
subplots of size (len(col_list), 2)
"""
corr = df.corr()
fig, axes = plt.subplots(figsize=(20, 15))
mask = np.zeros_like(corr) # 获得一个跟corr一样大小的全零ndarray
mask[np.triu_indices_from(mask)] = True # 获得上三角矩阵索引 为了画热度图时只画下三角 不重复画上三角
sns.heatmap(corr, mask=mask, linewidths=.5, cmap=palette[5:][::-2] + palette[1:3], annot=True)
plt.title(title_name)
plt.show()