2015-07-21 81 views
5

我有一個csv文件,我必須計算一些列的平均值。 這就是我所做的:如何從csv文件讀取python中的數字?

file=csv.reader(open('tab.csv','r')) 
n=[] 
for row in file: 
    n.append(row[8]) 

所以我有字符串列表:N = [ '', '', '1.58' ...] 我怎樣才能將這些浮動? 我試着用:

n_values=np.array(n) 
n_values[n=='']='0' 
values=n_values.astype(np.float) 
np.mean(values) 

但平均是不正確的,因爲我應該跳過空字符串不計。 感謝您的幫助!

+3

你可以用'n.append(浮點(行[8]))',但如果你有你的空值將需要把它放在try/except塊中。 – matiasg

+0

@Alice實際上你問的是如何將字符串轉換爲浮點數。問題的其餘部分是無關緊要的 –

+0

@OmerDagan:不得不使用顯式類型轉換是一種代碼異味,只需使用pandas'pd.read.csv()'。作爲看臺的問題很好(希望CSV文件有一個標題) – smci

回答

9

只投你追加:

n.append(float(row[8])) 

如果有空字符串追加前趕上那些。

try: 
    n.append(float(row[8])) 
except ValueError: 
    continue 

或者你可能想嘗試大熊貓,特別是pandas.read_csv

import pandas as pd 

df = pd.read_csv("in.csv") 
print(df["col_name"].mean()) 
+2

沒有問題,不客氣。如果你使用numpy和處理csv的話,我肯定會推薦看看熊貓。 –

+0

我嘗試過,但我得到了:沒有模塊命名熊貓。我應該安裝它嗎? – Alice

+2

是的,你必須安裝它。 嘗試用pip安裝它 – Shrey