这段代码用于创建一个新的 matplotlib 图形和轴对象,以便使用 seaborn 库绘制缺失值直方图。

def plot_missing(df: pd.DataFrame, name: str):
    nrows, ncols = df.shape
    notna_df = df.notna().sum().to_frame().T
    percent_notna_df = (notna_df / nrows) * 100
    fig, ax = plt.subplots(1, 1, figsize=(7, ncols * 0.25))
    sns.barplot(percent_notna_df, orient='h', ax=ax)
    ax.set_xlim(0, 110)
    ax.bar_label(ax.containers[0], fmt='%.2f');
    ax.set_title(f'Percentage of Non Null Values in {name}')
    ax.set_xlabel('%')
    ax.set_ylabel('Column')

代码解释:

  • fig, ax = plt.subplots(1, 1, figsize=(7, ncols * 0.25))

    • plt.subplots(1, 1) 创建一个包含一个子图的图形对象,并返回图形对象 fig 和轴对象 ax
    • figsize=(7, ncols * 0.25) 设置图形的大小,宽度为 7 英寸,高度为列数 ncols 的 0.25 倍,以确保直方图能够清晰显示所有列。
  • sns.barplot(percent_notna_df, orient='h', ax=ax)

    • 使用 seaborn 库的 barplot 函数绘制水平条形图,显示每个列的非空值百分比。
    • orient='h' 设置条形图方向为水平。
    • ax=ax 指定将图形绘制在之前创建的轴对象 ax 上。
  • ax.set_xlim(0, 110)

    • 设置 x 轴范围为 0% 到 110%,以便直方图能够完整显示。
  • ax.bar_label(ax.containers[0], fmt='%.2f')

    • 在每个条形图上显示非空值百分比,保留两位小数。
  • ax.set_title(...), ax.set_xlabel(...), ax.set_ylabel(...)

    • 设置图形标题和轴标签,以便用户理解直方图内容。

示例:

假设我们有一个 DataFrame df 包含 10 列,则 ncols 等于 10。figsize 参数将计算出轴对象的高度为 2.5 英寸 (10 * 0.25),图形对象的宽度为 7 英寸。最终,figax 变量将分别指向新创建的图形和轴对象。

通过使用这个代码,您可以轻松地创建缺失值直方图,并直观地了解您的 DataFrame 中每个列的非空值百分比。这对于数据分析和处理非常有用,例如,您可以根据缺失值情况选择合适的处理方法,如删除缺失值或填充缺失值。

Python 可视化缺失值:使用 matplotlib 和 seaborn 创建直方图

原文地址: https://www.cveoy.top/t/topic/n804 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录