我有一个 .csv 数据集(如 15000 个项目),我想找到最小值。
当我一直在寻找答案时,我找到了很多答案,但是人们总是有他们想要在括号中找到最小值的数据集
ex. [0.0, 1.3, 37.7]
然后让 Python 找出最小值。有了这么大的数据集,我不可能将数据单独放入括号中,我如何在 .csv 文件中调用特定列然后找到最小值?
(请解释一下你在做什么,我对使用 python 很陌生)
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)
我同意@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:如果不清楚,很高兴澄清代码的任何部分。