如何用Python修改SPSS输出文件?

时间:2015-10-20 08:59:59

标签: python output spss

我在SPSS中制作自定义表格,但是当单元格值(百分比)四舍五入为1位小时时,它们有时会加起来为99,9或100,1而不是100,0。我的老板要求我将所有内容整齐地加起来为100.这意味着稍微更改输出表中的某些值。

我编写了一些代码来从表中检索单元格值,这样可以正常工作,但我找不到允许我更改已生成输出中的单元格的任何方法或类。我尝试过这样的事情:

表[(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'

1 个答案:

答案 0 :(得分:2)

SetValueAt方法是您更改表格中单元格值所需的方法。

PS。我认为你的老板应该把重点放在更重要的事情上,而不是花费可观的时间让百分比加起来整齐地达到100%(由于四舍五入)。还要确保在计算中使用尽可能多的小数点精度,以便最大限度地减少这种差异&#34;。

更新

举一个例子来说明你可以用这样的操作做什么(除了修复回合错误):

enter image description here

上表显示了呼吸药物品牌(R3)的声音份额(SoV)及其在所有品牌(前两列数据)和SoV&amp; amp;仅在同一类别的品牌中排名(第三和第四列)。这与上个月(7月15日)进行比较,如果等级增加,则以绿色突出显示,并且添加向上箭头,如果等级下降,则以红色突出显示,并且向下添加红色箭头。只需添加一点,颜色和可视化,否则可能是枯燥的表格。