Bagaimana R dan Python saling melengkapi dalam ilmu data?

54

Dalam banyak tutorial atau manual, narasi tampaknya menyiratkan bahwa R dan python hidup berdampingan sebagai komponen pelengkap dari proses analisis. Tetapi bagi saya yang tidak terlatih, tampaknya kedua bahasa itu melakukan hal yang sama.

Jadi pertanyaan saya adalah apakah ada ceruk khusus untuk dua bahasa atau apakah itu hanya preferensi pribadi apakah akan menggunakan satu atau yang lain?

BioHazZzZard
sumber
2
Ini benar-benar tidak terlihat seperti duplikat utas itu. Ini bukan tentang bagaimana menggunakan Python untuk melakukan statistik, ini tentang bagaimana Python dapat melengkapi R (jelas R akan digunakan untuk melakukan analisis statistik).
gung - Reinstate Monica
4
R jika Anda seorang ahli statistik 10 tahun yang lalu. Python jika Anda ingin menempatkan kode Anda di tempat produksi atau menggunakannya kembali.
djechlin
3
Karena popularitas q ini., & Sebagai tanggapan atas permintaan melalui flag, saya telah membukanya kembali tetapi membuatnya menjadi CW.
Scortchi
1
Apa yang cenderung dilupakan oleh sebagian besar jawaban adalah bahwa mereka membandingkan bahasa Python dengan implementasi GNU-R. R juga memiliki implementasi lain (lihat Renjin , ditulis dalam Java, Microsoft R Open , yang dikompilasi dengan Intel MKL, FastR , pqR , dll). Ini mencoba untuk memperbaiki beberapa masalah dengan GNU-R, implementasi yang jauh lebih konservatif. Juga, ingat R tidak memiliki definisi formal.
Firebug

Jawaban:

45

Mereka saling melengkapi. Memang benar bahwa keduanya dapat melakukan hal yang sama, namun ini dapat dikatakan untuk sebagian besar bahasa. Masing-masing memiliki kekuatan dan kelemahannya. Pandangan umum tampaknya adalah bahwa Python terbaik untuk pengumpulan dan persiapan data, serta untuk analisis tekstual. R dianggap terbaik untuk analisis data, karena merupakan bahasa statistik yang pertama dan terpenting.

R memiliki banyak paket untuk segala hal yang dapat Anda pikirkan, tetapi pokoknya adalah analisis statistik - dari chi-square dasar hingga analisis faktor dan model bahaya, mudah dan kuat. Beberapa nama terbesar dalam statistik membuat paket R, dan memiliki komunitas yang hidup untuk membantu setiap kebutuhan Anda. ggplot2adalah standar dalam visualisasi data (grafik dll.). R adalah bahasa yang di-vektor-kan dan dibangun untuk mengulang data secara efisien. Ini juga menyimpan semua data dalam RAM, yang merupakan pedang bermata dua - itu tajam pada set data yang lebih kecil (meskipun beberapa mungkin berdebat dengan saya), tetapi tidak dapat menangani data besar dengan baik (meskipun memiliki paket untuk memotong ini , seperti ff).

Python jauh lebih mudah dipelajari daripada R - terutama bagi mereka yang memiliki pengalaman pemrograman sebelumnya. R hanya ... aneh. Python hebat dalam pengambilan data, dan merupakan bahasa yang digunakan untuk pengikisan web (dengan menakjubkan beautifulsoup). Python dikenal karena kekuatannya dalam penguraian string dan manipulasi teks. pandasadalah pustaka yang bagus untuk manipulasi data, penggabungan, transformasi, dll., dan cepat (dan mungkin terinspirasi oleh R).

Python sangat bagus ketika Anda perlu melakukan pemrograman. Ini tidak mengherankan karena merupakan bahasa tujuan umum. Namun, dengan semua ekstensi, R dibangun oleh ahli statistik untuk ahli statistik. Jadi, sementara Python mungkin lebih mudah dan lebih baik dan lebih cepat di banyak aplikasi, R akan menjadi platform untuk analisis statistik.

