首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将大型.sav文件转换为csv文件

如何将大型.sav文件转换为csv文件
EN

Stack Overflow用户
提问于 2020-05-22 23:38:56
回答 2查看 1K关注 0票数 1

我正在尝试使用Python将一个大的~2GBSPSS (.SAV)文件转换为CSV。

如果有一个大小小于500 is的文件,那么执行以下操作没有问题:

代码语言:javascript
运行
复制
import pandas as pd
df = pd.read_spss('stdFile.sav')
df.to_csv("stdFile.csv", encoding = "utf-8-sig")

但在这种情况下,我得到了一个MemoryError.

我期待未来的解决方案,不一定在Python中。但是我没有SPSS许可证,所以我必须用另一个工具来转换文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-23 07:36:09

您可以使用python的pyreadstat包以块形式读取spss文件,并将每个块保存到csv中:

代码语言:javascript
运行
复制
import pyreadstat
fpath = "path/to/stdFile.sav"
outpath = "stdFile.csv"
# chunksize determines how many rows to be read per chunk
reader = pyreadstat.read_file_in_chunks(pyreadstat.read_sav, fpath, chunksize= 10000)

cnt = 0
for df, meta in reader:
    # if on the first iteration write otherwise append
    if cnt>0:
        wmode = "a"
        header = False
    else:
        wmode = "w"
        header = True
    # write
    df.to_csv(outpath, mode=wmode, header=header)
    cnt+=1

这里有更多信息:https://github.com/Roche/pyreadstat#reading-rows-in-chunks

票数 1
EN

Stack Overflow用户

发布于 2020-05-22 23:48:01

首先导入模块savReaderWriter将.sav文件转换为结构化数组,然后导入模块numpy将结构化数组转换为csv:

代码语言:javascript
运行
复制
pip install savReaderWriter

savReaderWriter

代码语言:javascript
运行
复制
import savReaderWriter 
import numpy as np

reader_np = savReaderWriter.SavReaderNp("stdFile.sav")
array = reader_np.to_structured_array("outfile.dat") 
np.savetxt("stdFile.csv", array, delimiter=",")
reader_np.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61965489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档