2015-10-16 16 views
5

Sto provando la sfida kaggle here e sfortunatamente sono bloccato in un passaggio molto semplice. La mia limitata conoscenza del pitone deve essere incolpata per questo. Sto cercando di leggere il datasets in un dataframe panda eseguendo seguente comando:Non si leggono tutte le righe durante l'importazione di csv in dataframe panda

test = pd.DataFrame.from_csv("C:/Name/DataMining/hillary/data/output/emails.csv") 

Il problema è che questo file come si farebbe scoprire ha oltre 300.000 dischi, ma sto leggendo solo 7945, 21.

print (test.shape) 
(7945, 21) 

Ora ho ricontrollato il file e non riesco a trovare nulla di speciale sul numero di riga 7945. Qualsiasi suggerimento per cui questo potrebbe accadere. Sembra una situazione molto ordinaria, spero che alcuni di voi che hanno riscontrato questo errore possano aiutarmi.

+1

grazie per aver posto questa domanda. Mi sono imbattuto in un problema simile. – Saurabh

risposta

2

Penso che sia meglio utilizzare la funzione read_csv con i parametri quoting=csv.QUOTE_NONE e error_bad_lines=False. link

import pandas as pd 
import csv 

test = pd.read_csv("output/Emails.csv", quoting=csv.QUOTE_NONE, error_bad_lines=False) 

print (test.shape) 
#(381422, 22) 

Ma alcuni dati (problematici) verranno saltati.

Se si vuole ignorare i dati email del corpo, è possibile utilizzare:

import pandas as pd 
import csv 

test = pd.read_csv("output/Emails.csv", quoting=csv.QUOTE_NONE, sep=',', error_bad_lines=False, header=None, 
    names=["Id","DocNumber","MetadataSubject","MetadataTo","MetadataFrom","SenderPersonId","MetadataDateSent","MetadataDateReleased","MetadataPdfLink","MetadataCaseNumber","MetadataDocumentClass","ExtractedSubject","ExtractedTo","ExtractedFrom","ExtractedCc","ExtractedDateSent","ExtractedCaseNumber","ExtractedDocNumber","ExtractedDateReleased","ExtractedReleaseInPartOrFull","ExtractedBodyText","RawText"]) 

print (test.shape) 

#delete row with NaN in column MetadataFrom 
test = test.dropna(subset=['MetadataFrom']) 
#delete headers in data 
test = test[test.MetadataFrom != 'MetadataFrom']