簡體   English   中英

如何使用 Python 修改 SPSS 輸出文件?

[英]How to modify SPSS output files with Python?

我在 SPSS 中制作自定義表格,但是當單元格值(百分比)四舍五入到 1 位小數時,它們有時會加起來為 99,9 或 100,1 而不是 100,0。 我的老板讓我把所有東西整齊地加起來為 100。這意味着稍微改變輸出表中的一些值。

我編寫了一些代碼來從表中檢索單元格值,這工作正常,但我找不到任何允許我更改已生成輸出中的單元格的方法或類。 我試過這樣的事情:

Table[(rij,6)] = CellText.Number(11)

SpssDataCells[(rij,6)] = CellText.Number(11)

但它一直給我“AttributeError:'SpssClient.SpssTextItem'對象沒有屬性'DataCellArray'”

如何成功更改 SPSS 中輸出表的單元格值?

到目前為止我的代碼:

import SpssClient, spss

# Python verbinden met SPSS.
SpssClient.StartClient()
OutputDoc = SpssClient.GetDesignatedOutputDoc()
OutputItemList = OutputDoc.GetOutputItems()

# Laatste tabel pakken.
lastTab = OutputItemList.Size()-2
OutputItem = OutputItemList.GetItemAt(lastTab)
Table = OutputItem.GetSpecificType()
SpssDataCells = Table.DataCellArray()

# For loop. Voor iedere rij testen of de afgeronde waarden optellen tot 100.
# Specifieke getallen pakken.
rij=0
try:
while (rij<20):
   b14 = float(SpssDataCells.GetUnformattedValueAt(rij,0))
   z14 = float(SpssDataCells.GetUnformattedValueAt(rij,1))
   zz14 = float(SpssDataCells.GetUnformattedValueAt(rij,2))
   b15 = float(SpssDataCells.GetUnformattedValueAt(rij,4))
   z15 = float(SpssDataCells.GetUnformattedValueAt(rij,5))
   zz15 = float(SpssDataCells.GetUnformattedValueAt(rij,6))
   print [b14,z14,zz14,b15,z15,zz15]
   rij=rij+1
except:
  print 'Einde tabel'

SetValueAt方法是更改​​表格中單元格值所需的方法。

附注。 我認為你的老板應該專注於更重要的事情,而不是把計費時間花在讓百分比加起來整齊地達到 100%(由於四舍五入)上。 還要確保在計算中使用盡可能多的小數點精度,以盡量減少這種“差異”。

更新:

舉個例子說明你可以用這樣的操作做些什么(除了修復回合錯誤):

在此處輸入圖片說明

上表顯示了呼吸葯物品牌 (R3) 的占有率 (SoV) 及其在所有品牌中的排名(數據的前兩列)以及僅在同一品牌類別中的 SoV 和排名(第三和第四列) . 與上個月(7 月 15 日)進行比較,如果排名增加,則以綠色突出顯示並添加一個向上的箭頭,如果排名下降,則以紅色突出顯示並添加向下的紅色箭頭。 只需為原本枯燥的表格添加一點顏色和可視化。

暫無
暫無

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

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