gpt4 book ai didi

python - SPSS Python - 访问值标签的快速方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:16 25 4
gpt4 key购买 nike

我正在尝试提取变量的名称、标签和值标签。我注意到,除了引用 ValueLabels 的分配之外,所有分配都非常快。在我的测试数据集上,如果我注释掉该行,其他所有内容大约需要 1 秒。但仅这一行就使整个代码延迟了大约 15 秒,并且测试数据集并不大(至少按照我的标准:))

这是访问变量字典所固有的吗?或者是否有另一种更快的方式来提取整个字典,而无需逐个变量......?

begin program.

import spss
import spssaux

vardict = spssaux.VariableDict()

var_list=[]
var_values={}
var_type={}
var_labels={}

for i in range(spss.GetVariableCount()):
var=spss.GetVariableName(i)
var_list.append(var)

#this is the line causing the massive delay
var_values[var]=vardict[i].ValueLabels

var_type[var]=str(spss.GetVariableFormat(i)[0])
var_labels[var]=vardict[i].VariableLabel

结束程序。

事实上,我只需要它来检查变量是否定义了值标签。但我不知道如何以其他方式检查这一点。

最佳答案

事实证明,使用 spssaux 模块是这里的罪魁祸首。我不知道为什么,因为几乎所有的互联网知识都指向这种获取值(value)标签的方式。

然而,几乎是偶然,我偶然发现了“spss”模块的帮助,其中指出:

 |  valueLabels
| Get, set or delete value labels. The set of value labels for a particular variable is represented
| as a Python dictionary whose keys are the values for which labels are being set and whose
| values are the associated labels. Labels must be specified as quoted strings.
|
| --examples
| # Get all value labels for a specified variable
| import spss
| spss.StartDataStep()
| datasetObj = spss.Dataset()
| varObj = datasetObj.varlist['minority']
| vallabels = varObj.valueLabels
| spss.EndDataStep()

由于我只想查看变量是否有(或没有)值标签,因此我创建了一个字典来存储每个变量的 valueLabels 字典的长度:

begin program.
# Get all value labels for a specified variable
import spss
spss.StartDataStep()
datasetObj = spss.Dataset()

var_labels={}
for var in datasetObj.varlist:
var_labels[var.name]=len(var.valueLabels)

spss.EndDataStep()

print var_labels

end program.

即使对于大文件,它也是即时的。 (我承认,“大”的含义可能因用户而异;我在“大”文件上运行 30 分钟后停止了 OP 中的代码,因为它显然不具有时效性)。

关于python - SPSS Python - 访问值标签的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47077004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com