En utilisant Python pour remplacer Matlab: comment importer des données?
Question
Je veux utiliser des bibliothèques Python pour remplacer Matlab. Comment pourrais-je importer des données Excel en Python (par exemple en utilisant NumPy ) pour les utiliser?
Je ne sais pas si Python est une alternative crédible à Matlab, mais je veux essayer. Y at-il un tutoriel?
La solution
Selon le type de calculs que vous faites avec Matlab (et sur lequel vous boîtes à outils utilisent), Python pourrait être une bonne alternative à Matlab.
NumPy + + href="http://en.wikipedia.org/wiki/Matplotlib" rel="nofollow noreferrer"> Matplotlib sont la bonne combinaison pour commencer.
Pour les données, vous pouvez, par exemple, enregistrer vos données directement dans un fichier texte (en supposant que vous n'êtes pas directement concerné par virgule flottante des problèmes de précision) et le lire dans Python .
Pour Matlab jusqu'à la version 7.1, il est possible de charger des fichiers .mat directement à partir de Python avec le scipy.io.matlab.mio module.
Autres conseils
Il y a Matplotlib pour les parcelles et Module csv pour la lecture données Excel (en supposant que vous pouvez vider CSV ).
Voici un tutoriel sur le remplacement avec Python Matlab.
Si vous venez de la Matlab monde, Pylab facilitera votre transition. Une fois que vous avez converti vos données en ASCII, pylab.load()
fera le reste:
pylab.load(fname, comments='#', delimiter=None, converters=None,
skiprows=0, usecols=None, unpack=False,
dtype=<type 'numpy.float64'>)
Il y a probablement des centaines de façons que vous pouvez importer des données de texte en Python.
Mais puisque vous voulez remplacer Matlab, vous allez être en utilisant NumPy et probablement SciPy .
Gardez les choses simples: utiliser du texte de chargement standard NumPy:
import numpy
imported_array = numpy.loadtxt('file.txt',delimiter='\t') # Assuming tab-delimiter
print imported_array.shape
Pandas est une bibliothèque d'analyse de données Python qui peuvent importer / exporter à partir d'Excel assez facilement. Voici comment faire:
http://pandas.pydata.org/pandas-docs/ stable / 10min.html # excellent
Crash Course:
import pandas as pd
data = pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA'])
J'ai regardé mlabwrap comme étape pour faciliter certains les développeurs de Python MATLAB® en utilisant plus.
Mais je suis incapable de construire proprement, et je ne courons pas la production installe ici, donc je suis mort dans l'eau.
Si vous vous avez enregistré des données dans format de Matlab, utilisez:
from scipy.io import loadmat
datafile = "yourfile.mat"
data = loadmat(datafile, matlab_compatible=True)
var1 = data['nameOfYourVariable'].squeeze()
var2 = data['nameOfYourOtherVariable'].squeeze()
"Je ne sais pas si Python est une alternative crédible à Matlab"
Pour moi (physique expérimentale) Python est non seulement un remplacement complet Matlab (en incluant SciPy et Matplotlib comme mentionné ci-dessus), mais il est utile pour beaucoup de choses autres que les données et la visualisation croquants (tels sont les besoins généraux de programmation).
"Je vais essayer SAGE."
Il convient de noter qu'il ya deux serveurs exécutant Sage qui offrir le environmet portable (consultez Essayez Sage en ligne http://www.sagemath.org/ ). Ceci est assez propre compte tenu du fait que tout ce que vous avez besoin est un navigateur Internet et l'accès (aucune installation requise).
En ce qui concerne la question telle qu'elle est interprétée par Kevin Buchs (dans une autre réponse), la lecture Excel propriétaire à Python peut être fait dans plusieurs méthodes, certains sont la plate-forme (OS) à charge:
- Une ressource agréable (plate-forme) - http://www.python-excel.org/
- Un exemple en utilisant xlrd que j'ai trouvé une fois utile (ce qui est ce que je quand je avais besoin il): http://code.activestate.com/recipes/483742/ un exemple basé sur xlrd (plate-forme)
- pyexcelerator est une autre option.
J'espère que cela aide. Sinon, je peux essayer d'arranger quelques exemples de code moi-même (bien que ceux que j'ai sont plus de six ans ...). Personnellement, je préfère, comme cela a été proposé dans les autres réponses, d'utiliser le format CSV ou ASCII.