CSV行カウンター

行数を数える

CSVのエクスポートを扱うときの手軽な確認手段です。ファイルは本当に12,000行で届いたのか、それともスクリプトが途中で切り詰めたのか。CSVを貼り付けると、総行数、データ行数(総数からヘッダーを引いた数)、ヘッダーをカウントしたかどうか、最初の行の列数を表示します。「レコードは何件?」に答えるためだけにExcelを開いたり、Pythonのノートブックを立ち上げたりする必要はありません。

カウンターがファイルを読み取る仕組み

  1. 1

    CSVを貼り付ける

    ファイル全体でも一部でも構いません。空行はスキップされるため、末尾の改行でカウントが増えることはありません。

  2. 2

    ヘッダーモードを設定する

    ヘッダーのオン/オフを切り替えると、データ行数が列名ではなく実際のレコードを反映します。

  3. 3

    カウントはローカルで実行

    行は任意のUnicode改行で分割され、最初の行を解析して列数を取得します。

  4. 4

    集計を確認する

    4つの数値:総行数、データ行数、ヘッダーの有無(あり/なし)、1行目の列数。

物理的な行数とCSVの行数が必ずしも一致しない理由

wc -l file.csv のような手軽なワンライナーは物理的な行数をカウントします。これは、セルに改行が埋め込まれている場合、CSVの行数とは一致しません。

物理行とCSV行が食い違う場面

状況 wc -l の結果 実際の行数
末尾に改行があるファイル 行数 + 1 行数
複数行のセル ("line1\nline2") 行数 + 1 行数
末尾に改行がない 行数 - 1 行数

このツールはまずUnicodeの改行で分割し、その後で空行を除外します。現時点では複数行にわたる引用符付きセルを単一の行として解析しないため、引用符で囲まれた値の中に改行を含むCSVは実際より多く数えられます。そうしたCSVは、まず適切なパーサー(Pythonの csv.reader、PHPの str_getcsv を1行ずつ)を通して、各レコードを1行に正規化してください。

行数カウントのよくある用途

  • エクスポート後の検証。 カウンターの値を、元のデータベースの件数と照合します。
  • コストの見積もり。 APIベンダーは取り込んだ行数ごとに課金することが多いため、インポートをクリックする前に件数を把握しておきます。
  • 分割(チャンキング)。 バッチ処理ツールで扱う前に、大きなCSVをいくつのファイルに分けるかを決めます。

最初の行の列

列数はヘッダーモードにかかわらず、1行目から取得します。行の幅がばらついている(ファイル内で列数が一定でない)場合、この数値は先頭行についてしか教えてくれません。より広い範囲のばらつきを確認するには、CSVビューアーやスプレッドシートを使ってください。

よくある質問

現時点では対応していません。引用符内の改行で複数行にまたがるセルは、総行数を増やしてしまいます。これが問題になる場合は、各行を1つの物理行として出力する本格的なCSVパーサーで事前に処理してください。

ヘッダーモードが既定でオンになっているためです。オンのときは、データ行数は総行数から1を引いた値になります。CSVにヘッダーがない場合はオフにすれば、両方の数値が同じになります。

トリミング後に空白文字だけになる行です。こうした行はカウント前に除外されるため、末尾に紛れ込んだ改行が総数を水増しすることはありません。

いいえ。行の分割とカウントはお使いのブラウザー内で行われ、デバイスの外には何も送信されません。

関連ツール