Python sebagai meja kerja statistik


355

Banyak orang menggunakan alat utama seperti Excel atau spreadsheet lain, SPSS, Stata, atau R untuk kebutuhan statistik mereka. Mereka mungkin beralih ke beberapa paket khusus untuk kebutuhan yang sangat khusus, tetapi banyak hal dapat dilakukan dengan spreadsheet sederhana atau paket statistik umum atau lingkungan pemrograman statistik.

Saya selalu menyukai Python sebagai bahasa pemrograman, dan untuk kebutuhan sederhana, mudah untuk menulis program pendek yang menghitung apa yang saya butuhkan. Matplotlib memungkinkan saya untuk merencanakannya.

Adakah yang sepenuhnya beralih dari, katakanlah R, ke Python? R (atau paket statistik lainnya) memiliki banyak fungsi khusus untuk statistik, dan memiliki struktur data yang memungkinkan Anda untuk memikirkan statistik yang ingin Anda lakukan dan lebih sedikit tentang representasi internal data Anda. Python (atau bahasa dinamis lainnya) memiliki manfaat memungkinkan saya untuk memprogram dalam bahasa tingkat tinggi yang akrab, dan memungkinkan saya berinteraksi secara terprogram dengan sistem dunia nyata di mana data berada atau dari mana saya dapat melakukan pengukuran. Tapi saya belum menemukan paket Python yang memungkinkan saya untuk mengekspresikan sesuatu dengan "terminologi statistik" - dari statistik deskriptif sederhana hingga metode multivariat yang lebih rumit.

Apa yang dapat Anda rekomendasikan jika saya ingin menggunakan Python sebagai "meja kerja statistik" untuk menggantikan R, SPSS, dll.?

Apa yang akan saya dapatkan dan kehilangan, berdasarkan pengalaman Anda?


5
FYI, ada subreddit statistik python baru yang padam: reddit.com/r/pystats
naught101

Saat Anda perlu memindahkan berbagai hal di baris perintah, pythonpy ( github.com/Russell91/pythonpy ) adalah alat yang bagus.
RussellStewart

Jawaban:


307

Sulit untuk mengabaikan kekayaan paket statistik yang tersedia di R / CRAN. Yang mengatakan, saya menghabiskan banyak waktu di tanah Python dan tidak akan pernah menghalangi orang dari bersenang-senang seperti saya. :) Berikut adalah beberapa perpustakaan / tautan yang mungkin berguna untuk pekerjaan statistik.

  • NumPy / Scipy Anda mungkin sudah tahu tentang ini. Tetapi izinkan saya menunjukkan Cookbook di mana Anda dapat membaca tentang banyak fasilitas statistik yang sudah tersedia dan Daftar Contoh yang merupakan referensi bagus untuk berbagai fungsi (termasuk manipulasi data dan operasi lainnya). Referensi praktis lainnya adalah Distribusi John Cook di Scipy .

  • panda Ini adalah perpustakaan yang sangat bagus untuk bekerja dengan data statistik - data tabular, seri waktu, data panel. Termasuk banyak fungsi bawaan untuk ringkasan data, pengelompokan / agregasi, pivoting. Juga memiliki perpustakaan statistik / ekonometrika.

  • larry array berlabel yang bermain bagus dengan NumPy. Menyediakan fungsi statistik yang tidak ada dalam NumPy dan bagus untuk manipulasi data.

  • python-statlib Upaya yang cukup baru yang menggabungkan sejumlah perpustakaan statistik yang tersebar. Berguna untuk statistik dasar dan deskriptif jika Anda tidak menggunakan NumPy atau panda.

  • statsmodels Pemodelan statistik: model Linear, GLMs, antara lain.

  • scikits Paket statistik dan komputasi ilmiah - terutama perataan, optimisasi, dan pembelajaran mesin.

  • PyMC Untuk kebutuhan pemodelan hierarkis Bayesian / MCMC / Anda. Sangat dianjurkan.

  • Model Campuran PyMix .

  • Biopython Berguna untuk memuat data biologis Anda ke dalam python, dan menyediakan beberapa alat pembelajaran statistik / mesin dasar untuk analisis.

Jika kecepatan menjadi masalah, pertimbangkan Theano - digunakan dengan sukses baik oleh orang-orang yang belajar dalam.

Ada banyak hal lain di luar sana, tetapi inilah yang saya temukan paling berguna di sepanjang baris yang Anda sebutkan.


16
Semua jawaban sangat membantu dan bermanfaat, dan semuanya layak diterima. Yang ini, bagaimanapun, melakukan pekerjaan yang sangat baik dalam menjawab pertanyaan: dengan Python, Anda harus mengumpulkan banyak potongan untuk melakukan apa yang Anda inginkan. Pointer ini tidak diragukan lagi akan sangat berguna bagi siapa pun yang ingin melakukan statistik / pemodelan / dll. dengan Python. Terima kasih semuanya!
Fabian Fagerholm

