列単位で欠損値(NaN)があるか確認するなら
全てNaNの列がないか確認します。 私はこれをNaNを列にひとつでも含んでいる場合の命令だと勘違いし、ハマったことがあります。
print(df.isnull().all())
欠損値(NaN)をひとつでも含んでいたら
だいたいこれで、ワーっとNaNが出てきてアーとなります。
print(df.isnull().any())
欠損値(NaN)の数をカウントするなら
こればかり使っています。 これで個数が見えて、ハァ?となります。
print(df.isnull().sum())
最初の分析時は、大雑把に欠損値を埋めてしまって、分析が動くところまで持っていきます。 その後、データの素性を洗い出しながら、クライアント側の知識を引き出し開発を進めます。