У меня есть огромный файл данных, который я хочу обработать в блокноте jupyter.
Я использую панд в цикле for, чтобы указать, какие строки я читаю из файла:
import pandas as pd
import gc
from tqdm import tqdm
# Create a training file with simple derived features
rowstoread = 150_000
chunks = 50
for chunks in tqdm(range(chunks)):
rowstoskip = range(1, chunks*rowstoread-1) if segment > 0 else 0
chunk = pd.read_csv("datafile.csv", dtype={'attribute_1': np.int16, 'attribute_2': np.float64}, skiprows=rowstoskip, nrows=rowstoread)
x = chunk['attribute_1'].values
y = chunk['attribute_2'].values[-1]
#process data here and try to get rid of memory afterwards
del chunk, x, y
gc.collect()
Несмотря на то, что я пытаюсь освободить память от данных, которые я прочитал, импорт начинается быстро и становится очень медленным в зависимости от номера текущего чанка.
Есть что-то, что я пропускаю? Кто-то знает причину этого и как исправить?
Спасибо заранее,
smaica
Edit:
Благодаря @ Wen-Ben я могу обойти эту проблему с помощью метода chunk из pandas read_csv. Тем не менее я удивляюсь, почему это происходит