Python jako stół roboczy statystyk

355

Wiele osób korzysta z głównego narzędzia, takiego jak Excel lub inny arkusz kalkulacyjny, SPSS, Stata lub R do swoich potrzeb statystycznych. Mogą zwrócić się do konkretnego pakietu dla bardzo specjalnych potrzeb, ale wiele rzeczy można zrobić za pomocą prostego arkusza kalkulacyjnego lub ogólnego pakietu statystyk lub środowiska programowania statystyk.

Zawsze lubiłem Python jako język programowania i dla prostych potrzeb łatwo napisać krótki program, który oblicza to, czego potrzebuję. Matplotlib pozwala mi go wykreślić.

Czy ktoś całkowicie zmienił, powiedzmy R, na Python? R (lub dowolny inny pakiet statystyk) ma wiele funkcji specyficznych dla statystyki i ma struktury danych, które pozwalają myśleć o statystykach, które chcesz wykonać, a mniej o wewnętrznej reprezentacji twoich danych. Python (lub inny dynamiczny język) ma tę zaletę, że pozwala mi programować w znanym języku wysokiego poziomu i pozwala mi programowo współdziałać z rzeczywistymi systemami, w których rezydują dane lub w których mogę dokonywać pomiarów. Ale nie znalazłem żadnego pakietu Pythona, który pozwalałby mi wyrażać rzeczy za pomocą „terminologii statystycznej” - od prostych statystyk opisowych po bardziej skomplikowane metody wielowymiarowe.

Co możesz polecić, gdybym chciał użyć Pythona jako „stołu roboczego statystyk” zamiast R, SPSS itp.?

Co chciałbym zyskać i stracić na podstawie twojego doświadczenia?

Fabian Fagerholm
źródło
5
Do Twojej wiadomości, pojawi się nowy subreddit statystyk python: reddit.com/r/pystats
naught101
Kiedy potrzebujesz przenosić rzeczy w wierszu poleceń, pythonpy ( github.com/Russell91/pythonpy ) jest dobrym narzędziem.
RussellStewart

Odpowiedzi:

307

Trudno zignorować bogactwo pakietów statystycznych dostępnych w R / CRAN. To powiedziawszy, spędzam dużo czasu w krainie Python i nigdy nie zniechęcę nikogo do dobrej zabawy. :) Oto kilka bibliotek / linków, które mogą okazać się przydatne w pracy statystycznej.

  • NumPy / Scipy Prawdopodobnie już o nich wiesz. Ale pozwól mi wskazać książkę kucharską, w której możesz przeczytać o wielu dostępnych już narzędziach statystycznych oraz listę przykładów, która jest doskonałym odniesieniem do funkcji (w tym manipulacji danymi i innymi operacjami). Innym przydatnym odniesieniem jest dystrybucja Johna Cooka w Scipy .

  • pandy Jest to naprawdę fajna biblioteka do pracy z danymi statystycznymi - danymi tabelarycznymi, szeregami czasowymi, danymi panelowymi. Zawiera wiele wbudowanych funkcji do podsumowań danych, grupowania / agregacji, przestawiania. Posiada również bibliotekę statystyk / ekonometrii.

  • larry Tablica z etykietami, która działa dobrze z NumPy. Zapewnia funkcje statystyczne nieobecne w NumPy i dobre do manipulacji danymi.

  • python-statlib Dość niedawny wysiłek, który połączył wiele rozproszonych bibliotek statystyk. Przydatny w przypadku podstawowych i opisowych statystyk, jeśli nie używasz NumPy ani pand.

  • statsmodels Modelowanie statystyczne: między innymi modele liniowe, GLM.

  • scikits Pakiety obliczeń statystycznych i naukowych - w szczególności wygładzanie, optymalizacja i uczenie maszynowe.

  • PyMC Dla potrzeb Bayesian / MCMC / modelowania hierarchicznego. Wysoce rekomendowane.

  • Modele PyMix Mixture.

  • Biopython Przydatny do ładowania danych biologicznych do pytona i zapewnia podstawowe narzędzia do analizy statystycznej / uczenia maszynowego do analizy.

Jeśli prędkość staje się problemem, zastanów się nad Theano - używanym z powodzeniem przez osoby uczące się głęboko.

Istnieje wiele innych rzeczy, ale to jest najbardziej przydatne według wspomnianych przez ciebie słów.

