「空欄を探すために、Excelを上から下までスクロールしていませんか?」
商品マスターや顧客リスト、受注一覧を受け取るたびに、入力漏れがないか目で確認する。
数十行ならまだしも、数百行・数千行になると、時間もかかるうえに見落としも起きやすくなります。
このチェックは、Google Colab+Pythonならまとめて自動化できます。
例えば、
- 商品コードが空欄になっていないか
- 商品名が抜けていないか
- 価格が未入力の商品がないか
- 在庫数が空白になっていないか
といった確認です。
この記事では、Google ColabとPythonを使って、Excel・CSVの空白セルや欠損データを自動でチェックする方法を紹介します。
今回は実際に、
- CSV内の空白を確認
- 列ごとの欠損件数を集計
- 空白を1つでも含む行だけ抽出
- 「価格」が空白の行だけ抽出
- 欠損を含む行をCSVとして保存
まで動作確認しました。
PythonをPCへインストールする必要はありません。
「商品マスターや顧客リストの空欄を毎回目で探している」人向けの記事です。
✅ この記事は実際に動作検証しています
欠損値を含むCSVをGoogle Colabで読み込み、列ごとの欠損件数と、確認が必要な行を抽出しました。価格が欠損している行も個別に確認し、問題行をCSVとして保存しています。
検証結果: 列別欠損件数を確認 / 問題行4件を抽出 / 価格欠損行を確認 / missing_rows.csvを出力
- この記事はこんな人向け
- この記事でできるようになること
- 今回使う商品データ
- Google ColabでCSVを読み込む
- NaNとは?
- どの列に空白が何件あるか確認する
- isna().sum() は何をしている?
- 空白を1つでも含む行だけ抽出する
- any(axis=1) は何をしている?
- 「価格」が空白の商品だけ抽出する
- 商品コードが空白の行だけ確認する場合
- なぜ列ごとの件数確認と行抽出の両方をする?
- 欠損を含む行をCSVとして保存する
- 保存ファイル名は変更できる
- なぜ utf-8-sig を使う?
- 自分のCSVで変更する場所
- どんな仕事で使える?
- Excelの空白フィルターとの違い
- 空白に見えても「NaN」にならない場合もある
- まとめ
この記事はこんな人向け
- 商品マスターの入力漏れを確認している
- 顧客リストの必須項目が埋まっているかチェックしている
- 受注一覧や在庫表の空白セルを探している
- CSVを受け取るたびにExcelで目視確認している
- 欠損データがある行だけ一覧にしたい
- 入力漏れチェックをPythonで効率化したい
この記事でできるようになること
今回の方法では、まずCSVに空白があるか確認します。
そのうえで、
どの列に何件空白があるのか
を集計し、
空白を含む行はどれなのか
まで自動で抽出します。
最後は、空白を含む行だけを missing_rows.csv として保存します。
CSVを読み込む
↓
空白セルを確認する
↓
列ごとの欠損件数を数える
↓
空白を含む行だけ抽出する
↓
必要なら特定列だけチェックする
↓
欠損行をCSVとして保存する
今回使う商品データ
今回は次のような商品一覧を使います。
| 商品コード | 商品名 | 価格 | 在庫 |
|---|---|---|---|
| A001 | 商品A | 1000 | 10 |
| A002 | 空白 | 1500 | 20 |
| A003 | 商品C | 空白 | 15 |
| 空白 | 商品D | 1800 | 8 |
| A005 | 商品E | 2500 | 空白 |
| A006 | 商品F | 3000 | 12 |
空白箇所を分けてあります。
- A002 → 商品名が空白
- A003 → 価格が空白
- 商品D → 商品コードが空白
- A005 → 在庫が空白
今回はこのファイルを、
missing_data_test.csv
として使用します。
Google ColabでCSVを読み込む
Google Colabで新しいノートブックを作成します。
今回は、
TaskLess Lab_CSV欠損チェックテスト
という名前にしました。
左側のフォルダアイコンから missing_data_test.csv をアップロードし、次のコードを実行します。
import pandas as pd
df = pd.read_csv("missing_data_test.csv")
display(df)
実行すると、元の商品一覧が表示されます。

空白だったセルには、
NaN
と表示されています。
NaNとは?
NaN は、データが入っていないことを表す値です。
今回なら、
- 商品名の空白
- 価格の空白
- 商品コードの空白
- 在庫の空白
が NaN として読み込まれています。
つまり、ExcelやCSV上では何も入っていないセルを、PythonではNaNとして扱うと考えると分かりやすいです。
どの列に空白が何件あるか確認する
まずは、列ごとの欠損件数を確認します。
missing_counts = df.isna().sum()
display(missing_counts)
今回の結果は、
商品コード 1
商品名 1
価格 1
在庫 1
となりました。

つまり、
- 商品コード:1件
- 商品名:1件
- 価格:1件
- 在庫:1件
の空白があります。
isna().sum() は何をしている?
今回使った、
df.isna().sum()
は、
各列に空白が何件あるか数える
処理です。
isna() で空白を判定し、sum() でその数を合計しています。
例えば商品数が1,000件あるCSVでも、これを実行すれば、
商品コード 0
商品名 3
価格 8
在庫 1
のように、どの列に何件入力漏れがあるのかすぐ確認できます。
空白を1つでも含む行だけ抽出する
欠損件数が分かっても、
実際にどの商品に空白があるのか
が分からなければ修正できません。
そこで次は、どこか1つでも空白がある行だけを抽出します。
missing_rows = df[df.isna().any(axis=1)]
display(missing_rows)
今回の結果は4行です。

抽出されたのは、
- A002:商品名が空白
- A003:価格が空白
- 商品D:商品コードが空白
- A005:在庫が空白
の4件です。
A001とA006はすべて入力されているため、表示されません。
any(axis=1) は何をしている?
今回の、
df.isna().any(axis=1)
は、
その行のどこか1か所でも空白があれば対象にする
という意味です。
例えば、
A002 / 商品名なし / 価格1500 / 在庫20
なら、商品名だけが空白でも対象になります。
1行の中に2か所以上空白があっても、もちろん対象です。
「価格」が空白の商品だけ抽出する
場合によっては、
商品コードや商品名は多少後で直せるが、価格の未入力だけは先に確認したい
といったこともあります。
その場合は、特定の列だけをチェックできます。
今回は「価格」が空白の行だけを抽出します。
missing_price = df[df["価格"].isna()]
display(missing_price)
今回該当したのはA003だけです。

このように、確認したい列を指定できます。
商品コードが空白の行だけ確認する場合
商品コードなら、
missing_code = df[df["商品コード"].isna()]
display(missing_code)
です。
商品名なら、
missing_name = df[df["商品名"].isna()]
在庫なら、
missing_stock = df[df["在庫"].isna()]
と変更できます。
つまり、
df["価格"]
の「価格」を、確認したい列名に変えるだけです。
なぜ列ごとの件数確認と行抽出の両方をする?
この2つは役割が違います。
列ごとの件数
df.isna().sum()
では、
価格に空白が8件ある
というように、問題の規模を確認できます。
欠損行の抽出
df[df.isna().any(axis=1)]
では、
具体的にどの商品を修正すればいいのか
を確認できます。
そのため、
件数を確認
↓
問題のある行を抽出
という順番にすると分かりやすいです。
欠損を含む行をCSVとして保存する
最後に、空白を含む行だけをCSVとして保存します。
missing_rows.to_csv(
"missing_rows.csv",
index=False,
encoding="utf-8-sig"
)
print("missing_rows.csv を作成しました")
実行すると、Google Colab左側のファイル一覧に、
missing_rows.csv
が表示されます。

このファイルをダウンロードすれば、
入力漏れがある行だけをまとめた修正対象リスト
としてExcelで開いたり、担当者へ共有したりできます。
保存ファイル名は変更できる
例えば、
入力漏れ一覧.csv
や、
商品マスター_要確認.csv
といった名前にもできます。
毎月チェックするなら、
2026年9月_商品マスター要確認.csv
のように年月を入れても分かりやすいです。
なぜ utf-8-sig を使う?
保存時には、
encoding="utf-8-sig"
を指定しています。
これは、日本語を含むCSVをExcelで開いたときに文字化けしにくくするためです。
商品名・顧客名・店舗名など、日本語が含まれるCSVでは指定しておくと扱いやすくなります。
自分のCSVで変更する場所
今回のコードを自分のデータで使う場合、主に変更するのは次の部分です。
| 今回の設定 | 自分のCSVでは |
|---|---|
missing_data_test.csv | 実際のCSVファイル名 |
"価格" | 確認したい列名 |
missing_rows.csv | 保存するファイル名 |
例えば顧客リストでメールアドレスの未入力だけ確認するなら、
missing_email = df[df["メールアドレス"].isna()]
とします。
どんな仕事で使える?
今回の方法は商品マスターだけでなく、さまざまな一覧に使えます。
- 顧客名簿のメールアドレス未入力チェック
- 注文一覧の注文番号抜けチェック
- 在庫表の在庫数未入力チェック
- 仕入先マスターの担当者・電話番号チェック
- EC商品一覧の価格・JANコード未入力チェック
- アンケート回答の必須項目漏れチェック
特に、
CSVを受け取ったあと、表を上から下までスクロールして空白を探している
なら、置き換えやすい作業です。
Excelの空白フィルターとの違い
もちろん、Excelでもフィルターを使えば空白セルを探せます。
ただし、
- 商品コード
- 商品名
- 価格
- 在庫
のように複数列を確認する場合、それぞれの列にフィルターをかけて確認する必要があります。
Pythonなら、
df.isna().sum()
だけで全列の欠損数をまとめて確認できます。
さらに、
df[df.isna().any(axis=1)]
で、どの列かに入力漏れがある行を一括で抽出できます。
毎回同じ形式のファイルをチェックする仕事ほど、この差が効いてきます。
空白に見えても「NaN」にならない場合もある
注意したいのが、
見た目は空白でも、実際にはスペースが入力されている
ケースです。
例えば、
" "
のように半角スペースだけ入っているセルは、単純な isna() では欠損として検出されないことがあります。
同じように、
-
未入力
なし
N/A
などを空白代わりに使っているデータもあります。
今回の記事では、まず本当に値が入っていないセルのチェックを扱っています。
こうした表記のばらつきを整える処理は、別途文字列の整形が必要になります。
スペースだけが入っているセルや、全角・半角の違いなどは欠損チェックだけでは見つけられません。

空白ではなく、売上金額や店舗名などの値を条件に行を絞り込みたい場合はこちらです。

まとめ
今回は、Google ColabとPythonを使ってCSVの空白セル・欠損データをチェックしました。
実際に確認したのは、
- CSVの空白を
NaNとして確認 - 各列の欠損件数を集計
- 空白を1つでも含む行を抽出
- 価格が空白の商品だけ抽出
- 欠損行をCSVとして保存
です。
特に、
空白が何件あるか確認
↓
問題のある行だけ抽出
↓
修正対象CSVとして保存
までまとめてできるのが便利です。
商品マスターや顧客リストを受け取るたびに、Excelをスクロールして入力漏れを探しているなら、その確認を毎回人の目だけで行う必要はありません。
この方法で欠損チェックを自動化して、入力漏れを探す面倒な作業を減らしていきましょう!


