Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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 在200 GB RAM工作站上读取14 GB csv文件时出错_Python_Memory_Pandas_Large Files - Fatal编程技术网

Python 在200 GB RAM工作站上读取14 GB csv文件时出错

Python 在200 GB RAM工作站上读取14 GB csv文件时出错,python,memory,pandas,large-files,Python,Memory,Pandas,Large Files,这是我根据家庭id生成文件的代码。然后我将分别分析每个家庭 import pandas as pd data = pd.read_csv("110homes.csv") for i in (np.unique(data['dataid'])): print i d1 = pd.DataFrame(data[data['dataid']==i]) k = str(i) d1.to_csv(k + ".csv") 然而,我得到了这个错误。机器有200 GB RAM,

这是我根据家庭id生成文件的代码。然后我将分别分析每个家庭

import pandas as pd
data = pd.read_csv("110homes.csv")
for i in (np.unique(data['dataid'])):
    print i
    d1 = pd.DataFrame(data[data['dataid']==i])
    k = str(i)
    d1.to_csv(k + ".csv")
然而,我得到了这个错误。机器有200 GB RAM,并且也显示内存错误:

    data = pd.read_csv("110homes.csv")
  File "/usr/lib/python2.7/site-packages/pandas/io/parsers.py", line 474, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "/usr/lib/python2.7/site-packages/pandas/io/parsers.py", line 260, in _read
    return parser.read()
  File "/usr/lib/python2.7/site-packages/pandas/io/parsers.py", line 721, in read
    ret = self._engine.read(nrows)
  File "/usr/lib/python2.7/site-packages/pandas/io/parsers.py", line 1170, in read
    data = self._reader.read(nrows)
  File "pandas/parser.pyx", line 769, in pandas.parser.TextReader.read (pandas/parser.c:7544)
  File "pandas/parser.pyx", line 819, in pandas.parser.TextReader._read_low_memory (pandas/parser.c:8137)
  File "pandas/parser.pyx", line 1833, in pandas.parser._concatenate_chunks (pandas/parser.c:22383)
MemoryError

RAM中的数据可能比磁盘上的数据占用更多的空间。如果看不到您的
110homes.csv
文件,就不可能知道详细信息,但想象一下它每行由10个浮点数组成,如:
0.0,1.0,2.0,
。在CSV中,每一个都使用3个字节+1个字节作为分隔符。在Python中,每个浮点值需要8个字节(在64字节的机器上),每个Unicode字符需要2个字节(另8个字节),字符串长度需要8个字节,每个指针需要8个字节,每行需要8个字节,等等

请这样想:在64位机器上,指针、本机int或本机float的最小大小为8字节。每个字段需要几个,每行还需要几个。与磁盘相比,RAM增加15倍并没有什么不寻常之处


做一个简单的测试:取文件的前10%行,在python处理时通过
top
监视它。看看它使用了多少内存。它至少使用20 GB吗?

RAM中的数据可能比磁盘上的数据占用更多的空间。如果看不到您的
110homes.csv
文件,就不可能知道详细信息,但想象一下它每行由10个浮点数组成,如:
0.0,1.0,2.0,
。在CSV中,每一个都使用3个字节+1个字节作为分隔符。在Python中,每个浮点值需要8个字节(在64字节的机器上),每个Unicode字符需要2个字节(另8个字节),字符串长度需要8个字节,每个指针需要8个字节,每行需要8个字节,等等

请这样想:在64位机器上,指针、本机int或本机float的最小大小为8字节。每个字段需要几个,每行还需要几个。与磁盘相比,RAM增加15倍并没有什么不寻常之处


做一个简单的测试:取文件的前10%行,在python处理时通过
top
监视它。看看它使用了多少内存。它是否至少使用20 GB?

与内存错误无关,但请查看
df.groupby
方法。这将使阅读后的代码更加优雅。您使用的是32位Python吗?它有4G限制——请参阅import struct print struct.calcsize(“P”)*8我运行了这个命令,它显示64。所以这不是问题,我猜为什么问题被否决了?如果你不能回答这个问题,那么至少不要投反对票。有人无缘无故地否决了这个问题,真是可笑。这是一个合法的问题。与您的MemoryError无关,请看一下
df.groupby
方法。这将使阅读后的代码更加优雅。您使用的是32位Python吗?它有4G限制——请参阅import struct print struct.calcsize(“P”)*8我运行了这个命令,它显示64。所以这不是问题,我猜为什么问题被否决了?如果你不能回答这个问题,那么至少不要投反对票。有人无缘无故地否决了这个问题,真是可笑。这是一个合法的问题。