在Windows 7(x64)上用Pandas读取大型SPSS文件的性能

4 投票
1 回答
4991 浏览
提问于 2025-04-18 16:22

我有一个很大的SPSS文件(里面有超过100万条记录,差不多150列),我想把它转换成Pandas的DataFrame格式。

把这个文件转换成列表需要几分钟,然后再把列表转换成DataFrame又要几分钟,最后还要花几分钟来设置列的标题。

有没有什么我没想到的优化方法,可以让这个过程更快呢?

import pandas as pd
import numpy as np
import savReaderWriter as spss

raw_data = spss.SavReader('largefile.sav', returnHeader = True) # This is fast
raw_data_list = list(raw_data) # this is slow
data = pd.DataFrame(raw_data_list) # this is slow
data = data.rename(columns=data.loc[0]).iloc[1:] # setting columnheaders, this is slow too.

1 个回答

3

你可以使用 rawMode=True 来加快一些处理速度,像这样:

raw_data = spss.SavReader('largefile.sav', returnHeader=True, rawMode=True)

这样做的话,日期时间类型的变量(如果有的话)就不会被转换成 ISO 格式的字符串,而且 SPSS 的 $sysmis 值也不会被转换成 None,还有其他一些小变化。

撰写回答