2010-09-21 7 views
5

Ho un file CSV che sembra qualcosa di simile (file vero e proprio ha molte più colonne e righe):Utilizzando genfromtxt per importare dati CSV con valori mancanti in NumPy

1,2,3,4,5 
6,7,8,9,10 
11,12,13,14,15 
16 

Pronunciare il nome del file è info.csv Se provo ad importare questo utilizzando

data = numpy.genfromtxt('info.csv', delimiter = ',') 

poi ho il seguente errore:

ValueError: Some errors were detected ! Line #4 (got 1 columns instead of 5) 

Se uso,

data = numpy.genfromtxt('info.csv', delimiter = ',', skip_footer = 1) 

entrambe le linee con i dati 16 e con i dati 11, 12, 13, 14, 15 vengono saltati. Non capisco perché la linea con 11, 12, 13, 14, 15 venga saltata. Apprezzerei qualsiasi aiuto su come utilizzare in modo appropriato lo genfromtxt per importare le prime tre righe nel file sopra.

Grazie

risposta

8

se si può ignorare il 16 alla fine del file provare a utilizzare il

invalid_raise (bool, opzionale) parametro se impostato su False ignora tutte le linee incomplete senza gettare un eccezione

vedere qui (suo l'ultimo parametro prima che gli esempi) http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html

+0

Grazie! Questo funziona bene per me. Ma puoi o qualcuno spiega perché skip_footer non funziona. Oppure, come posso ottenere la riga con 16 in esso. Accetterò la risposta più tardi, perché se lo faccio ora, quelle domande rimarranno senza risposta. Grazie ancora. – Curious2learn

+2

salta 2 righe, perché genformtxt legge le righe valide in un array e salta come mamy come gli hai detto, ma la riga con '16' non viene mai letta nell'array –

+0

puoi provare 'filling_values' o 'missing_values' parametro per riempire i 4 valori mancanti nella riga con '16', ad esempio per -1 eo 0 a seconda di cosa fai con l'array dopo averlo letto dal disco –

Problemi correlati