pandas 数据框 - 选择行并清除内存?

2024-06-22

我有一个大的 pandas 数据框(大小 = 3 GB):

x = read.table('big_table.txt', sep='\t', header=0, index_col=0)

因为我在内存限制下工作,所以我对数据帧进行了子集化:

rows = calculate_rows() # a function that calculates what rows I need
cols = calculate_cols() # a function that calculates what cols I need
x = x.iloc[rows, cols]

计算行和列的函数并不重要,但它们绝对是原始行和列的较小子集。然而,当我执行此操作时,内存使用量增加了很多!最初的目标是将内存占用量缩小到 3GB 以下,但内存使用量却远远超过 6GB。

我猜这是因为 Python 在内存中创建了数据帧的本地副本,但没有清理它。可能还发生其他事情......所以我的问题是如何对大型数据框进行子集化并清理空间?我找不到适当选择行/列的函数。

我读过很多 Stack Overflow,但找不到太多关于这个主题的内容。可能是我没有使用正确的关键字,所以如果您有建议,也可能会有所帮助。谢谢!


你最好这样做:

Specify usecols子选择您首先想要的列read_csv, see here https://stackoverflow.com/questions/15017072/pandas-read-csv-and-filter-columns-with-usecols.

然后分块读取文件,参见here https://stackoverflow.com/questions/11622652/large-persistent-dataframe-in-pandas/12193309#12193309,如果您想要的行被选择,则将它们分流为关闭,最后连接结果。

伪代码如下:

reader = pd.read_csv('big_table.txt', sep='\t', header=0, 
                     index_col=0, usecols=the_columns_i_want_to_use, 
                     chunksize=10000)

df = pd.concat([ chunk.iloc[rows_that_I_want_] for chunk in reader ])

这将具有恒定的内存使用量(块的大小)

