Pythonでのデータクリーニング完全ガイド|pandasの手順・コード例と失敗パターンを解説

Pythonでのデータクリーニング完全ガイド|pandasの手順・コード例と失敗パターンを解説

データ分析の精度は、分析手法そのものよりも、その前段にあるデータの品質によって大きく左右されます。どれほど高度なモデルを構築しても、入力するデータに重複や表記の乱れ、欠損が残っていれば、導き出される結論は信頼性を欠いたものになりかねません。本記事では、Pythonを用いたデータクリーニングの全体像を、実務で使えるコード例とあわせて解説していきます。

データクリーニングは地味で手間のかかる工程ですが、分析プロジェクト全体の成否を左右する重要な土台です。実際、データサイエンティストの業務時間の多くがこの作業に費やされているといわれるほど、避けて通れないプロセスなのです。

「何から手をつければよいかわからない」「自己流の処理で本当に正しいのか不安だ」と感じている方は、ぜひ本記事で紹介する処理順序とコード例を、ご自身の実務に取り入れてみてください。

目次

データクリーニングとは?Pythonで始める前の基礎知識

データクリーニングを始める前に、言葉の定義や対象となるデータの状態を整理しておくことが大切です。ここでは、混同されがちな関連用語の違い、実務で遭遇する「汚れたデータ」の代表的なパターン、そしてExcelとPythonをどう使い分けるかという判断の軸を、順に確認していきます。

データクリーニング・データクレンジング・前処理の違い

データクリーニング、データクレンジング、前処理(preprocessing)は、いずれもデータを分析可能な状態に整える作業を指しますが、その範囲には微妙な違いがあります。一般に、表記ゆれや欠損、重複といった「誤りや不整合の修正」を中心に据えるのがデータクリーニングであり、データクレンジングもほぼ同義で用いられることが多いです。

一方で前処理は、クリーニングに加えて、特徴量の作成や正規化、エンコーディングなど、分析やモデル構築に向けたデータ変換まで含む、より広い概念といえます。つまり、前処理という大きな工程の一部に、データクリーニングが位置づけられると理解しておくとよいでしょう。厳密な線引きにこだわるよりも、自分の作業がどの範囲を対象としているかを意識することが、実務では重要になります。

データクレンジングとは?意味と代表手法を解説!

クリーニングが必要な「汚れたデータ」の代表パターン