Yuval Spiegler
sumber
13
Sebagai seseorang yang tahu keduanya, saya setuju dengan ini; mungkin ada banyak argumen gaya, tetapi perbedaan terbesar adalah bahwa begitu saatnya untuk benar-benar menjalankan model statistik kausal Python kurang berkembang. The statsmodels paket membuat Anda beberapa dasar-dasar, tetapi tidak mendekati R, Stata atau Sas. Satu pengecualian penting adalah analisis gaya pembelajaran mesin, yang scikitlearn Python cocok dengan baik. Untuk semua yang lain saya pikir argumen yang baik dapat dibuat bahwa Python setidaknya sama dengan R dan seringkali lebih unggul. Mempelajari keduanya bukanlah penggunaan waktu yang buruk.
Jeff
2
Saya setuju dengan sebagian besar ini - tetapi akan lebih menekankan masalah - R tidak baik untuk set data yang besar dan tidak menangani set data yang jarang (sebagian besar perpustakaan tidak mendukungnya) dengan sangat baik (itulah yang dilakukan banyak pembelajaran mesin) misalnya model jenis 'tas kata-kata' di mana kardinalitas variabel / variabel variabel. mungkin berada di 1000-an.
seanv507
10
Bukan untuk memulai argumen di utas komentar, tetapi data.tablepaket dalam R secara khusus dimaksudkan untuk pekerjaan yang efisien di sekitar set data besar, dan dihubungkan dengan baik ke pemrosesan terdistribusi.
Bintang terang
3
Jika Anda berpikir bahwa Python lebih baik daripada R pada pengambilan data dan parsing string maka Anda telah menggunakan R sangat salah sepanjang waktu. Hal yang sama berlaku untuk "R tidak baik untuk set data besar dan tidak menangani set data jarang (kebanyakan perpustakaan tidak mendukungnya) dengan sangat baik" .
gented
3
menambah dorongan Trevor dari data.table; Saya juga senang mengatakan bahwa rvestini adalah alat yang SANGAT BAIK untuk menangani sebagian besar tugas mengikis, dan jauh lebih mudah untuk bangun dan berlari daripadabeautifulsoup
MichaelChirico
21

Saya akan mencoba merumuskan jawaban yang menyentuh titik-titik utama di mana kedua bahasa berperan untuk ilmu data / statistik / analisis data dan sejenisnya, sebagai seseorang yang menggunakan keduanya.

Alur kerja dalam analisis data umumnya terdiri dari langkah-langkah berikut:

  1. Mengambil data dari semacam sumber (kemungkinan besar database SQL / noSQL atau file .csv).
  2. Parsing data dalam format yang layak dan masuk akal (frame data) sehingga orang dapat melakukan operasi dan berpikir tentang hal itu.
  3. Menerapkan beberapa fungsi ke data (pengelompokan, menghapus, menggabungkan, mengganti nama).
  4. Menerapkan semacam model pada data (regresi, pengelompokan, jaringan saraf atau teori lain yang lebih atau kurang rumit).
  5. Menyebarkan / mempresentasikan hasil Anda ke audiens teknis yang kurang lebih.

Mengambil data

99% dari waktu, proses pengambilan data bermuara pada permintaan semacam database SQL atau Impala: baik Python dan R memiliki klien atau perpustakaan tertentu yang melakukan pekerjaan dalam waktu singkat dan sama baiknya ( RImpala, RmySQLuntuk R dan MySQLdbuntuk Python berfungsi dengan lancar, tidak terlalu banyak untuk ditambahkan). Ketika datang untuk membaca file .csv eksternal, data.tablepaket untuk R menyediakan fungsi freadyang membaca dalam file .csv besar dan rumit dengan opsi penguraian kustom dalam waktu singkat, dan mengubah hasilnya secara langsung ke dalam frame data dengan nama kolom dan nomor baris.

Mengatur frame data

Kami ingin data disimpan dalam semacam tabel sehingga kami dapat mengakses setiap entri, baris, atau kolom dengan mudah.

The R paket data.tablemenyediakan cara yang tidak ada duanya untuk label, mengubah nama, menghapus dan akses data. Sintaks standarnya sangat mirip dengan SQL dt[i, j, fun_by], di mana itu dimaksudkan dt[where_condition, select_column, grouped_by (or the like)]; fungsi kustom yang ditentukan pengguna dapat diletakkan di sana juga dalam jklausa, sehingga Anda benar-benar bebas untuk memanipulasi data dan menerapkan fungsi rumit atau mewah pada kelompok atau subset (seperti mengambil baris ke-i, ke-ke-k elemen dan jumlah ke elemen (k-2) -th dari baris (i-1) -th jika dan hanya jika deviasi standar dari seluruh kolom adalah apa-itu-adalah, dikelompokkan berdasarkan kolom terakhir sama sekali). Lihatlah tolok ukur dan pada pertanyaan luar biasa lainnya di SO. Menyortir, menghapus dan menamai ulang kolom dan baris melakukan apa yang harus mereka lakukan, dan metode R vectorised standar apply, sapply, lapply, ifelsemelakukan operasi vectorised pada kolom dan bingkai data sekaligus, tanpa perulangan melalui setiap elemen (ingat bahwa setiap kali Anda menggunakan loop di R Anda melakukannya dengan sangat salah).

