spss.Dataset Python

spss.Dataset(name,hidden,cvtDates). Fornece a capacidade de criar novos conjuntos de dados, ler a partir de conjuntos de dados existentes e modificar conjuntos de dados existentes. Um objeto Dataset fornece acesso aos dados do caso e às informações de variável contidas em um conjunto de dados e permite ler a partir do conjunto de dados, incluir novos casos, modificar casos existentes, incluir novas variáveis e modificar propriedades de variáveis existentes.

Uma instância da classe Dataset pode ser criada apenas dentro de uma etapa de dados ou de um bloco StartProcedure-EndProcedure e não pode ser usada fora da etapa de dados ou do bloco de procedimento no qual ela foi criada As etapas de dados são iniciadas com a função spss.StartDataStep . Também é possível usar a classe spss.DataStep para iniciar e terminar implicitamente uma etapa de dados sem a necessidade de verificar transformações pendentes. Consulte o tópico spss.DataStep Class (Python) para obter mais informações..

  • O argumento name é opcional e especifica o nome de um conjunto de dados aberto para o qual um objeto Dataset será criado.. Observe que esse é o nome designado pelo IBM® SPSS® Statistics ou conforme especificado com DATASET NAME Especificar name="*" ou omitir o argumento criará um objeto Dataset para o conjunto de dados ativo.. Se o conjunto de dados ativo não for nomeado, então um nome será gerado automaticamente para ele no caso de o objeto Dataset ser criado para o conjunto de dados ativo
  • Se o tipo de dados Python Nenhum ou a sequência vazia '' for especificada para name, um novo conjunto de dados vazio será criado. O nome do conjunto de dados é gerado automaticamente e pode ser recuperado da propriedade name do objeto Dataset resultante. O nome não pode ser alterado de dentro da etapa de dados. Para alterar o nome, use o comando DATASET NAME a seguir spss.EndDataStep

    Um novo conjunto de dados criado com a classe Dataset não está configurado para ser o conjunto de dados ativo Para tornar o conjunto de dados ativo, use a função spss.SetActive .

  • O argumento opcional hidden especifica se a janela do Editor de dados associada ao conjunto de dados está oculta -- por padrão, ela é exibida Use hidden=True para ocultar a janela do Editor de dados associada
  • O argumento opcional cvtDates especifica se as variáveis IBM SPSS Statistics com formatos de data ou de data e hora são convertidas em objetos Python datetime.datetime ao ler dados de IBM SPSS Statistics O argumento é um booleano --True para converter todas as variáveis com formatos de data ou de data / hora, caso contrário, False Se cvtDates for omitido, nenhuma conversão será executada.

    Nota: os valores de variáveis com formatos de data ou data / hora que não são convertidos com cvtDates são retornados como números inteiros que representam o número de segundos de 14 de outubro de 1582.

  • As instâncias da classe Dataset criadas dentro de blocos StartProcedure-EndProcedure não podem ser configuradas como o conjunto de dados ativo
  • A classe Dataset não honra os filtros de caso especificados com os comandos FILTER ou USE Se você precisar que os filtros de caso sejam honrados, considere usar a classe Cursor .
  • Para a liberação 22 Fix Pack 1 e superior, a classe Dataset suporta armazenamento em cache. O armazenamento em cache geralmente melhora o desempenho quando os casos são modificados aleatoriamente e é especificado com a propriedade cache de um objeto Dataset .

O número de variáveis no conjunto de dados associado a uma instância do Dataset está disponível usando a função len , como em:

len(datasetObj)

Nota: os conjuntos de dados que não são necessários fora da etapa de dados ou procedimento no qual eles foram acessados ou criados devem ser fechados antes de terminar a etapa de dados ou procedimento para liberar os recursos alocados para o conjunto de dados. Isso é feito chamando o método close do objeto Dataset ..

Exemplo: Criando um Novo Conjunto de Dados

BEGIN PROGRAM.
import spss
spss.StartDataStep()
datasetObj = spss.Dataset(name=None)
datasetObj.varlist.append('numvar',0)
datasetObj.varlist.append('strvar',1)
datasetObj.varlist['numvar'].label = 'Sample numeric variable'
datasetObj.varlist['strvar'].label = 'Sample string variable'
datasetObj.cases.append([1,'a'])
datasetObj.cases.append([2,'b'])
spss.EndDataStep()
END PROGRAM.
  • Você inclui variáveis em um conjunto de dados usando o método append (ou insert) do objeto VariableList associado ao conjunto de dados. O objeto VariableList é acessado da propriedade varlist do objeto Dataset , como em datasetObj.varlist. Consulte o tópico ClasseVariableList (Python) para obter informações adicionais.
  • As propriedades de variáveis, como o rótulo de variáveis e o nível de medida, são configuradas por meio de propriedades do objeto Variable associado, acessíveis a partir do objeto VariableList Por exemplo, datasetObj.varlist['numvar'] acessa o objeto Variable associado à variável numvar. Consulte o tópico Classe de variável (Python) para obter mais informações.
  • Você inclui casos em um conjunto de dados usando o método append (ou insert) do objeto CaseList associado ao conjunto de dados. O objeto CaseList é acessado da propriedade cases do objeto Dataset , como em datasetObj.cases. Consulte o tópico CaseList Class (Python) para obter mais informações..

Exemplo: Salvando Novos Conjuntos de Dados

Ao criar novos conjuntos de dados que você pretende salvar, você desejará manter o controle dos nomes do conjunto de dados, pois a operação de salvamento é feita fora da etapa de dados associada.

