2

.csvデータセット(15000アイテムなど)があり、最小値を見つけたい。

答えを探していたので、たくさんの答えを見つけましたが、人々は常に、括弧内の最小値を見つけたいデータセットを持っています

ex. [0.0, 1.3, 37.7]

次に、Pythonに最小値を見つけるように依頼します。このような大きなデータセットでは、データを個別に角かっこで囲むことはできません。.csvファイルの特定の列を呼び出して、最小値を見つけるにはどうすればよいですか。

(あなたが何をしているのか説明してください、私はPythonでの作業に非常に慣れていません)

4

2 に答える 2

3
  • 15,000アイテムは「大」ではありません。私はメモリ内で約1200万行の.csvファイルを処理しました(十分なスペースを確保するために64ビットPythonを使用する必要がありましたが!)

  • min()ジェネレーターに対して機能します-つまり、一度にすべてではなく、一度に1つのアイテム

import csv

with open('myfile.csv', 'rb') as inf:
    incsv = csv.reader(inf)
    column = 1                # the second column (Python counts from 0, per @MRAB's comment)
    datatype = float          # or int, as appropriate (per MvG)
    data = (datatype(row[column]) for row in incsv)    # NB: a generator expression, not a list
    least_value = min(data)
于 2012-07-05T15:32:52.360 に答える
0

データのサイズは問題にならないという@HughBothwellに同意します。ただし、何らかの理由でOPがデータを行ごと(つまり行ごと)に処理することを好む場合、これは代替手段を提供します。

import csv, sys

with open('data.txt', 'rb') as inf:
    min_val = sys.maxint
    col = 0 # column we are searching (this is the 1st column, zero-based index)
    for line in csv.reader(inf):
        val = int(line[col])  # or float() as needed
        if val < min_val:
            min_val = val

    print min_val

OP:不明な場合は、コードの任意の部分を明確にしてください。

于 2012-07-05T15:45:16.553 に答える