CSVデータを処理する際にデータの最初の行を無視するにはどうすればいいですか? 質問する

CSVデータを処理する際にデータの最初の行を無視するにはどうすればいいですか? 質問する

Python に CSV データの列から最小値を印刷するように指示していますが、一番上の行は列番号であり、Python に一番上の行を考慮させたくありません。Python が最初の行を無視するようにするにはどうすればよいでしょうか?

これまでのコードは次のとおりです。

import csv

with open('all16.csv', 'rb') as inf:
    incsv = csv.reader(inf)
    column = 1                
    datatype = float          
    data = (datatype(column) for row in incsv)   
    least_value = min(data)

print least_value

コードだけではなく、何をしているのか説明していただけますか? 私は Python の初心者なので、すべて理解していることを確認したいと思います。

ベストアンサー1

csvモジュールのインスタンスを使うこともできますSniffernext()CSV ファイルの形式を推測し、ヘッダー行が存在するかどうかを検出するクラスと、必要な場合にのみ最初の行をスキップする組み込み関数があります。

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)

例ではdatatypeと がハードコードされているため、 を次のように処理する方が若干速くなります。columnrow

    data = (float(row[1]) for row in reader)

注記:上記のコードは Python 3.x 用です。Python 2.x の場合は、表示されている行の代わりに次の行を使用してファイルを開きます。

with open('all16.csv', 'rb') as file:

おすすめ記事