在使用SPSS Modeler进行数据分析和数据挖掘时,官方Demos中自带数据的格式为sav格式,我们只能通过该软件进行数据的读取,如果想在其他途径如MySQL中导入该数据,那是不行的。
如果我们在学习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中源节点更改。也可以将数据导入数据库,通过其他途径进行数据分析和挖掘操作。
转载请注明:宁哥的小站 » SPSS Modeler下sav格式转成csv格式