Counterweapon Python adalah pandasperpustakaan. Akhirnya menyediakan struktur pd.DataFrame(yang tidak dimiliki oleh standar Python, untuk beberapa alasan masih belum diketahui oleh saya) yang memperlakukan data apa adanya, yaitu kerangka data (bukan beberapa numpy array, numpy list, numpy matrixatau apa pun). Operasi seperti pengelompokan, penamaan ulang, pengurutan dan sejenisnya dapat dengan mudah dicapai dan di sini, pengguna juga dapat menerapkan fungsi kustom apa pun ke kumpulan data yang dikelompokkan atau bagian dari bingkai menggunakan Python applyatau lambda. Saya pribadi tidak suka tata bahasa df[df.iloc(...)]untuk mengakses entri, tapi itu hanya selera pribadi dan tidak ada masalah sama sekali. Tolak ukur untuk operasi pengelompokan masih sedikit lebih buruk daripada R data.tabletetapi kecuali Anda ingin menyimpan 0,02 detik untuk kompilasi tidak ada perbedaan besar dalam kinerja.

String

Cara R untuk memperlakukan string adalah dengan menggunakan stringrpaket yang memungkinkan manipulasi teks, anagram, ekspresi reguler, spasi spasi putih atau sejenisnya dengan mudah. Hal ini juga dapat digunakan dalam kombinasi dengan perpustakaan JSON yang membongkar kamus JSON dan membatalkan pendaftaran elemen-elemennya, sehingga orang memiliki kerangka data akhir di mana nama kolom dan elemen adalah apa yang mereka harus, tanpa karakter non-UTF8 atau spasi. di sana.

Panda Python .str. melakukan pekerjaan yang sama bermain dengan ekspresi reguler, tertinggal atau sebagus kompetitornya, sehingga bahkan di sini tidak ada perbedaan besar dalam rasa.

Menerapkan model

Di sinilah, menurut pendapat saya, perbedaan antara kedua bahasa muncul.

Rtelah, pada hari ini, satu set perpustakaan yang tidak ada duanya yang memungkinkan pengguna untuk melakukan apa pun yang mereka inginkan dalam satu atau dua baris kode. Regresi fungsional atau polinomial standar dilakukan dalam satu-liner dan menghasilkan output yang koefisiennya mudah dibaca, disertai dengan interval kepercayaan yang sesuai dan distribusi nilai-p. Demikian juga untuk pengelompokan, juga untuk model hutan acak, juga untuk dendogram, analisis komponen utama, dekomposisi nilai singular, kecocokan logistik dan banyak lagi. Output untuk masing-masing di atas kemungkinan besar datang dengan kelas plot khusus yang menghasilkan visualisasi dari apa yang baru saja Anda lakukan, dengan warna dan gelembung untuk koefisien dan parameter. Tes hipotesis, uji statistik, Shapiro,

Python berusaha mengimbangi SciPydan scikit-learn. Sebagian besar analisis dan model standar juga tersedia, tetapi mereka sedikit lebih panjang untuk dikodekan dan kurang intuitif untuk dibaca (menurut saya). Mesin yang lebih rumit tidak ada, meskipun beberapa dapat dilacak kembali ke beberapa kombinasi dari perpustakaan yang sudah ada. Satu hal yang saya lebih suka lakukan dalam Python daripada di R adalah analisis teks bag-of-word dengan bi-gram, tri-gram dan pesanan yang lebih tinggi.

Mempresentasikan hasilnya

