2014-10-07 2 views
1

Я имею дело с огромным CSV-файлом размером около 13 ГБ и около 130 000 000 строк. Я использую python и пытаюсь работать с ним с помощью библиотеки pandas, которую я использовал раньше для такого рода работ. Тем не менее, я всегда имел дело с csv-файлами менее 2 000 000 строк или 500 МБ ранее. Для этого огромного файла панды больше не кажутся подходящими, поскольку мой компьютер умирает, когда я пытаюсь выполнить свой код (MacBook Pro с 2011 года с 8 ГБ оперативной памяти). Может ли кто-нибудь посоветовать мне использовать этот файл в python? Будет ли библиотека csv более уместной?Как управлять огромным CSV-файлом (> 12 ГБ)?

Спасибо заранее!

+5

Просто прочитайте его в кусках, установите параметр 'chunksize' в [' pd.read_csv'] (http://pandas.pydata.org/pandas-docs/stable/io.html#io-read-csv-table), дополнительно вы можете сохранить этот hd5f – EdChum

+0

Что вы делаете с файлом? Можете ли вы представить свою работу как однопроходный алгоритм? –

+0

Файл собирает 6 месяцев данных GPS-зонда из некоторого коридора в Лос-Анджелесе. Каждая строка представляет собой устройство, обнаруженное в определенное время и определенную (широту, долготу) точку. Устройство названо со случайным идентификатором. Я хотел бы классифицировать файл в отношении столбца «ID», чтобы найти, какой из них повторяется больше всего и начертить связанные пути. Спасибо EdChum Я попытаюсь использовать этот метод. Альтернативой было бы работать с каждым «ежедневным файлом» (также доступным в базе данных), но это ограничение, потому что некоторые идентификаторы появляются через разные дни. Я предпочел бы работать в самом общем случае. – Antoine

ответ

0

В Python я обнаружил, что для открытия больших файлов лучше использовать генераторы, как в:

with open("ludicrously_humongous.csv", "r") as f: 
    for line in f: 
     #Any process of that line goes here 

Программирование таким образом, делает вашу программу только для чтения строки в то время в память, что позволяет работайте с большими файлами в гибкой манере.

Смежные вопросы