Python en tant qu'atelier de statistiques

355

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?

Fabian Fagerholm
la source
5
Pour votre information, il y a un nouveau subreddit de statistiques de python qui se déclenche: reddit.com/r/pystats
naught101
Lorsque vous devez déplacer des éléments sur la ligne de commande, pythonpy ( github.com/Russell91/pythonpy ) est un bon outil.
RussellStewart

Réponses:

307

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.

ars
la source
16
Toutes les réponses ont été utiles et utiles et mériteraient toutes d'être acceptées. Celui-ci, cependant, fait un très bon travail pour répondre à la question: avec Python, vous devez rassembler beaucoup de morceaux pour faire ce que vous voulez. Ces pointeurs seront sans aucun doute très utiles pour ceux qui souhaitent faire des statistiques / modélisation / etc. avec Python. Merci à tout le monde!
Fabian Fagerholm
1
@ars, savez-vous quelle est la meilleure façon d'utiliser Python avec Windows?
Stéphane Laurent
1
@ StéphaneLaurent J'installe généralement les différentes pièces moi-même, mais pour un démarrage / installation rapide, vous pouvez envisager: pythonxy .
ars
Ce script installe de nombreuses bibliothèques citées ci-dessus: fonnesbeck.github.com/ScipySuperpack
Fr.
Pythonxy est bien, mais cela peut être gênant si vous voulez faire de gros calculs car il n’est disponible que pour 32 bits. Voici les fichiers binaires non officiels pour l'installation de nombreux packages python. Ils peuvent être très utiles si vous décidez de travailler sous Windows. lfd.uci.edu/~gohlke/pythonlibs @ StéphaneLaurent
JEquihua
140

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 :

results = sm.OLS(y, X).fit()

R :

results <- lm(y ~ x1 + x2 + x3, data=A)

Que considérez-vous comme plus expressif? En R, vous pouvez penser en termes de variables et étendre facilement un modèle, par exemple,

lm(y ~ x1 + x2 + x3 + x2:x3, data=A)

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.

gappy
la source
9
+1 J'aime bien cette réponse parce que vous avez mis l'accent sur R en tant que langage statistique pour travailler avec des données utilisant des formules et similaires. Cela étant dit, je m'attends à un impact positif important des pandas (combinés avec des statsmodels) dans la communauté Python.
chl
28
dans la communauté Python, patsy répond au besoin de "formule", que vous décrivez, améliorant parfois ce que R propose: patsy.readthedocs.org/fr/v0.1.0/index.html Ce qui est bien dans Python, c’est que tous les aspects sont traités orthogonalement. Les pandas s’occupent des séries chronologiques et de la représentation des images / séries de données. tapette pour les formules. numpy pour la représentation et la vectorisation de tableaux. statsmodels enveloppe statistiques algos. Scipy pour l'optimisation et un tas d'autres trucs. Le résultat est des interfaces plus propres. R, en comparaison, est plus mature, mais c'est une boule de poils. ../ ..
blais
3
../ .. Je pense qu'à long terme, les forces vont aller dans le sens d'une intégration de plus en plus poussée de Python et vous constaterez que cela deviendra un concurrent sérieux pour R. Le nettoyage des données dans R est une telle évaluation par comparaison à Python, et ce n'est jamais une partie insignifiante du travail. - blais
chl
9
en tant que mise à jour: le premier exemple dans la documentation de statsmodels est maintenant 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.)
Josef
4
"Ce qui est bien en Python, c'est que tous ces aspects sont gérés orthogonalement ...". Je ne suis pas d'accord sur un certain nombre de points. Il existe un important chevauchement entre numpy, scipy et statsmodels. La conception de R est beaucoup plus modulaire et économique. En outre, la plupart des innovations conceptuelles dans les langages orientés données ne sont pas toutes (non seulement des formules, mais aussi des trames de données, une grammaire graphique, une grammaire de médailles, knitr et une grammaire encore en développement de données de dplyr) La communauté Python semble toujours un pas en arrière et trop concentrée sur la performance.
Gappy
95

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:

  • matplotlib pour de superbes graphismes de qualité publication.
  • IPython pour une console Python améliorée et interactive. Il est important de noter qu'IPython fournit un cadre puissant pour l'informatique parallèle interactive en Python.
  • Cython pour écrire facilement des extensions C en Python. Ce paquet vous permet de convertir une grande partie du code Python en un calcul intensif et de le convertir facilement en une extension C. Vous pourrez alors charger l'extension C comme n'importe quel autre module Python, mais le code fonctionnera très rapidement puisqu'il est en C.
  • PyIMSL Studio pour une collection de centaines d’algorithmes mathématiques et statistiques parfaitement documentés et pris en charge. Vous pouvez appeler exactement les mêmes algorithmes depuis Python et C, avec presque la même API et vous obtiendrez les mêmes résultats. Divulgation complète: je travaille sur ce produit, mais je l'utilise aussi beaucoup.
  • xlrd pour lire facilement dans des fichiers Excel.

