我的服务器有8GB的RAM,而我正在使用pandas read_csv函数将csv文件读取到数据帧,但是对于大于900MB的csv,它正在执行“Killed”。
请有人帮我处理这种情况。 我正在附加我的meminfo,以获取有关如何清除服务器上的内存的建议 Memory info image
答案 0 :(得分:3)
pandas
可以返回大文件的迭代器。
import pandas as pd
foo = pd.read_csv('bar.csv', iterator=True, chunksize=1000)
这将返回一个迭代器。然后,您可以使用for循环将操作应用于数据块。因此,它不会立即将整个文件读入内存。块大小是每个块的行数。
会是这样的:
for chunk in foo:
# do something with chunk
编辑:据我所知,您还必须在块中应用unique
等函数。
import numpy as np
unique_foo = []
for i in df:
unique_foo.append(i['foo'].unique())
unique_foo = np.unique(unique_eff)
答案 1 :(得分:0)
(您应该更加具体地了解您正在键入的代码以及您正在接收的错误类型。)
如果pandas
无法使用过大的文件,则应恢复为更基本的csv
包。如果你感觉更舒服,你仍然可以导入DataFrame。
类似的东西:
with open("file.csv", 'rb') as csv_file:
reader = csv.reader(csv_file, delimiter=',')
df = pd.DataFrame(list(reader))