1
@ars harap Anda tahu apa cara terbaik untuk menggunakan Python dengan Windows?
Stéphane Laurent

1
@ StéphaneLaurent Saya biasanya menginstal berbagai bagian sendiri, tetapi untuk memulai / menginstal cepat, Anda mungkin mempertimbangkan: pythonxy .
ars

Script ini menginstal banyak perpustakaan yang dikutip di atas: fonnesbeck.github.com/ScipySuperpack
Fr.

Pythonxy bagus tetapi bisa menjengkelkan jika Anda ingin melakukan perhitungan besar karena hanya tersedia untuk 32 bit. Berikut adalah binari tidak resmi untuk menginstal banyak paket python. Mereka bisa sangat berguna jika Anda memutuskan untuk bekerja di bawah windows. lfd.uci.edu/~gohlke/pythonlibs @ StéphaneLaurent
JEquihua

140

Sebagai platform numerik dan pengganti MATLAB, Python mencapai kematangan setidaknya 2-3 tahun yang lalu, dan sekarang jauh lebih baik daripada MATLAB dalam banyak hal. Saya mencoba untuk beralih ke Python dari R sekitar waktu itu, dan gagal total. Ada terlalu banyak paket R yang saya gunakan setiap hari yang tidak memiliki persamaan Python. Tidak adanya ggplot2 sudah cukup untuk menjadi showstopper, tetapi ada banyak lagi. Selain itu, R memiliki sintaks yang lebih baik untuk analisis data. Pertimbangkan contoh dasar berikut:

Python :

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

R :

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

Apa yang Anda anggap lebih ekspresif? Dalam R, Anda dapat berpikir dalam hal variabel, dan dapat dengan mudah memperluas model, untuk, katakanlah,

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

Dibandingkan dengan R, Python adalah bahasa tingkat rendah untuk pembuatan model.

Jika saya memiliki lebih sedikit persyaratan untuk fungsi statistik tingkat lanjut dan sudah mengkodekan Python pada proyek yang lebih besar, saya akan mempertimbangkan Python sebagai kandidat yang baik. Saya akan mempertimbangkannya juga ketika pendekatan bare-bone diperlukan, baik karena keterbatasan kecepatan, atau karena paket R tidak memberikan keunggulan.

Bagi mereka yang melakukan Statistik yang relatif maju saat ini , jawabannya adalah no-brainer, dan tidak . Bahkan, saya percaya Python akan membatasi cara Anda berpikir tentang analisis data. Diperlukan waktu beberapa tahun dan bertahun-tahun upaya untuk menghasilkan penggantian modul untuk 100 paket R esensial, dan bahkan kemudian, Python akan terasa seperti bahasa di mana kemampuan analisis data telah ditingkatkan. Karena R telah menangkap bagian relatif terbesar dari statistik yang diterapkan di beberapa bidang, saya tidak melihat ini terjadi dalam waktu dekat. Karena itu, ini adalah negara bebas, dan saya tahu orang-orang melakukan Statistik di APL dan C.


9
+1 Saya suka respons ini karena penekanan yang Anda berikan pada R sebagai bahasa statistik untuk bekerja dengan data menggunakan rumus dan sejenisnya. Yang sedang berkata, saya mengharapkan dampak positif besar panda (dikombinasikan dengan statsmodels) di komunitas Python.
chl

28
di komunitas Python, patsy menjawab kebutuhan akan "formula", yang Anda jelaskan, kadang-kadang meningkatkan apa yang ditawarkan R: patsy.readthedocs.org/en/v0.1.0/index.html Apa yang menyenangkan di Python adalah bahwa semua ini aspek-aspek ditangani secara ortogonal. Panda akan menangani deret waktu dan representasi dataframe / seri. patsy untuk formula. numpy untuk representasi dan vektorisasi array. statsmodels membungkus statistik algos. scipy untuk optimasi dan banyak hal lainnya. Hasilnya adalah antarmuka yang lebih bersih. R, sebagai perbandingan, lebih dewasa, tetapi bola rambut. ../ ..
blais

3
../ .. Saya pikir dalam jangka panjang kekuatan akan mendorong ke arah integrasi Python semakin banyak dan Anda akan menemukan itu akan menjadi pesaing yang cukup untuk R. Membersihkan data dalam R adalah seperti PIA dibandingkan dengan Python, dan itu tidak pernah menjadi bagian sepele dari pekerjaan. - blais
chl

9
sebagai pembaruan: contoh pertama dalam dokumentasi statsmodels sekarang results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit(). Statsmodels masih jauh di belakang paket statistik lain seperti R dalam hal cakupan, tetapi ada lebih banyak hal yang dapat Anda lakukan dengan python sebelum Anda harus mengambil bahasa lain atau paket statistik. (GEE dan Mixed akan ada di rilis berikutnya.)
Josef

4
"Apa yang bagus di Python adalah semua aspek ini ditangani secara orthogonal ...". Saya tidak setuju dalam beberapa hal. Ada tumpang tindih yang signifikan antara numpy, scipy, statsmodels. Desain R jauh lebih modular dan ekonomis. Selain itu, sebagian besar tidak semua inovasi konseptual dalam bahasa yang berorientasi data (tidak hanya formula, tetapi juga bingkai data, tata bahasa grafis, tanda sisipan sebagai tata bahasa medel, knitr, dan tata bahasa data dplyr yang masih berkembang) berasal dari R. Komunitas Python sepertinya selalu selangkah di belakang, dan terlalu fokus pada kinerja.
gappy

95

Pertama, izinkan saya mengatakan saya setuju dengan jawaban John D Cook: Python bukan Bahasa Khusus Domain seperti R, dan karenanya, ada banyak lagi yang dapat Anda lakukan dengan itu di ujung jalan. Tentu saja, R menjadi DSL berarti bahwa algoritma terbaru yang diterbitkan di JASA hampir pasti akan di R. Jika Anda melakukan sebagian besar pekerjaan sementara dan ingin bereksperimen dengan teknik regresi laso terbaru, katakanlah, R sulit dikalahkan. Jika Anda melakukan lebih banyak pekerjaan analitik produksi, berintegrasi dengan perangkat lunak dan lingkungan yang ada, dan memperhatikan kecepatan, ekstensibilitas, dan pemeliharaan, Python akan melayani Anda jauh lebih baik.

Kedua, ars memberikan jawaban yang bagus dengan tautan yang bagus. Berikut adalah beberapa paket yang saya anggap penting untuk pekerjaan analitis dengan Python:

  • matplotlib untuk grafis kualitas publikasi yang indah.
  • IPython untuk konsol Python interaktif yang disempurnakan. Yang penting, IPython menyediakan kerangka kerja yang kuat untuk komputasi paralel dan interaktif dalam Python.
  • Cython untuk dengan mudah menulis ekstensi C dalam Python. Paket ini memungkinkan Anda mengambil sepotong kode Python intensif komputer dan dengan mudah mengubahnya menjadi ekstensi C. Anda kemudian dapat memuat ekstensi C seperti modul Python lainnya tetapi kode akan berjalan sangat cepat karena berada di C.
  • PyIMSL Studio untuk koleksi ratusan algoritma matematika dan statistik yang didokumentasikan dan didukung secara menyeluruh. Anda dapat memanggil algoritma yang sama persis dari Python dan C, dengan API yang hampir sama dan Anda akan mendapatkan hasil yang sama. Pengungkapan penuh: Saya mengerjakan produk ini, tetapi saya juga sering menggunakannya.
  • xlrd untuk membaca dalam file Excel dengan mudah.

Jika Anda menginginkan IDE / konsol interaktif yang lebih mirip MATLAB, periksa Spyder , atau plugin PyDev untuk Eclipse .


15
R bukan DSL dalam arti istilah yang biasa. Bahasa pemrograman Turing yang lengkap dan lengkap.
hadley

4
@adley: Mungkin saya menggunakan "DSL" terlalu bahasa sehari-hari, tetapi untuk apa nilainya, halaman Wikipedia tentang DSL secara eksplisit mencantumkan S + dan R sebagai contoh DSL dan Python sebagai bahasa tujuan umum. Lihat en.wikipedia.org/wiki/Domain-specific_language . Dalam nada yang sama, SAS adalah Turing-complete (hanya jika komponen makro IML digunakan), tetapi saya tidak akan menyebutnya bahasa lengkap dalam arti praktis. Saya menemukan R sangat berharga dalam pekerjaan saya, tetapi saya mencoba kode menggunakan bahasa tujuan umum sebanyak mungkin daripada mencoba melakukan segala sesuatu dalam R (atau Excel dalam hal ini).
Josh Hemann

16
Saya pikir itu tidak adil untuk memasukkan R dan S dalam daftar yang sama dengan bahasa-bahasa lain di wikipedia - tidak ada yang tidak dapat Anda lakukan dalam R yang dapat Anda lakukan dengan python. Tentu saja ada banyak hal yang lebih cocok untuk bahasa pemrograman lain, tetapi hal yang sama berlaku untuk Python.
Hadley

6
Ahh, hadley menghapus R dan S + dari halaman Wikipedia pada hari yang sama kami bertukar komentar, 13 Oktober 2011. Jadi, saya sering mendengar mantra "R dikembangkan oleh dan untuk para ahli statistik" sebagai kekuatan dasarnya. Rupanya, sekarang ini adalah bahasa tujuan umum juga ...
Josh Hemann

5
Nah, bisakah saya memiliki kode multi-threaded dengan R? Jaringan asinkron I / O? Percayalah, penggunaan ini sebenarnya muncul dalam komputasi ilmiah. R adalah DSL, menurut saya. Ia kuat dalam statistik, dan buruk dalam banyak hal lainnya.
Gael Varoquaux

61

Saya tidak berpikir ada argumen bahwa kisaran paket statistik dalam cran dan Bioconductor jauh melebihi apa pun yang ditawarkan dari bahasa lain, bagaimanapun, itu bukan satu-satunya hal yang perlu dipertimbangkan.

Dalam penelitian saya, saya menggunakan R ketika saya bisa tetapi kadang-kadang R terlalu lambat. Misalnya, menjalankan MCMC besar.

Baru-baru ini, saya menggabungkan python dan C untuk mengatasi masalah ini. Ringkasan singkat: pas model populasi stokastik besar dengan ~ 60 parameter dan menyimpulkan sekitar 150 negara laten menggunakan MCMC.

  1. Baca dalam data dengan python
  2. Buat struktur data C dalam python menggunakan ctypes .
  3. Menggunakan forloop python , panggil fungsi C yang memperbarui parameter dan menghitung kemungkinannya.

Perhitungan cepat menunjukkan bahwa program menghabiskan 95% dalam fungsi C. Namun, saya tidak perlu menulis kode C yang menyakitkan untuk membaca data atau membangun struktur data C.


Saya tahu ada juga rpy , di mana python dapat memanggil fungsi R. Ini bisa berguna, tetapi jika Anda "hanya" melakukan statistik maka saya akan menggunakan R.


29
Memasukkan plug tak tahu malu untuk Rcpp :)
Dirk Eddelbuettel

ingin tahu apakah Anda sudah mencoba PyMC dan bagaimana kinerja membandingkan (relatif terhadap python / C) untuk model Anda.
ars

@ars: Dalam kasus di atas, setiap iterasi (dari 10 ^ 8 iterasi) melibatkan penyelesaian 5 ODE. Ini benar-benar harus dilakukan dalam C. Sisanya kode ini cukup sederhana dan kode C mudah. Aplikasi saya tidak standar dan jadi PyMC tidak berlaku - juga ~ 2 tahun yang lalu.
csgillespie


36

Saya belum melihat scikit-learning yang disebutkan secara eksplisit dalam jawaban di atas. Ini adalah paket Python untuk pembelajaran mesin dengan Python. Ini cukup muda tetapi tumbuh sangat cepat (penafian: Saya adalah pengembang scikit-belajar). Tujuannya adalah untuk menyediakan alat algoritmik pembelajaran mesin standar dalam antarmuka terpadu dengan fokus pada kecepatan, dan kegunaan. Sejauh yang saya tahu, Anda tidak dapat menemukan yang serupa di Matlab. Poin kuatnya adalah:

  • Sebuah dokumentasi rinci , dengan banyak contoh

  • Alat pengawasan belajar (regresi / klasifikasi) standar kualitas tinggi . Secara khusus:

  • Kemampuan untuk melakukan pemilihan model dengan validasi silang menggunakan beberapa CPU

  • Pembelajaran tanpa pengawasan untuk mengeksplorasi data atau melakukan pengurangan dimensi pertama, yang dapat dengan mudah dirantai ke pembelajaran yang diawasi.

  • Sumber terbuka, berlisensi BSD. Jika Anda tidak berada di lingkungan akademis murni (saya berada di laboratorium nasional di negara bagian) ini sangat penting karena biaya Matlab sangat tinggi, dan Anda mungkin berpikir untuk mendapatkan produk dari pekerjaan Anda.

Matlab adalah alat yang hebat, tetapi dalam pekerjaan saya sendiri, scipy + scikit-learn mulai memberi saya keunggulan di Matlab karena Python melakukan pekerjaan yang lebih baik dengan memori karena mekanisme tampilan (dan saya memiliki data besar), dan karena scikit-learn memungkinkan saya untuk dengan mudah membandingkan berbagai pendekatan.


29

Salah satu manfaat pindah ke Python adalah kemungkinan untuk melakukan lebih banyak pekerjaan dalam satu bahasa. Python adalah pilihan yang masuk akal untuk menghitung angka, menulis situs web, skrip administratif, dll. Jadi, jika Anda melakukan statistik dengan Python, Anda tidak perlu berganti bahasa untuk melakukan tugas pemrograman lainnya.