Si vous voulez une console / IDE interactive plus semblable à MATLAB, consultez Spyder ou le plug- in PyDev pour Eclipse .

Josh Hemann
la source
15
R n'est pas un DSL au sens habituel du terme. C'est un langage de programmation complet et complet.
Hadley
4
@hadley: J'utilise peut-être «DSL» de manière trop familière, mais pour ce que cela vaut, la page Wikipedia sur les DSL répertorie explicitement S + et R en tant qu'exemples de DSL et de Python en tant que langage à usage général. Voir en.wikipedia.org/wiki/Domain-specific_language . Dans le même ordre d'idées, SAS est Turing-complete (uniquement si le composant macro IML est utilisé), mais j'appellerais difficilement un langage complet au sens pratique. Je trouve R inestimable dans mon travail, mais j'essaie de coder autant que possible avec les langages généraux plutôt que d'essayer de tout faire dans R (ou Excel d'ailleurs).
Josh Hemann
16
Je pense qu'il est injuste d'inclure R et S dans la même liste que ces autres langues dans Wikipedia - il n'y a rien que vous ne puissiez faire en R que vous ne puissiez le faire en python. Bien sûr, de nombreux éléments conviennent mieux à un autre langage de programmation, mais il en va de même pour Python.
Hadley
6
Ahh, hadley a retiré R et S + de la page Wikipedia le même jour où nous avons échangé des commentaires, le 13 octobre 2011. J'entends donc souvent le mantra "R a été développé par et pour les statisticiens" comme étant sa force fondamentale. Apparemment, maintenant c'est aussi un langage d'usage général ...
Josh Hemann 10/10
5
Puis-je avoir du code multithread avec R? E / S asynchrone réseau? Croyez-moi, ces cas d'utilisation découlent en réalité du calcul scientifique. R est un DSL, à mon avis. Il est fort en statistiques et mauvais pour la plupart des autres choses.
Gael Varoquaux
61

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.

  1. Lire les données en python
  2. Construisez les structures de données C en python à l'aide de ctypes .
  3. À l'aide d'une forboucle 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.

csgillespie
la source
29
Insérer un bouchon sans vergogne pour Rcpp :)
Dirk Eddelbuettel
curieux de savoir si vous avez essayé PyMC et comment les performances se comparent (par rapport à python / C) pour vos modèles.
ars
@ars: Dans le cas ci-dessus, chaque itération (sur 10 ^ 8 itérations) impliquait la résolution de 5 ODE. Cela devait vraiment être fait en C. Le reste du code était assez simple et le code C était donc simple. Ma candidature n'étant pas standard, PyMC n'était donc pas applicable - il y a environ 2 ans.
csgillespie
36

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:

  • 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.

Gael Varoquaux
la source
29

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.

