Если у вас есть тонна данных , то вы не хотите сохранять все эти данные в памяти, а затем сортировать , чтобы получить максимальное значение,Этот подход неэффективен в отношении сложности вычислений и памяти.
Вместо этого вы можете просто анализировать файлы и вычислять нужные значения на лету. быстрый чистый подход Python для решения вашей проблемы:
import os, re
os.chdir('/path/to/csvdir')
for f in os.listdir('.'):
dataset, count = 0.0, 0.0
for line in open(f):
if re.search(r'63[6789]\...', line):
d, c = map(float, line.strip().split(';'))
if count < c:
dataset, count = d, c
print f, dataset
Этот подход также можно использовать для отображения списка максимальных значений (если может быть несколько наборов данных с самым высокимрассчитывает) путем изменения соответствующих строк:
dataset, count = [], 0.0
...
if count < c:
dataset, count = [d], c
elif count == c:
dataset.append(d)
Редактировать: скрипт предполагает, что ваш csvdir заполнен только файлами, содержащими формат синтаксического анализа.Если вы хотите отфильтровать их по имени, вы можете использовать либо glob (с ограниченными возможностями регулярного выражения при фильтрации имен):
for f in glob.glob('*.csv'):
или применить фильтр к os.listdir
:
for f in filter(lambda f: re.match('.*\.csv', f), os.listdir('.')):