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
モジュールのインスタンスを使うこともできますSniffer
next()
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
と がハードコードされているため、 を次のように処理する方が若干速くなります。column
row
data = (float(row[1]) for row in reader)
注記:上記のコードは Python 3.x 用です。Python 2.x の場合は、表示されている行の代わりに次の行を使用してファイルを開きます。
with open('all16.csv', 'rb') as file: