はじめに
このチュートリアルでは、pandasのDataFrame dropna()
関数の使い方を学びます。
NA
値は「利用不可」を意味します。これは Null
、None
、pandas.NaT
、または numpy.nan
に該当します。dropna()
を使用すると、これらの値を持つ行や列が削除されます。これにより、有効なデータのみが提供されるようになります。
デフォルトでは、この関数は新しいDataFrameを返し、ソースDataFrameは変更されません。
このチュートリアルは Python 3.10.9、pandas 1.5.2、NumPy 1.24.1 で検証されました。
構文
dropna()
は以下のパラメータを取ります:
axis
:{0(または 'index')、1(または 'columns')}、デフォルトは 0
0
の場合、欠損値を持つ行を削除します。1
の場合、欠損値を持つ列を削除します。how
:{'any'、'all'}、デフォルトは 'any'
'any'
の場合、値のいずれかがNA
の場合、行または列を削除します。'all'
の場合、すべての値がNA
の場合、行または列を削除します。thresh
:(オプション)ドロップ操作の閾値を指定するint
値。subset
:(オプション)行または列を指定する列ラベルまたはラベルのシーケンス。inplace
:(オプション)bool
値。True
の場合、元のDataFrameが変更され、None
が返されます。
サンプルDataFrameの構築
有効な値と無効な値を含むサンプルDataFrameを構築します:
このコードはDataFrameを出力します:
OutputName ID Population Regions
0 Shark 1 100 1
1 Whale 2 200 None
2 Jellyfish 3 NaN NaT
3 Starfish 4 NaT NaT
次に、NA
値を持つ追加の行と列を持つ2番目のDataFrameを追加します:
これにより、新しいDataFrameが出力されます:
OutputName ID Population Regions Endangered
0 Shark 1 100 1 NaT
1 Whale 2 200 None NaT
2 Jellyfish 3 NaN NaT NaT
3 Starfish 4 NaT NaT NaT
4 NaT NaT NaT NaT NaT
以下の例で前述のDataFrameを使用します。
欠損値を持つすべての行を削除する
dropna()
を使用して、None
、NaN
、またはNaT
値を含む行を削除します:
これにより、次の出力が生成されます:
OutputName ID Population Regions
0 Shark 1 100 1
A new DataFrame with a single row that didn’t contain any NA
values.
欠損値を持つすべての列を削除する
axis=1
を使用してdropna()
を使用し、None
、NaN
、またはNaT
値を持つ列を削除します:
任意のNone
、NaN
、またはNaT
値を含む列が削除されます:
OutputName ID
0 Shark 1
1 Whale 2
2 Jellyfish 3
3 Starfish 4
A new DataFrame with a single column that contained non-NA
values.
すべての値がNull
の場合、行または列を削除するhow
2番目のDataFrameとhow
を使用します:
NA
と等しいall
値を持つ行が削除されます:
OutputName ID Population Regions Endangered
0 Shark 1 100 1 NaT
1 Whale 2 200 None NaT
2 Jellyfish 3 NaN NaT NaT
3 Starfish 4 NaT NaT NaT
5行目が削除されました。
次に、how
を使用してaxis
を指定します:
NA
と等しいall
値を持つ列が削除されます:
OutputName ID Population Regions
0 Shark 1 100 1
1 Whale 2 200 None
2 Jellyfish 3 NaN NaT
3 Starfish 4 NaT NaT
4 NaT NaT NaT NaT
5列目が削除されました。
しきい値がクロスされた場合に行または列を削除する
thresh
を使用して、少なくとも3
つの非NA
値のしきい値を満たさない行を削除します:
OutputName ID Population Regions Endangered
0 Shark 1 100 1 NaT
1 Whale 2 200 None NaT
3
つの非NA
値が少なくとも含まれていない行が削除されます:
特定のサブセット
のために行または列を削除する
subset
を使用して、Population
列にNA
値が含まれる行を削除するために、2番目のDataFrameを使用します:
Population
にNA
値が含まれる行が削除されます:
OutputName ID Population Regions Endangered
0 Shark 1 100 1 NaT
1 Whale 2 200 None NaT
データフレームから列を削除するときに、subset
内のindex
値も指定できます:
行1
および2
のサブセット内のNA
値を含む列が削除されます:
OutputName ID
0 Shark 1
1 Whale 2
2 Jellyfish 3
3 Starfish 4
4 NaT NaT
3番目、4番目、および5番目の列が削除されました。
行または列をinplace
で削除した後のソースDataFrameの変更
デフォルトでは、dropna()
はソースDataFrameを変更しません。ただし、大きなソースDataFrameで作業する際にメモリを節約したい場合は、inplace
を使用することがあります。
このコードはdfresult
変数を使用しません。
これにより、次のように出力されます:
OutputName ID Population Regions
0 Shark 1 100 1
元のDataFrameが変更されました。
結論
この記事では、NA
値を持つ行や列を削除するためにdropna()
関数を使用しました。
Pythonとpandasのさらなるチュートリアルで学習を続けてください – Python pandasモジュールチュートリアル、pandas重複行の削除。
参照
Source:
https://www.digitalocean.com/community/tutorials/pandas-dropna-drop-null-na-values-from-dataframe