LoginSignup
2
1

【Python】大規模データのCSVファイルのレコード数(行数)を一瞬でカウントする方法

Posted at

概要

  • 大量のデータを扱う仕事をしていると、エクセルでは表示しきれない場合や重すぎて開くのが大変という場合がありますよね。そんな大規模データの件数をすぐに調べられる方法を紹介します。

発生エラー

  • エクセルは、行数が1,048,756行に達すると表示が停止します。また、非常に操作が重くなります。
    • 使用しているExcelは、Excel for Macのバージョン16.73(2023のバージョン)
このテキスト ファイルのデータは、1 つのワークシートに入りきりません。
  • MacのNumberでは開くと以下のエラーが出てきます。
Nubmersの表では1,000,000を超える行をサポートできません。一部の内容は読み込まれせんでした。
  • くぅぅ、行数を見たいだけなのに全然させてくれん!!こんな時こそプログラミング!

解決方法

  • 今回は、pythonでCSVファイルの行数をカウントする方法を紹介します(違う言語でもできるはずです)。
count.py
import csv

def count_csv_rows(file_path):
    with open(file_path, 'r') as file:
        reader = csv.reader(file)
        row_count = sum(1 for row in reader)
    return row_count

file_path = 'data_file.csv'  # CSVファイルのパスを指定
row_count = count_csv_rows(file_path)
print("行数:", row_count)
  • data_file.csvにはファイルがあるパスを指定します。このPythonファイルと同じ場所にあれば、ファイル名だけでOKです。
  • 以下の内容を実施しています。
    • csvモジュールを使用してCSVファイルを開き、csv.readerオブジェクトを作成。
    • sum(1 for row in reader)の部分は、ジェネレータ式を使って各行ごとに1をカウントし、その合計を取得。
  • あとは、python count.pyを実施すれば、以下のように出力されます。
行数: 1781695
  • ついでに、CSVファイルにはヘッダーがあるよ、という場合は以下を実施するとすぐに算出できます。
import csv

def count_csv_records(file_path):
    with open(file_path, 'r') as file:
        reader = csv.reader(file)
        header = next(reader)  # ヘッダー行を読み飛ばす
        record_count = sum(1 for row in reader)
    return record_count

file_path = 'data_file.csv'  # CSVファイルのパスを指定してください
record_count = count_csv_records(file_path)
print("レコード数:", record_count)
  • すると以下のような結果になります。
レコード数: 1781694
  • Pythonを実行するにはPythonのインストールが必要ですが、一瞬で出てくるのでかなり楽ですよね。
2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1