加上所选行的使用 x 2,这将在您连接行时发生 连接后,使用率将下降到所选行的使用率

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas 数据框 - 选择行并清除内存? 的相关文章

  • 搜索/替换 xml 内容

    我已经成功地使用 xml etree ElementTree 解析 xml 搜索内容 然后将其写入不同的 xml 然而 我只是处理单个标签内的文本 import os sys glob xml etree ElementTree as ET
  • 以编程方式获取 iOS 应用程序中的内存使用情况实时/脏字节(不是驻留/真实字节)

    根据我到目前为止所读到的内容 实际 驻留字节表示分配给应用程序的字节数 包括应用程序不再使用但尚未被操作系统回收的字节数 活动 脏字节是应用程序实际使用且操作系统无法回收的字节 我认为 XCode 调试导航器中显示的数字是 Live Byt
  • 从 java 代码运行 Python 脚本

    这是我第一次在java中尝试python 我正在尝试从我的代码执行 python 脚本 如下所示 Process process Runtime getRuntime exec python C Users username Desktop
  • python 函数 *args 和 **kwargs 以及其他指定的关键字参数

    我有一个 Python 类 它的方法应该以这种方式接受参数和关键字参数 class plot def init self x y self x x self y y def set axis self args xlabel x ylabe
  • 如何在我的 GUI 上绘图

    我正在设计一个 GUIPyQt当我单击一个按钮来绘制我创建的函数的数据图时 我需要显示一个 matplotlib pylab 窗口 它就像 Matlab 中使用的运行时 每次按下该按钮时 我都想将 matplotlib pylab 窗口保留
  • 将列表列表替换为“压缩”列表列表,同时保持顺序

    我有一个列表列表 如我所附的代码所示 如果有任何共同值 我想链接每个子列表 然后我想用列表的精简列表替换列表的列表 例子 如果我有一个清单 1 2 3 3 4 I want 1 2 3 4 如果我有 4 3 1 2 3 I want 4 3
  • 在Python中将月份和年份的列合并为季度和年份的列

    我有一个数据框 df Month 1 8 Year 2015 2020 df pd DataFrame data df df 想要将其转变为新列 期望的输出 df Month 1 8 Year 2015 2020 Quarter Q1201
  • dask分布式内存错误

    在分布式作业上运行 Dask 时 我在调度程序上遇到以下错误 distributed core ERROR Traceback most recent call last File usr local lib python3 4 dist
  • Python父类访问子私有变量

    以下代码会生成错误 class A object def say something self print self foo print self bar class B A def init self self foo hello sel
  • 为什么 (Oracle) JVM 对内存使用有固定上限 (-Xmx)?

    本着提问的精神Java 为什么存在 MaxPermSize https stackoverflow com questions 3356005 java why does maxpermsize exist 我想问一下为什么Oracle J
  • Python httplib 和 POST

    我目前正在使用别人编写的一段代码 它用httplib向服务器发出请求 它以正确的格式提供所有数据 例如消息正文 标头值等 问题是 每次尝试发送 POST 请求时 数据都在那里 我可以在客户端看到它 但没有任何内容到达服务器 我已经阅读了库规
  • Android 支持库的 Proguard 规则(v4 和 v7)

    我在我的应用程序中使用 android 支持库 v4 和 v7 我只使用支持库中的几个小部件 不是全部 但在最终版本的 API 中 支持库中包含了 18K 函数 附截图 如何减少它们 以下是我的混淆器配置 optimizationpasse
  • 从Python列表中挑选出具有特定索引的项目

    我确信在 Python 中有一种很好的方法可以做到这一点 但我对这门语言还很陌生 所以如果这是一个简单的方法 请原谅我 我有一个列表 我想从该列表中挑选某些值 我想要挑选的值是列表中索引在另一个列表中指定的值 例如 indexes 2 4
  • Python for 循环前瞻

    我有一个 python for 循环 其中我需要向前查看一项以查看在处理之前是否需要执行某项操作 for line in file if the start of the next line 0 perform pre processing
  • matplotlib 后端 - 我关心吗?

    gt gt gt import matplotlib gt gt gt print matplotlib rcsetup all backends u GTK u GTKAgg u GTKCairo u MacOSX u Qt4Agg u
  • 如何使用 opencv python 根据检测到的物体的位置生成其热图

    我需要根据对象的位置生成其热图 示例 视频帧中检测到的绿色球 如果它长时间停留在某个位置 那么该位置应该是红色的 并且球在短时间内经过的帧中的位置必须是蓝色的 这样我就需要生成热图 提前致谢 那么你在这里可以做的是 1 首先定义一个热图作为
  • Python pandas:向我的数据框中添加一列来计算变量

    我有一个像这样的数据框 gt org group org1 1 org2 1 org3 2 org4 3 org5 3 org6 3 我想将列 count 添加到 gt 数据帧以计算组的成员数量 预期结果如下 org group count
  • 导入错误:无法导入名称

    我有一个名为 google translate python 的库 https github com terryyin google translate python https github com terryyin google tra
  • VSCode IntelliSense 认为 Python 'function()' 类存在

    VSCode IntelliSense 正在完成一个名为的 Python 类function 这似乎不存在 例如 这似乎是有效的代码 def foo value return function value foo 0 But functio
  • 定义Python类时,如何在其中设置随机变量?

    假设我有一个名为Person 其中只有该人的姓名和性别 性别应从男性和女性中随机选择 为此 我导入random randint 功能 根据随机int确定随机性别 import random class Person alias random

