2013-03-13 45 views
-4

我有一個csv文件,我可以將它導入到程序中。我需要知道如何計算文件特定列的平均值。如何找出csv文件的平均值?

+2

那麼你嘗試了什麼? – rantanplan 2013-03-13 15:20:15

+1

歡迎來到StackOverflow。爲了讓我們給你很好的答案,你需要告訴我們你到目前爲止已經嘗試了什麼,以及你的特定問題在哪裏。如果您能夠閱讀文件,請告訴我們!你熟悉'csv'模塊嗎?關於此主題的谷歌搜索(使用Python閱讀CSV文件)將爲您提供許多有用的示例。 – larsks 2013-03-13 15:20:35

+0

你嘗試過什麼嗎?首先必須讀取文件並在計算平均值之前總計列的值。 – suspectus 2013-03-13 15:20:54

回答

0

您可以分割這個問題分成幾部分:

  1. 讀取文件
  2. 單獨右側立柱
  3. 的行數計算總
  4. 鴻溝。

一次取一行,你應該沒問題。 Google會幫助您瞭解詳細信息,如果您在任何部分都有具體問題,歡迎回到SO處。如果使用Python代碼修復(從史蒂芬Rumbalski)

0

首先,你可以從列中獲取數據:

columnNumber = 42 
data = [float(l.split(';')[columnNumber]) for l in open('file.csv', 'r').readlines()] 

然後計算平均值:

mean = sum(data)/len(data) 

編輯3,用聲明更改爲

with open('your_csv.csv', newline='') as f: 
+0

-1。幾個問題。這是一個csv文件,因此每一行都需要用逗號(也可能是引號)來解析。此外,你不能總結一個字符串。你永遠不會將它轉換爲數字類型。 – 2013-03-13 15:31:07

+0

你說得對。並且謝謝你,我不知道csv模塊。 – Cyrille 2013-03-13 15:37:18

2
import csv 
with open('your_csv.csv', 'rb') as f: 
    reader = csv.reader(f) 
    if your_file_has_a_header_row: 
     next(reader) 
    the_numbers = [float(row[col_index_you_want]) for row in reader] 
    average = sum(the_numbers)/len(the_numbers)