SPSS Modeler下sav格式转成csv格式

数据挖掘与机器学习 fireling 13982℃

在使用SPSS Modeler进行数据分析和数据挖掘时,官方Demos中自带数据的格式为sav格式,我们只能通过该软件进行数据的读取,如果想在其他途径如MySQL中导入该数据,那是不行的。

demosav

如果我们在学习SPSS教程苦于没有合适数据的时候,那么官方Demos中的数据应该是一个非常好的选择。在此需要解决一个格式转换的问题,就是如何将sav格式转换成常见的数据格式,如csv格式。目前有个开源的Python库,叫savReaderWriter,用于支持sav文件的读写,我们可以利用这个库来进行读操作,并将数据写入其他文件格式。

如下所示,是我写的一个自动寻找sav文件并转换成csv文件的脚本:

#coding: utf-8
import os
import glob
from savReaderWriter import SavReader
import numpy as np
import pandas as pd

'''
.sav - the IBM SPSS Statistics Input Output Module
'''

def convertSavToCsv(srcFile):
    ## Reading files
    fpathandname, fext = os.path.splitext(srcFile)
    assert fext == '.sav'
    desFile = fpathandname+'.csv'
    with SavReader(srcFile) as fp:
        names = fp.varNames
        types = fp.varTypes
        header = fp.header
        # for line in fp:
        #     print line
        records = fp.all()
        # print records
    # records_array = np.array(records)
    # print records_array
    records_dataframe = pd.DataFrame(records, index=None, columns=names)
    # print records_dataframe
    records_dataframe.to_csv(desFile, index=0)

if __name__ == '__main__':
    filename = 'someFile.sav'
    convertSavToCsv(filename)
    for filename in glob.glob('./*.sav'):
        print filename
        convertSavToCsv(filename)

这样在sav文件当前路径下,运行该脚本就可以生成同名的csv文件,同样的,可以将读取的数据存储位其他文件格式如xlsx格式,将官方demo中源节点更改。也可以将数据导入数据库,通过其他途径进行数据分析和挖掘操作。

demo1

转载请注明:宁哥的小站 » SPSS Modeler下sav格式转成csv格式

喜欢 (30)