Bir istatistik tezgah olarak Python


355

Birçok insan, istatistik ihtiyaçları için Excel veya başka bir elektronik tablo, SPSS, Stata veya R gibi bir ana araç kullanır. Çok özel ihtiyaçlar için belirli bir pakete yönelebilirler, ancak basit bir elektronik tablo veya genel istatistik paketi veya istatistik programlama ortamıyla birçok şey yapılabilir.

Python'u her zaman bir programlama dili olarak sevdim ve basit ihtiyaçlar için ihtiyacım olanı hesaplayan kısa bir program yazmak kolaydır. Matplotlib onu çizmeme izin veriyor.

Birisi tamamen R'den Python'a geçti mi? R (veya başka bir istatistik paketi), istatistiklere özgü çok fazla işlevselliğe sahiptir ve gerçekleştirmek istediğiniz istatistikleri düşünmenize ve verilerinizin iç gösterimi hakkında daha azını düşünmenize izin veren veri yapılarına sahiptir. Python (veya başka bir dinamik dilin) ​​tanıdık, üst düzey bir dilde programlamama izin vermesinin yararına sahip ve verilerin bulunduğu veya ölçüm alabildiğim gerçek dünya sistemleri ile programlı olarak etkileşime girmeme izin veriyor. Ancak basit tanımlayıcı istatistiklerden daha karmaşık çok değişkenli yöntemlere kadar "istatistiksel terminoloji" ile bir şeyler ifade etmeme izin verecek bir Python paketi bulamadım.

Python'u R, SPSS vb. Yerine "istatistik tezgahı" olarak kullanmak istersem ne önerebilirsiniz?

Deneyiminize dayanarak ne kazanacağım ve kaybedeceğim?


5
Bilginize, yeni bir python istatistik
subreddit var

Nesneleri komut satırında hareket ettirmeniz gerektiğinde, pythonpy ( github.com/Russell91/pythonpy ) güzel bir araçtır.
RussellStewart

Yanıtlar:


307

R / CRAN'da mevcut istatistiksel paketlerin zenginliğini göz ardı etmek zor. Bu, Python ülkesinde çok zaman geçirdiğimi ve hiç kimseyi benim kadar eğlenmekten vazgeçmediğini söyledi. :) İşte istatistiksel çalışma için yararlı bulabileceğiniz bazı kütüphaneler / bağlantılar.

  • NumPy / Scipy Muhtemelen bunları zaten biliyorsunuz. Ancak, zaten mevcut olan pek çok istatistiki tesis hakkında bilgi alabileceğiniz Yemek Kitabını ve fonksiyonlar için harika bir referans olan Örnek Listesini (veri manipülasyonu ve diğer işlemler dahil) belirteyim. Bir başka kullanışlı referans ise John Cook'un Scipy'deki Dağılımları .

  • pandalar Bu istatistiksel verilerle çalışmak için gerçekten güzel bir kütüphane - tablo verileri, zaman serileri, panel verileri. Veri özetleri, gruplandırma / toplama, dönme için birçok yerleşik işlevi içerir. Ayrıca bir istatistik / ekonometri kütüphanesi vardır.

  • NumPy ile iyi oynayan larry Labeled dizisi. NumPy'de bulunmayan ve veri manipülasyonu için iyi olan istatistiksel fonksiyonlar sağlar.

  • python-statlib Çok sayıda dağınık istatistik kütüphanesini birleştiren oldukça yeni bir çaba. NumPy veya panda kullanmıyorsanız, temel ve açıklayıcı istatistikler için kullanışlıdır.

  • statsmodels İstatistiksel modelleme: Lineer modeller, GLM'ler, diğerleri arasında.

  • bilimler İstatistiksel ve bilimsel hesaplama paketleri - özellikle düzleştirme, optimizasyon ve makine öğrenmesi.

  • PyMC Bayesian / MCMC / hiyerarşik modelleme ihtiyaçlarınız için. Şiddetle tavsiye edilir.

  • PyMix Mixture modelleri.

  • Biopython Biyolojik verilerinizi python'a yüklemek için kullanışlıdır ve analiz için temel istatistik / makine öğrenme araçları sağlar.

Hız bir sorun haline gelirse, Theano'yu düşünün - derin öğrenen insanlar tarafından başarılı bir şekilde kullanılır.

Dışarıda bir sürü başka şey var, ama bahsettiğim sıralar boyunca en yararlı bulduğum şey bu.


16
Tüm cevaplar hem yararlı hem de faydalıydı ve hepsi kabul edilmeyi hak ediyordu. Bununla birlikte, bu soruya cevap vermek için çok iyi bir iş çıkarır: Python ile istediğinizi yapmak için birçok parça bir araya getirmeniz gerekir. Bu işaretçiler, istatistik / modelleme / vb. Yapmak isteyen herkes için çok faydalı olacaktır. Python ile. Herkese teşekkürler!
Fabian Fagerholm

1
@ars lütfen Windows ile Python'u kullanmanın en iyi yolunun ne olduğunu biliyor musunuz?
Stéphane Laurent

1
@ StéphaneLaurent Genellikle çeşitli parçaları kendim kurarım , ancak hızlı bir başlangıç ​​/ kurulum için düşünebilirsiniz: pythonxy .
ars

Bu komut dosyası yukarıda belirtilen kitaplıkların çoğunu yükler: fonnesbeck.github.com/ScipySuperpack
Fr.

Pythonxy güzel ama yalnızca 32 bit için kullanılabildiğinden büyük hesaplamalar yapmak istiyorsanız can sıkıcı olabilir. İşte birçok python paketi kurmak için resmi olmayan ikili dosyalar. Pencereler altında çalışmaya karar verirseniz oldukça yararlı olabilirler. lfd.uci.edu/~gohlke/pythonlibs @ StéphaneLaurent
JEquihua

140

Sayısal bir platform ve MATLAB'ın yerine geçen Python, en az 2-3 yıl önce olgunluğa ulaştı ve şimdi birçok açıdan MATLAB'dan çok daha iyi. O sırada Python'a R'den geçmeye çalıştım ve sefil bir şekilde başarısız oldum. Python eşdeğeri olmayan günlük olarak kullandığım çok sayıda R paketi var. Ggplot2'nin yokluğu bir gösterici olmak için yeterlidir, ancak çok daha fazlası vardır. Buna ek olarak, R veri analizi için daha iyi bir sözdizimine sahiptir. Aşağıdaki temel örneği ele alalım:

Python :

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

R :

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

Daha etkileyici ne düşünüyorsunuz? R'de değişkenler açısından düşünebilir ve kolayca bir modeli genişletebilir,

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

R'ye kıyasla Python, model oluşturma için düşük seviye bir dildir.

Gelişmiş istatistiksel fonksiyonlar için daha az gereksinimim olsaydı ve Python'u daha büyük bir projeye kodluyor olsaydım, Python'u iyi bir aday olarak görürdüm. Çabuk kemik yaklaşımı gerektiğinde, ya hız sınırlamaları nedeniyle ya da R paketleri kenar oluşturmadığı için de düşünürdüm.

Şu anda nispeten gelişmiş İstatistikler yapanlar için , cevap beyninde yok ve hayır . Aslında, Python'un veri analizi hakkındaki düşüncelerinizi sınırlayacağına inanıyorum. 100 temel R paketi için modül değiştirmelerinin üretilmesi birkaç yıl ve bir kaç yıl sürecek ve Python bile veri analizi yeteneklerinin kullanıldığı bir dil gibi hissedecek. R, uygulamalı istatistikçilerin birçok alanda göreceli olarak en büyük payını yakaladığından, bunun yakın zamanda olduğunu görmüyorum. Bunu söyledikten sonra özgür bir ülke ve ben APL ve C’de İstatistik yapan insanları tanıyorum.


9
+1 Bu yanıtı, formülleri ve benzerlerini kullanarak verilerle çalışmak için istatistiksel bir dil olarak R'ye verdiğiniz vurgu nedeniyle seviyorum. Söylendiği gibi, Python topluluğunda pandaların (istatistik modelleriyle birlikte) büyük bir olumlu etkisi bekliyorum.
chl

28
Python topluluğunda, patsy , zaman zaman R'nin sunduklarını geliştirerek tarif ettiğiniz "formül" ihtiyacını ele alıyor: patsy.readthedocs.org/en/v0.1.0/index.html Python'da güzel olan şey tüm bunların yönler ortogonal olarak ele alınır. Pandalar zaman çizelgeleri ve dataframe / seri gösterimi ile ilgileneceklerdir. Formüller için patsy. dizi gösterimi ve vektörleştirme için numpy statsmodels istatistik algosunu sarar. optimizasyon için scipy ve diğer birçok şey. Sonuç, daha temiz arayüzlerdir. R, karşılaştırıldığında, daha olgun, ama bir kuafördür. ../ ..
blais,

3
../ .. Uzun vadede kuvvetlerin daha fazla Python entegrasyonu yönünde ilerleyeceğini ve bunun R'ye karşı oldukça rekabet edeceğini göreceğini düşünüyorum. bu asla işin önemsiz bir parçası değil. - blais
chl

9
güncelleme olarak: istatistik modellerinin dokümantasyonundaki ilk örnek şimdi results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit(). Statsmodels, kapsama açısından R gibi diğer istatistiksel paketlerin çok gerisindedir, ancak başka bir dil veya istatistiksel paket almak zorunda kalmadan önce python'da yapabileceğiniz daha fazla şey vardır. (GEE ve Mixed bir sonraki sürümde olacaklar.)
Josef

4
“Python'da güzel olan, tüm bu yönlerin dik olarak ele alınması ...”. Bazı sayıları kabul etmiyorum. Numpy, scipy, istatistik modelleri arasında önemli bir örtüşme var. R'nin tasarımı çok daha modüler ve ekonomik. Ayrıca, çoğu veri odaklı dillerdeki kavramsal yeniliklerin hepsinde değil (sadece formüller değil, aynı zamanda veri çerçeveleri, grafiklerin gramerleri, medelsin gramerleri olan kareler, knitr ve dplyr'ın hala gelişen gramerleri) Python topluluğu her zaman bir adım geride kaldı ve performansa aşırı odaklandı.
gappy

95

Öncelikle, John D Cook'un cevabına katılıyorum diyelim: Python, R gibi bir Etki Alanına Özel Dil değil ve buna bağlı olarak, daha ileride yapabileceğiniz çok daha fazla şey var. Elbette, bir DSL olmak, JASA’da yayınlanan en son algoritmaların neredeyse kesinlikle R’de olacağı anlamına gelir. Eğer çoğunlukla geçici işler yapıyorsanız ve en yeni kement regresyon tekniğini denemek istiyorsanız, R’nin yenmesi zor. Daha fazla üretim analitik çalışması yapıyorsanız, mevcut yazılım ve ortamlarla bütünleştiriyorsanız ve hız, genişletilebilirlik ve bakım kolaylığı konusunda endişeleriniz varsa, Python size daha iyi hizmet verecektir.

İkincisi, ars iyi bağlantılar ile harika bir cevap verdi. Python'da analitik çalışma için gerekli gördüğüm birkaç paket daha:

  • Güzel, yayın kalitesi grafikler için matplotlib .
  • Gelişmiş, etkileşimli bir Python konsolu için IPython . Önemli olan IPython, Python'da etkileşimli, paralel hesaplama için güçlü bir çerçeve sağlar.
  • Python'da C eklentilerini kolayca yazmak için Cython . Bu paket, hesaplama yoğun bir Python kodu yığınını almanıza ve kolayca bir C uzantısına dönüştürmenize olanak tanır. Daha sonra herhangi bir Python modülünde olduğu gibi C uzantısını da yükleyebileceksiniz ancak kod C içinde olduğu için çok hızlı çalışacaktır.
  • İyice belgelendirilen ve desteklenen yüzlerce matematiksel ve istatistiksel algoritma koleksiyonu için PyIMSL Studio . Hemen hemen aynı API ile Python ve C'den aynı algoritmaları çağırabilir ve aynı sonuçları elde edersiniz. Tam açıklama: Bu ürün üzerinde çalışıyorum ama aynı zamanda çok kullanıyorum.
  • Excel dosyalarını kolayca okumak için xlrd .

Daha fazla MATLAB benzeri etkileşimli IDE / konsol istiyorsanız, Spyder veya Eclipse için PyDev eklentisini inceleyin .


15
R, genel anlamıyla bir DSL değildir. Tamamen dolu bir Turing programlama dili.
hadley

4
@hadley: Belki de "DSL" yi çok dilli kullanıyorum, ancak buna değer, DSL'lerdeki Wikipedia sayfası DSL ve Python örneklerini genel amaçlı bir dil olarak açıkça S + ve R listeler. Bakınız en.wikipedia.org/wiki/Domain-specific_language . Aynı şekilde, SAS Turing-tamamlandı (yalnızca IML makro bileşeni kullanılıyorsa), ancak pratik anlamda tam bir dil olarak adlandırmazdım. İşimde R'yi paha biçilmez buluyorum, ancak genel amaçlı dilleri kullanarak mümkün olduğu kadar R (veya bu konuda Excel'de) her şeyi yapmaya çalışmak yerine kodlamaya çalışıyorum.
Josh Hemann

16
R ve S'yi wikipedia'daki diğer dillerle aynı listeye dahil etmenin haksızlık olduğunu düşünüyorum - R'de python'da yapabileceğiniz hiçbir şey yok. Elbette başka bir programlama diline daha uygun birçok şey var, ancak aynı Python için de geçerli.
hadley

6
Ahh, hadley, 13 Ekim 2011 tarihinde yorum alışverişinde bulunduğumuz gün aynı zamanda Wikipedia sayfasından R ve S + 'yı kaldırdı. Bu nedenle, sık sık "R istatistikçiler için ve istatistikçiler için geliştirildi" mantığını temel dayanağı olarak duyuyorum. Görünüşe göre, şimdi de genel amaçlı bir dil ...
Josh Hemann 10:12

5
Peki, R ile çok parçalı kod alabilir miyim? Eşzamansız ağ G / Ç? İnan bana, bu kullanım aslında bilimsel hesaplamada ortaya çıkıyor. Bence R, bir DSL. İstatistiklerde güçlü, çoğu durumda da kötü.
Gael Varoquaux 19:14

61

Cran ve Bioconductor'daki istatistiksel paketlerin çeşitliliğinin diğer dillerden sunulan bir şeyi aştığını düşünmüyorum, ancak dikkate alınması gereken tek şey bu değil.

Araştırmamda, yapabildiğimde R kullanıyorum ama bazen R çok yavaş. Örneğin, büyük bir MCMC çalışması.

Son zamanlarda, bu sorunu çözmek için python ve C'yi birleştirdim. Kısa özet: ~ 60 parametresi olan büyük bir stokastik popülasyon modelinin yerleştirilmesi ve MCMC kullanılarak yaklaşık 150 gizli durum ortaya çıkar.

  1. Python içindeki verileri oku
  2. Kullanılarak piton C veri yapılarını Construct ctypes .
  3. Bir python fordöngüsü kullanarak , parametreleri güncelleyen ve olasılığını hesaplayan C işlevlerini çağırın.

Hızlı bir hesaplama, programın C işlevlerinde% 95 harcadığını gösterdi. Ancak, verileri okumak veya C veri yapılarını oluşturmak için acı verici C kodu yazmak zorunda değildim.


Python'un R işlevlerini çağırabildiği bir rpy olduğunu da biliyorum . Bu yararlı olabilir, ancak "sadece" istatistik yapıyorsanız, o zaman R kullanırım.


29
Rcpp :) için utanmaz fiş takma
Dirk Eddelbuettel 12:10

merak ediyorum PyMC'yi denediyseniz ve performansın (python / C'ye göre) modelleriniz için nasıl karşılaştırdığını merak ettin.
ars

@ars: Yukarıdaki durumda, her bir yineleme (10 ^ 8 yinelemeden) 5 ODE çözmeyi içerir. Bu gerçekten C'de yapılmalıydı. Kodun geri kalanı oldukça basitti ve bu nedenle C kodu basitti. Başvurum standart değildi ve bu nedenle PyMC uygulanabilir değildi - ayrıca ~ 2 yıl önceydi.
csgillespie


36

Yukarıdaki cevaplarda açıkça belirtilen scikit-learn'ı görmedim . Python'da makine öğrenmesi için bir Python paketi. Oldukça genç ama son derece hızlı büyüyor (feragatname: Ben bir bilim kurgu öğrenen geliştiriciyim). Hedefleri, standart makine öğrenmesi algoritmik araçlarını hız ve kullanılabilirliğe odaklanan birleşik bir arayüzde sağlamaktır. Bildiğim kadarıyla, Matlab'da benzer bir şey bulamazsın. Güçlü noktaları:

  • Çok sayıda örnek içeren ayrıntılı bir belge

  • Yüksek kaliteli standart denetimli öğrenme (regresyon / sınıflandırma) araçları. özellikle:

  • Birden fazla CPU kullanarak çapraz doğrulama yaparak model seçimi yapabilme

  • Denetimsiz öğrenme verilerini incelemek veya birinci boyut azaltma yapmak, bu çok kolay denetimli öğrenme zincirlenmiş edilebilir.

  • Açık kaynak, BSD lisanslı. Tamamen akademik bir ortamda değilseniz (eyaletteki ulusal laboratuarda ne olurum), bu Matlab maliyetleri o zaman çok yüksek olduğu için önemlidir ve işinizden ürün almayı düşünüyor olabilirsiniz.

Matlab harika bir araçtır, ancak kendi çalışmamda scipy + scikit-learn bana Matlab'da bir avantaj sağlamaya başladı çünkü Python görüş mekanizması nedeniyle hafızayla daha iyi bir iş yapıyor (ve büyük veriye sahibim) ve Scikit-learn, farklı yaklaşımları kolayca karşılaştırmamı sağlıyor.


29

Python'a taşınmanın bir faydası, tek bir dilde daha fazla iş yapma imkanı. Python, sayı ezme, web siteleri yazma, yönetimsel komut dosyaları vb. İçin makul bir seçimdir. Dolayısıyla, istatistiklerinizi Python'da yaparsanız, dilleri başka programlama görevlerine dönüştürmeniz gerekmez.

Güncelleme: 26 Ocak 2011'de Microsoft Research , veri analizi için yeni Python tabanlı bir ortam olan Sho'ı duyurdu . Henüz deneme şansım olmadı, ancak Python'u çalıştırmak ve .NET kitaplıklarıyla etkileşimde bulunmak istiyorsanız ilginç bir olasılık gibi görünüyor.


4
R'de çok sayıda numaralandırma, bir web sitesi ve birkaç idari komut dosyası yaptım ve çok iyi çalışıyorlar.

28

Muhtemelen bu cevap hile yapıyor, ama R ve Python arasında bir arayüz sağlayan rpy projesinden hiç kimsenin bahsetmediği garip görünüyor . (Ben daha iyi tartışırdım) sözdizimini, veri işlemeyi ve bazı durumlarda Python hızını korurken, R'nin işlevselliğinin çoğuna bir pitonik api elde edersiniz. Python'un R kadar kanama kenarı istatistik araçlarına sahip olması pek mümkün değildir, çünkü R bir dsl'dir ve istatistik topluluğu R'ye diğer dillerden daha fazla yatırım yapar.

Bunu, Python'un Python ve SQL'in SQL olmasına izin verirken, SQL'in avantajlarından yararlanmak için bir ORM kullanmaya benzer olduğunu düşünüyorum.

Özellikle veri yapıları için diğer faydalı paketler şunlardır:

  • pydataframe bir data.frame öğesini çoğaltır ve rpy ile kullanılabilir. R benzeri filtreleme ve işlemler kullanmanıza izin verir.
  • pyTables Altında yaş civarında olan hızlı hdf5 veri türünü kullanır.
  • h5py Ayrıca hdf5, ancak özellikle numpy ile birlikte çalışmayı hedefliyor
  • pandalar data.frame'i data gibi yöneten, rpy, pyTables ve numpy ile çalışan başka bir proje

1
Her zaman çalışmak için rpy özensiz buluyorum. Örneğin, bazı basit fonksiyonlara sahip büyük kod satırları ister.
Néstor

Belki IPython (@CarlSmith tarafından işaret) gibi rmagic uzantısı rpy2 ile çalışmayı kolaylaştırabilir? Bkz ipython.org/ipython-doc/dev/config/extensions/rmagic.html .
Jonathan

26

Ben esasen bir R mağazası olan bir biyostatistiyim (~ 80 kişi R'yi birincil araç olarak kullanıyor). Yine de zamanımın yaklaşık 3 / 4'ünü Python'da çalışarak geçiriyorum. Bunu öncelikle, çalışmalarımın istatistiksel olarak modellenmeye yönelik Bayesian ve makine öğrenmesi yaklaşımlarını içermesi gerçeğine bağlıyorum. Python, en azından yinelemeli veya simülasyon temelli istatistiksel yöntemler için, R / performans / üretkenlikteki tatlı noktaya çok daha yakındır. ANOVAS, regresyonlar ve istatistiksel testler yapıyor olsaydım, öncelikle R kullanacağımdan eminim, ihtiyacım olanların çoğu, konserve bir R paketi olarak mevcut değil.


5
Çalıştığınız istatistik alanını ayırt etmek için +1. Python'da çok fazla işlevsellik bulunduğunu ve Python'un bu alt alanlardaki lingua franca olduğunu gösteren istatistiksel hesaplama alanları (örneğin yapılandırılmamış metin analizi ve bilgisayar görüşü) var. Python topluluğunun yetişmesi gereken yerde, R'nin tasarımının çok iyi olduğu klasik istatistiksel modelleme ile ilgili veri yapılarını ve anlambilimi geliştirmek olduğunu düşünüyorum. Scicits.statsmodels geliştiricileri bu konuda çok ilerleme kaydetmektedir: scikits.appspot.com/statsmodels
Josh Hemann 13:11

26

İstatistiksel çalışmam için doğrusal modellere dayanan birisinin bakış açısından ve işimin diğer yönleri için Python'u sevdiğim için Python'da oldukça temel istatistiklerden başka bir şey yapmak için oldukça hayal kırıklığına uğradığımı söylemek isterim .

Python, R'in istatistiksel topluluktan çok daha iyi bir şekilde desteklendiğini, doğrusal modellerin çok daha iyi uygulandığını ve olayların istatistik kısmından daha dürüst olduğunu düşünüyorum, Enthought gibi mükemmel dağıtımlarla bile Python Vahşi Batı'ya biraz benziyor.

Yalnız çalışmadığınız sürece, Python'u istatistik olarak kullanan ortak çalışanlara sahip olma ihtimaliniz bu noktada oldukça zayıf.


26

Zaten Python için R'den vazgeçmeye hiç gerek yok. Eğer kullanırsanız IPython tam yığını, sen R, Octave ve Cython uzantıları var, bu yüzden kolayca ve temiz bir şekilde sizin ipython dizüstü dahilinde bu dilleri kullanabilirsiniz. Ayrıca, Python ad alanınızla aralarında değerleri geçirme desteğiniz de vardır. Verilerinizi matplotlib kullanarak ve düzgün şekilde oluşturulmuş matematiksel ifadeler olarak grafikler halinde çıktı alabilirsiniz. Tonlarca başka özellik var ve tüm bunları tarayıcınızda yapabilirsiniz.

IPython çok yol kat etti :)


19

Aradığın adama Sage denir: http://www.sagemath.org/

Matematik için Python araçlarının sağlam bir birleşimine mükemmel bir çevrimiçi arayüzdür.


4
Sage ile ilgili parlak kısım, esasen matematik, istatistik, veri analizi vb . İçin bir dizi harika ücretsiz aracın birliği olduğudur. R, maxima, GLPK, GSL ve diğerlerine erişebilir.
shabbychef

18

Rpy2 - R ile oyna Python'da kal ...

Gung'un isteğine göre daha fazla detaylandırma:

Rpy2 dokümantasyonunu http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html adresinde bulabilirsiniz.

Belgelere göre, rpy2'deki üst düzey arayüz, Python programcıları tarafından R'nin kullanımını kolaylaştırmak için tasarlanmıştır. R nesneleri, Python tarafından uygulanan sınıfların örnekleri olarak gösterilir; R, bazı durumlarda bu nesnelere bağlı yöntemler olarak işlev görür. Bu bölüm aynı zamanda R: kafes (kafes) alanlarına sahip grafiklere bir giriş ve ggplot2'de uygulanan grafiklerin dilbilgisi içeriyorsa, küçük ızgara kodları ile karmaşık ve bilgilendirici grafikler hazırlanırken, temel ızgara grafikleri tüm olası özelleştirmelere olanak sağlar.

Neden hoşuma gidiyor:

Verilerimi python'un esnekliğini kullanarak işleyebilir, onu numpy veya pandalar kullanarak bir matrise dönüştürebilir ve R'de hesaplamayı yapabilir ve r nesnelerini post işlemi yapmak için geri alabilirim. Ekonometri kullanıyorum ve python basitçe R'nin kanama kenarı istatistik araçlarına sahip olmayacak. Ve R'nin hiç python kadar esnek olamayacak. Bu R'yi anlamanı gerektirir. Neyse ki, iyi bir geliştirici topluluğu var.

Rpy2'nin kendisi iyi destekleniyor ve onu destekleyen beyefendi SO forumlarını sıkça ziyaret ediyor. Windows kurulumu belki hafif bir ağrı olabilir - 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 yardımcı olabilir.


1
Siteye Hoşgeldiniz, @ pythOnometrist. Bunun faydalı bir katkı olduğundan şüpheleniyorum. Kısa bir Rpy2 özeti verir misiniz, böylece okuyucular aradıklarına karar verebilirler?
gung

17

Python'u istatistiksel analiz ve tahmin için kullanırım. Yukarıda diğerleri tarafından belirtildiği gibi, Numpy ve Matplotlib iyi bir iş gücüdür. Ayrıca PDF çıktısı üretmek için ReportLab kullanıyorum.

Halen Python tabanlı Excel benzeri elektronik tablo uygulamaları olan Resolver ve Pyspread'e bakıyorum. Çözümleyici ticari bir üründür ancak Pyspread hala açık kaynaklıdır. (Özür dilerim, yalnızca bir bağlantıyla sınırlıyım)


1
Yine bazı ilginç araçlar. Numpy, Matplotlib ve ReportLab'ı biliyordum ama Pyspread ilginç bir fikir gibi görünüyor. En azından, elektronik tablo hücrelerinde Python ifadelerini yazmak istiyorum. Tüm olası sorunları çözmese de, prototip oluşturmak ve verilerle uğraşmak için iyi olabilir.
Fabian Fagerholm

1
+1 Vay piton hesap tabloları! Bunları henüz duymamıştım. Her zaman OpenOffice / LibreOffice'in python komut dosyasını elektronik tablo yazılımlarına gerçekten dahil etmesini ve entegre etmesini diledim
Kullanıcı

15

Şimdiye kadar harika bir bakış. Üniversitede 3 yıldan beri python kullanıyorum (özellikle scipy + matplotlib). Bazen geri dönüyorum çünkü belirli kütüphanelere aşinayım, örneğin matlab dalgacık paketi tamamen harika.

Http://enthought.com/ python dağıtımını seviyorum . Ticaridir, ancak akademik amaçlar için ücretsizdir ve bildiğim kadarıyla tamamen açık kaynaklıdır. Pek çok öğrenciyle çalıştığım için, entocug'u kullanmadan önce, bazen numpy, scipy, ipython vb. Yüklemeleri zor oldu. Enthought, Windows, Linux ve Mac için bir yükleyici sağlıyor.

Bahsetmeye değer iki paket:

  1. ipython (zaten entelektüel olarak geliyor) harika, gelişmiş bir kabuk. iyi bir giriş showmedo'dadır http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. nltk - doğal dil araç takımı http://www.nltk.org/ herhangi bir corpus'ta bazı istatistik / makine öğrenimi yapmak istemeniz durumunda harika bir paket.



10

Belki de doğrudan ilişkili değil, ancak R etkileşimli oturumlar için hoş bir GUI ortamına sahip (düzenleme: Mac / Windows'ta). IPython çok iyi ama Matlab'a daha yakın bir ortam için Spyder veya IEP deneyebilirsiniz. IEP kullanmanın geç şansını daha iyi yaşadım, ancak Spyder daha umut verici görünüyor.

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

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

Ve IEP sitesi, ilgili yazılımların kısa bir karşılaştırmasını içerir: http://code.google.com/p/iep/wiki/Alternatives


9

Buradaki pandalara göz atmayı önerdiğim harika bir giriş buldum. Pandalar inanılmaz bir araç seti ve geniş kapsamlı kütüphaneler ve Python'un üretim kalitesi ile R'nin üst düzey veri analiz yeteneklerini sunuyor.

Bu blog yazısı tam bir acemi perspektifinden Panda'lara büyük bir giriş sağlar:

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


3
Hangi özelliklerin “harika” kıldığı hakkında birkaç kelime yazabilir misiniz, böylece okurlar izlemenin onlar için uygun olup olmadığını önceden belirleyebilirler mi?
whuber

1
Üzgünüm. Orjinal gönderime yanlış bağlantıyı eklediğimi farkettim.
padawan

8

IronPython üzerine inşa edilmiş sayısal bilgi işlem ortamı Sho için bir not ekleme yapmalıyım. Şu anda Stanford makine öğrenme sınıfı için kullanıyorum ve gerçekten çok yardımcı oldu. Doğrusal cebir paketleri ve grafik oluşturma yeteneklerinde geliştirildi. Net olarak C # veya başka bir Net dili ile genişletmek kolaydır. Windows kullanıcısı olmak için bir Python ve NumPy kullanmaktan daha kolay başladım.


8

Daha önce kimse Orange'dan bahsetmedi :

Görsel programlama veya Python komut dosyası kullanarak veri madenciliği. Makine öğrenmesi için bileşenler. Biyoinformatik ve metin madenciliği için eklentiler. Veri analizi için özelliklerle doludur.

Günlük olarak kullanmıyorum, ancak GUI'yi komut satırı arayüzü tercih eden herkes için mutlaka görülmeli.

İkincisini tercih etseniz bile, Orange aşina olmak için iyi bir şeydir, çünkü fonksiyonelliğinin bir kısmına ihtiyaç duymanız durumunda Python komut dosyalarınıza kolayca Orange parçaları aktarabilirsiniz.


7

SPSS İstatistiklerinin entegre bir Python arayüzüne (ayrıca R) sahip olduğunu unutmayın. Böylece, İstatistik prosedürlerini kullanan ve her zamanki gibi güzelce biçimlendirilmiş İstatistik çıktıları üreten Python programları yazabilir veya daha sonraki işlemler için sonuçlarınızı programınıza geri döndürebilirsiniz. Veya Python programlarını Statistics komut akışında çalıştırabilirsiniz. İstatistikleri komut dilini hala bilmeniz gerekir, ancak İstatistiklerin sağladığı tüm veri yönetimi, sunum çıktısı vb. İşlemlerden yararlanabilirsiniz.


7

DataCamp ile yapılan son karşılaştırma, R ve Python hakkında net bir resim sunar.

Bu iki dilin veri analizi alanında kullanımı. Python, genellikle veri analizi görevlerinin web uygulamaları ile birleştirilmesi gerektiğinde veya istatistik kodunun bir üretim veritabanına dahil edilmesi gerektiğinde kullanılır. R, temel olarak veri analizi görevleri bağımsız sunucularda bağımsız bilgi işlem veya analiz gerektirdiğinde kullanılır.

Bu blogda çok faydalı buldum ve başkalarının da bu dillerin her ikisindeki son trendleri anlamalarına yardımcı olacağını umuyorum. Julia da bölgede geliyor. Bu yardımcı olur umarım !


6

Python'un alanımda üstün bir tezgah olduğunu düşünüyorum. Çok fazla kazıma, veri düzenleme, büyük veri çalışması, ağ analizi, Bayesian modellemesi ve simülasyonları yapıyorum. Bunların hepsi tipik olarak hız ve esnekliğe ihtiyaç duyuyor, bu yüzden Python'u bu durumlarda R'den daha iyi çalışacak şekilde buluyorum. İşte Python hakkında sevdiğim birkaç şey var (yukarıda bahsedilir, diğer hususlar değildir):

-Cleaner sözdizimi; daha okunabilir kod. Python'un daha modern ve sözdizimsel olarak tutarlı bir dil olduğuna inanıyorum.

-Python, kod paylaşımı, işbirliği, yayınlama için Notebook, Ipython ve diğer şaşırtıcı araçlara sahiptir.

-iPython'un defteri, birinin Python kodunda R kullanmasını sağlar, böylece R'ye geri dönmek her zaman mümkündür.

-C'ye başvurmadan önemli ölçüde daha hızlı. Cython, NUMBA ve diğer C entegrasyon yöntemlerinin kullanılması, kodunuzu saf C ile karşılaştırılabilir hızlara getirecektir. Bu, bildiğim kadarıyla R'de elde edilemez.

-Pandas, Numpy ve Scipy standart R'yi suyun dışına atarlar. Evet, R'nin tek bir satırda yapabileceği birkaç şey var ama Pandas 3 veya 4'ü alıyor. Ancak genel olarak, Pandalar daha büyük veri kümelerini idare edebiliyor, kullanımı daha kolay ve diğer Python ile entegrasyon konusunda inanılmaz esneklik sağlıyor. paketler ve yöntemler.

-Python daha kararlı. RStudio'ya 2 gig veri seti yüklemeyi deneyin

- Yukarıda belirtilmeyen düzgün bir paket PyMC3 - Bayesian modellemenizin çoğu için harika bir genel paket.

-Bazı, yukarıda ggplot2'den bahsediyoruz ve Python'dan yokluğuyla ilgilenin. Eğer Matlab'ın grafik işlevlerini ve / veya Python'da kullanılan matplotlib'i kullandıysanız, ikinci seçeneklerin genellikle ggplot2'den çok daha yetenekli olduğunu bileceksiniz.

Ancak, belki de R'nin öğrenmesi daha kolaydır ve modelleme prosedürlerine henüz fazla aşina olmadığım durumlarda sıklıkla kullanırım. Bu durumda, R'nin kullanıma hazır istatistik kütüphanelerinin derinliği rakipsizdir. İdeal olarak, ikisini de ihtiyaca göre kullanabilecek kadar iyi tanırdım.


5

Windows altında çalışmak zorunda olanlar için, Anaconda ( https://store.continuum.io/cshop/anaconda/ ) gerçekten çok yardımcı olur. Windows altında paket yüklemek bir baş ağrısıydı. Anaconda ile, tek astarlı kullanıma hazır bir geliştirme ortamı oluşturabilirsiniz.

Örneğin,

conda create -n stats_env python pip numpy scipy matplotlib pandas

tüm bu paketler otomatik olarak alınacak ve yüklenecektir.


5

Python'un R ile kıyaslanmadan önce çok uzun bir yolu var. R'den daha düşük kaliteli ve düşük kaliteli ambalajlara sahip. Temel bilgilere sadık kalan veya yalnızca kendi özel kitaplıklarına güvenen insanlar muhtemelen Python'da işlerini yapabilirler ancak daha gelişmiş nicel çözümlere ihtiyaç duyan biriyseniz, orada R'ye yakın bir şey olmadığını söylemeye cüret ediyorum.

Ayrıca, Python'un bugüne kadar R-Studio ile karşılaştırılabilecek uygun bir bilimsel Matlab tarzı IDE'ye sahip olmadığını (lütfen Spyder demeyin) ve konsoldaki her şeyi çözmeniz gerektiğini de belirtmek gerekir. Genel olarak konuşursak, Python deneyiminin tamamı çoğu insanın sahip olmadığı ve umursamadığı kadar iyi bir miktar “geekness” gerektirir.

Beni yanlış anlama, Python'u seviyorum, aslında R'den farklı olarak gerçek bir programlama dili olan en sevdiğim dil. Yine de, saf veri analizi söz konusu olduğunda, bugüne kadarki en özel ve gelişmiş çözüm olan R'ye bağımlıyım. Veri analizini yazılım mühendisliği ile birleştirmem gerektiğinde Python kullanıyorum, örneğin kirli bir R betiğinde ilk programladığım yöntemlerde otomasyon gerçekleştirecek bir araç oluşturun. Birçok durumda, R'yi Python'dan çağırmak için rpy2 kullanıyorum, çünkü çoğu durumda R paketleri çok daha iyi (ya da Python'da yok). Bu şekilde iki dünyanın da en iyisini almaya çalışıyorum.

Matematik tarzı sözdizimini ve hızını sevdiğim için hala bazı algoritmaları saf algoritma geliştirme için kullanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.