CSVGuide2026-10-12

pandasで「NA」が欠損値になる。商品コードを消す前にkeep_default_naを見る

約5分で読めます

こんな人向けpandasでCSVの商品コードや状態コードを扱う人
難易度入門

pandas.read_csvがNAやNULLなどを欠損値として解釈する挙動を理解し、文字列として保持したいコード列ではkeep_default_naを明示する方法を整理します。

目次を開く

CSVのセルに文字列として NA と入っているのに、pandasで読んだら欠損値になった。これは壊れたCSVではなく、read_csv が既定で複数の文字列を欠損値として認識するために起きます。

NAを文字列として残すなら設定する

read_csv には keep_default_na があります。既定の欠損表現を自動適用したくない場合は、用途に合わせて明示します。

import pandas as pd

df = pd.read_csv("items.csv", keep_default_na=False)

商品コードや国コードなどで NA 自体が意味を持つなら、欠損値と文字列を区別する設計が必要です。

空欄との違いも先に決める

""、空セル、NA、NULL を全部同じ欠損として扱うのか、それぞれ別の値にするのかを決めます。読み込み後に混ざってから直すより、入口で決めた方が安全です。

CSVのNA文字列と欠損値を分けて読む図

読み込み条件をコードに残す

GUIで毎回判断するのではなく、dtype、keep_default_na、encoding などを処理コードへ残します。次回も同じ条件で再現できます。

CSVそのものの必須値抜けや列数不一致を前段で確認するなら、CSV Preflightを使えます。

本番投入前の最終チェック

入力CSVに本当に NA や NULL という有効値があるかを先に確認し、欠損の仕様を決めます。読み込み後は有効値の件数と欠損件数を比較して、意図しない変換がないかを見ます。

  • 欠損として扱う文字列を決めた
  • keep_default_na の方針をコード化した
  • 有効値 NA の件数を前後比較した
  • 空欄の意味を固定した
  • 原本を残した

データ型だけでなく、欠損の意味そのものを入口で決めるのが安全です。

NEXT

次に読む。

CSV / Guide

pandasで列数が壊れたCSVを黙って捨てない。on_bad_linesを決める

約5分

pandas.read_csvで列数不一致の行に遭遇したとき、on_bad_linesの方針を明示し、欠損したレコードに気づかないまま処理を続けるのを防ぎます。

CSV / Guide

pandasでCSVの00123を123にしない。dtypeでID列を文字列に固定する

約5分

pandas.read_csvで社員IDやSKUの先頭0を保持したいときに、dtypeで対象列をstrとして読み、数値推論による変換を避ける基本形を整理します。

CSV / Guide

CSVの住所や説明文にカンマがあるなら、そのセルだけ引用符で囲む

約5分

CSVの値そのものにカンマが含まれると列がずれる理由と、RFC 4180の基本に沿って二重引用符で1フィールドとして保持する方法を整理します。

SHARE
XBLUESKYFACEBOOKLINE