热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在不制作副本的情况下缩小pandasDataFrame的尺寸?-howtodownsizeapandasDataFramewithoutmakingacopy?

IhaveRAMconcerns,andIwanttodownsizemydataIloaded(withread_stata()youcannotonlyafe

I have RAM concerns, and I want to downsize my data I loaded (with read_stata() you cannot only a few rows, sadly). Can I change the code below to use only some rows for X and y, but not make a copy? That would, even if temporarily defeat the purpose, I want to save on memory, not add ever more to my footprint. Or probably downsize the data first (does `reshape' do that without a copy if you specify a smaller size than the original?) and then pick some columns?

我有RAM问题,我想缩小我加载的数据(使用read_stata(),你不仅可以使用几行,遗憾的是)。我可以更改下面的代码,只使用X和y的某些行,但不能复制吗?即使暂时失败了,我也希望节省内存,而不是增加我的足迹。或者可能首先缩小数据的大小(如果指定的尺寸小于原始尺寸,那么“重塑”会不做副本吗?)然后选择一些列?

data = pd.read_stata('S:/data/controls/notreat.dta')
X = data.iloc[:,1:]
y = data.iloc[:,0]

1 个解决方案

#1


0  

I feel your pain. Pandas is not a memory-friendly library, and 500Mb can quickly turn into >16Gb and shredding performance.

我感觉到你的痛苦。 Pandas不是一个对内存友好的库,500Mb可以很快变成> 16Gb并破坏性能。

However, one thing that's worked for me is memmap. You can use memmap to page in numpy arrays and matrices just about as fast as your databus permits. And as an added benefit, unused pages may be unloaded.

然而,有一件事对我有用的是memmap。您可以使用memmap在numpy数组和矩阵中进行分页,其速度与数据总线允许的速度一样快。并且作为额外的好处,可以卸载未使用的页面。

See here for details. With some work, these memmap np arrays can be used to back a pd.Series or a pd.DataFrame without copying. However, you may find that Pandas later copies you data as you proceed. So, my advice: create a memmap file, and stay in numpy-land.

详情请见此处。通过一些工作,这些memmap np数组可用于支持pd.Series或pd.DataFrame而无需复制。但是,您可能会发现Pandas稍后会在您继续时复制数据。所以,我的建议是:创建一个memmap文件,并保持在numpy-land。

Your other alternative is to use HDFS.

您的另一种选择是使用HDFS。


推荐阅读
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍了如何利用OpenCV库进行图像的边缘检测,并通过Canny算法提取图像中的边缘。随后,文章详细说明了如何识别图像中的特定形状(如矩形),并应用四点变换技术对目标区域进行透视校正。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 本文探讨了如何将Python对象转换为字节流,以实现文件保存、数据库存储或网络传输的需求。主要介绍了利用pickle模块进行序列化的具体方法。 ... [详细]
  • 深入解析 C++ 中的 String 和 Vector
    本文详细介绍了 C++ 编程语言中 String 和 Vector 的使用方法及特性,旨在帮助开发者更好地理解和应用这两个重要的容器。 ... [详细]
  • 本笔记记录了几个典型的 LeetCode 编程题目及其解决方案,包括使用两个栈实现队列、计算斐波那契数列、青蛙跳台阶问题以及寻找旋转排序数组中的最小值。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 深入理解ArrayList
    本文详细解析了ArrayList的工作原理及其性能特点,包括其内存分配机制和增删查改的操作效率。 ... [详细]
  • 深入理解Dockerfile及其作用
    Dockerfile是一种文本格式的配置文件,用于定义构建Docker镜像所需的步骤。通过使用`docker build`命令,用户可以将Dockerfile中的一系列指令转换成一个可执行的Docker镜像。 ... [详细]
  • 本文介绍了如何解决 ChinaASP.Upload 错误 '80040002',即必须添加版权信息的问题,并提供了详细的步骤和注意事项。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • IO流——字符流 BufferedReader / BufferedWriter 进行文件读写
    目录节点流、处理流读文件:BufferedReader的使用写文件:BufferedWriter的使用节点流处理流节点流和处理流的区别和联系字符流Buf ... [详细]
  • 本文介绍了如何使用Java实现数组的冒泡排序算法,以及如何利用Scanner类动态给数组赋值并进行数组扩容。文章详细解释了冒泡排序的原理和步骤,并提供了代码示例。 ... [详细]
author-avatar
JayantKwon
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有