当前位置: 首页 > news >正文

写 SPSS文件系统

写入 SPSS 系统文件(.sav.zsav

以下为相关的 SPSS 命令(以大写形式 CAPS 呈现)

savFileName : str

SPSS 数据文件的文件名
.sav 结尾的文件使用旧版压缩方案压缩。
_uncompressed.sav 结尾的文件不压缩,这在需要用更快的 savReaderWriter.SavReaderNp 类读取文件时非常有用
.zsav 结尾的文件使用 ZLIB(ZSAV)压缩方案(需要 v21 及以上版本的 SPSS I/O 文件支持)

varNames : list

变量名的字符串列表,按其在 SPSS 数据文件中应显示的顺序排列
list of of strings of the variable names in the order in which they should appear in the spss data file

varTypes : dict

变量类型字典 {varName: varType}
varType == 0 → 数值型
varType > 0 → 该长度(以字节为单位)的字符型

valueLabels : dict, 可选

值标签字典 {varName: {value: label}}
对应 SPSS 中的 VALUE LABELS 命令

varLabels : dict, 可选

变量标签字典 {varName: varLabel}
对应 SPSS 中的 VARIABLE LABELS 命令

ioUtf8 : bool, int, 可选

指示与 I/O 模块通信的文本模式
涉及 SPSS 中的 unicode 模式(SET UNICODE=ON)和代码页模式(SET UNICODE=OFF)

代码页模式:ioUtf8=CODEPAGE_MODE、ioUtf8=0 或 ioUtf8=False,使用当前 ioLocale 设置确定读写数据的编码
标准 unicode 模式:ioUtf8=UNICODE_UMODE、ioUtf8=1 或 ioUtf8=True,使用 Unicode 编码(UTF-8)读写数据,返回 unicode 字符串
字节 unicode 模式:ioUtf8=UNICODE_BMODE 或 ioUtf8=2,类似标准 unicode 模式,但返回 byte 字符串。

注意:
以 Unicode 编码保存的数据文件无法被 16 版之前的 IBM SPSS Statistics 读取
Unicode 模式自 IBM SPSS Statistics 21 版起成为默认模式
unicode 模式下打开代码页编码的 SPSS 数据文件,或在代码页模式下以 Unicode 格式保存数据文件时,定义的字符串宽度会自动三倍化

mode : str, 可选

指示打开 savFileName 的模式:
wb → 写入
ab → 追加
cp → 复制:使用 refSavFileName 作为参考文件初始化表头(对应 SPSS 中的 APPLY DICTIONARY 命令)

注意:
默认是 wb,即写入

formats : dict, 可选

格式字典 {varName: printFmt}
对应 SPSS 中的 FORMATS 命令

missingValues : dict, 可选

缺失值字典 {varName: {missing value spec}},对应 SPSS 中的 MISSING VALUES 命令

measureLevels : dict, 可选

测量级别字典 {varName: }
对应 SPSS 中的 VARIABLE LEVEL 命令
有效级别:“unknown”、“nominal”(名义)、“ordinal”(有序)、“scale”(刻度)、“ratio”(比率)、“flag”(标记)、“typeless”(无类型)

注意:
若使用 measureLevels,则必须同时设置 columnWidths 和 alignments
附录中有介绍 nominal

columnWidths : dict, 可选

列显示宽度字典 {varName: }
对应 SPSS 中的 VARIABLE WIDTH 命令
默认值:None → 字符串变量≥10,数值变量自动调整

alignments : dict, 可选

变量对齐方式字典 {varName: <left/center/right>}
对应 SPSS 中的 VARIABLE ALIGNMENT 命令(默认值:None → 左对齐)

varSets : dict, 可选

集合字典 {setName: list_of_valid_varNames}
对应 SPSS 中的 SETSMR 命令

varRoles : dict, 可选

变量角色字典 {varName: varRole}
varRole 可取值:‘both’(两者)、‘frequency’(频率)、‘input’(输入)、‘none’(无)、‘partition’(分区)、‘record ID’(记录 ID)、‘split’(拆分)、‘target’(目标)
对应 SPSS 中的 VARIABLE ROLE 命令

varAttributes : dict, 可选

变量属性字典 {varName: {attribName: attribValue}}
对应 SPSS 中的 VARIABLE ATTRIBUTES 命令

fileAttributes : dict, 可选

文件属性字典 {attribName: attribValue}
对应 SPSS 中的 FILE ATTRIBUTES 命令

fileLabel : dict, 可选

文件标签字符串,若未指定,默认值为 “文件由用户 在 创建”
对应 SPSS 中的 FILE LABEL 命令

multRespDefs : dict, 可选

多重响应集定义(二分组或类别组)字典 {setName: }
在 SPSS 语法中,setName 以美元符号为前缀(如 $someSet)
对应 SPSS 中的 MRSETS 命令

caseWeightVar : str, 可选

设置为个案权重的有效变量名(对应 SPSS 中的 WEIGHT BY 命令)

overwrite : bool, 可选

指示是否覆盖已存在的 SPSS 文件。

ioLocale : bool, 可选

指示 I/O 模块的区域设置,对应 SPSS 中的 SET LOCALE 命令
默认值:None,等同于 locale.setlocale(locale.LC_CTYPE)

refSavFileName : str, 可选

用于初始化表头(即 SPSS 数据字典)的参考文件,包含变量标签、值标签、缺失值等定义。
仅在 mode=cp 时有效

示例一

import savReaderWriter as srwrecords = [['Test1', 1, 1], ['Test2', 2, 1]]
varNames = ['var1', 'v2', 'v3']
varTypes = {'var1': 5, 'v2': 0, 'v3': 0}
savFileName = 'someFile.sav'
with srw.SavWriter(savFileName, varNames, varTypes, ioUtf8=True) as writer:for record in records:writer.writerow(record)

示例二

# -*- coding: utf-8 -*-import savReaderWriter as srwrecords = [['中国', 1, 1], ['世界', 2, 1]]
varNames = ['第一列', '第二列', 'v3']
varTypes = {'第一列': 5, '第二列': 0, 'v3': 0}
savFileName = 'someFile.sav'
print(str(type(varNames[0])), varNames[0])
with srw.SavWriter(savFileName, varNames, varTypes, ioUtf8=True) as writer:for record in records:

项目用法

# -*- coding: utf-8 -*-import savReaderWriter as srwvarNames = [ "V_1", "V_2", "V_3", "V_4", "V_5", "V_6", "V_7", "V_8", "V_9", "V_10", "V_11", "V_12", "V_13", "Q_1", "Q_2", "Q_3", "Q_3_blank", "Q_4_1", "Q_4_2", "Q_4_3", "Q_4_3_blank", "Q_5", "Q_5_blank", "Q_6", "V_14", "V_15", "V_16", "V_17", "V_18" ]
varTypes = {"V_2":1024,"Q_1":1024,"Q_6":1024,"V_10":1024,"Q_3_blank":1024,"V_11":1024,"V_13":1024,"Q_5_blank":1024,"V_14":1024,"V_3":1024,"V_7":1024,"Q_4_3_blank":1024,"V_6":1024,"V_8":1024,"Q_4_3":0,"V_16":1024,"V_18":1024,"Q_4_1":0,"Q_4_2":0,"Q_5":0,"V_17":1024,"V_5":1024,"V_12":1024,"Q_2":1024,"Q_3":0,"V_15":1024,"V_1":1024,"V_4":1024,"V_9":1024}
savFileName = "someFile.sav"
records = [["1","71754401533","211","2025-06-10 02:06:41","57.80","中国,安徽,合肥","wj.demo.com","Windows","\"2054401533591\"","\"2154401533591\"","cn","0","strategy_A","煗荶尥嫄蛛","https://data.demo.net/ouf-SoaYmr58gYP8RdAqo3E2mC.png",2,"-","0","0","1","閭璄巿嬦恅冯肇緁猃淇","1","-","鄇卩痾蝻爣傶鮩膳颀庻存搾鐛泗芪铔帄蛣俒炯軸賃潀壖晦踵嫝慈覞胄礖鮭镟忥唹貰厖","-","liuhua","liuhua@demo.com","服务端","{\"key2\":\"demo2\",\"key1\":\"demo1\"}"],["2","71754400942","271","2025-06-10 01:56:45","97.45","中国,海南,海口","wj.demo.com","Solaris","\"2054400942130\"","\"2154400942130\"","cn","0","strategy_B","妽鈘抌鬙皤梟伾","https://data.demo.net/ouf-g2GYAK6XJStHxUErsoK9gE.png",3,"监","1","1","0","-","1","-","賜燗锖乔梼嘴埪衂羌蕌姝抇毅瀝堗謫孀諓焩驋悾岄肾颌珶団磛鉡縫鹖襵觉渞鈠剀媲捹褎阅茾胩帷譼义顢惕楛孯","-","zhaohua","zhaohua@demo.com","服务端","{\"key1\":\"demo1\",\"key2\":\"demo2\"}"]]
varLabels = {"Q_3_blank":"3.不计分单选_选项填空","V_1":"序号","V_2":"response_id","V_4":"提交时间","V_7":"渠道来源","Q_2":"2.不计分上传","V_18":"额外投放信息","Q_3":"3.不计分单选","Q_4_1":"4.不计分多选_选项1","Q_4_2":"4.不计分多选_选项2","V_15":"username","Q_5":"5.不计分下拉","Q_6":"6.不计分长文本","V_14":"回收渠道(custom)","V_16":"email","Q_4_3":"4.不计分多选_其他","Q_4_3_blank":"4.不计分多选_其他_选项填空","Q_1":"1.不计分填空","V_5":"分数","V_12":"无效答卷","V_6":"地区","V_8":"操作系统","Q_5_blank":"5.不计分下拉_选项填空","V_3":"作答时间","V_10":"device_id","V_17":"department","V_9":"user_id","V_11":"作答语言","V_13":"命中质量管理策略"}
valueLabels = {"Q_3":{3:"其他",-3:"未作答",1:"选项1",2:"选项2"}}
with srw.SavWriter(savFileName, varNames, varTypes, varLabels=varLabels, valueLabels=valueLabels, ioUtf8=True) as writer:for record in records:writer.writerow(record)

附录

nominal

在统计、数据科学及 SPSS 等场景中最常见的中文翻译是:名义
它通常用于描述数据的测量级别(measurement level),指 “名义型数据” 或 “分类数据”
数据仅用于区分不同类别,类别之间无顺序或大小关系,例如:性别(男 / 女)、职业类型、颜色分类等都属于名义型数据。

vim看二进制格式

看格式::%!xxd
看格式反转::%!xxd -r
看隐藏字符:set list
http://www.dtcms.com/a/322403.html

相关文章:

  • Docker容器
  • 多级缓存详解
  • RAG-大模型课程《李宏毅 2025》作业1笔记
  • 从“人拉肩扛”到“智能协同”——AGV重构消防智能仓储价值链
  • 我用C++和零拷贝重构了文件服务器,性能飙升3倍,CPU占用降低80%
  • 202506 电子学会青少年等级考试机器人二级理论综合真题
  • Spark02 - SparkContext介绍
  • 304 引发的 SEO 难题:缓存策略与内容更新如何两全?
  • 【ref、toRef、toRefs、reactive】ai
  • 比较useCallback、useMemo 和 React.memo
  • kafka架构原理快速入门
  • Opencv[七]——补充
  • 基于HTML的政策问答
  • java组件安全vulhub靶场
  • HTML金色流星雨
  • 服务器硬件电路设计之I2C问答(二):I2C总线的传输速率与上拉电阻有什么关系?
  • ELK常见的问题
  • 华为实验:DHCP 典型配置
  • 《汇编语言:基于X86处理器》第12章 复习题和练习
  • Openlayers基础教程|从前端框架到GIS开发系列课程(19)地图控件和矢量图形绘制
  • Elasticsearch `_search` API Query DSL、性能开关与实战范式
  • 如何优雅的使用进行参数校验
  • Nginx 功能扩展与二次开发实践
  • 黑马SpringAI项目-聊天机器人
  • axios 发请求
  • 束搜索(Beam Search):原理、演进与挑战
  • ubuntu 端口占用 但是找不到进程 与docker 容器镜像相关
  • 【网络与爬虫 52】Scrapyd-k8s集群化爬虫部署:Kubernetes原生分布式爬虫管理平台实战指南
  • 【新启航】飞机起落架外筒深孔型腔的测量方法 - 激光频率梳 3D 轮廓检测
  • 基于遗传优化的智能灌溉系统控制策略matlab仿真