У меня есть файл размером 7 ГБ csv
, который я хотел бы разбить на более мелкие куски, поэтому он читается и быстрее для анализа в Python на ноутбуке. Я хотел бы взять небольшой набор из него, возможно, 250 МБ, так как я могу это сделать?
Как я могу разделить большой файл csv файла (7 ГБ) в Python
Ответ 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. Но как только вы справитесь, он ускоряет крупные операции, подобные вашим.
Надеюсь, это поможет.