2

我有一个 .csv 数据集(如 15000 个项目),我想找到最小值。

当我一直在寻找答案时,我找到了很多答案,但是人们总是有他们想要在括号中找到最小值的数据集

ex. [0.0, 1.3, 37.7]

然后让 Python 找出最小值。有了这么大的数据集,我不可能将数据单独放入括号中,我如何在 .csv 文件中调用特定列然后找到最小值?

(请解释一下你在做什么,我对使用 python 很陌生)

4

2 回答 2

3
  • 15,000 项不是“大”;我已经在内存中处理了大约 1200 万行 .csv 文件(尽管我必须使用 64 位 Python 来获得足够的空间!)

  • min()将对生成器起作用-也就是说,一次一个项目,而不是一次全部

.

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 回答