我正在尝试读取20gb的数据集。我已经搜索了一个解决方案,我试过了:
data = pd.read_csv('dataset.csv', chunksize=1000,usecols=fields)
df = pd.concat(data, ignore_index=True)
但在传递到concatenate时仍然会出现内存错误。 (我多次改变chunksize,仍然相同)
我有16GB的RAM工作在3000mhz。
有什么建议吗?
我正在尝试将数据导入数据框以进行数据分析,并将其导出回导出。 (需要从nans和噪声数据中清除数据。)
答案 0 :(得分:1)
不确切地知道你想要/需要用数据完成什么确实使得这很棘手 - 但大多数数据操作都可以用SQL完成,因此我建议使用sqlite3作为数据处理引擎。
sqlite3将数据存储在磁盘上,并将避免将20Gb数据读入16Gb或RAM的不可能性。
另外,请阅读pandas.DataFrame.to_sql
的文档您将需要类似(未经测试)的内容:
import sqlite3
conn = sqlite3.connect('out_Data.db')
data = pd.read_csv('dataset.csv', chunksize=1000, usecols=fields)
for data_chunk in data:
data_chunk.to_sql(conn, if_exists='append')
c = conn.cursor()
c.execute("SELECT * FROM data GROUPBY variable1")
<<<perform data manipulation using SQL>>>
请记住,除非您执行的操作大大减少了内存占用,否则您无法将数据带入pandas数据框。
要转换回.csv,请关注Write to CSV from sqlite3 database in python
为了获得更好的表现: