读取csv时内存错误

eufgjt7s  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(283)

我正在尝试将一些信息读入pandas dataframe中,并且由于数据的价值而面临问题。
pc规格:
内存32 gb
英特尔i7 4ghz
设置:
数据在mysql数据库中,有9列(7 int,1 date,1 datetime)。db在本地计算机上,因此没有internet带宽问题。2200万。数据行。
尝试直接从mysql服务器读取-它永远不会结束。

engine = sqlalchemy.create_engine('mysql+pymysql://root:@localhost:3306/database')

search_df = pd.read_sql_table('search', engine)

我与so进行了核对,得到的印象是,与其使用连接器,不如解析csv。我将表导出到csv。
csv文件大小-1.5gb
我的代码

dtype = {
    'search_id' : int,
    'job_count_total' : int,
    'job_count_done' : int,
    'city_id_start' : int,
    'city_id_end' : int,
    'date_start' : str,
    'datetime_create' : str,
    'agent_id' : int,
    'ride_segment_found_cnt' : int
}

search_df = pd.read_csv('search.csv', sep=',', dtype=dtype)

我两个引擎都试过了, c 以及 python ,不同的块大小, low_memory 作为 True 以及 False ,指定了dtypes和not,但仍在获取 MemoryError .
我尝试了上面问题中提到的一切(标记为起源,我的为复制品),但没有任何改变。
我只发现了两个不同点:
如果我在没有块的情况下解析,那么在解析时会出现内存错误。
当我在分块解析的时候-连接成一个df。
另外,按5\u 000\u 000行分块在解析时会出错,在连接时会出错。
以下是有关连接的错误消息:

pandas.errors.ParserError: Error tokenizing data. C error: out of memory
6gpjuf90

6gpjuf901#

基本上,问题出在记忆上。我玩了一点区块大小+添加了一些过滤,我后来在代码中对区块。这使我能够将Dataframe放入内存。

相关问题