Kedua bahasa memiliki alat merencanakan yang indah, R di ggplot2atas semua dan setara Python yang sesuai. Tidak terlalu banyak untuk bersaing, mereka melakukan pekerjaan dengan aman dan sehat, meskipun saya percaya bahwa jika Anda mempresentasikan hasilnya Anda mungkin harus menggunakan alat-alat lain — ada alat desain berwarna-warni yang mewah di luar sana dan baik Python maupun R tidak dimaksudkan untuk mencengangkan audiens dengan drag and drop mewah merah dan hijau R baru-baru ini menerbitkan banyak perbaikan pada shiny appfitur - fiturnya, yang pada dasarnya memungkinkannya untuk menghasilkan output interaktif . Saya tidak pernah ingin mempelajarinya, tetapi saya tahu itu ada dan orang menggunakannya dengan baik.


Catatan samping

Sebagai catatan saya ingin menekankan bahwa perbedaan utama antara dua bahasa adalah bahwa Python adalah bahasa pemrograman tujuan umum, yang dibuat oleh dan untuk ilmu komputer, portabilitas, penyebaran dan sebagainya dan seterusnya. Mengagumkan apa yang dilakukan dan mudah dipelajari; tidak ada orang yang tidak suka python. Tetapi ini adalah bahasa pemrograman untuk melakukan pemrograman.

R, di sisi lain, ditemukan oleh dan untuk matematikawan, fisikawan, ahli statistik dan ilmuwan data. Jika Anda berasal dari latar belakang itu semuanya masuk akal karena sempurna mencerminkan dan mereproduksi konsep yang digunakan dalam statistik dan matematika. Tetapi jika, sebaliknya, Anda berasal dari latar belakang ilmu komputer dan ingin mensimulasikan Java atau C dalam R Anda akan kecewa; ia tidak memiliki "objek" dalam pengertian standar (yah, memang, tapi bukan apa yang biasanya dipikirkan orang sebagai ...), ia tidak memiliki kelas dalam pengertian standar (well, memang, tetapi bukan apa yang biasanya berpikir mereka ...), tidak memiliki "pointer" atau semua struktur ilmu komputer lainnya - tetapi hanya karena tidak membutuhkannya. Terakhir tetapi tidak sedikit: dokumentasi dan paket sangat mudah untuk dibuat dan dibaca (jika Anda menggunakan Rstudio); ada komunitas besar dan bersemangat di luar sana, dan dibutuhkan lima detik untuk Google "bagaimana melakukan insert-random-problem di R" yang entri pertamanya mengarahkan Anda ke solusi untuk masalah tersebut (dilakukan oleh orang lain) dengan kode yang sesuai , dalam waktu singkat.

Sebagian besar perusahaan industri memiliki infrastruktur yang dibangun dengan Python (atau lingkungan yang ramah Python) yang memungkinkan integrasi kode Python dengan mudah (di import myAnalysismana saja dan pada dasarnya Anda sudah selesai). Namun, setiap teknologi modern atau server atau platform dengan mudah menjalankan kode R latar belakang tanpa masalah juga.

