2015-07-21 19 views
5

Mam plik csv i muszę obliczyć średnią dla niektórych kolumn. To jak to zrobiłem:Jak odczytać liczby w pythonie z pliku csv?

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

Więc mam listę sznurka: n = [ '', '', '1.58' ...] Jak mogę przekonwertować je do pływaka? Próbowałem z:

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

Ale średnia nie jest prawidłowe, ponieważ powinienem pominąć pustych strun nie licząc. Dziękujemy za pomoc!

+3

Można użyć 'n.append (float (wiersz [8]))', ale jeśli masz pustych wartości, które będzie musiał umieścić to wewnątrz bloku try/except. – matiasg

+0

@Alice To, o co pytasz, to jak przekonwertować ciąg znaków na float. Reszta rzeczy w pytaniu jest nieistotna. –

+0

@OmerDagan: Konieczność dokonywania konwersji typu jawnego to zapach kodu, wystarczy użyć pandy 'pd.read.csv()'. Pytanie w standardzie jest w porządku (mam nadzieję, że plik CSV ma nagłówek) – smci

Odpowiedz

9

Wystarczy rzucić jak dołączyć:

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

Jeśli są puste ciągi złapać tych, przed dołączeniem.

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

A może chcesz spróbować pandy, w szczególności pandas.read_csv:

import pandas as pd 

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

Nie ma problemu, nie ma za co. jeśli używasz numpy i radzisz sobie z csv, zdecydowanie polecam rzucić okiem na pandy. –

+0

Próbowałem, ale mam: brak modułu o nazwie pandy. Czy powinienem go zainstalować? – Alice

+2

tak, musisz go zainstalować. spróbuj zainstalować go z pip – Shrey

Powiązane problemy