Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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_Database_Pandas_Numpy_Dataframe - Fatal编程技术网

Python 读取大数据集

Python 读取大数据集,python,database,pandas,numpy,dataframe,Python,Database,Pandas,Numpy,Dataframe,我正在尝试读取20gb的数据集。我一直在寻找解决方案,我尝试过: data = pd.read_csv('dataset.csv', chunksize=1000,usecols=fields) df = pd.concat(data, ignore_index=True) 但在传递到连接时仍会出现内存错误。(我改变了很多次chunksize,还是一样) 我有16gb的RAM在3000mhz下工作 有什么建议吗 我正在尝试将数据导入到数据框中进行数据分析,并将其导出回来。(数据需要

我正在尝试读取20gb的数据集。我一直在寻找解决方案,我尝试过:

   data = pd.read_csv('dataset.csv', chunksize=1000,usecols=fields)
   df = pd.concat(data, ignore_index=True)
但在传递到连接时仍会出现内存错误。(我改变了很多次chunksize,还是一样)

我有16gb的RAM在3000mhz下工作

有什么建议吗


我正在尝试将数据导入到数据框中进行数据分析,并将其导出回来。(数据需要从NAN和嘈杂的数据中清除)。

不知道您想要/需要用数据完成什么确实让这变得很棘手,但大多数数据操作都可以用SQL完成,因此我建议使用SQL作为数据处理引擎

将数据存储在磁盘上,可以避免将20Gb的数据读入16Gb或RAM的可能性

另外,请阅读文档以了解更多信息

您将需要以下内容(未测试):

导入sqlite3 conn=sqlite3.connect('out\u Data.db')) data=pd.read\u csv('dataset.csv',chunksize=1000,usecols=fields) 对于数据中的数据块: 数据块到sql(连接,如果存在='append') c=连接光标() c、 执行(“从数据分组中选择*变量1”) 请记住,除非您执行的操作大大减少了内存占用,否则无法将数据放入数据框中

要转换回.csv,请执行以下操作

为了获得更好的性能:

  • 将区块大小增加到系统可以处理的最大值
  • sqlite3 CLI实际上有自动导入.csv文件的方法,这比通过python要快得多

您真的需要将整个数据集存储在内存中,还是可以将其分块处理?可能是相关的-阅读一下(用于打开大型excel文件,建议使用CSV)相关的:还有什么让你相信,当你只有16GB的RAM时,你可以加载20GB的文件?@MaxU我看到了你的解决方案,但没有得到“进程”任务看看这个:。您是否尝试过使用Dask框架?
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>>>