python读取sav⽂件_pythonsavReaderWriter库的使⽤总结excel格式的数据,客户要求必须转换为spss格式的数据,折腾了两天,记录下学习过程。savReaderWriter的安装
当前环境:win10 64位, python3.5.4
pip3 install savReaderWriter 和 下载离线包后python setup.py install 后都⽆法正常安装
错误如下:
File "D:\Python35\lib\distutils\log.py", line 34, in _log
stream.write('%s\n' % msg)
UnicodeEncodeError: 'gbk' codec can't encode character '\xdf' in position 39: illegal multibyte sequence
因为时间⽐较紧,相关资料⽐较少,没有解决这个问题,直接将 savReaderWriter 离线安装包⾥的 savReaderWriter ⽂件夹复制到D:\Python35\Lib\site-packages⽬录下,可以正常使⽤。
注:在ubuntu下使⽤ pip3 install savReaderWriter ⽆问题
2.savReaderWriter中savReader的使⽤
data = savReader(file_path, ioUtf8=True)
读取格式为.sav的spss数据
以下是详细的⽤法⽰例
λ ipython
Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import savReaderWriter as sav
In [2]: file_path = r'somefile.sav'
In [3]: data = sav.SavReader(file_path, ioUtf8=True)
In [4]: data
Out[4]:
In [5]: data.varTypes
Out[5]: {'v2': 0, 'v3': 0, 'var1': 240}
In [6]: data.varLabels
Out[6]: {'v2': '我是v2', 'v3': '我是v3', 'var1': '我是var1'}
In [7]: data.valueLabels
Out[7]:
{'var1': {'1': 'a',
'2': 'b'}}
In [8]: data.formats
Out[8]: {'v2': 'F8.2', 'v3': 'F8.2', 'var1': 'A240'}
3.savReaderWriter中SavWriter的使⽤
这个是最困扰⼈的,先说总结:
1.若变量类型为数值,varType = 0, valueLabels中的key必须为int,否则报错
python怎么读取桌面上的文件
2.若变量类型为字符串,varType>0, valueLabels中的key必须为str,否则报错
写⼊⽅法:
with sav.SavWriter(savFileName, varNames, varTypes, valueLabels, varLabels, foramtas,ioUtf8=True) as writer:
for record in records:
writer.writerow(record)
3.定义varType,和formats参数时要注意:
若变量为数值,varType= 0
若varType>0 ,表⽰字符串;
若变量为整数,可以在formats中定义{varName:'F1'},若变量为float,可以在formats中通过‘F8.3’等⽅式实现保留⼩数点3位。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。