我是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