Beaucoup de gens utilisent un outil principal comme Excel ou une autre feuille de calcul, SPSS, Stata ou R pour leurs besoins en statistiques. Ils peuvent se tourner vers un logiciel spécifique pour des besoins très spécifiques, mais beaucoup de choses peuvent être réalisées avec un simple tableur, un logiciel de statistiques général ou un environnement de programmation de statistiques.
J'ai toujours aimé Python en tant que langage de programmation, et pour des besoins simples, il est facile d'écrire un programme court qui calcule ce dont j'ai besoin. Matplotlib me permet de le tracer.
Est-ce que quelqu'un a complètement changé de, disons R, à Python? R (ou tout autre progiciel de statistiques) a de nombreuses fonctionnalités spécifiques aux statistiques et des structures de données vous permettant de réfléchir aux statistiques que vous souhaitez effectuer et moins à la représentation interne de vos données. Python (ou un autre langage dynamique) a l'avantage de me permettre de programmer dans un langage familier de haut niveau et d'interagir par programmation avec des systèmes du monde réel dans lesquels les données résident ou à partir desquelles je peux prendre des mesures. Mais je n'ai trouvé aucun package Python qui me permette d'exprimer des choses avec une "terminologie statistique" - des statistiques descriptives simples aux méthodes multivariées plus complexes.
Que pouvez-vous recommander si je voulais utiliser Python comme "atelier de statistiques" pour remplacer R, SPSS, etc.?
Que devrais-je gagner et perdre en fonction de votre expérience?
Réponses:
Il est difficile d'ignorer la richesse des progiciels statistiques disponibles dans R / CRAN. Cela dit, je passe beaucoup de temps en pays Python et je ne dissuaderais jamais personne de s’amuser autant que moi. :) Voici quelques bibliothèques / liens que vous pourriez trouver utiles pour le travail statistique.
NumPy / Scipy Vous en connaissez probablement déjà. Mais laissez-moi vous signaler le livre de recettes où vous pouvez lire de nombreuses installations statistiques déjà disponibles et la liste d’exemples, qui constitue une excellente référence pour les fonctions (y compris la manipulation de données et d’autres opérations). Les distributions de John Cook dans Scipy sont une autre référence pratique .
pandas C’est une très bonne bibliothèque pour travailler avec des données statistiques - données tabulaires, séries chronologiques, données de panel. Inclut de nombreuses fonctions intégrées pour les résumés de données, le regroupement / agrégation, le pivotement. A également une bibliothèque de statistiques / économétrie.
Larry Labeled tableau qui joue bien avec NumPy. Fournit des fonctions statistiques non présentes dans NumPy et utiles pour la manipulation de données.
python-statlib Un effort assez récent combinant un certain nombre de bibliothèques de statistiques dispersées. Utile pour les statistiques de base et descriptives si vous n'utilisez pas NumPy ou des pandas.
statsmodels Modélisation statistique: modèles linéaires, GLM, entre autres.
scikits Progiciels de calcul scientifique et scientifique - notamment le lissage, l’optimisation et l’apprentissage automatique.
PyMC Pour vos besoins en modélisation bayésienne / MCMC / hiérarchique. Hautement recommandé.
Modèles de mélange PyMix .
Biopython Utile pour charger vos données biologiques dans python et fournit des outils rudimentaires d’apprentissage statistique / machine pour l’analyse.
Si la vitesse devient un problème, considérez Theano - utilisé avec succès par les personnes qui étudient en profondeur.
Il y a beaucoup d'autres choses là-bas, mais c'est ce que je trouve le plus utile dans les lignes que vous avez mentionnées.
la source
En tant que plate-forme numérique et substitut de MATLAB, Python a atteint sa maturité il y a au moins deux ou trois ans et est maintenant bien meilleur que MATLAB à bien des égards. J'ai essayé de passer de R à Python à cette époque et j'ai échoué lamentablement. Il y a juste trop de paquets R que j'utilise quotidiennement et qui n'ont pas d'équivalent Python. L'absence de ggplot2 suffit à constituer un obstacle, mais il en existe beaucoup d'autres. En plus de cela, R a une meilleure syntaxe pour l'analyse des données. Prenons l'exemple de base suivant:
Python :
R :
Que considérez-vous comme plus expressif? En R, vous pouvez penser en termes de variables et étendre facilement un modèle, par exemple,
Comparé à R, Python est un langage de bas niveau pour la construction de modèles.
Si j'avais moins de besoins en fonctions statistiques avancées et si je codais déjà Python sur un projet plus vaste, je considérerais Python comme un bon candidat. Je le considérerais également lorsqu'une approche simple serait nécessaire, soit en raison de limitations de vitesse, soit parce que les packages R ne fournissent pas d'avantage.
Pour ceux qui font des statistiques relativement avancés en ce moment , la réponse est une évidence, et est pas . En fait, je pense que Python limitera votre vision de l'analyse des données. Cela prendra plusieurs années et de nombreuses années d’homme pour produire les modules de remplacement pour les 100 packages R essentiels, et même dans ce cas, Python se sentira comme un langage sur lequel des capacités d’analyse de données ont été mises à profit. Puisque R a déjà capturé la plus grande part relative de statisticiens appliqués dans plusieurs domaines, je ne vois pas cela se produire de si tôt. Cela dit, c'est un pays libre et je connais des gens qui font des statistiques en APL et en C.
la source
results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit()
. Statsmodels est encore loin derrière d’autres progiciels statistiques tels que R en termes de couverture, mais vous pouvez faire de plus en plus de choses en python avant de devoir utiliser une autre langue ou progiciel statistique. (GEE et Mixed seront dans la prochaine version.)Tout d’abord, permettez-moi de dire que je suis d’accord avec la réponse de John D Cook: Python n’est pas un langage spécifique à un domaine comme R, et par conséquent, vous pourrez en faire beaucoup plus à l’avenir. Bien sûr, R étant un DSL signifie que les derniers algorithmes publiés dans JASA seront presque certainement en R. Si vous faites un travail principalement ad hoc et souhaitez expérimenter la dernière technique de régression de lasso, disons que R est difficile à battre. Si vous effectuez davantage de travaux analytiques de production, intégrez des logiciels et des environnements existants et que vous vous souciez de la vitesse, de l'extensibilité et de la facilité de maintenance, Python vous servira beaucoup mieux.
Deuxièmement, ars a donné une excellente réponse avec de bons liens. Voici quelques autres packages que je considère comme essentiels au travail analytique en Python:
Si vous voulez une console / IDE interactive plus semblable à MATLAB, consultez Spyder ou le plug- in PyDev pour Eclipse .
la source
Je ne pense pas que l'on puisse affirmer que la gamme de progiciels statistiques en cran et bioconductor dépasse de loin tout ce que proposent les autres langues, mais ce n'est pas la seule chose à considérer.
Dans mes recherches, j'utilise R quand je peux mais parfois R est trop lent. Par exemple, une grande exécution MCMC.
Récemment, j'ai combiné python et C pour résoudre ce problème. Résumé succinct: ajustement d’un grand modèle de population stochastique avec environ 60 paramètres et déduction d’environ 150 états latents à l’aide de MCMC.
for
boucle python , appelez les fonctions C qui ont mis à jour les paramètres et calculé la vraisemblance.Un rapide calcul montre que le programme a passé 95% des fonctions en C. Cependant, je n'ai pas eu à écrire un code C douloureux pour lire des données ou construire des structures de données C.
Je sais qu’il existe également un fichier dans lequel python peut appeler des fonctions R. Cela peut être utile, mais si vous "ne" faites que des statistiques, j'utiliserais R.
la source
Les discussions suivantes sur StackOverflow pourraient être utiles
la source
Je n'ai pas vu le scikit-learn explicitement mentionné dans les réponses ci-dessus. C'est un paquet Python pour l'apprentissage automatique en Python. Il est assez jeune mais connaît une croissance extrêmement rapide (avertissement: je suis un développeur scikit-learn). Ses objectifs sont de fournir des outils algorithmiques d’apprentissage automatique standard dans une interface unifiée axée sur la vitesse et la convivialité. Autant que je sache, vous ne trouvez rien de semblable dans Matlab. Ses points forts sont:
Une documentation détaillée , avec de nombreux exemples
Outils d’ apprentissage supervisé (régression / classification) standard de haute qualité . Plus précisément:
SVM très polyvalent (basé sur libsvm, mais avec intégration de correctifs externes et beaucoup de travail sur la liaison Python)
modèles linéaires pénalisés ( Lasso , régression logistique clairsemée ...) avec des implémentations efficaces.
Possibilité d'effectuer une sélection de modèle par validation croisée à l'aide de plusieurs processeurs
Apprentissage non supervisé pour explorer les données ou effectuer une première réduction de dimensionnalité, qui peut facilement être enchaîné à un apprentissage supervisé.
Open source, sous licence BSD. Si vous n'êtes pas dans un environnement purement académique (je suis dans ce qui serait un laboratoire national dans cet État), cela compte beaucoup, car les coûts de Matlab sont alors très élevés et vous pourriez penser à tirer des produits de votre travail.
Matlab est un excellent outil, mais dans mon propre travail, scipy + scikit-learn commence à me donner une longueur d’avance sur Matlab car Python fait un meilleur travail avec la mémoire en raison de son mécanisme de vue (et du big data), et parce que scikit-learn me permet de comparer très facilement différentes approches.
la source
L'un des avantages du passage à Python est la possibilité de faire plus de travail dans une langue. Python est un choix raisonnable pour la compression des chiffres, la rédaction de sites Web, les scripts administratifs, etc. Ainsi, si vous établissez vos statistiques en Python, vous n’auriez pas à changer de langue pour effectuer d’autres tâches de programmation.
Mise à jour: le 26 janvier 2011, Microsoft Research a annoncé Sho , un nouvel environnement basé sur Python pour l'analyse de données. Je n'ai pas encore eu l'occasion de l'essayer, mais cela semble une possibilité intéressante si vous voulez exécuter Python et également interagir avec les bibliothèques .NET.
la source
Peut-être que cette réponse est trompeuse, mais il semble étrange que personne n’a mentionné le projet rpy , qui fournit une interface entre R et Python. Vous obtenez une API pythonique pour la plupart des fonctionnalités de R tout en conservant la syntaxe (je dirais plus agréable), le traitement des données et, dans certains cas, la vitesse de Python. Il est peu probable que Python ait autant d’outils de statistiques à la pointe de la technologie que R, simplement parce que R est un DSL et que la communauté de statistiques est plus investie dans R que toute autre langue.
Je vois cela comme analogue à utiliser un ORM pour tirer parti des avantages de SQL, tout en laissant Python être Python et SQL être SQL.
D'autres packages utiles spécifiques aux structures de données incluent:
la source
Je suis biostatisticien dans ce qui est essentiellement un magasin R (environ 80% des personnes utilisent R comme principal outil). Malgré tout, je passe environ les trois quarts de mon temps à travailler en Python. J'attribue ceci principalement au fait que mon travail implique des approches bayésiennes et d'apprentissage automatique en modélisation statistique. Python apparaît beaucoup plus près de la limite performance / productivité que R, du moins pour les méthodes statistiques itératives ou basées sur la simulation. Si je réalisais des ANOVAS, des régressions et des tests statistiques, je serais sûr d’utiliser principalement R. La plupart de ce dont j’ai besoin n’est toutefois pas disponible sous forme de package R en boîte.
la source
Je voudrais dire que du point de vue de quelqu'un qui s'appuie beaucoup sur des modèles linéaires pour son travail statistique et qui aime Python pour d'autres aspects de mon travail, j'ai été très déçu de voir Python en tant que plate-forme permettant de faire autre chose que des statistiques assez basiques.
Je trouve que R bénéficie d’un soutien bien meilleur de la communauté statistique, d’une implémentation bien meilleure des modèles linéaires, et pour être franc du côté des statistiques, même avec d’excellentes distributions comme Enthought, Python ressemble un peu au Far West.
Et sauf si vous travaillez en solo, les chances que vous ayez des collaborateurs qui utilisent Python pour les statistiques sont, pour le moment, assez minces.
la source
De toute façon, pas besoin d'abandonner R pour Python. Si vous utilisez IPython avec une pile complète, vous disposez des extensions R, Octave et Cython, ce qui vous permet d'utiliser facilement et proprement ces langages dans vos cahiers IPython. Vous pouvez également prendre en charge le passage de valeurs entre eux et votre espace de noms Python. Vous pouvez exporter vos données sous forme de graphiques, en utilisant matplotlib, et en tant qu'expressions mathématiques correctement rendues. Il y a des tonnes d'autres fonctionnalités et vous pouvez faire tout cela dans votre navigateur.
IPython a parcouru un long chemin :)
la source
Ce que vous recherchez s'appelle Sage: http://www.sagemath.org/
C'est une excellente interface en ligne pour une combinaison bien construite d'outils Python pour les mathématiques.
la source
Rpy2 - jouer avec R rester en Python ...
Élaboration plus poussée à la demande de Gung:
La documentation Rpy2 peut être trouvée à http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html
D'après la documentation, l' interface de haut niveau dans rpy2 est conçue pour faciliter l'utilisation de R par les programmeurs Python. Les objets R sont exposés en tant qu'instances de classes implémentées par Python, les fonctions R étant des méthodes liées à ces objets dans un certain nombre de cas. Cette section contient également une introduction aux graphiques avec des graphes R: trellis (treillis), ainsi que la grammaire des graphiques implémentée dans ggplot2.
Pourquoi j'aime ça:
Je peux traiter mes données en utilisant la flexibilité de python, les transformer en matrice à l’aide de numpy ou de pandas, faire le calcul en R et récupérer les objets à traiter. J'utilise l'économétrie et python n'aura tout simplement pas les outils statistiques ultramodernes de R. Et R ne sera probablement jamais aussi souple que python. Heureusement, il existe une belle communauté de développeurs.
Rpy2 lui-même est bien supporté et le monsieur qui le supporte fréquente les forums SO. L'installation de Windows est peut-être un peu pénible -python-2-6-un? rq = 1 pourrait aider.
la source
J'utilise Python pour l'analyse statistique et la prévision. Comme mentionné par d'autres ci-dessus, Numpy et Matplotlib sont de bons chevaux de travail. J'utilise également ReportLab pour la production de fichiers PDF.
Je suis en train de consulter Resolver et Pyspread, des tableurs de type Excel basés sur Python. Le résolveur est un produit commercial mais Pyspread est toujours open-source. (Excuses, je suis limité à un seul lien)
la source
excellent aperçu jusqu'à présent. J'utilise python (en particulier scipy + matplotlib) en remplacement de matlab depuis 3 ans à l'université. Je reviens parfois encore parce que je connais des bibliothèques spécifiques, par exemple le paquet matlab wavelet est purement génial.
J'aime la distribution de http://enthought.com/ python. C'est commercial, mais gratuit à des fins académiques et, autant que je sache, complètement open-source. Comme je travaille avec beaucoup d'étudiants, avant d'utiliser ce logiciel, il leur était parfois difficile d'installer numpy, scipy, ipython, etc. Enthought fournit un programme d'installation pour Windows, Linux et Mac.
Deux autres forfaits dignes de mention:
ipython (vient déjà avec enthousiasme) super shell avancé. une bonne intro est sur showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries
nltk - la boîte à outils en langage naturel http://www.nltk.org/ c'est un excellent paquet au cas où vous voudriez faire des statistiques / un apprentissage automatique sur n'importe quel corpus.
la source
C'est une question intéressante, avec d'excellentes réponses.
Vous pourriez trouver une discussion utile dans un article que j'ai écrit avec Roseline Bilina. La version finale se trouve ici: http://www.enac.fr/recherche/leea/Steve%20Lawford/papers/python_paper_revised.pdf (elle est depuis apparue, sous cette forme, sous le nom "Python pour la recherche unifiée en économétrie et statistique ", dans Econometric Reviews (2012), 31 (5), 558-591).
la source
Peut-être pas directement lié, mais R possède un bel environnement graphique pour les sessions interactives (édition: sous Mac / Windows). IPython est très bon, mais pour un environnement plus proche de Matlab, vous pouvez essayer Spyder ou IEP. J'ai eu plus de chance d'utiliser tardivement l'IEP, mais Spyder semble plus prometteur.
IEP: http://code.google.com/p/iep/
Spyder: http://packages.python.org/spyder/
Et le site IEP inclut une brève comparaison des logiciels associés: http://code.google.com/p/iep/wiki/Alternatives
la source
J'ai trouvé une excellente introduction aux pandas ici que je suggère de vérifier. Pandas est un ensemble d'outils étonnant et fournit les capacités d'analyse de données de haut niveau de R avec les bibliothèques étendues et la qualité de production de Python.
Ce billet de blog donne une excellente introduction aux Pandas du point de vue d'un débutant complet:
http://manishamde.github.com/blog/2013/03/07/pandas-and-python-top-10/
la source
Je devrais ajouter un mot de passe pour Sho, l'environnement informatique numérique construit sur IronPython. Je l'utilise actuellement pour le cours d'apprentissage automatique de Stanford et cela a été vraiment utile. Il est construit dans des packages d'algèbre linéaire et des fonctionnalités de création de graphiques. Être .Net, il est facile d'étendre avec C # ou tout autre langage .Net. En tant qu'utilisateur Windows, j'ai trouvé qu'il était beaucoup plus facile de commencer avec straight form Python et NumPy.
la source
Personne n'a encore mentionné Orange :
Je ne l'utilise pas tous les jours, mais c'est un must pour tous ceux qui préfèrent l'interface graphique à l'interface de ligne de commande.
Même si vous préférez cette dernière solution, il est bon de connaître Orange, car vous pouvez facilement importer des morceaux d’Orange dans vos scripts Python au cas où vous auriez besoin de certaines de ses fonctionnalités.
la source
Notez que SPSS Statistics possède une interface Python intégrée (également R). Vous pouvez donc écrire des programmes Python qui utilisent des procédures de statistiques et produire soit la sortie habituelle des statistiques joliment formatées, soit renvoyer les résultats à votre programme pour un traitement ultérieur. Ou vous pouvez exécuter des programmes Python dans le flux de commandes Statistics. Vous devez toujours connaître le langage de commande Statistics, mais vous pouvez tirer parti de toutes les fonctions de gestion des données, de présentation, etc. fournies par Statistics, ainsi que des procédures.
la source
Une comparaison récente de DataCamp fournit une image claire de R et Python.
L'utilisation de ces deux langues dans le domaine de l'analyse des données. Python est généralement utilisé lorsque les tâches d'analyse de données doivent être intégrées à des applications Web ou si le code de statistiques doit être intégré à une base de données de production. R est principalement utilisé lorsque les tâches d'analyse de données nécessitent une informatique autonome ou une analyse sur des serveurs individuels.
Je l’ai trouvé très utile dans ce blog et j’espère que cela aiderait les autres à comprendre également les tendances récentes dans ces deux langues. Julia est également à venir dans la région. J'espère que cela t'aides !
la source
Je pense que Python est un établi supérieur dans mon domaine. Je fais beaucoup de raclage, de querelles de données, de gros travaux de données, d'analyse de réseau, de modélisation bayésienne et de simulations. Toutes ces choses ont généralement besoin de rapidité et de flexibilité, je trouve donc que Python fonctionne mieux que R dans ces cas-là. Voici quelques aspects de Python que j'aime bien (certains sont mentionnés ci-dessus, d'autres non):
Syntaxe de nettoyage; code plus lisible. Je pense que Python est un langage plus moderne et syntaxiquement cohérent.
-Python a Notebook, Ipython et d’autres outils incroyables pour le partage de code, la collaboration et la publication.
Le carnet de notes d'iPython permet d'utiliser R dans son code Python, il est donc toujours possible de revenir à R.
-Distinctement plus rapide sans recourir à C. L'utilisation de Cython, NUMBA et d'autres méthodes d'intégration du C mettra votre code à une vitesse comparable à celle du C pur. Cela, autant que je sache, n'est pas réalisable dans R.
-Pandas, Numpy et Scipy coupent le standard R hors de l'eau. Oui, R peut effectuer certaines opérations sur une seule ligne, mais prend Pandas 3 ou 4. En règle générale, cependant, les Pandas peuvent gérer des ensembles de données plus volumineux, sont plus faciles à utiliser et offrent une flexibilité incroyable en ce qui concerne l'intégration avec d'autres Python. forfaits et méthodes.
-Python est plus stable. Essayez de charger un jeu de données 2gig dans RStudio.
PyMC3 est un bon paquet qui ne semble pas être mentionné ci-dessus - un excellent paquet général pour la plupart de vos modèles bayésiens.
-Quelques-uns mentionnent ci-dessus ggplot2 et grub à propos de son absence de Python. Si vous avez déjà utilisé les fonctionnalités graphiques de Matlab et / ou utilisé matplotlib en Python, vous saurez que ces dernières options sont généralement beaucoup plus efficaces que ggplot2.
Cependant, R est peut-être plus facile à apprendre et je l’utilise fréquemment dans les cas où je ne suis pas encore trop familiarisé avec les procédures de modélisation. Dans ce cas, la profondeur des bibliothèques de statistiques disponibles sur le marché de R est imbattable. Idéalement, je connais les deux assez bien pour pouvoir utiliser au besoin.
la source
Pour ceux qui doivent travailler sous Windows, Anaconda ( https://store.continuum.io/cshop/anaconda/ ) aide beaucoup. L'installation de paquets sous Windows était un casse-tête. Avec Anaconda installé, vous pouvez configurer un environnement de développement prêt à l’emploi avec une seule couche.
Par exemple, avec
tous ces paquets seront récupérés et installés automatiquement.
la source
Python a encore beaucoup de chemin à parcourir avant de pouvoir être comparé à R. Il contient beaucoup moins de paquets que R et est de moins bonne qualité. Les personnes qui s’en tiennent aux bases ou qui ne comptent que sur leurs bibliothèques personnalisées pourraient probablement faire leur travail exclusivement en Python, mais si vous avez besoin de solutions quantitatives plus avancées, j’ose dire que rien n’est comparable à R.
Il convient également de noter que, à ce jour, Python n’a pas d’IDE de type Matlab scientifique comparable à R-Studio (veuillez ne pas dire Spyder) et vous devez tout régler sur la console. De manière générale, toute l'expérience Python nécessite une bonne dose de "geekness" qui manque et préoccupe la plupart des gens.
Comprenez-moi bien, j'aime Python, c'est en fait mon langage préféré qui, contrairement à R, est un vrai langage de programmation. Néanmoins, en ce qui concerne l’analyse de données pures, je suis dépendant de R, qui est de loin la solution la plus spécialisée et la plus développée à ce jour. J'utilise Python lorsque j'ai besoin de combiner l'analyse de données avec le génie logiciel, par exemple, je crée un outil qui automatisera les méthodes que j'ai programmées pour la première fois dans un script R corrompu. Souvent, j'utilise rpy2 pour appeler R depuis Python car dans la grande majorité des cas, les packages R sont bien meilleurs (ou n'existent pas du tout en Python). De cette façon, j'essaie de tirer le meilleur parti des deux mondes.
J'utilise toujours un peu de Matlab pour le développement d'algorithmes purs, car j'adore sa syntaxe et sa vitesse de style mathématique.
la source