Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么数据帧占用的内存比它来自的文件大?_Python_Python 3.x_Pandas_Memory - Fatal编程技术网

Python 为什么数据帧占用的内存比它来自的文件大?

Python 为什么数据帧占用的内存比它来自的文件大?,python,python-3.x,pandas,memory,Python,Python 3.x,Pandas,Memory,我有一个大小为487MB的txt文件。然而,当我用这个文本文件创建一个数据帧时,它在内存中所占的空间略大于2.5GB。有人能解释为什么会发生这种情况吗 >>>df=pd.read_csv('mytxtfile.txt', sep=',') >>>sys.getsizeof(df) 2743190253 可能有很多原因。如果不查看您的数据,我们无法确切地告诉您原因,但为什么您希望它占用更少/更多的空间?我不知道额外的空间究竟来自何处(我认为这是将数据存储在列

我有一个大小为487MB的txt文件。然而,当我用这个文本文件创建一个数据帧时,它在内存中所占的空间略大于2.5GB。有人能解释为什么会发生这种情况吗

>>>df=pd.read_csv('mytxtfile.txt', sep=',')

>>>sys.getsizeof(df)
2743190253

可能有很多原因。如果不查看您的数据,我们无法确切地告诉您原因,但为什么您希望它占用更少/更多的空间?我不知道额外的空间究竟来自何处(我认为这是将数据存储在列和行中的一般开销,尽管我相信一些更聪明的人可以对此做出更好的评论);但是,处理
pandas
dataframes的一般经验法则是,内存中可用数据的大小始终是可用数据的5-10倍。这条规则似乎也适用于您的案例。根据您的数据,这是可能的。例如,如果我导入一个包含大量
0,1
且缺失的文件,则每个文件在
txt
中都是0或1字节,但在数据中是4或8字节(32或64位整数/浮点)。@QuangHoang:有意义。在处理大小为300MB-1.5GB的文件时,我不断遇到内存错误。只有当我检查内存中df的大小时,我才意识到为什么会发生这种情况!请注意,这可能是另一种情况:从根本上说,您的csv是文本,并且基于文本的格式没有理由比反序列化该文本并在内存中具体化某些数据结构时的格式更大或更小。可能有很多原因。如果不查看您的数据,我们无法确切地告诉您原因,但为什么您希望它占用更少/更多的空间?我不知道额外的空间究竟来自何处(我认为这是将数据存储在列和行中的一般开销,尽管我相信一些更聪明的人可以对此做出更好的评论);但是,处理
pandas
dataframes的一般经验法则是,内存中可用数据的大小始终是可用数据的5-10倍。这条规则似乎也适用于您的案例。根据您的数据,这是可能的。例如,如果我导入一个包含大量
0,1
且缺失的文件,则每个文件在
txt
中都是0或1字节,但在数据中是4或8字节(32或64位整数/浮点)。@QuangHoang:有意义。在处理大小为300MB-1.5GB的文件时,我不断遇到内存错误。只有当我检查内存中df的大小时,我才意识到为什么会发生这种情况!请注意,这可能是另一种情况:从根本上说,您的csv是文本,并且基于文本的格式没有理由比反序列化该文本并在内存中具体化某些数据结构时的格式更大或更小。