Python 可视化缺失值:使用 matplotlib 和 seaborn 创建直方图
这段代码用于创建一个新的 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上。
- 使用 seaborn 库的
-
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 英寸。最终,fig 和 ax 变量将分别指向新创建的图形和轴对象。
通过使用这个代码,您可以轻松地创建缺失值直方图,并直观地了解您的 DataFrame 中每个列的非空值百分比。这对于数据分析和处理非常有用,例如,您可以根据缺失值情况选择合适的处理方法,如删除缺失值或填充缺失值。
原文地址: https://www.cveoy.top/t/topic/n804 著作权归作者所有。请勿转载和采集!