Gennaro Tedesco
sumber
8
+6, ini adalah jawaban yang sangat bagus: terperinci, akurat, dan seimbang.
gung - Reinstate Monica
+1 Jawaban terbaik di sini. Ini lucu, saya datang ke R dari Jawa (walaupun tidak dalam rute langsung), dan saya sudah cukup menyukainya. Saya tidak perlu berpikir bahwa melakukan loop dalam R berarti Anda melakukan kesalahan. Saya menemukan diri saya menggaruk-garuk kepala mencoba untuk menghindari menggunakan loop kadang-kadang, tetapi tidak bisa menemukan jalan keluarnya (seperti membuat nilai variabel baru dalam kumpulan data berdasarkan kondisi baris sebelumnya dan mengambil data dari set data sekunder).
Yuval Spiegler
Jika hanya sejumlah besar paket R untuk melakukan apa saja di bawah matahari semua ditulis oleh orang-orang yang tahu bagaimana melakukan komputasi statistik / menulis perangkat lunak matematika numerik yang andal dan kuat / tahu analisis numerik, dll. Beberapa paket R sangat baik. Sejumlah besar paket R, bahkan beberapa yang ditulis oleh penulis terkenal, adalah sampah total - dan banyak dari pengguna bahkan tidak menyadari bahwa mereka mendapatkan sampah. Oh, itu di CRAN, pasti bagus, atau paling tidak benar, atau bisa diandalkan ... SALAH !!!!!
Mark L. Stone
"R memiliki, sampai hari ini, satu set perpustakaan yang tidak ada duanya yang memungkinkan pengguna untuk melakukan apa pun yang mereka inginkan dalam satu atau dua baris kode." Saya setuju 100%, kecuali mendapatkan jawaban yang benar adalah salah satu hal yang diinginkan pengguna.
Mark L. Stone
8
@ MarkL.Stone Maukah Anda menyajikan contoh paket standar yang ditulis oleh pengguna terkenal yang memberikan hasil yang salah?
gented
15
  • Python adalah bahasa pemrograman umum: oleh karena itu, baik untuk melakukan banyak tugas lain selain analisis data. Sebagai contoh, jika kita ingin mengotomatiskan eksekusi model kita di server produksi, maka python adalah pilihan yang sangat bagus. Contoh lain termasuk menghubungkan ke perangkat keras / sensor untuk membaca data, berinteraksi dengan basis data (data relasional atau non-terstruktur seperti JSON), parsing data, pemrograman jaringan (TCP / IP), antarmuka pengguna grafis, berinteraksi dengan shell, dll. (Ya, mengapa seorang ilmuwan data ingin melakukan begitu banyak tugas seperti ini, yang tidak ada hubungannya dengan model prediksi? Saya pikir orang memiliki definisi yang berbeda. Apa itu ilmuwan data?Di beberapa organisasi, parsing data dan melakukan analisis deskriptif dengan dashboard cukup baik untuk bisnis dan data tidak cukup matang untuk melakukan model prediksi. Di sisi lain, di banyak perusahaan kecil, orang mungkin mengharapkan ilmuwan data melakukan banyak rekayasa perangkat lunak. Mengetahui python akan membuat Anda independen dari insinyur perangkat lunak lain.)

  • R memiliki banyak paket statistik yang jauh lebih baik daripada python atau MATLAB. Dengan menggunakan R, orang dapat benar-benar berpikir di tingkat model alih-alih tingkat detail implementasi. Ini adalah keuntungan besar dalam mengembangkan model statistik. Sebagai contoh, banyak orang secara manual mengimplementasikan jaringan saraf dalam python; melakukan pekerjaan seperti itu mungkin tidak membantu untuk memahami mengapa jaringan saraf bekerja, tetapi hanya mengikuti resep untuk menduplikasi pekerjaan orang lain untuk memeriksa apakah itu berfungsi. Jika kami bekerja di R, kami dapat dengan mudah fokus pada matematika di balik model, alih-alih detail implementasi.

Dalam banyak kasus, orang menggunakannya bersama-sama. Membangun perangkat lunak mudah dilakukan dengan python, dan membangun model lebih baik dalam R. Jika kita ingin menghasilkan model dalam produksi tetapi bukan kertas, kita mungkin membutuhkan keduanya. Jika perusahaan Anda memiliki banyak insinyur perangkat lunak, Anda mungkin membutuhkan lebih banyak R. Dan jika perusahaan Anda memiliki banyak ilmuwan riset, Anda mungkin membutuhkan lebih banyak python.

hxd1011
sumber
2
Jawaban yang bagus tetapi Anda menulis 'Jason' bukannya 'JSON', benar-benar membuat saya tertawa kecil
par
Saya bukan benar-benar anggota dari statistik atau komunitas "belajar mesin", tetapi saya pikir ketersediaan paket-paket lanjutan agak spesifik untuk masyarakat. Saya bisa percaya bahwa banyak teknik statistik baru dan canggih datang dengan kode R. Tetapi ketika saya melihat visi komputer / pembelajaran mesin / makalah neural yang datang dengan ("tingkat tinggi") kode ... mereka tampaknya Matlab atau python.
GeoMatt22
1
+1 untuk membahas bagaimana bahasa memengaruhi cara seseorang berpikir. Keuntungan besar dari R adalah, karena dibangun oleh ahli statistik untuk ahli statistik, bagaimana ia mendorong pemikiran dalam hal pemodelan. Disclosure: Saya fasih dalam R, tetapi hanya mencoba-coba Python.
Ashe
Um ... bagaimana dengan scikit-learn? scikit-learn.org/stable
kapal perang
10

Programer dari semua garis meremehkan seberapa banyak pilihan bahasa adalah budaya . Pengembang web seperti Node.js. Ilmuwan menyukai Python. Sebagai seorang insinyur perangkat lunak polyglot yang dapat menangani fluiditas Javascript dan kekakuan Java semua sama, saya telah menyadari bahwa tidak ada alasan intrinsik bahasa ini buruk pada pekerjaan masing-masing - hanya sejumlah besar paket, dokumentasi, komunitas, buku, dll di sekitar mereka.

