Подтвердить что ты не робот

Как я могу разделить большой файл csv файла (7 ГБ) в Python

У меня есть файл размером 7 ГБ csv, который я хотел бы разбить на более мелкие куски, поэтому он читается и быстрее для анализа в Python на ноутбуке. Я хотел бы взять небольшой набор из него, возможно, 250 МБ, так как я могу это сделать?

4b9b3361

Ответ 1

Вам не нужен Python для разделения файла csv. Использование оболочки:

$ split -l 100 data.csv

Разделил бы data.csv на куски из 100 строк.

Ответ 2

Я должен был сделать аналогичную задачу и использовал пакет панд:

for i,chunk in enumerate(pd.read_csv('bigfile.csv', chunksize=500000)):
    chunk.to_csv('chunk{}.csv'.format(i), index='False')

Ответ 3

Может быть, что-то вроде этого?

#!/usr/local/cpython-3.3/bin/python

import csv

divisor = 10

outfileno = 1
outfile = None

with open('big.csv', 'r') as infile:
    for index, row in enumerate(csv.reader(infile)):
        if index % divisor == 0:
            if outfile is not None:
                outfile.close()
            outfilename = 'big-{}.csv'.format(outfileno)
            outfile = open(outfilename, 'w')
            outfileno += 1
            writer = csv.writer(outfile)
        writer.writerow(row)

Ответ 4

Смотрите Документы Python на объектах file (объект, возвращаемый open(filename) - вы можете выбрать read указанное число или используйте readline для работы по одной строке за раз.

Ответ 5

Я согласен с @jonrsharpe readline должен уметь читать одну строку за раз даже для больших файлов.

Если вы имеете дело с большими файлами csv, я могу предложить pandas.read_csv. Я часто использую его с той же целью и всегда нахожу его устрашающим (и быстрым). Потребуется немного времени, чтобы привыкнуть к идее DataFrames. Но как только вы справитесь, он ускоряет крупные операции, подобные вашим.

Надеюсь, это поможет.