実務で扱うデータには、さまざまな「汚れ」が潜んでいるものです。代表的なものを挙げると、次のようなパターンが見られます。

  • 同じ意味の値が異なる表記で混在している(例:「株式会社A」と「(株)A」)
  • 全角と半角、大文字と小文字が統一されていない
  • 同一のレコードが重複して登録されている
  • 必須項目が空欄になっている(欠損値
  • 数値や日付が文字列として保存されている
  • 明らかに異常な値(外れ値)が紛れ込んでいる

これらの汚れは、単独で存在することもあれば、複数が絡み合っているケースも少なくありません。汚れの種類を最初に把握しておくことが、後続の処理順序を正しく設計するための出発点になります。やみくもに処理を始めるのではなく、まずはデータ全体を俯瞰し、どのような問題が含まれているかを見極める姿勢が求められるのです。

ExcelとPython(pandas)の使い分けの判断軸

少量のデータであればExcelでも十分にクリーニングできますが、データ量や繰り返しの頻度が増えると、pandasをはじめとするPythonの優位性が際立ってきます。両者の特性を比較すると、次のように整理できます。

観点

Excel

Python(pandas)

データ量

数万行程度まで快適

数百万行でも処理可能

再現性

手作業が多く属人化しやすい

コードとして記録・再利用できる

自動化

マクロの作成が必要

スクリプトで容易に自動化

学習コスト

低い

一定の習得が必要

共有性

ファイルで共有しやすい

環境構築が前提となる

判断の軸はシンプルで、「一度きりの小規模な作業ならExcel、繰り返す大規模な作業ならPython」と考えると迷いません。実務では、初期の試行錯誤をExcelで行い、処理が固まった段階でPythonに移行するという併用も有効です。自分の業務の頻度と規模を踏まえて、適切なツールを選んでいきましょう。

Excelを活用したデータ分析の方法

Pythonでデータクリーニングを行うメリット

Pythonを用いたデータクリーニングには、Excelの手作業では得にくい利点が数多くあります。ここでは、分析精度の向上、大規模データへの対応、そして処理の自動化という三つの観点から、その価値を具体的に見ていきましょう。

分析・機械学習モデルの精度を底上げできる

分析や機械学習の結果は、入力するデータの質に大きく依存します。「Garbage In, Garbage Out」という言葉が示すとおり、汚れたデータからは汚れた結果しか生まれません。クリーニングによってノイズや誤りを取り除くことで、モデルが本来学習すべきパターンを正しく捉えられるようになります。

特に欠損値や外れ値の扱いは、モデルの予測精度を左右する重要な要素です。適切なクリーニングは、複雑なアルゴリズムを導入する以上に、精度向上へ直結することが少なくありません。高度な手法に手を伸ばす前に、まずは足元のデータ品質を見直すことが、遠回りのようで最短の改善策になります。

過学習とは?初心者向けに原因から解決法までわかりやすく解説

Excelで開けない大規模データも処理できる

Excelには扱える行数に上限があり、約104万行を超えるデータは開くことすらできません。これに対しpandasは、メモリが許す限り大規模なデータを読み込み、高速に処理できます。数百万件のログデータやセンサーデータを扱う場面では、この差は決定的です。

さらに、ファイルを分割して逐次処理するチャンク読み込みや、より大規模なデータ向けのライブラリと組み合わせる方法もあります。データ量の制約から解放されることで、これまで諦めていた分析にも踏み出せるようになるでしょう。業務データが年々増え続ける現代において、この拡張性は大きな武器になります。

処理を関数化し再現・自動化できる

Pythonの大きな強みは、一連のクリーニング処理をコードとして記述できる点にあるといえるでしょう。同じ処理を関数にまとめておけば、毎月届くデータに対してワンクリックで同じ加工を適用できるのです。手作業では避けられない作業のばらつきも、コード化によって解消できるのです。

処理をコードとして残すことは、作業の再現性を担保し、属人化を防ぐうえで決定的な意味を持ちます。担当者が変わっても同じ結果を再現でき、第三者によるレビューも可能になります。日々の業務効率だけでなく、組織としてのデータ品質維持にも貢献するのです。

失敗を防ぐデータクリーニングの処理順序

データクリーニングは、どの処理から着手するかによって最終的な結果が変わってきます。ここでは、順序が結果を左右する理由、重複削除と表記ゆれ修正の前後関係、そして実務で推奨される標準的な実行フローを解説します。

処理の順序を誤ると結果が変わる理由

クリーニングの各処理は独立しているように見えて、実際には互いに影響し合っているのです。たとえば欠損値を補完してから重複を削除するのか、その逆かによって、残るレコードの数や内容が変わることがあります。順序を意識せずに処理を重ねると、意図しない結果を招きかねません。

処理順序は「後段の処理が前段の結果を前提とする」という依存関係を踏まえて設計する必要があります。一つひとつの処理が次の処理にどう影響するかを想像しながら進めることで、手戻りを防げます。順序の設計こそが、クリーニング全体の品質を決めるといっても過言ではないでしょう。

重複削除の前に表記ゆれを整えるべき理由

重複削除の前には、必ず表記ゆれの統一を済ませておくことが重要です。なぜなら、「株式会社A」と「(株)A」は人間には同じ企業に見えても、コンピュータにとっては別の文字列であり、重複として検出されないからです。

表記を統一しないまま重複削除を実行すると、本来取り除くべき重複が残り、データの信頼性が損なわれます。表記ゆれの統一を先に行うことで、重複削除の精度は大きく向上します。全角半角の統一や不要な空白の除去も、このタイミングであわせて整えておくと効率的です。

推奨される標準的な実行フロー:把握→統一→重複→欠損→外れ値→型

以上を踏まえると、データクリーニングの標準的な流れは次のように整理できます。

  1. 全体像の把握:データの形状や型、欠損の有無を確認する
  2. 表記の統一:全角半角や表記ゆれをそろえる
  3. 重複の削除:統一後のデータから重複行を取り除く
  4. 欠損値の処理:補完または除去を選択する
  5. 外れ値の対処:検出して適切に扱う
  6. 型の変換:数値や日付を正しい型に整える

この「把握→統一→重複→欠損→外れ値→型」という順序は、多くの実務現場で支持される定石です。もちろんデータの性質によって調整は必要ですが、まずはこの流れを基本形として身につけておくと、迷わず作業を進められます。判断に迷ったときの拠りどころとして、頭の片隅に置いておくとよいでしょう。

Pythonでのデータクリーニング手順とpandasコード例

ここからは、先ほどの実行フローに沿って、pandasを使った具体的なコード例を確認していきます。各ステップで使う主要なメソッドとあわせて、実務で押さえておきたいポイントも紹介しますので、手元の環境で試しながら読み進めてください。

STEP1. データの読み込みと全体像の把握:info・describe・文字コード判定

最初のステップは、データを読み込み、その全体像を把握することです。pandasではread_csvで読み込んだ後、infoメソッドで各列の型や欠損数を、describeメソッドで数値列の統計量を確認します。

import pandas as pd

df = pd.read_csv("data.csv", encoding="utf-8")
df.info()        # 列ごとの型と欠損数
df.describe()    # 数値列の基本統計量

文字化けが起きる場合は、文字コードの指定が必要になります。日本語データではutf-8のほかshift_jisやcp932が使われることが多く、読み込み時点で文字コードを正しく判定できないと、以降のすべての処理が無意味になりかねません。chardetなどのライブラリで自動判定する方法も覚えておくと、いざというときに役立ちます。

STEP2. 表記ゆれ・全角半角の統一:str・replace・jaconv

表記ゆれの統一で活躍するのが、文字列操作のメソッドです。pandasのstrアクセサを使えば、列全体に対して一括で文字列処理を適用できます。前後の空白を取り除くstripや、特定の文字を置き換えるreplaceは、特に多用するメソッドです。

df["会社名"] = df["会社名"].str.strip()
df["会社名"] = df["会社名"].str.replace("(株)", "株式会社")

全角半角の統一には、jaconvライブラリが便利です。半角カナを全角に、全角英数字を半角に変換するといった処理を、簡潔に記述できます。表記の統一は地味な作業ですが、後続の重複削除や集計の正確さを支える大切な土台です。業務ごとに頻出する表記パターンを辞書として整理しておくと、再利用しやすくなります。

名寄せとは?正確な顧客データ管理の方法と活用ポイントを徹底解説

STEP3. 重複データの検出と削除:duplicated・drop_duplicates

重複の検出にはduplicatedメソッドを、削除にはdrop_duplicatesメソッドを使います。duplicatedは各行が重複かどうかを真偽値で返すため、削除を実行する前に、どの行が重複しているかを確認できるのです。

print(df.duplicated().sum())      # 重複行の数を確認
df = df.drop_duplicates()         # 完全重複を削除
df = df.drop_duplicates(subset=["顧客ID"])  # キー列で判定

特定の列だけで重複を判定したい場合は、subset引数で対象列を指定します。どの列をキーに重複を判断するかは、データの意味を理解したうえで慎重に決める必要があります。すべての列が一致する完全重複だけでなく、業務上のキーが重複しているケースにも目を向けることが大切です。

STEP4. 欠損値の確認と補完・除去:isnull・fillna・dropna

欠損値の確認には、isnullメソッドとsumを組み合わせ、列ごとの欠損数を集計します。欠損への対処は、値を埋める「補完」と、行や列を取り除く「除去」の二つが基本です。補完にはfillna、除去にはdropnaを使います。

print(df.isnull().sum())          # 列ごとの欠損数
df["年齢"] = df["年齢"].fillna(df["年齢"].median())  # 中央値で補完
df = df.dropna(subset=["メールアドレス"])            # 欠損行を除去

欠損値をどう扱うかは、データの背景や欠損が生じた理由を踏まえて判断することが欠かせません。たとえば数値列を平均値や中央値で補完する、カテゴリ列を最頻値で補完するなど、列の性質に応じた方法を選びます。安易にゼロで埋めてしまうと、分布が歪み、分析結果を誤らせる原因になりかねません。

STEP5. 外れ値の検出と対処:IQR法・Zスコア

外れ値の検出には、統計的な手法を用いるのが一般的です。代表的なのが、IQR法(四分位範囲法)とZスコアによる方法です。IQR法は、第1四分位数と第3四分位数の幅をもとに、その範囲から大きく外れた値を異常とみなします。

Q1 = df["売上"].quantile(0.25)
Q3 = df["売上"].quantile(0.75)
IQR = Q3 - Q1
lower, upper = Q1 - 1.5 * IQR, Q3 + 1.5 * IQR
df = df[(df["売上"] >= lower) & (df["売上"] <= upper)]

Zスコアは、各値が平均から標準偏差の何倍離れているかを示す指標で、一般に絶対値が3を超える値を外れ値とみなします。ただし外れ値は必ずしも誤りではなく、重要な意味を持つ実データである可能性も忘れてはなりません。検出された値を機械的に削除する前に、その値が本当に異常なのかを吟味する姿勢が求められます。

箱ひげ図とは?外れ値の見方やExcelでの作成方法まで徹底解説

STEP6. データ型の変換とフォーマット統一:astype・to_datetime

数値や日付が文字列として読み込まれていると、計算や時系列分析が正しく行えません。型の変換にはastypeメソッドを使い、文字列を整数や浮動小数点数へ変換します。日付の変換には、専用のto_datetime関数が適しています。

df["金額"] = df["金額"].astype(int)
df["日付"] = pd.to_datetime(df["日付"], format="%Y-%m-%d")

型を正しく整えておくことは、後続の集計や可視化を滞りなく進めるための前提条件です。日付フォーマットの揺れや、数値に紛れ込んだカンマや単位記号にも注意しましょう。変換時にエラーが出る場合は、errors引数の指定で挙動を制御できます。

STEP7. クリーニング結果の検証と処理内容の記録

一連の処理を終えたら、必ず結果を検証します。行数や欠損数が想定どおりに変化しているか、describeで統計量が妥当な範囲に収まっているかを確認しましょう。処理前後のデータを比較することで、意図しない変化を早期に発見できます。

あわせて重要なのが、どのような処理をどの順序で行ったかを記録に残すことです。処理内容を記録しておくことは、結果の再現性と説明責任を確保するうえで不可欠な工程となります。コメント付きのコードやノートブックとして残しておけば、第三者の検証にも耐えられるクリーニングになります。

データ品質とは?品質評価項目や品質を向上させるための実務的対策を解説

データクリーニングでよくある失敗パターンと回避策

手順を理解していても、実務では思わぬ落とし穴にはまることも少なくありません。ここでは、初心者からベテランまで陥りがちな代表的な失敗を取り上げ、それぞれの回避策をあわせて紹介します。事前に知っておくことで、同じ失敗を避けやすくなるはずです。

inplace指定やコピーによる意図しない書き換え

pandasの操作では、元のデータフレームを直接書き換えるか、コピーに対して処理するかを意識する必要があります。inplace=Trueを指定すると元データが変更され、元に戻せなくなることがあります。意図せず原本を壊してしまうのは、初心者によくある失敗の一つです。

加工は元データのコピーに対して行い、原本は常に保持しておくことが安全策の基本です。また、スライスしたデータフレームへの代入では「SettingWithCopyWarning」という警告が出ることがあります。この警告を無視せず、copyメソッドで明示的にコピーを作る習慣をつけておきましょう。

欠損値の安易な補完による分布の歪み

欠損値を一律でゼロや平均値に置き換えると、データの分布が不自然に歪んでしまうことがあります。特に欠損が多い列を平均値で埋めると、その平均値付近にデータが集中し、本来のばらつきが失われてしまいます。

補完は「とりあえず埋める」のではなく、欠損のメカニズムを考慮して方法を選ぶことが肝心です。欠損が多すぎる列は、思い切って除外するという判断も必要になります。補完によってどの程度分布が変化したかを、ヒストグラムなどで確認しておくと安心でしょう。

機械的な外れ値削除で重要データを失う

外れ値を一律のルールで削除すると、本来は意味のある重要なデータまで失ってしまう危険があります。たとえば高額購入をする優良顧客や、不正検知の手がかりとなる異常な取引は、統計的には外れ値に見えても、ビジネス上は最も注目すべきデータです。

外れ値を見つけたら、まずはその背景を確認することが大切です。入力ミスなのか、それとも実際に起きた事象なのかを切り分けたうえで、削除するか残すかを判断します。削除ではなく上限値で丸める「ウィンザー化」など、情報を残す対処法も選択肢に入れておくとよいでしょう。

文字コードの判定漏れによる文字化け

日本語データでつまずきやすいのが、文字コードの問題です。読み込み時のエンコーディング指定を誤ると、文字化けが発生し、せっかくのデータが使い物にならなくなります。特に複数のシステムから集めたデータでは、ファイルごとに文字コードが異なることも珍しくありません。

対策としては、読み込み前に文字コードを確認する習慣をつけることが有効です。エラーが出た際は、encoding引数にcp932やutf-8-sigなどを順に試すと、解決することが多くあります。自動判定ライブラリを併用すれば、判定漏れのリスクをさらに下げられます。

処理が属人化し再現できなくなる

特定の担当者だけが処理内容を把握している状態は、組織にとって大きなリスクです。その人が異動や退職をすると、同じクリーニングを再現できなくなり、データの一貫性が保てなくなってしまいます。手作業中心の運用ほど、この属人化に陥りやすい傾向があります。

回避策は、処理をコードとして残し、誰が実行しても同じ結果になる状態をつくることです。コードにコメントを添え、処理の意図を言葉で説明しておけば、引き継ぎもスムーズに進みます。チームで共有できる仕組みを整えることが、長期的なデータ品質の維持につながるのです。

業種別に見るPythonデータクリーニングの活用事例

データクリーニングの重要性は、業種によって現れ方が異なります。ここでは製造業、EC・小売、医療・研究という三つの分野を例に、それぞれどのようなクリーニングが成果につながるのかを、具体的に見ていきましょう。

製造業:センサーデータの欠損・異常値を補完し品質分析の精度を改善

製造業では、設備に取り付けられた多数のセンサーから、温度や振動などのデータが絶え間なく収集されます。しかし通信の途絶やセンサーの不具合により、データには欠損や異常値がつきものです。これらを放置したまま分析すると、品質異常の予兆を見逃す恐れがあります。

そこで、欠損値を前後の値から補間し、明らかな異常値を除去するクリーニングが欠かせません。センサーデータの丁寧なクリーニングは、品質分析や予知保全の精度を直接的に高めます。時系列の連続性を保ちながら処理することが、製造現場のデータ活用では特に重要になります。

製造業のデータ分析はなぜ必要?解決できる課題やメリットなどを解説

EC・小売:商品名の表記ゆれを正規化しレコメンド精度を向上

EC・小売の分野で大きな課題となるのが、商品名や顧客情報の表記ゆれです。同じ商品でも、入力者や仕入先によって名称が微妙に異なり、別商品として扱われてしまうことがあります。この状態では、正確な売上集計もレコメンドも成り立ちません。

表記を正規化し、商品マスタと突き合わせて名寄せを行うことで、データの一貫性が確保されます。結果として、レコメンドの精度や在庫管理の正確さも高まるのです。顧客単位の購買履歴を正しく統合できれば、より的確なマーケティング施策にもつなげられるでしょう。

小売業のデータ分析で何がわかる?目的・やり方・費用をわかりやすく解説

医療・研究:アンケートデータの表記統一で集計ミスを防止

医療や研究の現場では、アンケートや問診票から得られる自由記述データを扱う機会が多くあります。回答者によって表記が異なるため、「はい」「ハイ」「yes」といった揺れを統一しなければ、正確な集計はできません。

表記を統一し、カテゴリを整理するクリーニングによって、集計ミスを防ぎ、信頼性の高い分析が可能になります。研究データでは特に、再現可能な形で処理を記録することが、結果の客観性を担保するうえで欠かせません。丁寧な前処理が、研究の質そのものを支えているのです。

まとめ:Pythonのデータクリーニングは「順序」と「再現性」が成否を分ける

本記事では、Pythonとpandasによるデータクリーニングの基礎から、具体的な手順、よくある失敗、業種別の活用事例までを解説してきました。クリーニングは華やかな工程ではありませんが、分析やモデルの成否を静かに左右する土台です。

特に強調したいのは、処理の「順序」と「再現性」という二点になります。把握から型変換へと至る順序を守ることで結果のぶれを防ぎ、処理をコードとして記録することで誰もが同じ結果を再現できます。この二つを意識するだけで、クリーニングの品質は大きく変わってくるのです。

まずは小さなデータセットから、本記事のコード例を実際に動かしてみてください。手を動かすなかで、自分の業務に合ったクリーニングの型が、少しずつ見えてくるはずです。

「これからPythonでのデータクリーニングや前処理の取り組みを始めたいけれど、何から手をつけたらいいかわからない」「データ専門家の知見を取り入れたい」という方は、データ活用の実績豊富な弊社、データビズラボにお気軽にご相談ください。

貴社の課題や状況に合わせて、データクリーニングの取り組みをご提案させていただきます。

データビズラボの実績無料相談・お見積り

このブログについて

データビズラボが運営する、データの価値を最大化するためのナレッジ共有メディアです。
戦略策定から具体的な分析手法、ツールの活用術まで、データの現場で培われた実践的な取り組みから
得られた知見や気づきを発信しています。

データのことなら、
まずはお気軽にご相談ください。

データ活用に、万能の正解はありません。
貴社の業界特性や課題に合わせて、最適な進め方を一緒に設計します。