(Untuk alasan intrinsik satu bahasa acak lebih baik daripada bahasa lain, lihat komentar yang akan datang untuk jawaban ini.)

Prediksi pribadi saya adalah bahwa Python adalah jalan masa depan karena ia dapat melakukan apa saja yang dapat dilakukan R - atau lebih tepatnya, cukup dari apa yang dapat dilakukan oleh programmer yang bekerja untuk mengisi kesenjangan - dan merupakan bahasa rekayasa perangkat lunak yang jauh lebih baik. Rekayasa perangkat lunak adalah disiplin yang berkaitan dengan:

  • mempercayai keandalan kode Anda cukup untuk membuatnya dalam produksi (jadi model pembelajaran mesin yang melayani pengguna secara real time)
  • memastikan kode Anda dapat terus bekerja karena mengalami modifikasi dan digunakan kembali (kerangka pengujian unit, misalnya)
  • fokus pada keterbacaan, untuk kepentingan orang lain, dan diri Anda hanya dalam 6 bulan
  • penekanan yang mendalam pada organisasi kode, untuk kemudahan pembuatan versi, backouts ke versi kerja sebelumnya, dan pengembangan bersamaan oleh banyak pihak
  • lebih suka alat dan teknologi dengan dokumentasi yang lebih baik, dan idealnya dengan properti yang tidak akan berfungsi sama sekali kecuali Anda menggunakannya dengan benar (ini adalah keluhan terbesar saya dengan Matlab - Saya mencari pertanyaan di Google dan saya harus membaca forum-forum mereka yang agak mengerikan. mencari jawaban)

Ditambah terus terang Python lebih mudah dipelajari.

Para ilmuwan dan ahli statistik akan menyadari bahwa mereka adalah pemangku kepentingan dalam praktik rekayasa perangkat lunak yang baik, bukan profesi yang independen dan tidak terikat. Hanya pendapat saya, tetapi makalah yang membuktikan kerapuhan kode akademik akan mendukung ini.

Jawaban ini adalah semua pendapat saya - tetapi Anda mengajukan pertanyaan yang sangat beralasan, dan karena diterima dengan baik sejauh ini saya merasa Anda layak menerima pendapat yang bersahaja, cukup informasi (saya harap!) Sebagai tanggapan. Ada argumen serius untuk Python atas R di seluruh papan dan saya akan lalai untuk mencoba memposting jawaban non-partisan ketika kenyataan itu sendiri mungkin partisan.

Djechlin
sumber
Bukankah Julia, ketika sudah dewasa, menjadi alternatif yang lebih baik daripada Python?
kjetil b halvorsen
1
@kjetilbhalvorsen "ketika sudah besar" adalah lebih dari "jika," sangat sulit untuk menggantikan bahasa yang sudah mapan, dan itu pada dasarnya adalah pilihan pribadi apakah Anda ingin menggunakan teknologi perbatasan dengan risiko tidak pernah diadopsi dengan tegas. IMO, Python memiliki momentum sekarang. Saya tidak terlalu akrab dengan Julia jadi ini pendapat yang cukup umum.
djechlin
1
Kecuali untuk peluru pertama, saya tidak bisa melihat bagaimana Python secara inheren unggul dalam salah satu dari empat poin lainnya.
Firebug
4
"Python dapat melakukan semua yang dapat R" adalah salah. "cukup dari apa yang dapat dilakukan oleh programmer yang bekerja untuk mengisi kekosongan" dengan baik, itu akan berlaku untuk apa pun di dunia - apa pun dapat dilakukan untuk melakukan apa saja selama seseorang mengerjakannya.
gented
2
@ Djechlin Sama sekali tidak. Contoh Anda untuk keandalan adalah "jadi setiap model pembelajaran mesin yang melayani pengguna secara real time". Python lebih baik dalam hal ini karena mendukung penyebaran lebih mudah daripada R, dan hanya itu. Pengujian unit, keterbacaan, organisasi dan dokumentasi bukan kualitas yang melekat. Anda dapat menerapkan tes Anda sendiri, membuat kode Anda lebih mudah dibaca, mengaturnya dan dokumentasi R sangat mudah dimengerti.
Firebug
8

Saya adalah pengguna R tetapi saya pikir Python adalah masa depan (saya tidak berpikir itu sintaks)

