разделить фрейм данных зависит от размера файла CSV с помощью Python - PullRequest
0 голосов
/ 04 февраля 2019

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

1 Ответ

0 голосов
/ 04 февраля 2019

Вы не можете узнать размер файла CSV без его сохранения.Можно сохранить часть большого DataFrame и использовать его размер файла для оценки размера строки.

import pandas as pd

big_df = pd.DataFrame(data=pd.np.random.randn(int(2e6), 5))

big_df.iloc[:100000].to_csv('temp.csv')

# look at temp.csv file size - 100 000 rows is 10 MB for me
# if I want about 50 MB per file I store to CSV a half million rows
# set it manually or you can compute it with os.path.getsize('temp.csv')
rows_max = int(5e5)

row_from = 0
row_to = rows_max
file_n = 1

while True:
    fn_i = 'big_%s.csv' % str(file_n).zfill(3)
    big_df.iloc[row_from:row_to].to_csv(fn_i)

    if row_to > big_df.index.size:
        break

    row_from = row_to
    row_to = row_from + rows_max
    file_n += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...