Latar Belakang: Saya seorang ilmuwan data di sebuah startup di Austin, dan saya berasal dari sekolah pascasarjana (Fisika). Saya menggunakan Python sehari-hari untuk analisis data, tetapi gunakan R sedikit. Saya juga menggunakan C # /. NET dan Java (hampir setiap hari), saya menggunakan C ++ banyak di sekolah pascasarjana.
Saya pikir masalah utama dengan menggunakan Python untuk numerik (lebih dari R) adalah ukuran komunitas pengguna. Karena bahasanya sudah ada sejak dulu, banyak orang telah melakukan hal-hal yang mungkin ingin Anda lakukan. Ini berarti bahwa, ketika dihadapkan dengan masalah yang sulit, Anda dapat mengunduh paket dan mulai bekerja. Dan R "hanya berfungsi": Anda memberinya dataset, dan ia tahu statistik ringkasan apa yang berguna. Anda memberikan beberapa hasil, dan tahu plot apa yang Anda inginkan. Semua plot umum yang ingin Anda buat ada di sana, bahkan beberapa plot yang cukup esoteris yang harus Anda cari di Wikipedia. Sebagus scipy / numpy / panda / statsmodels / dll. adalah untuk Python, mereka tidak pada tingkat perpustakaan standar R.
Keuntungan utama Python daripada R adalah bahwa itu adalah bahasa pemrograman nyata dalam keluarga C. Ini bersisik dengan mudah, jadi bisa dibayangkan bahwa apa pun yang Anda miliki di kotak pasir Anda dapat digunakan dalam produksi. Python memiliki Orientasi Objek dipanggang, sebagai lawan R di mana rasanya seperti semacam renungan (karena itu). Ada hal-hal lain yang juga dilakukan Python dengan baik: pemrosesan threading dan paralel cukup mudah, dan saya tidak yakin apakah itu yang terjadi di R. Dan belajar Python memberi Anda alat skrip yang kuat juga. Ada juga IDE (gratis) yang sangat bagus untuk Python, yang jauh lebih baik jika Anda bersedia membayar (kurang dari $ 100), dan saya tidak yakin ini adalah kasus untuk R - satu-satunya R IDE yang saya tahu adalah R Studio, yang cukup bagus, tetapi tidak sebagus PyDev + Eclipse, dalam pengalaman saya.
Saya akan menambahkan ini sebagai sedikit kicker: karena Anda masih di sekolah, Anda harus memikirkan pekerjaan. Anda akan menemukan lebih banyak lowongan pekerjaan untuk pengembang Python yang sangat terampil daripada yang akan Anda miliki untuk pengembang yang sangat terampil. Di Austin, pekerjaan untuk para pengembang Django agak jatuh dari langit. Jika Anda mengenal R dengan sangat baik, ada beberapa tempat di mana Anda dapat memanfaatkan keterampilan itu (Revolution Analytics, misalnya), tetapi banyak toko tampaknya menggunakan Python. Bahkan di bidang analisis data / ilmu data, lebih banyak orang tampaknya beralih ke Python.
Dan jangan meremehkan bahwa Anda dapat bekerja dengan / untuk orang-orang yang hanya tahu (katakanlah) Java. Orang-orang itu akan dapat membaca kode Python Anda dengan cukup mudah. Ini tidak akan menjadi masalah jika Anda melakukan semua pekerjaan Anda di R. (Ini berasal dari pengalaman.)
Akhirnya, ini mungkin kedengarannya dangkal, tetapi saya pikir dokumentasi Python dan konvensi penamaan (yang dipatuhi secara agama, ternyata) jauh lebih baik daripada dokumen utilitarian R doc. Saya yakin ini akan menjadi perdebatan hangat, tetapi penekanan pada Python adalah keterbacaan. Itu berarti bahwa argumen ke fungsi Python memiliki nama yang dapat Anda baca, dan itu berarti sesuatu. Dalam R, nama argumen sering terpotong --- Saya menemukan ini kurang benar dengan Python. Ini mungkin terdengar luar biasa, tetapi membuat saya gila untuk menulis hal-hal seperti 'xlab' ketika Anda bisa dengan mudah menyebutkan argumen 'x_label' (hanya satu contoh) --- ini memiliki efek besar ketika Anda mencoba untuk belajar modul / paket API baru. Membaca R doc sama seperti membaca halaman manual Linux --- jika itu yang membuat perahu Anda, maka lebih banyak kekuatan untuk Anda.
Semua itu dikatakan, saya sarankan yang berikut (yang juga alur kerja khas saya): karena Anda tahu Python, gunakan itu sebagai alat pertama Anda. Ketika Anda menemukan Python kurang, pelajari cukup R untuk melakukan apa yang Anda inginkan, dan kemudian:
- Tulis skrip dalam R dan jalankan dari Python menggunakan modul subprocess, atau
- Instal modul RPy.
Gunakan Python untuk keahlian Python dan isi celah dengan salah satu di atas. Ini adalah alur kerja normal saya --- Saya biasanya menggunakan R untuk merencanakan sesuatu, dan Python untuk pengangkatan berat.
Jadi kesimpulannya: karena penekanan Python pada keterbacaan (cari Google untuk "Pythonic"), ketersediaan IDE yang baik dan gratis, fakta bahwa itu ada dalam kelompok bahasa C, semakin besar kemungkinan Anda dapat memanfaatkan huruf besar skillet, dan gaya dokumentasi yang lebih baik untuk semua bahasa, saya sarankan menjadikan Python sebagai tujuan Anda, dan mengandalkan R hanya jika diperlukan.
Ok, ini (sejauh ini) jawaban saya yang paling populer di situs tumpukan, dan bahkan bukan # 1 :) Saya harap ini telah membantu beberapa orang di sepanjang jalan.
Bagaimanapun, saya sampai pada kesimpulan berikut setelah beberapa tahun di lapangan:
Ini mungkin pertanyaan yang salah untuk ditanyakan.
Bertanya "haruskah saya mempelajari teknologi khusus ini" adalah pertanyaan yang buruk. Mengapa?
- Perubahan teknologi. Anda harus selalu belajar teknologi lain. Jika Anda bekerja di Twitter, mereka menjalankan Scala. Beberapa tempat adalah toko Python. Beberapa tempat tidak peduli. Anda tidak akan dipekerjakan karena Anda tahu atau tidak tahu teknologi tertentu - jika Anda tidak dapat mempelajari teknologi baru, Anda dapat (dan harus) dipecat. Ini seperti, jika kunci pas pipa baru keluar, dan Anda adalah tukang ledeng, dan Anda tidak dapat mengetahui bagaimana kunci pas pipa baru bekerja, Anda mungkin tukang ledeng yang sangat buruk.
- Diberi pilihan "Apakah saya belajar teknologi ini" atau "Apakah saya menghabiskan lebih banyak waktu untuk menyelesaikan masalah nyata", Anda harus selalu memilih yang terakhir, tanpa terkecuali.
Sebagai seorang ilmuwan data, tugas Anda adalah menyelesaikan masalah . Satu hikmah itu hampir selalu hilang di setiap konferensi atau pertemuan yang Anda datangi - setiap pembicaraan "data besar" yang pernah saya lihat berfokus pada teknologi, bukan pada penyelesaian masalah. Pemecahan masalah yang sebenarnya biasanya diturunkan ke beberapa slide di akhir:
[Judul pembicaraan = "Belajar mendalam di Startup Baru yang Keren"] ... [45 menit diagram dan techno-babel saat saya melakukan zona keluar dan memeriksa telepon saya] ... Dan, setelah menerapkan kluster Hadoop kami dan [Zona Ben keluar lagi] kita dapat menjalankan rutinitas belajar yang mendalam, [bangun: inilah sebabnya saya datang!] yang detailnya adalah hak milik. Pertanyaan?
Ini memberi kesan buruk bahwa bidangnya tentang teknologi, dan itu tidak benar. Jika Anda benar-benar bagus di Scala, atau Python, atau R, tetapi Anda benar-benar buruk dalam memecahkan masalah, Anda akan menjadi ilmuwan data yang buruk .
Paco Nathan berada di Austin beberapa bulan lalu di konferensi "big data" sehari yang panjang, dan mengatakan sesuatu seperti "Kimia bukan tentang tabung reaksi". Itu cukup banyak meringkaskannya - ilmu data bukan tentang Scala, atau Hadoop, atau Spark, atau apa pun-teknologi-du-jour lainnya muncul. Pada akhirnya, saya ingin merekrut orang yang berpikir, bukan orang yang mahir menggunakan Stack Overflow untuk mempelajari toolkit.
Demikian juga, jika Anda pergi ke wawancara kerja, dan mereka tidak mempekerjakan Anda hanya karena Anda tidak tahu bahasa pemrograman, maka perusahaan itu payah . Mereka tidak mengerti apa artinya "ilmuwan data", dan mungkin lebih baik bagi Anda jika tidak berhasil.
Akhirnya, jika kemampuan Anda dalam memecahkan masalah bersifat marjinal (jujur dengan diri sendiri), atau Anda benar-benar menikmati sisi teknologi, atau belajar teknologi adalah hal yang benar-benar Anda sukai (sekali lagi, jujurlah) maka pelajari banyak teknologi. Anda akan selalu dapat menemukan peran tipe "insinyur data" yang sesuai dengan keahlian Anda. Ini bukan hal yang buruk, para insinyur data melumasi roda dan memungkinkan Anda melakukan pekerjaan Anda sebagai ilmuwan data. (Perbedaannya mirip dengan arsitek perangkat lunak vs tim pengembangan.)