Python adalah masa depan
. Manfaat Python adalah karena orang lain telah menyebutkan dukungan yang jauh lebih luas, dan, bagi programmer, sintaksisnya lebih logis.
Juga kemampuan Anda untuk menerjemahkan temuan dari analisis Anda menjadi sistem produksi jauh lebih mudah.
Mungkin itu karena Python menjadi tujuan umum dan R tidak tetapi bahkan saya mengangkat alis ketika saya melihat pipa R yang diproduksi.
Tapi tidak hanya itu, bahkan untuk aplikasi Advanced Python dengan cepat mengejar (Scikit-belajar, PyBrain, Tensorflow dll) dan sementara R masih menjadi bahasa pergaulan di bidang akademik tentang bagaimana menerapkan metode statistik Python telah menjadi besar di sektor profesional karena munculnya perpustakaan khusus canggih.

Tapi R tidak buruk
Banyak orang tampaknya suka melompat pada kereta musik "R has syntax buruk".
Saya ingin mengusulkan sintaks R menjadi hal yang baik!
Fungsi penugasan, evaluasi malas, evaluasi non-standar dan formula adalah manfaat besar ketika menggunakan R.
Hanya menghemat banyak waktu untuk tidak perlu khawatir melarikan diri dari nama variabel yang dirujuk dalam ringkasan Anda atau bagaimana membangun logika dari apa yang dimodelkan terhadap apa atau melihat nama-nama dengan names()dan kemudian menetapkan nama-nama baru dengan menambahkan <- c("A", "B", "C").
Ketika orang mengeluh tentang sintaks aneh R, mereka melihatnya sebagai bahasa pemrograman, bukan sebagai alat ilmu data.
Sebagai seseorang yang datang dari R dan mencintai dplyr, saya menemukan sintaksis panda agak kikuk dibandingkan.
Ya itu sedikit lebih fleksibel, tetapi untuk sebagian besar tugas Anda mengambil penekanan tombol lebih banyak untuk melakukan perintah sederhana daripada di R yang hanya ada untuk memuaskan parser Python, bukan untuk mengekspresikan ide Anda.

Singkatnya
Tentu saja adalah bijaksana untuk mengetahui keduanya dan sementara Python mendapatkan pilihan desain khusus domain R hanya membuatnya lebih mudah untuk pekerjaan ad hoc. Kelemahan besar dari R adalah sulitnya meninggalkan domainnya, yang pada dasarnya harus Anda lakukan begitu Anda mencoba menerapkan temuan Anda secara berkelanjutan.

Robin Gertenbach
sumber
4

Jika Anda melihat R sebagai lebih dari alat statistik dan bukan sebagai bahasa pemrograman, itu sangat bagus. Ini memiliki fleksibilitas jauh lebih dari Stata atau SPSS, tetapi dapat melakukan semua yang mereka bisa juga. Saya belajar Stata selama kuliah, dan R cukup mudah untuk dilihat karena saya sudah memiliki perspektif alat statistik dan bukan pengalaman bahasa pemrograman murni yang mungkin dimiliki orang lain.

Saya pikir frustrasi dengan R datang untuk bermain ketika mereka yang programmer mencoba untuk belajar dan memahami R; tetapi ini adalah alat yang hebat bagi mereka yang datang ke R melalui latar belakang statistik.

Python sangat bagus jika Anda sudah menjadi programmer yang hebat; tetapi bagi saya sebagai pemula untuk pemrograman dan statistik baru lulus dari perguruan tinggi, R adalah pilihan yang jauh lebih baik. Ini benar-benar hanya preferensi mana yang lebih cocok dengan keahlian dan minat Anda.

JBeazer
sumber
3

Menambahkan ke beberapa jawaban sebelumnya:

Dalam pengalaman saya, tidak ada yang lebih mudah daripada menggunakan dplyr + tidyr, ggplot dan Rmarkdown dalam mendapatkan dari data mentah ke hasil yang dapat disajikan. Python menawarkan banyak hal, dan saya menggunakannya semakin banyak, tapi saya sangat suka cara paket Hadley mengikat bersama.

BStange
sumber
2

Python memiliki adopsi luas di luar sains, jadi Anda mendapat manfaat dari semua itu. Seperti yang ditunjukkan oleh "An Angry Guide to R", R dikembangkan oleh sebuah komunitas, yang sebelumnya hanya memiliki nol pengembang perangkat lunak.