Pembaruan: Pada tanggal 26 Januari 2011, Microsoft Research mengumumkan Sho , lingkungan berbasis Python baru untuk analisis data. Saya belum punya kesempatan untuk mencobanya, tapi sepertinya ini kemungkinan yang menarik jika ingin menjalankan Python dan juga berinteraksi dengan .NET libraries.


4
Saya telah melakukan banyak angka, satu situs web dan beberapa skrip administratif di R dan mereka bekerja dengan cukup baik.

28

Mungkin jawaban ini curang, tetapi tampaknya aneh tidak ada yang menyebutkan proyek rpy , yang menyediakan antarmuka antara R dan Python. Anda mendapatkan api pythonic untuk sebagian besar fungsi R sambil mempertahankan sintaks (saya berpendapat lebih baik), pemrosesan data, dan dalam beberapa kasus kecepatan Python. Tidak mungkin bahwa Python akan memiliki alat statistik edge pendarahan sebanyak R, hanya karena R adalah dsl dan komunitas statistik lebih banyak diinvestasikan dalam R daripada bahasa lainnya.

Saya melihat ini sebagai analog dengan menggunakan ORM untuk memanfaatkan keunggulan SQL, sementara membiarkan Python menjadi Python dan SQL menjadi SQL.

Paket berguna lainnya yang khusus untuk struktur data meliputi:

  • pydataframe mereplikasi data.frame dan dapat digunakan dengan rpy. Memungkinkan Anda menggunakan penyaringan dan operasi seperti R.
  • pyTables Menggunakan tipe data hdf5 cepat di bawahnya, sudah ada sejak lama
  • h5py Juga hdf5, tetapi secara khusus ditujukan untuk beroperasi dengan numpy
  • panda Proyek lain yang mengelola data.frame seperti data, bekerja dengan rpy, pyTables dan numpy

1
Saya selalu menemukan rpy ceroboh untuk bekerja dengannya. Ini meminta baris kode besar dengan beberapa fungsi sederhana, misalnya.
Néstor

Mungkin ekstensi rmagic untuk IPython (seperti yang ditunjukkan oleh @CarlSmith) dapat membuatnya lebih mudah untuk bekerja dengan rpy2? Lihat ipython.org/ipython-doc/dev/config/extensions/rmagic.html .
Jonathan

26

Saya seorang ahli biostatistik dalam apa yang pada dasarnya adalah toko R (~ 80 orang menggunakan R sebagai alat utama mereka). Namun, saya menghabiskan sekitar 3/4 dari waktu saya bekerja di Python. Saya menghubungkan ini terutama dengan fakta bahwa pekerjaan saya melibatkan Bayesian dan pendekatan pembelajaran mesin untuk pemodelan statistik. Python hits lebih dekat dengan sweet spot kinerja / produktivitas daripada R, setidaknya untuk metode statistik yang iteratif atau berbasis simulasi. Jika saya melakukan ANOVAS, regresi dan uji statistik, saya yakin saya terutama akan menggunakan R. Sebagian besar yang saya butuhkan, bagaimanapun, tidak tersedia sebagai paket R kalengan.


5
+1 untuk membedakan area statistik tempat Anda bekerja. Terdapat area komputasi statistik (mis. Analisis teks tidak terstruktur dan visi komputer) yang memiliki banyak fungsi untuk Python, dan Python tampaknya merupakan lingua franca dalam sub-domain tersebut. Saya pikir di mana komunitas Python harus mengejar ketinggalan adalah memperbaiki struktur data dan semantik di sekitar pemodelan statistik klasik yang desain R sangat bagus. Pengembang scikits.statsmodels membuat banyak kemajuan di bagian depan itu: scikits.appspot.com/statsmodels
Josh Hemann

26

Saya ingin mengatakan bahwa dari sudut pandang seseorang yang sangat bergantung pada model linier untuk pekerjaan statistik saya, dan mencintai Python untuk aspek lain dari pekerjaan saya, saya sangat kecewa dengan Python sebagai platform untuk melakukan apa pun kecuali statistik yang cukup mendasar.

Saya menemukan R memiliki dukungan yang lebih baik dari komunitas statistik, implementasi model linier yang jauh lebih baik, dan jujur ​​dari sisi statistik, bahkan dengan distribusi yang sangat baik seperti Enthought, Python terasa sedikit seperti Wild West.

Dan kecuali Anda bekerja sendiri, kemungkinan Anda memiliki kolaborator yang menggunakan Python untuk statistik, pada titik ini, sangat tipis.


26

