2013-06-11 21 views
9

Esiste un modo più semplice per caricare un file Excel direttamente in un array Numpy?Carica il file Excel in serie 2D numpy

Ho visto la funzione di autoloading numpy.genfromtxt dalla documentazione numpy ma non carica direttamente i file excel.

array = np.genfromtxt("Stats.xlsx") 
ValueError: Some errors were detected ! 
Line #3 (got 2 columns instead of 1) 
Line #5 (got 5 columns instead of 1) 
...... 

In questo momento sto usando usando openpyxl.reader.excel di leggere il file di excel e quindi aggiungere al NumPy matrici 2D. Questo sembra inefficiente. Idealmente mi piacerebbe dover esportare il file direttamente caricato su un array 2D numpy.

risposta

11

Onestamente, se si lavora con dati eterogenei (come è probabile che contengano fogli di calcolo) utilizzando uno pandas.DataFrame è una scelta migliore rispetto all'utilizzo di numpy direttamente.

Mentre pandas è in un certo senso solo un involucro attorno a numpy, gestisce i dati eterogenei molto molto bene. (Oltre a un sacco di altre cose ... Per i dati "simili a fogli di calcolo", è il gold standard nel mondo python.)

Se si decide di percorrere quella strada, basta usare pandas.read_excel.

+0

Vorrei solo aggiungere che per convertire un frame di dati in un array Numpy 2D è sufficiente utilizzare np.asarray (your_data_frame_here). – Tahlor