【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方
PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。
前提:NaNを含むCSVファイル
今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。

手順1:read_csv()でCSVファイルを読み込む
まずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存されたファイルを指定しています。
dataFrame = pd.read_csv("C:/Users/amit_/Desktop/CarRecords.csv")手順2:dropna()でnull行を削除する
続いて、dropna()を呼び出すだけで、NaNを1つでも含む行がすべて削除されます。
dataFrame = dataFrame.dropna()
完全なサンプルコード
以下が全体のコードです。削除前後でDataFrameの形状(行数・列数)も確認できるようにしています。
import pandas as pd
# CSVファイルを読み込む
dataFrame = pd.read_csv("C:/Users/amit_/Desktop/CarRecords.csv")
print("DataFrame...
",dataFrame)
# DataFrameの行数と列数を確認
print("
Number of rows and column in our DataFrame = ",dataFrame.shape)
# null(NaN)を含む行を削除
dataFrame = dataFrame.dropna()
print("
DataFrame after removing null values...
",dataFrame)
print("
(Updated) Number of rows and column in our DataFrame = ",dataFrame.shape)実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame... Car Place UnitsSold 0 Audi Bangalore 80.0 1 Porsche Mumbai 110.0 2 RollsRoyce Pune NaN 3 BMW Delhi 200.0 4 Mercedes Hyderabad 80.0 5 Lamborghini Chandigarh NaN 6 Audi Mumbai NaN 7 Mercedes Pune 120.0 8 Lamborghini Delhi 100.0 Number of rows and column in our DataFrame = (9, 3) DataFrame after removing null values... Car Place UnitsSold 0 Audi Bangalore 80.0 1 Porsche Mumbai 110.0 3 BMW Delhi 200.0 4 Mercedes Hyderabad 80.0 7 Mercedes Pune 120.0 8 Lamborghini Delhi 100.0 (Updated) Number of rows and column in our DataFrame = (6, 3)
元のDataFrameは9行でしたが、UnitsSold列がNaNだった2行と6行が削除され、6行になりました。インデックス番号は元のまま維持される点にも注意してください。
補足:dropna()の便利なパラメータ
dropna()はデフォルトで「1つでもNaNを含む行」を削除しますが、引数を指定することで柔軟に挙動を制御できます。
- how="all":すべての値がNaNである行のみ削除する
- subset=["列名"]:特定の列のNaNだけを削除対象にする
- thresh=n:NaN以外の値がn個未満の行を削除する
- inplace=True:新しいオブジェクトを作らず、元のDataFrameを直接書き換える
たとえば「Car列とPlace列がどちらも揃っている行だけ残したい」場合は、dataFrame.dropna(subset=["Car", "Place"])のように記述します。
まとめ
DataFrameから欠損値(NaN)を含む行を削除したい場合は、dropna()メソッドを使うのが最も簡単です。引数なしで呼び出せばNaNを含む行をすべて削除でき、howやsubsetなどのパラメータを組み合わせれば、より細かい条件でのデータクレンジングも可能になります。
-
Python Pandas入門 – データフレームから条件に合う行のサブセットを抽出する方法
Pandasのデータフレームから行のサブセット(一部の行)を取得するには、条件式を使ってデータを絞り込みます。この手法は「ブールインデックス参照」と呼ばれ、データ分析で最もよく使われる操作のひとつです。 使用するCSVファイル ここでは、Microsoft Excelで開いた次のようなCSVファイル(SalesData.csv)を例にします。車種名(Car)、登録価格(Reg_Price)、販売台数(Units)の3つの列を持つデータです。 CSVファイルをデータフレームとして読み込む まず、read_csv()メソッドを使って、CSVファイルのデータをPandasのデータフレームに読み込み
-
Python Pandas:read_csvのskipinitialspaceでCSV読み込み時の先頭スペースをスキップする方法
PandasでCSVの先頭スペースをスキップするには?PandasでDataFrameを読み込む際、データの先頭にある余分な空白(初期スペース)を取り除きたい場合は、read_csv()メソッドのskipinitialspaceパラメータを使用します。このパラメータをTrueに設定すると、区切り文字(カンマなど)の直後にある空白が自動的にスキップされます。CSVファイルの中には、カンマの後に不要なスペースが混ざっているケースが少なくありません。そのまま読み込むと、列名や値の先頭に空白が残り、条件検索やグループ化の際にデータが正しく一致しない原因となります。skipinitialspace=Tr