Sebenarnya tidak perlu menyerahkan R untuk Python. Jika Anda menggunakan IPython dengan tumpukan penuh, Anda memiliki ekstensi R, Oktaf dan Cython, sehingga Anda dapat dengan mudah dan bersih menggunakan bahasa-bahasa tersebut di dalam notebook IPython Anda. Anda juga memiliki dukungan untuk meneruskan nilai di antara mereka dan namespace Python Anda. Anda dapat menampilkan data sebagai plot, menggunakan matplotlib, dan ekspresi matematika yang ditampilkan dengan benar. Ada banyak fitur lain, dan Anda dapat melakukan semua ini di browser Anda.

IPython telah datang jauh :)


19

Apa yang Anda cari disebut Sage: http://www.sagemath.org/

Ini adalah antarmuka online yang sangat baik untuk kombinasi alat Python untuk matematika yang dibangun dengan baik.


4
Bagian yang cemerlang tentang Sage adalah pada dasarnya penyatuan sejumlah alat gratis hebat untuk matematika, statistik, analisis data, dll. Ini lebih dari sekadar Python; ia memiliki akses ke R, maxima, GLPK, GSL, dan banyak lagi.
shabbychef

18

Rpy2 - bermain dengan R tinggal di Python ...

Penjabaran lebih lanjut per permintaan Gung:

Dokumentasi Rpy2 dapat ditemukan di http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html

Dari dokumentasi, antarmuka tingkat tinggi di rpy2 dirancang untuk memfasilitasi penggunaan R oleh programmer Python. Objek R diekspos sebagai instance dari kelas yang diimplementasikan Python, dengan fungsi R sebagai metode terikat ke objek tersebut dalam sejumlah kasus. Bagian ini juga berisi pengantar grafik dengan plot R: trellis (lattice) serta tata bahasa grafik yang diimplementasikan di ggplot2, mari kita buat plot yang kompleks dan informatif dengan sedikit kode yang ditulis, sementara grafik kotak yang mendasarinya memungkinkan semua kemungkinan penyesuaian diuraikan.

Kenapa saya suka itu:

Saya dapat memproses data saya menggunakan fleksibilitas python, mengubahnya menjadi matriks menggunakan numpy atau panda dan melakukan perhitungan dalam R, dan mendapatkan kembali r objek untuk melakukan pemrosesan pos. Saya menggunakan econometrics dan python tidak akan memiliki alat statistik edge of R. dan R tidak akan pernah sefleksibel python. Ini memang mengharuskan Anda untuk memahami R. Untungnya, ia memiliki komunitas pengembang yang bagus.

Rpy2 sendiri didukung dengan baik dan pria yang mendukungnya sering mengunjungi forum SO. Instalasi Windows mungkin sedikit sakit - 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 mungkin membantu.


1
Selamat datang di situs ini, @pythOnometrist. Saya menduga ini adalah kontribusi yang bermanfaat. Maukah Anda memberikan ringkasan singkat Rpy2, sehingga pembaca dapat memutuskan apakah itu yang mereka cari?
gung

17

Saya menggunakan Python untuk analisis dan peramalan statistik. Seperti yang disebutkan oleh orang lain di atas, Numpy dan Matplotlib adalah pekerja yang baik. Saya juga menggunakan ReportLab untuk menghasilkan output PDF.

Saat ini saya sedang melihat Resolver dan Pyspread yang merupakan aplikasi spreadsheet mirip Excel yang didasarkan pada Python. Resolver adalah produk komersial tetapi Pyspread masih bersifat open-source. (Maaf, saya terbatas hanya satu tautan)


1
Lagi-lagi beberapa alat yang menarik. Saya tahu tentang Numpy, Matplotlib dan ReportLab, tetapi Pyspread sepertinya ide yang menarik. Setidaknya saya ingin mengetikkan ekspresi Python dalam sel spreadsheet. Meskipun tidak menyelesaikan semua masalah yang mungkin terjadi, itu mungkin baik untuk membuat prototipe dan bermain-main dengan data.
Fabian Fagerholm

1
+1 lembar kerja python Wow! Belum pernah mendengarnya. Saya selalu berharap OpenOffice / LibreOffice akan benar-benar merangkul dan mengintegrasikan skrip python dalam perangkat lunak spreadsheet mereka
Pengguna

15

gambaran bagus sejauh ini. Saya menggunakan python (khusus scipy + matplotlib) sebagai pengganti matlab sejak 3 tahun bekerja di Universitas. Saya kadang-kadang masih kembali karena saya terbiasa dengan perpustakaan tertentu misalnya paket wavelet matlab murni luar biasa.

