我有一个很大的数据文件,要在jupyter笔记本中处理。 我在for循环中使用pandas来指定ans从文件中读取的行:
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()
尽管我尝试释放以后读取的数据的存储空间,但导入速度很快,并且根据当前块的数量而变得非常慢。
有什么我想念的吗?有人知道原因以及如何解决吗?
预先感谢, 斯玛卡
编辑: 感谢@ Wen-Ben,我可以使用pandas read_csv中的chunk方法来解决这个问题。不过我不知道为什么会这样