Учитывая DataFrame, я хотел бы подсчитать количество значений NaN в каждом столбце, чтобы показать пропорцию в виде гистограммы.

Я придумал

df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
nan_dict = {}
for col in df:
    nan_dict[col] = df[col].value_counts(dropna=False)[0]

А затем построить гистограмму из dict. Это кажется действительно громоздким; также он не работает, когда нет NaN s.

Есть ли способ применить value_counts ко всем столбцам, чтобы получить обратно Series со значениями NaN для каждого столбца?

3
Zubo 4 Май 2021 в 01:38

1 ответ

Лучший ответ
df = pd.DataFrame({"col1": [1, 2], "col2": [3, 4]})
print(dict(zip(df.columns, df.isna().sum())))

Печать:

{'col1': 0, 'col2': 0}

Для фрейма данных:

   col1  col2
0     1   3.0
1     2   NaN

Печать:

{'col1': 0, 'col2': 1}
2
Andrej Kesely 3 Май 2021 в 22:40