Как датафрейм хранит большое количество данных в памяти и манипулирует ими?
Предположим, у меня есть большой объем данных, которые я загружаю в фрейм данных; Например, у меня есть таблица размером более 40 ГБ, и выбор 3 столбцов может составить около 2–3 ГБ. Предположим, что записи составляют 10 миллионов (количество строк).
c = pd.read_sql("select a,b,c from table;", con=db, chunksize=10**2):
b = c['a']
Так как он читает чанк таблицы по чанку, значит ли это, что он не загружает все 3 ГБ в память за раз и работает только на 10^2 МБ сразу, а затем автоматически переходит к следующему чаку??
Если нет, как заставить его вести себя так?
1 ответ
Цитирование документации
chunksize : int, default None
If specified, return an iterator where chunksize is the number of rows
to include in each chunk.
Итак, прежде всего, chunksize обозначает количество строк, а не размер в мегабайтах. Предоставление размера фрагмента также приводит к тому, что итератор возвращается вместо фрейма данных. Так что вам нужно обойти это. Учитывая это, на стороне питона вам нужна только память для 10^2 строк.