ars
źródło
16
Wszystkie odpowiedzi były zarówno pomocne, jak i użyteczne i wszystkie zasługiwałyby na akceptację. Ten jednak ma bardzo dobrą odpowiedź na pytanie: w Pythonie musisz zebrać wiele elementów, aby zrobić to, co chcesz. Wskaźniki te bez wątpienia będą bardzo przydatne dla każdego, kto chce robić statystyki / modelowanie / itp. z Pythonem. Dziękuję wszystkim!
Fabian Fagerholm
1
@ars Czy wiesz, jaki jest najlepszy sposób używania Pythona w systemie Windows?
Stéphane Laurent
1
@ StéphaneLaurent Zwykle instaluję różne elementy samodzielnie, ale w celu szybkiego uruchomienia / instalacji możesz rozważyć: pythonxy .
ars
Ten skrypt instaluje wiele bibliotek cytowanych powyżej: fonnesbeck.github.com/ScipySuperpack
Fr.
Pythonxy jest fajny, ale może być denerwujący, jeśli chcesz wykonywać duże obliczenia, ponieważ jest dostępny tylko dla 32 bitów. Oto nieoficjalne pliki binarne do instalowania wielu pakietów Pythona. Mogą być bardzo przydatne, jeśli zdecydujesz się pracować pod oknami. lfd.uci.edu/~gohlke/pythonlibs @ StéphaneLaurent
JEquihua
140

Jako platforma numeryczna i substytut MATLAB, Python osiągnął dojrzałość co najmniej 2-3 lata temu i jest pod wieloma względami znacznie lepszy niż MATLAB. Próbowałem przełączyć się na Python z R. mniej więcej w tym czasie i nie udało mi się to. Jest po prostu zbyt wiele pakietów R, których używam na co dzień, i które nie mają odpowiednika w Pythonie. Brak ggplot2 jest wystarczający, aby zostać showstopperem, ale jest o wiele więcej. Oprócz tego R ma lepszą składnię do analizy danych. Rozważ następujący podstawowy przykład:

Python :

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

R :

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

Co uważasz za bardziej wyraziste? W R możesz myśleć w kategoriach zmiennych i możesz łatwo rozszerzyć model, powiedzmy,

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

W porównaniu do R, Python jest językiem niskiego poziomu do budowania modeli.

Gdybym miał mniej wymagań dotyczących zaawansowanych funkcji statystycznych i już kodowałem Pythona w większym projekcie, uważałbym go za dobrego kandydata. Rozważę to również wtedy, gdy potrzebne jest podejście bez kości, albo z powodu ograniczeń prędkości, albo dlatego, że pakiety R nie zapewniają przewagi.

Dla tych, którzy robią stosunkowo zaawansowanych statystyk teraz , odpowiedź brzmi: nie myślenia, i to nie . W rzeczywistości uważam, że Python ograniczy sposób myślenia o analizie danych. Zajmie to kilka lat i wiele lat pracy nad wyprodukowaniem zamienników modułów dla 100 niezbędnych pakietów R, a nawet wtedy Python poczuje się jak język, w którym wykorzystano możliwości analizy danych. Ponieważ R zdobył już największy względny odsetek statystycznych zastosowanych na kilku polach, nie widzę, aby stało się to wkrótce. Powiedziawszy to, jest to wolny kraj i znam ludzi, którzy robią statystyki w APL i C.

gappy
źródło
9
+1 Podoba mi się ta odpowiedź ze względu na nacisk na R jako język statystyczny do pracy z danymi przy użyciu formuł i tym podobnych. Biorąc to pod uwagę, oczekuję wielkiego pozytywnego wpływu pand (w połączeniu ze statsmodels) na społeczność Pythona.
chl
28
w społeczności Python Patsy odpowiada na potrzebę „formuły”, którą opisujesz , czasami poprawiając to, co oferuje R: patsy.readthedocs.org/en/v0.1.0/index.html To, co jest miłe w Pythonie, to że wszystkie te aspekty są obsługiwane ortogonalnie. Pandy zajmą się szeregami czasowymi i reprezentacją ramek danych / serii. patsy na formuły. numpy do reprezentacji tablic i wektoryzacji. statsmodels otacza statystyki algos. scipy do optymalizacji i kilka innych rzeczy. Rezultatem są czystsze interfejsy. R, dla porównania, jest bardziej dojrzały, ale jest sierścią. ../ ..
Blais
3
../ .. Myślę, że na dłuższą metę siły posuną się w kierunku coraz większej integracji Pythona i przekonasz się, że stanie się dość konkurencyjnym dla R. Czyszczenie danych w R jest taką PIA w porównaniu do Pythona, i to nigdy nie jest trywialna część pracy. - Blais
CHL
9
jako aktualizacja: pierwszy przykład w dokumentacji statsmodels jest teraz results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit(). Statsmodels wciąż pozostaje daleko w tyle za innymi pakietami statystycznymi, takimi jak R, jeśli chodzi o zasięg, ale jest coraz więcej rzeczy, które możesz zrobić w pythonie, zanim będziesz musiał pobrać inny język lub pakiet statystyczny. (GEE i Mixed będą dostępne w następnym wydaniu.)
Josef
4
„W Pythonie fajne jest to, że wszystkie te aspekty są obsługiwane ortogonalnie ...”. Nie zgadzam się pod wieloma względami. Znaczne nakładanie się między numpy, scipy, statsmodels. Konstrukcja R jest bardziej modułowa i ekonomiczna. Poza tym większość nie wszystkich innowacji pojęciowych w językach zorientowanych na dane (nie tylko formuły, ale także ramki danych, gramatyka grafiki, traktowana jako gramatyka medali, knitr i wciąż rozwijająca się gramatyka danych dplyr) wywodzi się z R. Społeczność Python wydaje się zawsze o krok do tyłu i nadmiernie koncentruje się na wydajności.
gappy
95

Po pierwsze, pozwól mi powiedzieć, że zgadzam się z odpowiedzią Johna D. Cooka: Python nie jest językiem specyficznym dla domeny, takim jak R, a zatem jest o wiele więcej, co możesz zrobić z nim dalej. Oczywiście R jako DSL oznacza, że ​​najnowsze algorytmy opublikowane w JASA prawie na pewno będą w R. Jeśli wykonujesz głównie prace ad hoc i chcesz eksperymentować z najnowszą techniką regresji lasso, powiedzmy, że R jest trudny do pokonania. Jeśli wykonujesz więcej prac analitycznych związanych z produkcją, integrujesz się z istniejącym oprogramowaniem i środowiskami i martwisz się o szybkość, rozszerzalność i łatwość konserwacji, Python będzie Ci znacznie lepiej służył.

Po drugie, ars dał świetną odpowiedź z dobrymi linkami. Oto kilka innych pakietów, które uważam za niezbędne do pracy analitycznej w Pythonie:

  • matplotlib dla pięknej grafiki o jakości publikacji.
  • IPython dla ulepszonej, interaktywnej konsoli Python. Co ważne, IPython zapewnia potężne środowisko do interaktywnego przetwarzania równoległego w Pythonie.
  • Cython do łatwego pisania rozszerzeń C w Pythonie. Ten pakiet pozwala pobrać fragment intensywnego obliczeniowo kodu Pythona i łatwo przekonwertować go na rozszerzenie C. Będziesz wtedy mógł załadować rozszerzenie C jak każdy inny moduł Pythona, ale kod będzie działał bardzo szybko, ponieważ znajduje się w C.
  • PyIMSL Studio do zbioru setek algorytmów matematycznych i statystycznych, które są dokładnie udokumentowane i obsługiwane. Możesz wywoływać dokładnie te same algorytmy z Pythona i C, z prawie takim samym API, a otrzymasz takie same wyniki. Pełne ujawnienie: pracuję nad tym produktem, ale również go często używam.
  • xlrd do łatwego czytania w plikach Excel.

Jeśli chcesz bardziej interaktywnego IDE / konsoli w stylu MATLAB, sprawdź Spyder lub wtyczkę PyDev dla Eclipse .

Josh Hemann
źródło
15
R nie jest DSL w zwykłym znaczeniu tego słowa. Jest to pełny język programowania Turinga.
hadley,
4
@ Hadley: Być może używam „DSL” zbyt kolokwialnie, ale dla tego, co jest tego warte, strona Wikipedii na DSL wyraźnie wymienia S + i R jako przykłady DSL i Pythona jako języka ogólnego przeznaczenia. Zobacz en.wikipedia.org/wiki/Domain-specific_language . Podobnie SAS jest kompletny z Turinga (tylko jeśli użyty jest komponent makro IML), ale nie nazwałbym go kompletnym językiem w sensie praktycznym. Uważam, że R jest nieoceniony w mojej pracy, ale staram się kodować przy użyciu języków ogólnego przeznaczenia tak dużo, jak to możliwe, zamiast próbować robić wszystko w R (lub Excel w tym zakresie).
Josh Hemann
16
Myślę, że umieszczanie R i S na tej samej liście, co w innych językach w wikipedii, jest niesprawiedliwe - w R nie ma nic, czego nie można zrobić w Pythonie. Oczywiście istnieje wiele rzeczy, które lepiej pasują do innego języka programowania, ale to samo dotyczy Pythona.
hadley,
6
Ahh, Hadley usunął R i S + ze strony Wikipedii tego samego dnia, w którym wymieniliśmy komentarze, 13 października 2011 r. Często słyszę więc mantrę „R został opracowany przez i dla statystyków” jako podstawowa siła. Najwyraźniej teraz jest to także język ogólnego przeznaczenia ...
Josh Hemann,
5
Cóż, czy mogę mieć kod wielowątkowy z R? Asynchroniczne we / wy sieciowe? Uwierz mi, te przypadki użycia faktycznie powstają w obliczeniach naukowych. R jest moim zdaniem DSL. Jest silny w statystyce i zły w większości innych rzeczy.
Gael Varoquaux,
61

Nie sądzę, że istnieje jakikolwiek argument, że zakres pakietów statystycznych w Cran i BioConductor daleko przekracza wszystko w ofercie z innych języków, jednak, że nie jest jedyną rzeczą do rozważenia.

W moich badaniach używam R, kiedy mogę, ale czasami R jest po prostu zbyt wolny. Na przykład duży przebieg MCMC.

Ostatnio połączyłem Python i C, aby rozwiązać ten problem. Krótkie podsumowanie: dopasowanie dużego stochastycznego modelu populacji o ~ 60 parametrach i wywnioskowanie około 150 stanów utajonych za pomocą MCMC.

  1. Wczytaj dane w pythonie
  2. Konstruuj struktury danych C w Pythonie, używając ctypów .
  3. Za pomocą forpętli python wywołaj funkcje C, które zaktualizowały parametry i obliczyły prawdopodobieństwo.

Szybkie obliczenia wykazały, że program spędził 95% na funkcjach C. Nie musiałem jednak pisać bolesnego kodu C, aby czytać dane lub konstruować struktury danych C.


Wiem, że istnieje także rpy , w którym python może wywoływać funkcje R. Może to być przydatne, ale jeśli „po prostu” robisz statystyki, użyłbym R.

csgillespie
źródło
29
Wkładanie bezwstydnej wtyczki do Rcpp :)
Dirk Eddelbuettel
ciekawy, czy wypróbowałeś PyMC i jaki jest jego wynik (w stosunku do Pythona / C) dla twoich modeli.
ars
@ars: W powyższym przypadku każda iteracja (z 10 ^ 8 iteracji) wymagała rozwiązania 5 ODE. Naprawdę trzeba było to zrobić w C. Reszta kodu była dość prosta, więc kod C był prosty. Moja aplikacja była niestandardowa, więc PyMC nie miała zastosowania - również było to ~ 2 lata temu.
csgillespie,
36

Nie widziałem scikit-learn wyraźnie wspomnianego w powyższych odpowiedziach. Jest to pakiet Pythona do uczenia maszynowego w języku Python. Jest dość młody, ale rośnie bardzo szybko (zrzeczenie się: Jestem programistą scikit-learn). Jego celem jest zapewnienie standardowych narzędzi algorytmicznych do uczenia maszynowego w ujednoliconym interfejsie, z naciskiem na szybkość i użyteczność. O ile mi wiadomo, w Matlabie nie można znaleźć niczego podobnego. Jego mocnymi stronami są:

Matlab jest świetnym narzędziem, ale w mojej własnej pracy scipy + scikit-learn zaczyna dawać mi przewagę nad Matlabem, ponieważ Python wykonuje lepszą pracę z pamięcią ze względu na mechanizm widoku (i mam duże dane) oraz ponieważ scikit-learn pozwala mi bardzo łatwo porównywać różne podejścia.

Gael Varoquaux
źródło
29

Jedną z korzyści przejścia na Python jest możliwość wykonywania większej ilości pracy w jednym języku. Python jest rozsądnym wyborem do łamania liczb, pisania stron internetowych, skryptów administracyjnych itp. Więc jeśli robisz statystyki w Pythonie, nie musiałbyś zmieniać języków, aby wykonywać inne zadania programistyczne.

Aktualizacja: 26 stycznia 2011 r. Microsoft Research ogłosił Sho , nowe środowisko do analizy danych oparte na języku Python. Nie miałem jeszcze okazji tego wypróbować, ale brzmi to jak interesująca możliwość, jeśli chcesz uruchomić Pythona i współdziałać z bibliotekami .NET.

John D. Cook
źródło
4
Zrobiłem dużo łamania numerów, jedną stronę internetową i kilka skryptów administracyjnych w R i działają całkiem nieźle.
28

Być może ta odpowiedź jest oszustwem, ale wydaje się dziwne, że nikt nie wspomniał o projekcie Rpy , który zapewnia interfejs między R i Pythonem. Otrzymujesz pythonowy interfejs API do większości funkcji R. Zachowując (powiedziałbym, ładniejszą) składnię, przetwarzanie danych, aw niektórych przypadkach szybkość Pythona. Jest mało prawdopodobne, że Python kiedykolwiek będzie miał tyle narzędzi najnowocześniejszych statystyk jak R, tylko dlatego, że R jest dsl, a społeczność statystyk jest bardziej zainwestowana w R niż jakikolwiek inny język.

Widzę to jako analogię do korzystania z ORM w celu wykorzystania zalet SQL, pozwalając jednocześnie Pythonowi na Python, a SQL na SQL.

Inne przydatne pakiety specjalnie dla struktur danych obejmują:

  • pydataframe replikuje ramkę data.frame i może być używana z rpy. Umożliwia stosowanie filtrowania i operacji podobnych do R.
  • pyTables Wykorzystuje szybki typ danych hdf5 poniżej, używany od wieków
  • h5py Również hdf5, ale specjalnie ukierunkowany na współpracę z Numpy
  • pandas Kolejny projekt, który zarządza danymi data.frame, współpracuje z rpy, pyTables i numpy
Griffith Rees
źródło
1
Zawsze znajduję rpy niechlujstwa do pracy. Wymaga na przykład dużych linii kodów z kilkoma prostymi funkcjami.
Néstor
Być może rozszerzenie rmagic dla IPython (jak wskazał @CarlSmith) może ułatwić pracę z rpy2? Zobacz ipython.org/ipython-doc/dev/config/extensions/rmagic.html .
Jonathan
26

Jestem biostatystą w zasadniczo sklepie R (około 80 osób używa R jako podstawowego narzędzia). Mimo to spędzam około 3/4 czasu pracując w Pythonie. Przypisuję to przede wszystkim faktowi, że moja praca obejmuje metody bayesowskie i uczenie maszynowe do modelowania statystycznego. Python jest znacznie bliższy słabemu punktowi wydajności / produktywności niż R, przynajmniej w przypadku metod statystycznych, które są iteracyjne lub oparte na symulacji. Gdybym przeprowadzał ANOVAS, regresje i testy statystyczne, jestem pewien, że użyłbym przede wszystkim R. Większość tego, czego potrzebuję, nie jest jednak dostępna jako puszkowany pakiet R.

Fonnesbeck
źródło
5
+1 za rozróżnienie obszaru statystyki, w którym pracujesz. Istnieją obszary obliczeń statystycznych (np. Nieustrukturyzowana analiza tekstu i wizja komputerowa), dla których istnieje wiele funkcji w Pythonie, a Python jest podobno lingua franca w tych subdomenach. Myślę, że społeczność Python musi nadrobić zaległości w ulepszaniu struktur danych i semantyki wokół klasycznego modelowania statystycznego, w których projekt R. Deweloperzy scikits.statsmodels robią duże postępy w tej dziedzinie: scikits.appspot.com/statsmodels
Josh Hemann
26

Chciałbym powiedzieć, że z punktu widzenia kogoś, kto w dużej mierze opiera się na modelach liniowych w mojej pracy statystycznej i uwielbia Python w innych aspektach mojej pracy, bardzo rozczarowałem się Pythonem jako platformą do robienia czegokolwiek poza dość podstawowymi statystykami.

Uważam, że R ma znacznie lepsze wsparcie ze strony społeczności statystycznej, znacznie lepszą implementację modeli liniowych, a szczerze mówiąc ze strony statystyk, nawet przy doskonałych dystrybucjach takich jak Enthought, Python czuje się trochę jak Dziki Zachód.

I chyba, że ​​pracujesz sam, szanse na to, że będziesz mieć współpracowników, którzy używają Pythona do statystyk, są w tym momencie dość niewielkie.

Fomite
źródło
26

Zresztą tak naprawdę nie ma potrzeby rezygnować z R dla Pythona. Jeśli używasz IPython z pełnym stosem, masz rozszerzenia R, Octave i Cython, dzięki czemu możesz łatwo i czysto używać tych języków w swoich notatnikach IPython. Masz również obsługę przekazywania wartości między nimi a przestrzenią nazw Python. Możesz wyprowadzać dane w postaci wykresów, używając matplotlib i odpowiednio renderowanych wyrażeń matematycznych. Istnieje mnóstwo innych funkcji i możesz to wszystko zrobić w przeglądarce.

IPython przeszedł długą drogę :)

Carl Smith
źródło
19

To, czego szukasz, nazywa się Sage: http://www.sagemath.org/

Jest to doskonały interfejs online do dobrze zbudowanej kombinacji narzędzi Python do matematyki.

Adam
źródło
4
Wspaniałą częścią Sage jest to, że jest to w istocie połączenie wielu wspaniałych bezpłatnych narzędzi do matematyki, statystyki, analizy danych itp. To coś więcej niż tylko Python; ma dostęp do R, maxima, GLPK, GSL i innych.
shabbychef
18

Rpy2 - graj R pozostając w Pythonie ...

Dalsze opracowanie na żądanie Gunga:

Dokumentację Rpy2 można znaleźć na stronie http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html

Z dokumentacji wynika, że interfejs wysokiego poziomu w rpy2 został zaprojektowany, aby ułatwić korzystanie z R przez programistów Python. Obiekty R są ujawniane jako instancje klas zaimplementowanych w języku Python, a funkcje R jako metody powiązane z tymi obiektami w wielu przypadkach. Ta sekcja zawiera także wprowadzenie do grafiki z wykresami R: krata (krata), a także gramatykę grafiki zaimplementowanej w ggplot2 pozwala tworzyć złożone i informacyjne wykresy z niewielkim kodem, podczas gdy podstawowa grafika siatki pozwala na wszelkie możliwe dostosowania.

Dlaczego lubię to:

Mogę przetwarzać moje dane za pomocą elastyczności Pythona, zamieniać je w macierz za pomocą numpy lub pand i wykonywać obliczenia w R i odzyskiwać obiekty r do późniejszego przetwarzania. Korzystam z ekonometrii, a python po prostu nie będzie miał narzędzi do tworzenia statystyk w R., a R prawdopodobnie nigdy nie będzie tak elastyczny jak python. Wymaga to zrozumienia R. Na szczęście ma sympatyczną społeczność programistów.

Sam Rpy2 jest dobrze obsługiwany, a obsługujący go dżentelmen odwiedza fora SO. Instalacja systemu Windows może być niewielkim problemem - https://stackoverflow.com/questions/5068760/bizzarre-issue-trying-to-make-rpy2-2-1-9-work-with-r-2-12-1-using -python-2-6-un? rq = 1 może pomóc.

pythOnometrist
źródło
1
Witamy na stronie @pythOnometrist. Podejrzewam, że jest to pomocny wkład. Czy mógłbyś podać krótkie podsumowanie Rpy2, aby czytelnicy mogli zdecydować, czy tego właśnie szukają?
gung
17

Używam Pythona do analizy statystycznej i prognozowania. Jak wspomniano powyżej, Numpy i Matplotlib są dobrymi końmi roboczymi. Używam również ReportLab do tworzenia plików PDF.

Obecnie patrzę zarówno na Resolver, jak i Pyspread, które są podobnymi do Excela aplikacjami do arkuszy kalkulacyjnych opartymi na Pythonie. Resolver jest produktem komercyjnym, ale Pyspread jest nadal oprogramowaniem typu open source. (Przepraszam, jestem ograniczony tylko do jednego linku)

Turukawa
źródło
1
Znów kilka interesujących narzędzi. Wiedziałem o Numpy, Matplotlib i ReportLab, ale Pyspread wydaje się interesującym pomysłem. Przynajmniej chciałbym wpisać wyrażenia w języku Python w komórkach arkusza kalkulacyjnego. Chociaż nie rozwiązuje wszystkich możliwych problemów, może być dobry do prototypowania i zabawy z danymi.
Fabian Fagerholm
1
+1 Wow arkusze kalkulacyjne python! Jeszcze o nich nie słyszałem. Zawsze marzyłem, aby OpenOffice / LibreOffice naprawdę uwzględnił i zintegrował skrypty Pythona ze swoim oprogramowaniem do arkuszy kalkulacyjnych
Użytkownik
15

świetny przegląd do tej pory. Używam Pythona (w szczególności scipy + matplotlib) jako zamiennika Matlaba od 3 lat pracy na uniwersytecie. Czasami wciąż wracam, ponieważ znam określone biblioteki, np. Pakiet falkowy Matlaba jest po prostu niesamowity.

Lubię http://enthought.com/ dystrybucji Pythona. Jest komercyjny, ale bezpłatny dla celów akademickich i, o ile mi wiadomo, całkowicie open source. Ponieważ pracuję z wieloma uczniami, przed użyciem enthought czasami kłopotliwe było zainstalowanie numpy, scipy, ipython itp. Enthought udostępnia instalator dla systemów Windows, Linux i Mac.

Dwa inne pakiety warte wspomnienia:

  1. ipython (jest już wyposażony w enthought) świetna zaawansowana powłoka. dobre wprowadzenie jest na showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. nltk - zestaw narzędzi w języku naturalnym http://www.nltk.org/ świetny pakiet na wypadek, gdybyś chciał przeprowadzić statystyki / uczenie maszynowe na dowolnym korpusie.

kgarten
źródło
12

To interesujące pytanie z kilkoma świetnymi odpowiedziami.

Przydadzą ci się przydatne dyskusje w artykule, który napisałem z Roseline Bilina. Ostateczna wersja znajduje się tutaj: http://www.enac.fr/recherche/leea/Steve%20Lawford/papers/python_paper_revised.pdf (od tego czasu pojawił się w niemal tej formie jako „Python dla Unified Research w ekonometrii i statystyce” ”, w Econometric Reviews (2012), 31 (5), 558-591).

Steve Lawford
źródło
10

Być może nie są bezpośrednio powiązane, ale R ma ładne środowisko GUI do interaktywnych sesji (edycja: na Macu / Windows). IPython jest bardzo dobry, ale dla środowiska bliższego Matlabowi możesz wypróbować Spyder lub IEP. Lepiej spóźniłem się z użyciem IEP, ale Spyder wygląda bardziej obiecująco.

IEP: http://code.google.com/p/iep/

Spyder: http://packages.python.org/spyder/

Witryna IEP zawiera krótkie porównanie pokrewnego oprogramowania: http://code.google.com/p/iep/wiki/Alternatives

JMS
źródło
9

Znalazłem tutaj świetne wprowadzenie do pand, które sugeruję sprawdzić. Pandas jest niesamowitym zestawem narzędzi i zapewnia wysoki poziom możliwości analizy danych w R z rozbudowanymi bibliotekami i jakością produkcji Pythona.

Ten post na blogu stanowi świetne wprowadzenie do Pand z perspektywy kompletnego początkującego:

http://manishamde.github.com/blog/2013/03/07/pandas-and-python-top-10/

padawan
źródło
3
Czy mógłbyś napisać kilka słów o tym, jakie cechy sprawiają, że jest on „świetny”, aby czytelnicy mogli wcześniej ustalić, czy oglądanie go będzie dla nich odpowiednie?
whuber
1
Przepraszam. Właśnie zdałem sobie sprawę, że dołączyłem niewłaściwy link do mojego oryginalnego postu.
padawan 17.03.13
8

Powinienem dodać okrzyk dla Sho, numerycznego środowiska obliczeniowego zbudowanego na IronPython. Używam go teraz na zajęciach uczenia maszynowego w Stanford i było to bardzo pomocne. Ma wbudowane pakiety algebry liniowej i możliwości tworzenia wykresów. Będąc .Net można łatwo rozszerzyć za pomocą C # lub dowolnego innego języka .Net. O wiele łatwiej jest mi zacząć, będąc użytkownikiem systemu Windows, niż prosty Python i NumPy.

pnewhook
źródło
8

Nikt wcześniej nie wspominał o Orange :

Eksploracja danych za pomocą programowania wizualnego lub skryptów w języku Python. Komponenty do uczenia maszynowego. Dodatki do bioinformatyki i eksploracji tekstu. Wyposażony w funkcje analizy danych.

Nie używam go na co dzień, ale jest to obowiązkowa pozycja dla każdego, kto woli GUI niż interfejs wiersza poleceń.

Nawet jeśli wolisz ten drugi, Orange dobrze jest znać, ponieważ możesz łatwo importować fragmenty Orange do skryptów Pythona, na wypadek, gdybyś potrzebował części jego funkcjonalności.

Wojciech Walczak
źródło
7

Zauważ, że SPSS Statistics ma zintegrowany interfejs Pythona (także R). Możesz więc pisać programy w języku Python, które korzystają z procedur statystycznych i generują albo zwykle ładnie sformatowane dane statystyczne, albo zwracają wyniki do programu w celu dalszego przetwarzania. Lub możesz uruchomić programy w języku Python w strumieniu poleceń Statistics. Nadal musisz znać język poleceń Statistics, ale możesz skorzystać z całego zarządzania danymi, wyników prezentacji itp., Które zapewnia Statistics, a także z procedur.

JKP
źródło
7

Ostatnie porównanie z DataCamp zapewnia wyraźny obraz R i Pythona.

Wykorzystanie tych dwóch języków w polu analizy danych. Python jest powszechnie używany, gdy zadania analizy danych muszą być zintegrowane z aplikacjami internetowymi lub gdy kod statystyk musi zostać włączony do produkcyjnej bazy danych. R jest stosowany głównie, gdy zadania analizy danych wymagają samodzielnego przetwarzania lub analizy na poszczególnych serwerach.

Uznałem, że jest on tak przydatny na tym blogu i mam nadzieję, że pomoże innym również zrozumieć najnowsze trendy w obu tych językach. Julia też się zbliża. Mam nadzieję że to pomoże !

Uczeń
źródło
6

Wierzę, że Python jest doskonałym warsztatem w mojej dziedzinie. Robię dużo skrobania, przenoszenia danych, dużych danych, analizy sieci, modelowania bayesowskiego i symulacji. Wszystkie te rzeczy zazwyczaj wymagają szybkości i elastyczności, więc w tych przypadkach Python działa lepiej niż R. Oto kilka rzeczy o Pythonie, które lubię (niektóre są wspomniane powyżej, inne nie są):

-Składnia czyszczenia; bardziej czytelny kod. Uważam, że Python jest bardziej nowoczesnym i spójnym językowo językiem.

-Python ma Notatnik, Ipython i inne niesamowite narzędzia do udostępniania kodu, współpracy, publikowania.

-iPython notebook pozwala na użycie R w kodzie Pythona, więc zawsze można wrócić do R.

-Niepodważalnie szybsze bez uciekania się do C. Użycie Cython, NUMBA i innych metod integracji C spowoduje, że twój kod osiągnie prędkości porównywalne z czystym C. Tego, o ile mi wiadomo, nie można osiągnąć w R.

-Pandy, Numpy i Scipy wydmuchują standardowy R z wody. Tak, jest kilka rzeczy, które R może zrobić w jednym wierszu, ale przyjmuje Pandas 3 lub 4. Ogólnie jednak Pandy mogą obsługiwać większe zestawy danych, są łatwiejsze w użyciu i zapewniają niesamowitą elastyczność w zakresie integracji z innymi Pythonami pakiety i metody.

-Python jest bardziej stabilny. Spróbuj załadować zestaw danych 2gig do RStudio.

-Jednym zgrabnym pakietem, który nie wydaje się wspomniany powyżej, jest PyMC3 - świetny ogólny pakiet dla większości twoich modeli bayesowskich.

-Niektóre, powyżej wspominają o ggplot2 i grub o jego nieobecności w Pythonie. Jeśli kiedykolwiek używałeś funkcji graficznych Matlaba i / lub używałeś matplotlib w Pythonie, będziesz wiedział, że te ostatnie opcje są na ogół znacznie bardziej wydajne niż ggplot2.

Być może jednak łatwiej jest nauczyć się języka R i często go używam w przypadkach, w których nie znam jeszcze procedur modelowania. W takim przypadku głębokość gotowych bibliotek statystycznych R. jest nie do pobicia. Idealnie, wiedziałbym oba wystarczająco dobrze, aby móc korzystać z nich w razie potrzeby.

Gene Burin
źródło
5

Dla tych, którzy muszą pracować pod Windows, Anaconda ( https://store.continuum.io/cshop/anaconda/ ) naprawdę bardzo pomaga. Instalowanie pakietów pod Windows było uciążliwe. Po zainstalowaniu Anacondy możesz skonfigurować gotowe do użycia środowisko programistyczne z jedną linią.

Na przykład za pomocą

conda create -n stats_env python pip numpy scipy matplotlib pandas

wszystkie te pakiety zostaną pobrane i zainstalowane automatycznie.

Yu-Yang
źródło
5

Python ma przed sobą długą drogę, zanim będzie można go porównać do R. Ma znacznie mniej pakietów niż R i niższej jakości. Ludzie, którzy trzymają się podstaw lub polegają tylko na własnych bibliotekach, prawdopodobnie mogliby wykonywać swoją pracę wyłącznie w języku Python, ale jeśli jesteś kimś, kto potrzebuje bardziej zaawansowanych rozwiązań ilościowych, śmiem twierdzić, że nic nie jest tak blisko R.

Należy również zauważyć, że do chwili obecnej Python nie ma odpowiedniego naukowego IDE w stylu Matlaba porównywalnego do R-Studio (proszę nie mówić Spyder) i musisz wszystko wypracować na konsoli. Ogólnie rzecz biorąc, całe doświadczenie w Pythonie wymaga sporej ilości „maniaków”, których brakuje większości ludzi i których nie obchodzi.

Nie zrozum mnie źle, uwielbiam Python, to właściwie mój ulubiony język, który w przeciwieństwie do R, jest prawdziwym językiem programowania. Jednak jeśli chodzi o czystą analizę danych, jestem zależny od R, który jest jak dotąd najbardziej specjalistycznym i opracowanym rozwiązaniem. Używam Pythona, gdy muszę połączyć analizę danych z inżynierią oprogramowania, np. Stworzyć narzędzie, które wykona automatyzację metodami, które najpierw zaprogramowałem w brudnym skrypcie R. W wielu przypadkach używam rpy2 do wywoływania R z Pythona, ponieważ w zdecydowanej większości przypadków pakiety R są znacznie lepsze (lub wcale nie istnieją w Pythonie). W ten sposób staram się uzyskać to, co najlepsze z obu światów.

Nadal używam Matlaba do czystego opracowywania algorytmów, ponieważ uwielbiam jego składnię i szybkość w stylu matematycznym.

Digio
źródło