Saya akan mengatakan bahwa hari ini R memiliki dua kekuatan utama: beberapa paket yang sangat matang dan sangat khusus di beberapa bidang, dan rajutan paket penelitian yang dapat direproduksi.

Python tampaknya lebih cocok untuk yang lainnya.

Ini pendapat tentu saja, karena hampir semua yang ada di utas ini. Saya agak kagum bahwa utas ini masih hidup.

Gena Kukartsev
sumber
2

Seperti dijelaskan dalam jawaban lain, Python adalah bahasa pemrograman tujuan umum yang baik, sedangkan R memiliki kelemahan serius sebagai bahasa pemrograman tetapi memiliki satu set pustaka analisis data yang lebih kaya. Dalam beberapa tahun terakhir, Python telah mengejar R dengan pengembangan perpustakaan analisis data dewasa seperti scikit-belajar, sedangkan R tidak akan pernah diperbaiki. Dalam prakteknya, saya menggunakan Python (sebenarnya, Hy ) untuk hampir semua hal dan hanya beralih ke R untuk metode yang relatif esoteris seperti regresi kuantil (implementasi yang dalam statsmodels Python tampaknya rusak). Ada beberapa cara untuk memanggil R dari Python; PypeR adalah salah satu yang cukup sederhana sehingga saya membuatnya bekerja di lingkungan yang tidak bersahabat seperti server Windows.

Sunting : Saya mendorong siapa saja yang ingin memperdebatkan hal ini lebih lanjut untuk berbicara dengan penulis esai yang tertaut alih-alih mengomentari jawaban ini.

Kodiologist
sumber
8
Panduan aRrgh itu adalah kritik paling tidak mengerti yang pernah saya baca tentang R (dan saya sudah membaca banyak).
Firebug
10
"Dokumentasinya buruk sekali", itu tidak mengerti. Kekuatan R adalah kesederhanaannya terhadap non-programmer, dan dokumentasinya yang luas. "Karena bahkan nama R itu bodoh, sangat sulit untuk Google R hal-hal dengan cara yang berguna. Maaf. Selamat datang di R!", Itu tidak mengerti. Saya tidak pernah menemui masalah dalam mencari dokumentasi ke paket yang paling tidak jelas di sekitar. "Kamu mengganti nama kolom dengan, dengan seram, menugaskan ke dalam nama (bingkai). Apakah kamu tahu bagaimana dan mengapa ini berhasil? Tolong dididiklah padaku.", C'mmon, dia bahkan tidak mencoba.
Firebug
8
Bagaimana R lebih sulit untuk google daripada C? Google cerdas. Itu belajar bahwa Anda tertarik pada bahasa pemrograman R. R sebagian besar dikritik oleh orang-orang dengan latar belakang dari bahasa pemrograman lain. Maaf, tetapi itu tidak dikembangkan sebagai alternatif untuk bahasa-bahasa ini. Ini dikembangkan untuk dan oleh ahli statistik. Akibatnya, beberapa keputusan desain tidak optimal, tetapi mengatakan ada kesalahan serius agak kuat. Setiap bahasa pemrograman memiliki kelebihan dan kekurangan.
Roland
5
Membuat paket sebenarnya sangat mudah. Itu hanya menjadi rumit jika Anda mematuhi aturan (benar) yang diberlakukan oleh CRAN. Anda dapat mengimpor secara selektif dari paket jika Anda membuat paket. Daur ulang vektor sebenarnya merupakan kekuatan. Tidak ada ketidakkonsistenan antara subset daftar dan vektor. Sebagian sisanya memang bisa dianggap cacat.
Roland
6
R jelas memiliki kutil, beberapa variasi "wat" yang tidak dapat dimaafkan (stringsAsFactors). Tetapi juga memiliki perpustakaan statistik yang tidak memiliki paralel, bahkan jarak jauh, dalam bahasa lain. Pemrograman yang diperlukan untuk membuat perpustakaan ini lebih serius daripada sebagian besar dari kita harus lakukan. Sebagai pernyataan selimut, "R bukan bahasa yang serius" adalah suatu tempat antara anggur yang tidak mengerti, sempit, buta huruf, dan asam. Dan saya mengatakan ini sebagai seseorang yang berharap bahwa R pada dasarnya adalah Python dengan perpustakaan R.
Paul