2009-06-29 26 views
11

Desidero utilizzare alcune librerie Python per sostituire MATLAB. Come posso importare dati Excel in Python (ad esempio usando NumPy) per usarli?Utilizzo di Python per sostituire MATLAB: come importare i dati?

Non so se Python sia un'alternativa credibile a MATLAB, ma voglio provarlo. C'è un tutorial?

+0

Un modo di interpretare la domanda iniziale è: come posso leggere un file (proprietario) Excel (.xls, .xlsx) in Python. Una risposta a questo potrebbe essere utile, ma non ne ho uno. Quindi, il flusso generale qui è quello di esportare in un altro formato da Excel, cioè CSV. –

risposta

11

A seconda del tipo di calcoli effettuati con MATLAB (e su quali toolbox si sta utilizzando), Python potrebbe essere una buona alternativa a MATLAB.

Python + NumPy + SciPy + Matplotlib sono la giusta combinazione per iniziare.

Per i dati, è possibile, ad esempio, salvare i dati direttamente nel file di testo (presupponendo che non si tratti direttamente di problemi di precisione in virgola mobile) e leggerli in Python.

Se i dati sono dati Excel, in cui ogni valore è separato da un ";", è possibile ad esempio leggere il file riga per riga e utilizzare il metodo split() (con ";" come argomento) per ottenere ogni valore.

Per MATLAB fino alla versione 7.1, è possibile caricare direttamente i file. Mat da Python con il modulo scipy.io.matlab.mio.

3

C'è il Matplotlib per i grafici e lo csv module per la lettura dei dati Excel (presupponendo che sia possibile eseguire il dump su CSV).

Ecco a tutorial sulla sostituzione di MATLAB con Python.

+2

SAGE (menzionato nel tutorial, vedi http://sagemath.org/) è uno stack piuttosto interessante basato su Python. – stephan

+0

Grazie mille. Ho intenzione di provare SAGE. – clowny

3

Se vieni dal mondo MATLAB, Pylab faciliterà la tua transizione. Una volta che hai convertito i dati in ASCII, pylab.load() farà il resto:

pylab.load(fname, comments='#', delimiter=None, converters=None, 
      skiprows=0, usecols=None, unpack=False, 
      dtype=<type 'numpy.float64'>) 
2

ho dato un'occhiata a mlabwrap come un passo per alleviare alcuni MATLAB sviluppatori ad utilizzare Python più.

Ma non sono stato in grado di costruirlo in modo pulito e non eseguo installazioni di produzione qui, quindi sono morto nell'acqua.

3

Ci sono probabilmente centinaia di modi in cui è possibile importare dati di testo in Python.

Ma dal momento che si desidera sostituire MATLAB, si utilizzerà NumPy e probabilmente SciPy.

Mantenere le cose semplici: usare standard di text-carico di NumPy:

import numpy 
imported_array = numpy.loadtxt('file.txt',delimiter='\t') # Assuming tab-delimiter 
print imported_array.shape 
1

Se avete salvato i dati in formato MATLAB, uso:

from scipy.io import loadmat 

datafile = "yourfile.mat" 
data = loadmat(datafile, matlab_compatible=True) 
var1 = data['nameOfYourVariable'].squeeze() 
var2 = data['nameOfYourOtherVariable'].squeeze() 
1

"Io non so se Python è un'alternativa credibile a MATLAB "

Per me (medico sperimentale ics) Python non è solo un sostituto completo per (quando include SciPy e come accennato in precedenza), ma è utile per molte altre cose oltre al crunch e alla visualizzazione dei dati (come le esigenze di programmazione generale).

"Ho intenzione di provare SAGE."

Vale la pena notare che ci sono un paio di server che eseguono Sage che offrono l'environmet notebook (check-in Try Sage onlinehttp://www.sagemath.org/). Questo è abbastanza chiaro dato che tutto ciò che serve è un browser Internet e l'accesso (nessuna installazione richiesta).

Per quanto riguarda la domanda, come interpretato da Kevin Buchs (in un'altra risposta), la lettura di proprietà di Excel a Python può essere fatto in diversi metodi, alcuni sono piattaforma (OS) in funzione:

  1. Una risorsa bello (piattaforma indipendente) - http://www.python-excel.org/
  2. un esempio utilizzando xlrd che una volta ho trovato utile (questo è quello che ho usato quando ne avevo bisogno): http://code.activestate.com/recipes/483742/ per un esempio basato su XLRD (indipendente dalla piattaforma)
  3. pyexcelerator è un'altra opzione.

Spero che questo aiuti. Altrimenti, posso provare ad arrangiare un codice di esempio (anche se ho meno di sei anni ...). Personalmente preferisco, come è stato proposto nelle altre risposte, utilizzare il formato CSV o ASCII.

2

Pandas è una libreria di analisi dei dati Python che può importare/esportare da Excel abbastanza facilmente. Ecco come fare: naturalmente

http://pandas.pydata.org/pandas-docs/stable/10min.html#excel

Crash:

import pandas as pd 
data = pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA']) 
Problemi correlati