fixmint
JA

CSVエクスポートを整える前に確認すべき問題と順番

著 · · 5分で読めます

乱れたCSVを整えるには、層ごとに直すのがおすすめです。まず文字、次にレイアウト、最後に各列の意味を確認します。CSVはプレーンテキストなので、多くの問題は文字の間違い、余分な行や区切り文字、またはプログラムがあなたと違う読み方をする値が原因です。まずは文字から直しましょう。目に見えない空白があると、日付が日付として読み込まれず、その後の処理が理由もわからないまま失敗することがあります。

CSV・Excelのデータ整形空欄や重複がある乱れたCSV無料で使う

正しく見えて実は正しくない文字

余計なスペース。 セルの先頭や末尾にあるスペース、または値の途中にある連続した2つのスペースは、検索、フィルター、結合の処理では「Berlin 」と「Berlin」を別の値として扱います。

見えない文字。 画面上では幅を取らない文字があります。

  • ノーブレークスペース(U+00A0)は通常のスペースと同じに見えますが、別の文字です。Webページで単語をつなげて折り返しを防ぐために使われます。
  • ゼロ幅スペース(U+200B)は幅がまったくありません。
  • バイト順マーク(U+FEFF)はファイルの先頭、最初のヘッダーの前に置かれることがあります。列名は「id」に見えても、実際には「id」なので、「id」での検索は失敗します。

見えない文字を削除は、変更を加える前に検出した文字を表示します。

文字化け。 「é」にすべき場所に「é」と表示される現象は、文字化けと呼ばれるエンコーディングの問題です。ファイルはUTF-8で保存されており、「é」は2バイトを使います。それを Windows-1252 として読み込むと、その2バイトが無関係な2文字に変わってしまいます。「’」のアポストロフィも同じように「’」と表示されます。解決策は、ファイルをUTF-8として読み込むか、元のシステムからUTF-8を選んで書き出し直すことです。すでに誤って保存されたテキストを修復するのは不安定なので、元のファイルを残し、コピーを使って作業してください。

レイアウト:タイトル行、空行、重複

レポートでは、本来のヘッダーの上にタイトル、日付、空行が付いていることがよくあります。ヘッダー行より上の部分はすべて削除し、1行目に列名が来るようにします。各列には1つの名前が必要で、空の名前があってはいけません。

各行のフィールド数は同じであるべきです。引用符で囲まれていない値の中にある余分なカンマは、フィールドを1つ増やし、それ以降の値がすべて1列右にずれてしまいます。行ごとにフィールド数を数えてください。数が違う行は壊れています。

重複には2種類あります。すべての列が同じ行は、書き出しや貼り付けを2回行ったことが原因であることが多く、削除しても安全です。一方、キーは同じでも他の列が異なる行は、更新された行の可能性があります。間違った方を削除すると最新版が消えてしまうため、先に確認してください。

日付:03/04/2026は2つの異なる日を表すことがある

03/04/2026は、ある国では4月3日、別の国では3月4日を意味します。テキストだけでは判別できません。同じ列の他の日付を確認しましょう。最初の数字が12より大きい値があれば、その列は日・月の順です。2番目の数字が12より大きい値があれば、月・日の順です。すべての値で両方の数字が12以下なら、ファイルからは判断できないので、元のシステムに確認してください。データ型チェッカーは、推測せずにそのような列を「判別できない」と表示します。

順番がわかったら、すべての日付をISO 8601の年-月-日の形式、たとえば2026-04-03に変換します。この形式は意味が一つに決まり、文字列としても正しく並び替えられます。形式が混在している場合は、1件ずつ変換してください。両方の形式が混ざった列は、多くのプログラムで一貫性なく読み込まれてしまいます。

文字列として保存された数値

通貨記号、パーセント記号、または内部のスペースが含まれると、数値は文字列として保存されます。たとえば「€ 12」「45%」、またはノーブレークスペースを含む「1 234」などです。「1,234.50」のような桁区切りがあると、プログラムがその値を文字列として読むこともよくあります。スピードシートでは、文字列の数値は左揃えで表示され、合計計算からは除外されます。