Saya suka http://enthought.com/ distribusi python. Ini komersial, namun gratis untuk tujuan akademis dan, sejauh yang saya tahu, sepenuhnya open-source. Karena saya bekerja dengan banyak siswa, sebelum menggunakan enthought, kadang-kadang merepotkan bagi mereka untuk menginstal numpy, scipy, ipython dll. Enthought menyediakan installer untuk Windows, Linux dan Mac.

Dua paket lain yang layak disebutkan:

  1. ipython (sudah hadir dengan enthought) shell canggih yang bagus. intro yang bagus ada di showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. nltk - paket bahasa alami http://www.nltk.org/ paket hebat jika Anda ingin melakukan beberapa statistik / pembelajaran mesin pada setiap corpus.



10

Mungkin tidak terkait langsung, tetapi R memiliki lingkungan GUI yang bagus untuk sesi interaktif (edit: di Mac / Windows). IPython sangat bagus tetapi untuk lingkungan yang lebih dekat dengan Matlab, Anda dapat mencoba Spyder atau IEP. Saya lebih beruntung terlambat menggunakan IEP, tetapi Spyder terlihat lebih menjanjikan.

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

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

Dan situs IEP mencakup perbandingan singkat dari perangkat lunak terkait: http://code.google.com/p/iep/wiki/Alternatives


9

Saya menemukan pengantar panda di sini yang saya sarankan untuk dicoba. Pandas adalah perangkat yang luar biasa dan memberikan kemampuan analisis data tingkat tinggi dari R dengan perpustakaan yang luas dan kualitas produksi Python.

Posting blog ini memberikan intro yang bagus untuk Pandas dari perspektif pemula lengkap:

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


3
Bisakah Anda menulis beberapa kata tentang kualitas apa yang membuatnya "hebat" sehingga pembaca dapat menentukan sebelumnya apakah melihatnya akan sesuai untuk mereka?
whuber

1
Maaf. Baru sadar saya melampirkan tautan yang salah di posting asli saya.
padawan

8

Saya harus menambahkan teriakan untuk Sho, lingkungan komputasi numerik yang dibangun di atas IronPython. Saya menggunakannya sekarang untuk kelas pembelajaran mesin Stanford dan ini sangat membantu. Itu dibangun dalam paket aljabar linier dan kemampuan grafik. Menjadi .Net mudah untuk diperluas dengan C # atau bahasa .Net lainnya. Saya merasa jauh lebih mudah untuk memulai, menjadi pengguna windows, daripada lurus Python dan NumPy.


8

Belum ada yang menyebutkan Orange sebelumnya:

Penambangan data melalui pemrograman visual atau skrip Python. Komponen untuk pembelajaran mesin. Add-on untuk bioinformatika dan penambangan teks. Dilengkapi dengan fitur untuk analitik data.

Saya tidak menggunakannya setiap hari, tapi itu harus-lihat untuk siapa saja yang lebih suka GUI daripada antarmuka baris perintah.

Bahkan jika Anda lebih suka yang terakhir, Orange adalah hal yang baik untuk dibiasakan, karena Anda dapat dengan mudah mengimpor potongan-potongan Orange ke skrip Python Anda jika Anda memerlukan beberapa fungsinya.


7

Perhatikan bahwa SPSS Statistics memiliki antarmuka Python terintegrasi (juga R). Jadi, Anda dapat menulis program Python yang menggunakan prosedur Statistik dan menghasilkan output Statistik yang diformat dengan baik atau mengembalikan hasil ke program Anda untuk diproses lebih lanjut. Atau Anda dapat menjalankan program Python di aliran perintah Statistik. Anda masih harus tahu bahasa perintah Statistik, tetapi Anda dapat mengambil keuntungan dari semua manajemen data, output presentasi dll yang disediakan oleh Statistik serta prosedurnya.


7

Perbandingan terbaru dari DataCamp memberikan gambaran yang jelas tentang R dan Python.

Penggunaan kedua bahasa ini di bidang analisis data. Python digunakan secara umum digunakan ketika tugas analisis data perlu diintegrasikan dengan aplikasi web atau jika kode statistik perlu dimasukkan ke dalam basis data produksi. R terutama digunakan ketika tugas analisis data memerlukan komputasi mandiri atau analisis pada masing-masing server.

Saya menemukannya sangat berguna di blog ini dan berharap itu akan membantu orang lain juga untuk memahami tren terbaru dalam kedua bahasa ini. Julia juga muncul di daerah itu. Semoga ini membantu !


6

Saya percaya Python adalah meja kerja yang unggul di bidang saya. Saya melakukan banyak pengikisan, pertengkaran data, pekerjaan data besar, analisis jaringan, pemodelan Bayesian, dan simulasi. Semua hal ini biasanya memerlukan kecepatan dan fleksibilitas sehingga saya menemukan Python berfungsi lebih baik daripada R dalam kasus ini. Berikut adalah beberapa hal tentang Python yang saya sukai (beberapa disebutkan di atas, poin lainnya tidak):

