見た目が似ていても、まず列名を見よう
月ごとのCSVを一つにしたいとき、単純につなぐだけでは見出しまでデータになってしまうことがあります。列の順番や文字コードも違うかもしれません。最初は架空のタスク表2ファイルを使い、同じ項目かを確認しましょう。この記事は作成依頼の仕様例です。実データを処理する前に、生成したツールの確認が必要です。
例はtask,statusの2列。1月は2行、2月は3行で、結合後のデータ行は5行になる想定です。ヘッダーは先頭の1回だけにします。
仕様を、この形で決めよう
目的:monthlyフォルダ直下のCSVをまとめる。 入力:UTF-8またはUTF-8 BOM付き。必須列はtask,status。 列の順番が違っても列名で読む。余分な列や不足列があれば停止。 順番:ファイル名の昇順、その中は元の行順。 出力:merged.csv。入力フォルダの外へ作る。既存なら停止。 source_file列に元ファイル名を付ける。 元ファイルは変更しない。重複行も勝手に消さない。
同じタスクが2回あっても、正しい重複か入力ミスかは機械だけでは分かりません。重複を消す機能は後で条件を決め、最初は元の行を保ちます。
件数と内容を照らし合わせよう
- 1月の2行と2月の3行が、合計5行になるか確認する。
- ヘッダーが途中に混じっていないか見る。
- カンマや改行を含む項目が壊れていないか見る。
- source_fileで元のファイルへ戻れるか確認する。
- 必須列がないファイルを混ぜたとき、停止するか試す。
CSVは文字を単にカンマで分割するのではなく、引用符なども扱えるCSV用の読み書き処理を使います。Pythonなら標準のcsvモジュールが候補になります。
文字化けしたときは、元ファイルを残そう
日本語が崩れたら、元のCSVをコピーして文字コードを確認します。文字コードが違うものを、無条件に同じ設定で読ませるのは避けます。「読めない文字を無視する」対応だと、名前や項目が欠けても気づけません。
結合ができたら、全件数だけでなく元ファイルから数行ずつ選んで照合します。集計に進む前に、読み取りと結合が正しいことを確かめておきましょう。
参考にした公式ガイド
手順・例文・チェック表は、このサイトで作成した練習用の例です。機能の説明は次の公式資料も確認してください。