簡體   English   中英

如何從python中的spss xml輸出中檢索表

[英]how to retrieve table from spss xml output in python

我試圖從spssaux.CreateXMLOutput獲取一些表輸出。 spss.submit驗證了spss命令。 以下是我的代碼示例:

varList = ["QPOVTY", "PERCAP", "MDGRENT", "QRICH200K", "QNOAUTO", "QSSBEN", "QED12LES",
        "QFEMALE", "QAGEDEP", "QNATAM", "QHISP", "QASIAN", "QFEMLBR", "QSERV", "QEXTRCT", 
        "QCVLUN", "QFHH", "QFAM", "PRENTER", "QMOHO", "QUNOCCHU", "MHSEVAL"]
spssPCASyntax = ["FACTOR //VARIABLES " + ' '.join(varList) + " //MISSING LISTWISE" + 
               " //ANALYSIS " + ' '.join(varList) + 
               " //PRINT UNIVARIATE INITIAL CORRELATION KMO EXTRACTION ROTATION FSCORE" + 
               " //CRITERIA MINEIGEN(1) ITERATE(25)" + 
               " //EXTRACTION PC" + 
               " //CRITERIA ITERATE(25)" + 
               " //ROTATION VARIMAX" + 
               " // SAVE REG(ALL)" + 
               " //METHOD=CORRELATION."]
tag = spssaux.CreateXMLOutput(spssPCASyntax, omsid = 'Factor Analysis')
CorM = spssaux.getValuesFromXmlWorkspace(tag, 'Correlation Matrix')
print CorM

關於CorM = spssaux.getValuesFromXmlWorkspace(tag, 'Correlation Matrix')的錯誤報告說[errLevel 12] Invalid handle object.

我試圖調試它並深入到spssaux模塊,但是找不到解決它的方法。 我檢查了調用層次結構,發現一個函數嵌入了某些無法在DOS模式下查看的代碼內(這些代碼似乎只是無法識別的符號)。

根據spssaux.getValuesFromXmlWorkspace的代碼注釋,似乎此函數的最小輸入是tagtableSubtype 這里的tableSubtype是在spss的輸出中找到為“ OMS表子類型”的字符串Correlation Matrix

誰能幫我解決這個問題或告訴我如何調試此問題?

我將嘗試在星期六(本模塊的作者)研究這個問題,但是我想了解Statistic,OS和spssaux版本。 我還希望有少量的數據樣本來說明問題。

這里有幾個問題。 首先,CreateXMLOutput的返回代碼是(標記,錯誤代碼)的重復。 您應該始終檢查錯誤代碼。
標簽,errcode = spssaux.CreateXMLOutput(...
您將傳遞給getValuesFromXmlWorkspace的標簽只是第一個元素。 在這種情況下,錯誤代碼為1001,並且未創建任何輸出對象,因此嘗試檢索輸出會導致錯誤,因為XPath表達式求值器找不到該對象,並且傳遞的標記項始終是雙重的,而不是實際的標記,因此該參數無效。

因此,問題就變成了為什么FACTOR命令失敗的原因。 有兩個問題。 一種是語法無效,因為所有這些//應該只是/。 FACTOR可能會接受,但這是不正確的。

其次,匯編的命令可能超過了最大行長度。 我只想加入varList變量
varList =“ \\ n” .join(“ xxx”,“ yyy:等
然后將整個命令連接到帶有換行符的單個字符串中:
spssPCASyntax =“ \\ n” .join(“ FACTOR VARIABLES”,...)
並將該字符串傳遞給CreateXMLOutput。

提示:使用命令字符串中的命名參數替換來匯編命令要比用“ +”組合起來更容易。 例如,
cmd =“”“命令名/ varlist%(varList)s
/ someoption
/ someother options“”“%locals()
這更具可讀性,並且不易出錯。

最后,如果您試圖查找引發錯誤的代碼行,這是一個提示。 默認情況下,統計信息會抑制該錯誤將產生的回溯,因為它對大多數用戶而言沒有意義。 但是,如果在啟動Statistics之前創建一個名為SPSS_EXTENSIONS_RAISE的環境變量,其值為true,則將顯示回溯,從而可以在代碼中查明錯誤位置。

創建環境變量的方式特定於操作系統,但是在Windows上,您可以使用“控制面板” /“系統” /“高級” /“環境變量”來執行此操作。 確切的措辭和路徑在不同的Windows版本中有所不同。

高溫超導
喬恩·派克

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM