我正在参加Walmart Kaggle比赛,我正在尝试创建一个"FinelineNumber"栏目的虚拟列.对于上下文,df.shape
返回(647054, 7)
.我正在尝试制作一个虚拟列df['FinelineNumber']
,它有5,196个唯一值.结果应该是形状的数据框(647054, 5196)
,然后我计划到concat
原始数据框.
几乎每次我运行时fineline_dummies = pd.get_dummies(df['FinelineNumber'], prefix='fl')
,我得到以下错误消息The kernel appears to have died. It will restart automatically.
我在具有16GB RAM的MacBookPro上的jupyter笔记本中运行python 2.7.
有人可以解释为什么会发生这种情况(以及为什么它发生在大多数时间但不是每次都发生)?它是一个jupyter笔记本或熊猫bug?此外,我认为它可能与RAM不足,但我在具有> 100 GB RAM的Microsoft Azure机器学习笔记本上得到相同的错误.在Azure ML上,内核每次都会死掉 - 几乎立刻就会死掉.
它可能是内存使用 - 647054,5196数据帧有3,362,092,584个元素,对于64位系统上的对象指针,它只有24GB.在AzureML上,当VM拥有大量内存时,实际上你可用的内存数量有限(目前是2GB,很快就是4GB) - 当你达到极限时,内核通常会死掉.所以它似乎很可能是内存使用问题.
在进行任何其他操作之前,您可能首先尝试对数据框执行.to_sparse().这应该允许Pandas将大部分数据帧保留在内存之外.