随机推荐

  • 如何判断您的选择查询是否在事务内?

    在 Django 1 5 x 中 我有一个长时间运行的管理命令 其中选择查询返回过时的数据 我怀疑这是因为它们在数据库连接上较早启动的事务中运行 有没有办法判断查询是在事务中运行还是处于自动提交模式 这是我之前发布的问题的更集中的版本htt
  • bootstrap表格边框删除水平线

    我想删除引导程序表格边框的水平线并保留垂直线 我尝试了很多解决方案并做了很多研究 但我仍然找不到解决方案 div class container div class row div class col md 12 table class t
  • SQL Server Management Studio SSMS 尝试“保存到文件”而不是在 F5 上执行

    这种情况间歇性地发生 似乎与意外敲击按键有关 有什么想法导致这个吗 听起来您好像不小心从 结果到网格 的默认查询选项更改为 结果到文件 如果是这种情况 很容易修复 从查询菜单 gt 结果到 gt 结果到网格 OR 按 Ctrl D 尝试上述
  • 错误:分配关联数组时必须使用下标

    我想要 bash 中的哈希图等效项 键为string和价值观作为list的整数 所以 我写了下面的代码 declare A PUBS PUBS FEE 345 342 FOO 1 2 44 BAR 23 67 但是 我收到一条错误消息mus
  • 当响应为带有位置标头的 303 时,防止 xhr 重定向

    我收到带有位置标头的 303 响应 如何防止 XMLHttpRequest 重定向 下面是代码 var xhr new XMLHttpRequest xhr open GET api v1 test e target data machin
  • Ajax Jquery 调用重定向

    我是 ajax 的新手 我知道有人已经遇到过这个问题 我有一个基于 Spring MVC 构建的遗留应用程序 它有一个拦截器 过滤器 可以将用户重定向到登录 每当没有会话时页面 public class SessionCheckerInte
  • 哪个 Python 模块适合列表中的数据操作?

    我有一个 x y 和 z 坐标序列 需要对其进行操作 它们位于三个元组的一个列表中 例如 x1 y1 z1 x2 y2 z2 我需要加法 乘法和对数来处理我的数据 我想研究一个像 awk 语言一样强大的模块 我不确定你到底在追求什么 您可以
  • JasmineNodeOpts - 打印量角器测试结果

    背景 我使用 Jasmine 作为 Protractor 的测试框架 我一直在使用茉莉花规格记者 https www npmjs com package jasmine spec reporter用于报告 昨天我稍微改变了我的jasmine
  • 我的 32 位头痛现在变成了 64 位偏头痛?!? (或 64 位 .NET CLR 运行时问题)

    从在 64 位 JIT 下运行与 32 位 JIT 下运行 NET 应用程序切换到在 32 位 JIT 下运行时 在性能 内存等方面发生了哪些不寻常的 意想不到的后果 我对好的事情感兴趣 但对人们遇到的令人惊讶的坏问题更感兴趣 我正在编写一
  • 如何在 ggmap 中旋转地图视图?

    我希望将 ggmap 对象内的视图从默认的 up true North 旋转到我选择的自定义角度 但在 ggmap 或 get map 中找不到该选项 目前 我有以下代码 map1 lt get map location c 78 8722
  • 使用 msiexec 卸载应用程序时是否有 GUID 的替代方案?

    目前 我们在运行包含 msiexec 的卸载脚本时使用 GUID 来识别应用程序 我遇到的问题是每次安装最新版本的应用程序时 GUID 都会发生变化 所以我想知道是否有其他方法可以识别使用 msiexec 运行的应用程序 首先 应用程序新版
  • 在 flutter 中用 2 张图像设计背景

    我想创建一个新的无状态小部件类 它由 2 个图像 顶部 底部 和一条线 由函数定义 例如 x x 500 宽度 如果不应该绘制的话可以为 0 和颜色 分隔两个图像 对于每个像素 如果像素的 y 位置大于结果f x width 2底部的一个像
  • 如何将列表拆分为大小相等的块?

    如何将任意长度的列表拆分为大小相等的块 See also How to iterate over a list in chunks https stackoverflow com q 434287 To chunk strings see
  • Spring-SAML:传入的 SAML 消息无效

    我在将我的应用程序与 SAML 集成时遇到问题 以下是我的错误 org springframework security saml SAMLProcessingFilter attemptAuthentication Incoming SA
  • 使用 uWSGI 部署 Pylon

    我们正在尝试将我们的内联网迁移到 Pylons 我的老板正在尝试设置 Pylons 以在 Apache 后面使用 uWSGI 以便他可以设置多个独立的应用程序 然而 他在设置方面遇到了困难 uWSGI 的 C 源代码中存在一些明显的代码问题
  • 通过Shell脚本执行CQL?

    我正在尝试从 shell 脚本执行 CQL 命令 我能够连接到 cqlsh 我使用的 CQL 版本是 1 1 18 但无法将查询发送到 cql 有什么想法或建议如何继续进行吗 我是否需要连接到 Cassandra 并使用 shell 脚本执
  • 如何找出哪个依赖项导致特定库被下载?

    运行我的 SBT 项目时 控制台输出中有一行 info downloading http repository nexus content groups public org jboss netty netty 3 2 3 Final ne
  • iOS MDM 证书到期

    我正在创建 MDM 服务器 并已成功完成所有步骤 并且能够在设备上安装配置文件 在设备上安装的 mobileconfig 文件中 我们传递 SSL 证书 APNS 证书和配置文件信息 1 如果服务器上的SSL证书更改了怎么办 我想很多人没有
  • 如何在点击时触发/重新加载 Masonry 插件

    因为我有不同的选项卡 砌体不会加载隐藏的项目 所以当我单击新选项卡时 图像会彼此堆叠 我知道这个问题之前已被问过 并通过单击选项卡用触发砌体回答 但是如何我这样做不会弄乱第一个选项卡 目前正在调用砌体 function container
  • pandas 数据框 - 选择行并清除内存?

    我有一个大的 pandas 数据框 大小 3 GB x read table big table txt sep t header 0 index col 0 因为我在内存限制下工作 所以我对数据帧进行了子集化 rows calculate