Python 加载字符串并计算它的内存效率
我有一个csv,其中有一列包含Python 加载字符串并计算它的内存效率,python,pandas,csv,dataframe,evaluation,Python,Pandas,Csv,Dataframe,Evaluation,我有一个csv,其中有一列包含浮动列表,我使用json.loads()对其进行评估 问题是csv非常大。当我加载整个CSV时,它会占用40GB的内存 经过评估后,它的大小将增长到160-170 GB。我尝试使用一个函数来定义一个作用域,然后垃圾收集器释放未使用的内存,但它不起作用。我在用朱庇特笔记本 我尝试使用脚本,因为Ipython保留了引用,但这并没有解决问题。我还尝试过使用pandas.read_csv(…,converters={'float_nums':json.loads}),但没有
浮动列表
,我使用json.loads()
对其进行评估
问题是csv非常大。当我加载整个CSV时,它会占用40GB的内存
经过评估后,它的大小将增长到160-170 GB。我尝试使用一个函数来定义一个作用域,然后垃圾收集器释放未使用的内存,但它不起作用。我在用朱庇特笔记本
我尝试使用脚本,因为Ipython保留了引用,但这并没有解决问题。我还尝试过使用pandas.read_csv(…,converters={'float_nums':json.loads})
,但没有任何改进
这是我使用的函数
def preprocess(df):
df.float_nums = df.float_nums.apply(json.loads)
如何处理这个问题?这是一个XY问题。如果您有几行json,那么应该使用
df=pd.read_json(…,lines=True)
。我已经解释了主要问题和我尝试过的方法。同样-我有一个带有文本列的大CSV和一个带有浮点数的列,我必须将它们作为浮点数列表加载,而不是字符串加载,因为它是由read\u CSV
加载的。那么,为什么需要json.loads?我还尝试了literal\u eval()
模块和内置的eval()
,但是json.loads()
结果证明是最快的,并且给出了相同的结果-经过评估的浮动列表。您是否尝试过使用pd.read\u csv(..)
分块读取csv?查看read\u csv的chunksize
参数。