I am using the following code:
sns.displot(
    data=df.isna().melt(value_name="missing"),
    y="variable",
    hue="missing",
    multiple="fill",
    height=16
)
plt.show()
to create a heatmap of missing values of the df. However since my df has a lot of columns, the chart has to be very tall in order to accommodate all the information. I tried altering the data argument to be something like this:
data = df[df.columns.values.isna()].isna() or data = df[df.isna().sum() > 0].isna() so basically, I want to filter the dataframe to have only columns with at least one missing value. I tried looking for a correct answer but couldn’t find it.
Advertisement
Answer
Nearly there. To select all columns with at least one missing value, use:
df[df.columns[df.isna().any()]]
Alternatively, you could use .sum() and then choose some threshold:
threshold = 0 df[df.columns[df.isna().sum() > threshold]]
And then append .isna().melt(value_name="missing") for your data var.
 
						