Sintaks -Cleaner; kode lebih mudah dibaca. Saya percaya Python menjadi bahasa yang lebih modern dan konsisten secara sintaksis.

-Python memiliki Notebook, Ipython, dan alat luar biasa lainnya untuk berbagi kode, kolaborasi, penerbitan.

-iPython notebook memungkinkan seseorang untuk menggunakan R dalam kode Python seseorang sehingga selalu mungkin untuk kembali ke R.

-Benar-benar lebih cepat tanpa bantuan C. Menggunakan Cython, NUMBA, dan metode integrasi C lainnya akan menempatkan kode Anda ke kecepatan yang sebanding dengan C. murni, sejauh yang saya ketahui, tidak dapat dicapai dalam R.

-Panda, Numpy, dan Scipy meniup standar R keluar dari air. Ya, ada beberapa hal yang dapat dilakukan R dalam satu baris tetapi menggunakan Pandas 3 atau 4. Secara umum, bagaimanapun, Pandas dapat menangani set data yang lebih besar, lebih mudah digunakan, dan memberikan fleksibilitas luar biasa dalam hal integrasi dengan Python lainnya. paket dan metode.

-Python lebih stabil. Coba muat dataset 2gig ke RStudio.

-Satu paket yang tampaknya tidak disebutkan di atas adalah PyMC3 - paket umum yang bagus untuk sebagian besar pemodelan Bayesian Anda.

-Beberapa, sebutkan di atas ggplot2 dan grub tentang ketidakhadirannya dari Python. Jika Anda pernah menggunakan fungsi grafik Matlab dan / atau menggunakan matplotlib dengan Python maka Anda akan tahu bahwa opsi yang terakhir umumnya jauh lebih mampu daripada ggplot2.

Namun, mungkin R lebih mudah dipelajari dan saya sering menggunakannya dalam kasus di mana saya belum terlalu terbiasa dengan prosedur pemodelan. Dalam hal ini, kedalaman perpustakaan statistik R's off-the-shelf tidak terkalahkan. Idealnya, saya tahu cukup baik untuk dapat digunakan sesuai kebutuhan.


5

Bagi mereka yang harus bekerja di Windows, Anaconda ( https://store.continuum.io/cshop/anaconda/ ) sangat membantu. Menginstal paket di bawah Windows adalah sakit kepala. Dengan Anaconda terinstal, Anda dapat mengatur lingkungan pengembangan siap pakai dengan one-liner.

Misalnya dengan

conda create -n stats_env python pip numpy scipy matplotlib pandas

semua paket ini akan diambil dan diinstal secara otomatis.


5

Python memiliki jalan panjang sebelum dapat dibandingkan dengan R. Ia memiliki paket yang jauh lebih sedikit daripada R dan kualitasnya lebih rendah. Orang-orang yang berpegang teguh pada dasar-dasar atau hanya mengandalkan perpustakaan khusus mereka mungkin dapat melakukan pekerjaan mereka secara eksklusif dengan Python tetapi jika Anda seseorang yang membutuhkan solusi kuantitatif yang lebih maju, saya berani mengatakan bahwa tidak ada yang mendekati R di luar sana.

Perlu juga dicatat bahwa, sampai saat ini, Python tidak memiliki IDE gaya Matlab ilmiah yang sebanding dengan R-Studio (tolong jangan katakan Spyder) dan Anda perlu mengerjakan semua yang ada di konsol. Secara umum, seluruh pengalaman Python membutuhkan "geekness" dalam jumlah yang baik yang tidak dimiliki dan tidak diperhatikan oleh kebanyakan orang.

Jangan salah paham, saya suka Python, ini sebenarnya bahasa favorit saya yang, tidak seperti R, adalah bahasa pemrograman yang sebenarnya . Namun, ketika datang ke analisis data murni saya bergantung pada R, yang sejauh ini merupakan solusi yang paling khusus dan dikembangkan hingga saat ini. Saya menggunakan Python ketika saya harus menggabungkan analisis data dengan rekayasa perangkat lunak, misalnya membuat alat yang akan melakukan otomatisasi pada metode yang pertama kali saya programkan dalam skrip R yang kotor. Dalam banyak kesempatan saya menggunakan rpy2 untuk memanggil R dari Python karena dalam sebagian besar kasus paket R jauh lebih baik (atau tidak ada sama sekali di Python sama sekali). Dengan cara ini saya mencoba untuk mendapatkan yang terbaik dari kedua dunia.

Saya masih menggunakan beberapa Matlab untuk pengembangan algoritma murni karena saya suka sintaks dan kecepatan gaya matematisnya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.