pandas - 熊猫数据透视表内存错误,大量可用内存
问题描述
关于我的 df 的信息:
RangeIndex: 14151145 entries, 0 to 14151144
Data columns (total 4 columns):
id object
idf object
ch object
hr uint8
dtypes: object(3), uint8(1)
memory usage: 337.4+ MB
我的系统有 120GB 内存,当我运行时:
dfp = df.pivot_table(index='id', columns=['idf','ch'],aggfunc='count')
我生成的数据透视表将有 10800 列。
我的内存消耗达到 35 GB 左右,然后出现内存错误。我无法理解这个问题,因为我有很多可用内存。
我在 JupyterNotebook 中运行代码。
解决方案
我找不到任何可以帮助我一次性处理所有数据的东西。
因此,将我的 df 切成n块 wrt 到ids,每个 id 可以有多个样本。
def partition(lst, n):
division = len(lst) / float(n)
return [ lst[int(round(division * i)): int(round(division * (i +
1)))] for i in range(n) ]
chunks_df = pd.DataFrame()
ids = dt_m['id'].unique()
part_ids=partition(ids,5)
i=0
gc.collect()
for lst in part_ids:
chunks_df=chunks_df.append(dt_m[dt_m['id'].isin(lst)].PIVOT_OPERATION())
print("{} batch done".format(i))
i=i+1
推荐阅读
- android - 无法在 Jetpack 示例应用中为 ViewPager 充气
- amazon-web-services - Amazon EMR 和 Spark 流式传输
- prestashop - 迁移 Prestashop 后我有后端的空白页
- javascript - 为什么 JavaScript 查看器没有显示在 Eclipse 编辑器选择中?
- javascript - 问题在一页上渲染多个 CanvasJS 图表
- php - 如何检查文件是否存在于一组路径中?
- google-cloud-platform - GCP:如何更改 VPC 子网区域?
- powershell - 如何在 ps 脚本路径有空格且路径派生自 %~dp0% 时从批处理文件运行 powershell 脚本
- python - 为什么 PIL.Image.open() 函数对象的维度在转换为 numpy 数组时会发生变化
- python - 需要在python中以不同格式从现有字典创建新字典