2015-07-21 12 views
5

Csv dosyam var ve bazı sütunların ortalamasını hesaplamam gerekiyor. Ben yaptım nasıl:Csv dosyasından python sayıları nasıl okunur?

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

Yani dize bir listesi var: n = [ '', '', '1,58' ...] nasıl bu yüzer dönüştürebilirsiniz? Birlikte çalıştığımız:

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

Ama saymıyor boş dizeleri atlaması gereken çünkü ortalama doğru değil. Yardımlarınız için teşekkürler! Sadece ekleme olarak döküm

+3

Sen 'n.append kullanabilirsiniz (şamandıra (satır [8]))', ancak boş değerler size varsa Bunu bir try/except bloğu içine koymanız gerekir. – matiasg

+0

@Alice Asıl sorduğunuz şey, dizgenin float'a nasıl dönüştürüleceğidir. Sorunun diğer kısımları ise ilgisizdir –

+0

@OmerDagan: Açık tip dönüşümler yapmak bir kod kokusu almak, sadece pd.read.csv() 'pandalarını kullanmaktır. Stand olarak soru gayet iyi (umarım CSV dosyasının bir başlığı vardır) – smci

cevap

9

:

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

boş dizeler varsa

eklemeden önce bu yakalarlar.

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

Yoksa özellikle pandas.read_csv yılında, panda denemek isteyebilirsiniz:

import pandas as pd 

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

Sorun yok, rica ederim. Eğer numpy kullanıyorsanız ve csv ile uğraşıyorsanız kesinlikle pandalara bakmanızı tavsiye ederim. –

+0

Denedim ama aldım: panda adı verilen modül yok. Yüklemeli miyim? – Alice

+2

evet yüklemeniz gerekiyor. – Shrey