python - 自定义数据透视函数导致高页面错误率和句柄
问题描述
我有一个大约 1700 万行和 7 列的(大)数据框,我想根据两个唯一列转置(枢轴)。由于内存限制,我无法使用该pandas.pivot_table
功能。因此,我试图创建自己的一段代码,逐行转置这个数据帧。代码可见:https ://bpaste.net/show/xRyQ
不幸的是,过了一段时间,我的页面错误率和句柄数开始急剧增加。此外,我的非分页内存基本上为零。目前我不确定这是否是由于内存泄漏,或者这基本上是由于我的“新的、旋转的数据帧”的大小增加并因此消耗了内存。
因此,我的两个核心问题是:
- 我所做的观察的确切原因是什么?这是由于内存泄漏,还是由于数据帧大小的增长?
- 我可以对我的 Python 代码进行哪些更改/改进来解决这些内存问题/加快我的解决方案?例如,通过 Dask 库对数据进行分区是一种选择吗?我宁愿不对我的硬件规格进行任何更改。
我的硬件规格是:
- 16 GB 内存
- 8 个 CPU 内核,Intel i7-6700 (3.4 GHz)
- Windows 7, 64 位
提前谢谢您,如果您有任何其他问题,请告诉我:)
解决方案
正如您pivot_df
事先知道您的大小一样,最好预先分配整个 pivot_df 然后填充行,而不是逐行追加导致每次复制数据帧(另请参见此答案)。
推荐阅读
- javascript - 覆盖对象内调用其初始实现的函数
- c++ - 用于枚举绑定但未连接的套接字的 WIndows API
- python - 寻找彼此靠近的对象边界
- php - 如何在php中创建文件扫描器时修复超时
- unity3d - Unity 材质中的发射对附近的静态物体没有影响
- c++ - How to fix off-by-one issue in for-loop
- firebase - Ionic 4 Uploadcare ERR_CONNECTION_REFUSED
- android - ConstraintLayout Barrier 在设计视图中不可见
- react-native - 可以在 React Native 库中加载 .XIB 或 Storyboard 吗?
- python - MacO 上的证书验证失败