分析熊猫中的csv时出现各种内存错误

时间:2019-07-20 10:00:09

标签: python pandas csv dataframe

我有一个csv数据库(大小-约1.8 GB),其中包含从网站获取的数据集合。 这是每种线结构的示例:

'link; 
post_name; 
date_article; 
time_article; 
user_name; 
date_comment; 
time_comment; 
comment; 
like;
dislike\n'

我尝试使用pandas数据帧对较小的数据库进行分析,一切正常。但是当我收集整个数据库时,遇到了各种内存错误。

设置块大小,编码,缺少标题,分隔符没有帮助。 这是每次在csv文件中传递几乎所有行的8/10时都会崩溃的代码:

import pandas as pd

merged = r'D:\\proj\\db.csv'
ch_size=10**6
tp = pd.read_csv(merged, sep = u';',header=None, chunksize=ch_size, encoding='utf-8', iterator= True)
df = pd.concat(tp, ignore_index=True)
df[10] = df[2]+u',' + df[3]
df[11] = pd.to_datetime(df[10],errors='coerce', format= u'%d.%m.%Y,%H:%M')
df.sort_values(by=11, inplace=True)

更改chunksize的大小会导致错误行。如果是10**6,则代码在concat操作时崩溃。如果我将其降低到1000,它将在sort_values上崩溃。

还尝试了另一种解决方案:

temp_list = []
for chunk in pd.read_csv(merged, sep = u';',header=None, chunksize=ch_size, low_memory=False):
    temp_list.append(chunk)
for df in temp_list:
    df[10] = df[2]+u',' + df[3]
    df[11] = pd.to_datetime(df[10],errors='coerce', format= u'%d.%m.%Y,%H:%M')
    df.sort_values(by=11, inplace=True)

在这里,由于块大小,在对值进行排序时,甚至在for df in temp_list:中也可能会出现错误。

我还注意到,专用于python进程的RAM几乎达到其限制(我有6 GB)时,代码崩溃。

在这里可以做什么?

0 个答案:

没有答案