我是Python的新手,对于这个问题我有很多麻烦,这是我必须要做的工作。使用python在excel中计算值
关于excel文件的一些背景知识:有3列,约100行。第一列(col1)包含A或B.第二列(col2)包含范围从1到10的任何数字。第三列(col3)包含任何十进制数的值。
我希望程序要做的就是解析数据。 col1和col2会有很多重复的部分放在一起。例如,(A,1)可以位于第1,5,20,98行等,但是col3将是不同的数字。所以对于第三栏的不同数字,我希望它找到所有这些数字的平均值。
输出应该是这个样子:
A, 1 = avg 4.32
A, 2 = avg 7.23
A, 3 = avg -9.12
etc etc (until number 10)
B, 1 = avg 3.76
B, 2 = avg -8.12
B, 3 = avg 1.56
etc etc (until number 10)
它并不一定要在完全字母和数字顺序,它可以只打印出它找到的第一个连击。但我已经做了这个至今在我的代码,以及由于某种原因,它不会打印出所有的连击,只有3个
import xlrd #import package
#opening workbook and reading first sheet
book = xlrd.open_workbook('trend.xls')
sheet = book.sheet_by_index(0)
#function to hold unique combos
unique_combinations = {}
#looping through data
for row_index in range(sheet.nrows):
#declaring what group equals to what row
col1 = sheet.cell(row_index, 0)
col2 = sheet.cell(row_index, 1)
col3 = sheet.cell(row_index, 2)
unique_combo = (col1.value, col2.value)
if unique_combinations.has_key(unique_combo):
unique_combinations[unique_combo].append(col3.value)
else:
unique_combinations[unique_combo] = [col3.value]
for k in unique_combinations.keys():
l = unique_combinations[k]
average = sum(l)/len(l)
print '%s: %s Mean = %s' % (k[0], k[1], average)
从本质上讲,它基本上是2组,2组内是另一个10组,并在这10组是那里的数字的平均值。
请帮忙!提前谢谢你。 Excel文件
示例:
col1 | col2 | col3
A | 1 | 3.12
B | 9 | 4.12
B | 2 | 2.43
A | 1 | 9.54
B | 8 | 2.43
A | 2 | 1.08
那么什么程序需要做的是看到它后面的第一个组合是A,1,它就会储存3.12名单,并期待在然后继续存储,直到遇到重复的是第四行。它也会存储这个值。在结尾处,输出将显示A,1 = avg(3.12 + 9.54/2)。此示例仅显示A,1组合。但实际上,只有2个组(如示例),但col2的范围可以从1到10.将会有很多重复项。
它需要在Python中完成吗? Excel完全可以自己做到这一点...... – Floris 2013-03-12 22:15:41
您能否以表格格式发布小样本并添加您想要的输出。 – root 2013-03-12 22:15:42
说实话,我说过同样的话。 Excel可以自己完成所有工作。但我的老板想要一个计划。我认为他是一个noob在它..但我一直使用C和C + +,并通过这些语言打开Excel文件似乎更繁琐。所以我选择了python。 我将编辑帖子并放置一个excel样本。 – chakolatemilk 2013-03-12 22:20:51