Name,A,B,C,D
Fred,1,3,4,3。
亞當,1,4,1,2.
Moo,4,2,3,2.
所以我想按每一列對這個csv輸入進行求和,然后在把它放到一個串列中之前找到平均值。
因此,對于上述樣本輸入,串列將是['2','3','2.667','2.333'],分別代表A、B、C、D。 我想過為每一列創建一個串列,然后在將其追加到預先創建的串列中之前找到平均值,但這并不可行。
import csv
line_count = 0
first_line = True[/span]。
final_list = []
A = []
B = []
C = []
D = []
for row in open("file.csv"/span>) 。
values = row.strip().split(",")
if first_line:
first_line = False[/span]。
else:
line_count = 1.
A.append(int(values[1] )
sum_of_A = sum(A)
平均數 = [sum_of_A/line_count]
data.append(average)
但是在這之后,由于最后一行回到了正常的縮進空間,我不知道如何回傳到回圈中繼續尋找其余列的平均值。我需要把它放到一個串列中,這樣我就可以用csv模塊把它重寫到一個新檔案中,所以任何指導都是有幫助的。
uj5u.com熱心網友回復:
你可以使用一個串列理解來計算平均數,該串列將你到目前為止的平均數的值壓縮。 使用第一行(列標題)作為初始化步驟,因為無論如何你都必須跳過它。
with open('file.csv'/span>) as f:
for i,(_,*values) in enumerate(csv.reader(f)) 。
if i: averages = [a (float(v)-a)/i for a,v in zip(averages,values)]
else: averages = [0]*len(values)
print(averages)
[2.0, 3.0, 2.66666666665, 2.333333333335]
如果你要在記憶體中加載整個表,你可以在加載后從嵌套的串列中獲得平均數:
with open('file.csv'/span>) as f:
data = list(csv.reader(f))
平均數 = [ sum(map(float,c))/len(c)
for i,c in enumerate(zip(*data[1: ] ) if i ].
print(averages)
[2.0, 3.0, 2.66666666665, 2.333333333335]
uj5u.com熱心網友回復:
你可以直接讀入檔案(不用csv),分割并求和:
with open("file.csv"/span>) as fid。
# remove the "
",并將該行分成若干列,。
# 并洗掉第一列。
data = [line.rstrip().split(",")[1:] for line in fid.readlines() ]
data.pop(0) # remove first line (header)
n_rows = len(data)
n_columns = len(data[0] )
summation = [(sum(int(row[ column]) for row in data)
for column in range(n_columns)]
平均 = [s / n_rows for s in summation]
summation = [6, 9, 8, 7]
average = [2.0, 3.0, 2.66666666665, 2.333333333335]/code>
uj5u.com熱心網友回復:
你可以在一個回圈中完成所有的事情。
import csv
line_count = 0
first_line = True[/span]。
final_list = []
A = []
B = []
C = []
D = []
with open('test.csv') as input_file。
for row in input_file:
values = row.strip().split(" ,")
if first_line:
first_line = False[/span]。
else:
line_count = 1.
A.append(int(values[1] )
B.append(int(values[2))
C.append(int(values[3))
D.append(int(values[4))
a_average = sum(A) / line_count
b_average = sum(B) / line_count
c_average = sum(C) / line_count
d_average = sum(D) / line_count
現在你有了所有的平均數,你可以做你想做的事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/310217.html
標籤:
下一篇:從csv行串列中洗掉逗號