小数点のカンマには注意が必要です。「1.234,50」ではカンマが小数点で、ピリオドが桁区切りです。「1,234.50」ではその逆です。そのため「1,234」は、ある書き出しでは1234、別の書き出しでは1.234を意味することがあります。変換する前に元データのロケールを確認し、桁区切りを取り除いてから、小数点のカンマをピリオドに置き換えてください。

先頭のゼロが消える

郵便番号、商品コード、口座番号は、先頭にゼロが付いていることがよくあります。CSVをスプレッドシートで開くと、「01234」は数値の1234として読み込まれ、ゼロが消えてしまいます。ファイルを保存すると、その損失も残ったままになります。そのため、元のシステムが信頼できる唯一のデータです。

識別子は数字に見えても文字列として扱うべきです。計算に使うことはないからです。CSVを整える際には、そのような列の数値変換をオフにし、スプレッドシートで保存されたコピーではなく、元のシステムからファイルを開き直してください。その後、各列のデータ型を確認し、郵便番号の列が知らないうちに数値へ戻っていないかチェックしましょう。Excelは、CSVを開く際に値を変えてしまうこともあるので、結果はプレーンテキストの表示で確認してください。

型を確認してから統計を取る

整えた後は、各列の型を確認します。価格の列に「N/A」が1つでもあると、列全体が文字列になり、合計が誤った値になります。データ型チェッカーは、各列に型と信頼度スコアを付け、型に合わないセルを一覧で示します。

そのうえで、列の統計を取ります。CSV列の統計情報は、各列の欠損値と外れ値を表示します。外れ値は実際の値の場合もあれば、他の値の1000倍になっている価格のような誤りの場合もあります。後者は、小数点や区切り記号の位置ずれが原因であることが多いです。

特殊なケース

  • 引用符の中の改行。 引用符で囲まれた値には改行が含まれることがあります。ファイルを行ごとに分割するツールでは、その行が2つに割れてしまうので、引用符付きのフィールドを正しく扱えるリーダーを使ってください。
  • セミコロン区切りのファイル。 ヨーロッパの多くの表計算ソフトでは、ロケールで小数点がカンマになるため、CSVをセミコロン区切りで保存します。列を読み込む前に区切り文字を確認してください。
  • 元のファイルを残す。 整えた結果は新しいファイルに書き出し、元の書き出しファイルはそのまま保存しておきましょう。

手順チェックリスト

  1. 元の書き出しファイルのコピーを保存する。
  2. 余計なスペースと見えない文字を削除する。可能であれば、文字化けは元のシステムで直す。
  3. タイトル行を削除し、ヘッダーの名前を確認して、すべての行のフィールド数が同じことを確かめる。
  4. 重複を見つけて、残すバージョンを決める。
  5. 日付を年-月-日に変換し、区切り記号を削除して、識別子を文字列にする。
  6. 各列の型を確認してから、欠損値と外れ値を統計で調べる。

よくある質問

値は同じに見えるのに、検索が失敗するのはなぜですか?

多くの場合、いずれかのセルにスペース、ノーブレークスペース、またはバイト順マークが含まれています。見えない文字を削除してから、もう一度試してください。

日付がほかの値に変わってしまうのはなぜですか?

プログラムが日・月の順または月・日の順の日付を取り違えたか、テキストを独自の日付形式に変換してしまったことが原因です。先に自分で日付を年-月-日に変換しておきましょう。

英語原文をもとに、AIの支援を受けて翻訳しています。

コメント

    まだコメントはありません。最初のコメントを書いてみましょう。

    評価(任意)

    メールアドレスは表示も保存もされません。

    Open Data for AGI - Why Public, Free, and Open Datasets Matterの表紙Open Data for AGI - Why Public, Free, and Open Datasets Matter

    公開され、無料で、オープンな形式のデータセットが、アルゴリズムや計算資源と同じくらい汎用人工知能(AGI)の未来を形作る理由を解説します。

    $4.99Gumroadで入手英語版