如何绘制 Pandas Dataframe 中每列的空值计数

dea*_*ock 1 python dataframe pandas

我有一个数据框(df),如下所示

    Column1 Column2 ...
0      1       1    
1    Null      1
.
.
Run Code Online (Sandbox Code Playgroud)

我想绘制每列中空值的计数

目前,我正在做

    Column1 Column2 ...
0      1       1    
1    Null      1
.
.
Run Code Online (Sandbox Code Playgroud)

每列中的空值计数

问题是大约有 180 列,其中大多数有 0 个空值,我想在绘图时忽略这些列。

我尝试了以下似乎不起作用

    df.isnull().sum().plot.bar()
    plt.show()
Run Code Online (Sandbox Code Playgroud)

新剧情

Voj*_*tas 12

我想向您提供我在几乎每台笔记本中使用的万无一失的解决方案:

import matplotlib.pyplot as plt
def plot_nas(df: pd.DataFrame):
    if df.isnull().sum().sum() != 0:
        na_df = (df.isnull().sum() / len(df)) * 100      
        na_df = na_df.drop(na_df[na_df == 0].index).sort_values(ascending=False)
        missing_data = pd.DataFrame({'Missing Ratio %' :na_df})
        missing_data.plot(kind = "barh")
        plt.show()
    else:
        print('No NAs found')
plot_nas(df)
Run Code Online (Sandbox Code Playgroud)

解决方案

您可以按如下方式更改图表的大小:

plot_width, plot_height = (16,18)
plt.rcParams['figure.figsize'] = (plot_width,plot_height)
Run Code Online (Sandbox Code Playgroud)


小智 7

如果您需要每列中的 NaN 计数,即具有 NaN 并获取条形图,则下一个代码可能会有所帮助:

df.isna().sum()[df.isna().sum()>0].plot(kind='bar')
Run Code Online (Sandbox Code Playgroud)