В настоящее время я пытаюсь прочитать данные из файлов .csv в Python 2.7, содержащих до 1 миллиона строк и 200 столбцов (размер файлов варьируется от 100 МБ до 1,6 ГБ). Я могу сделать это (очень медленно) для файлов с менее 300 000 строк, но как только я превыслю это, я получаю ошибки памяти. Мой код выглядит следующим образом:
def getdata(filename, критерии): data=[] для критерия в критерии: данные. append(getstuff(имя файла, критерий)) вернуть данные def getstuff(имя файла, критерий): импортировать csv data=[] с открытым(имя файла, "rb") как csvfile: datareader=csv.reader(csvfile) для строки в datareader: if row[3]=="заголовок столбца": data.append(row) elif len(data)<2 and row[3]!=criterion: pass elif row[3]==criterion: data.append(row ) else: возвращаемые данные
Причина использования предложения else в функции getstuff заключается в том, что все элементы, соответствующие критерию, будут перечислены вместе в файле csv, поэтому я выхожу из цикла, когда Я пропускаю их, чтобы сэкономить время.
Мои вопросы:
Как я могу получить это для работы с файлами большего размера?
Можно ли как-нибудь сделать это быстрее?
Мой компьютер 8 ГБ оперативной памяти, 64-разрядная версия Windows 7 и процессор с частотой 3,40 ГГц (не знаю, какая информация вам нужна).