DATA LIST FREE /dept (F2) empid (F4) salary (F6).
BEGIN DATA
7  57  57000 
5  23  40200
3  62  21450
3  18  21900
5  21  45000
5  29  32100
7  38  36000
3  42  21900
7  11  27900
END DATA.
DATASET NAME saldata.
SORT CASES BY dept.
BEGIN PROGRAM.
import spss
with spss.DataStep():
   ds = spss.Dataset()
   # Create a new dataset for each value of the variable 'dept'
   newds = spss.Dataset(name=None)
   newds.varlist.append('dept')
   newds.varlist.append('empid')
   newds.varlist.append('salary')
   dept = ds.cases[0,0][0]
   dsNames = {newds.name:dept} 
   for row in ds.cases:
      if (row[0] != dept):
         newds = spss.Dataset(name=None)
         newds.varlist.append('dept')
         newds.varlist.append('empid')
         newds.varlist.append('salary')
         dept = row[0]
         dsNames[newds.name] = dept
      newds.cases.append(row) 
# Save the new datasets
for name,dept in dsNames.iteritems():
   strdept = str(dept)
   spss.Submit(r"""
   DATASET ACTIVATE %(name)s.
   SAVE OUTFILE='/mydata/saldata_%(strdept)s.sav'.
   """ %locals())
spss.Submit(r"""
DATASET ACTIVATE saldata.
DATASET CLOSE ALL.
""" %locals())
END PROGRAM.
  • O código newdsObj = spss.Dataset(name=None) cria um novo conjunto de dados O nome do conjunto de dados está disponível na propriedade name , como em newdsObj.name. Neste exemplo, os nomes dos novos conjuntos de dados são armazenados para o dicionário Python dsNames
  • Para salvar novos conjuntos de dados criados com a classe Dataset , use o comando SAVE depois de chamar spss.EndDataStep Neste exemplo, DATASET ACTIVATE é usado para ativar cada novo conjunto de dados, usando os nomes de conjuntos de dados armazenados em dsNames

Exemplo: modificando valores de caso

DATA LIST FREE /cust (F2) amt (F5).
BEGIN DATA
210 4500
242 6900
370 32500
END DATA.
BEGIN PROGRAM.
import spss
spss.StartDataStep()
datasetObj = spss.Dataset()
for i in range(len(datasetObj.cases)):
   # Multiply the value of amt by 1.05 for each case
   datasetObj.cases[i,1] = 1.05*datasetObj.cases[i,1][0]
spss.EndDataStep()
END PROGRAM.
  • O objeto CaseList , acessado a partir da propriedade cases de um objeto Dataset , permite ler ou modificar dados do caso. Para acessar o valor para uma determinada variável dentro de um caso específico, você especifica o número do caso e o índice da variável (os valores do índice representam a posição no conjunto de dados ativo, começando com 0 para a primeira variável na ordem do arquivo e os números do caso começam com 0). Por exemplo, datasetObj.cases[i,1] especifica o valor da variável com índice 1 para número do caso i.
  • Ao ler valores de caso, os resultados são retornados como lista. No presente exemplo, estamos acessando um valor único dentro de cada caso para que a lista tenha um elemento.

Consulte o tópico CaseList Class (Python) para obter mais informações..

Exemplo: Comparando Conjuntos de Dados

Os objetos Dataset permitem que você trabalhe simultaneamente com os dados do caso de vários conjuntos de dados. Como exemplo simples, vamos comparar os casos em dois conjuntos de dados e indicar casos idênticos com uma nova variável incluída em um dos conjuntos de dados.

DATA LIST FREE /id (F2) salary (DOLLAR8) jobcat (F1).
BEGIN DATA
1 57000 3
3 40200 1
2 21450 1
END DATA.
SORT CASES BY id.
DATASET NAME empdata1.
DATA LIST FREE /id (F2) salary (DOLLAR8) jobcat (F1).
BEGIN DATA
3 41000 1
1 59280 3
2 21450 1
END DATA.
SORT CASES BY id.
DATASET NAME empdata2.
BEGIN PROGRAM.
import spss
spss.StartDataStep()
datasetObj1 = spss.Dataset(name="empdata1")
datasetObj2 = spss.Dataset(name="empdata2")
nvars = len(datasetObj1)
datasetObj2.varlist.append('match')
for i in range(len(datasetObj1.cases)):
   if datasetObj1.cases[i] == datasetObj2.cases[i,0:nvars]:
      datasetObj2.cases[i,nvars] = 1
   else:
      datasetObj2.cases[i,nvars] = 0
spss.EndDataStep()
END PROGRAM.
  • Os dois conjuntos de dados são classificados primeiro pela variável id que é comum a ambos os conjuntos de dados.
  • Como DATA LIST cria conjuntos de dados não nomeados (o mesmo é verdadeiro para GET), os conjuntos de dados são nomeados usando DATASET NAME para que você possa se referir a eles ao chamar spss.Dataset..
  • datasetObj1 e datasetObj2 são Dataset objetos associados aos dois conjuntos de dados empdata1 e empdata2 a serem comparados.
  • O código datasetObj1.cases[i] retorna o número do caso i de empdata1. O código datasetObj2.cases[i,0:nvars] retorna a fatia do número do caso i de empdata2 que inclui as variáveis com índices 0,1, ...,nvars-1.
  • A nova variável match, incluída em empdata2, é configurada como 1 para casos idênticos e 0, caso contrário.