John D. Cook
la source
4
J'ai fait beaucoup de calculs, un site Web et quelques scripts administratifs en R et ils fonctionnent très bien.
28

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:

  • pydataframe reproduit un nom data.frame et peut être utilisé avec rpy. Vous permet d'utiliser un filtrage et des opérations similaires à ceux de R.
  • pyTables Utilise le type de données rapide hdf5 ci-dessous, utilisé depuis très longtemps
  • h5py Aussi hdf5, mais spécifiquement destiné à interopérer avec numpy
  • pandas Un autre projet qui gère data.frame comme data, fonctionne avec rpy, pyTables et numpy
Griffith Rees
la source
1
J'ai toujours trouvé que je ne travaillais pas correctement. Il nécessite de grandes lignes de codes avec des fonctions simples, par exemple.
Néstor
Peut-être que l'extension rmagic pour IPython (comme l'a souligné @CarlSmith) peut faciliter le travail avec rpy2? Voir ipython.org/ipython-doc/dev/config/extensions/rmagic.html .
Jonathan
26

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.

fonnesbeck
la source
5
+1 pour distinguer le domaine de la statistique dans lequel vous travaillez. Il existe de nombreux domaines de l'informatique statistique (par exemple, l'analyse de texte non structuré et la vision par ordinateur) pour lesquels de nombreuses fonctionnalités existent dans Python, et Python est apparemment la lingua franca de ces sous-domaines. Je pense que la communauté Python doit rattraper son retard sur l'amélioration des structures de données et de la sémantique autour de la modélisation statistique classique pour lesquelles la conception de R est si bonne. Les développeurs de scikits.statsmodels font beaucoup de progrès à cet égard
Josh Hemann
26

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.

Fomite
la source
26

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 :)

Carl Smith
la source
19

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.

Adam
la source
4
La partie brillante de Sage est qu’il s’agit essentiellement de l’union de plusieurs excellents outils gratuits pour les mathématiques, les statistiques, l’analyse de données, etc. Elle ne se limite pas à Python; il a accès à R, maxima, GLPK, GSL, etc.
Shabbychef
18

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.

pythOnometrist
la source
1
Bienvenue sur le site, @pythOnometrist. Je soupçonne que ceci est une contribution utile. Souhaitez-vous donner un bref résumé de Rpy2, afin que les lecteurs puissent décider si c'est ce qu'ils recherchent?
gung
17

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)

Turukawa
la source
1
Encore quelques outils intéressants. Je connaissais Numpy, Matplotlib et ReportLab, mais Pyspread semble être une idée intéressante. Au moins, j'aimerais taper les expressions Python dans les cellules de la feuille de calcul. Bien que cela ne résolve pas tous les problèmes possibles, cela pourrait être utile pour le prototypage et la manipulation de données.
Fabian Fagerholm
1
+1 Wow tableurs python! Je n'avais pas encore entendu parler de ceux-ci. J'ai toujours souhaité qu'OpenOffice / LibreOffice embrasse et intègre réellement les scripts python dans son tableur
Utilisateur du
15

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:

  1. ipython (vient déjà avec enthousiasme) super shell avancé. une bonne intro est sur showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. 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.

kgarten
la source
12

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).

Steve Lawford
la source
10

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

JMS
la source
9

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/

padawan
la source
3
Pourriez-vous écrire quelques mots sur les qualités qui le rendent "formidable" afin que les lecteurs puissent déterminer à l’avance si le visionnage serait approprié pour eux?
whuber
1
Pardon. Je viens de me rendre compte que j'ai joint le mauvais lien dans mon message original.
padawan
8

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.

pnewhook
la source
8

Personne n'a encore mentionné Orange :

Exploration de données par programmation visuelle ou par script Python. Composants pour l'apprentissage automatique. Add-ons pour la bioinformatique et l'extraction de texte. Emballé avec des fonctionnalités pour l'analyse de données.

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.

Wojciech Walczak
la source
7

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.

JKP
la source
7

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 !

apprenant
la source
6

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.

Gene Burin
la source
5

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

conda create -n stats_env python pip numpy scipy matplotlib pandas

tous ces paquets seront récupérés et installés automatiquement.

Yu-Yang
la source
5

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.

Digio
la source