Nếu bạn yêu thích Khoa học dữ liệu, hai ngôn ngữ lập trình có thể xuất hiện ngay trong đầu bạn là R và Python. Tuy nhiên, thay vì coi chúng là hai lựa chọn, thường thì chúng ta lại so sánh cả hai. R và Python, là những công cụ tuyệt vời theo cách riêng của chúng nhưng thường được coi là đối thủ của nhau. Nếu bạn nhập R vs Python
, trong thanh tìm kiếm của Google, bạn sẽ ngay lập tức nhận được vô số tài nguyên về các chủ đề nói về uy quyền của cái này so với cái kia
Một trong những lý do cho triển vọng như vậy là vì mọi người đã chia lĩnh vực Khoa học dữ liệu thành các phe dựa trên lựa chọn ngôn ngữ lập trình mà họ sử dụng. Có trại R và trại Python và lịch sử là minh chứng cho việc các trại không thể chung sống hòa thuận. Các thành viên của cả hai phe đều tin tưởng nhiệt thành rằng sự lựa chọn ngôn ngữ của họ tốt hơn ngôn ngữ kia. Vì vậy, theo một cách nào đó, sự khác biệt không nằm ở các công cụ mà nằm ở những người sử dụng các công cụ đó
Tại sao không sử dụng cả hai?
Có những người trong cộng đồng Khoa học dữ liệu đang sử dụng cả Python và R, nhưng tỷ lệ phần trăm của họ rất nhỏ. Mặt khác, có rất nhiều người cam kết chỉ sử dụng một ngôn ngữ lập trình nhưng lại mong muốn họ có thể tiếp cận một số khả năng của đối thủ của họ. Chẳng hạn, người dùng R đôi khi khao khát các khả năng hướng đối tượng có nguồn gốc từ Python và tương tự, một số người dùng Python khao khát phạm vi rộng của các phân phối thống kê có sẵn trong R
Hình trên là kết quả khảo sát do Red Monk thực hiện trong quý 3 năm 2018. Kết quả này dựa trên mức độ phổ biến của các ngôn ngữ trên Stack Overflow cũng như trên Github và cho thấy rõ ràng rằng cả R và Python đều được đánh giá khá cao. Do đó, không có lý do cố hữu nào là tại sao chúng ta không thể làm việc với cả hai người trong cùng một dự án. Mục tiêu cuối cùng của chúng tôi là thực hiện phân tích tốt hơn và rút ra những hiểu biết sâu sắc hơn và lựa chọn ngôn ngữ lập trình không phải là trở ngại trong việc đạt được điều đó
Tổng quan về R và Python
Chúng ta hãy xem xét các khía cạnh khác nhau của các ngôn ngữ này và những gì tốt và không tốt về chúng
con trăn
Kể từ khi được phát hành vào năm 1991, Python đã trở nên cực kỳ phổ biến và được sử dụng rộng rãi trong xử lý dữ liệu. Một số lý do cho sự phổ biến rộng rãi của nó là
- ngôn ngữ hướng đối tượng
- Mục đích chung
- Có rất nhiều tiện ích mở rộng và hỗ trợ cộng đồng đáng kinh ngạc
- Đơn giản, dễ hiểu và dễ học
- các gói như gấu trúc, numpy và scikit-learning, khiến Python trở thành lựa chọn tuyệt vời cho các hoạt động học máy
Tuy nhiên, Python không có các gói chuyên dụng cho tính toán thống kê, không giống như R
R
Bản phát hành đầu tiên của R ra mắt vào năm 1995 và kể từ đó, nó đã trở thành một trong những công cụ được sử dụng nhiều nhất cho khoa học dữ liệu trong ngành
- Bao gồm các gói cho hầu hết mọi ứng dụng thống kê mà người ta có thể nghĩ đến. CRAN hiện lưu trữ hơn 10 nghìn gói
- Được trang bị các thư viện trực quan tuyệt vời như ggplot2
- Có khả năng phân tích độc lập
Hiệu suất khôn ngoan R không phải là ngôn ngữ nhanh nhất và đôi khi có thể là một kẻ háu ăn bộ nhớ khi xử lý các bộ dữ liệu lớn
Tận dụng tốt nhất của cả hai thế giới
Chúng ta có thể sử dụng năng lực thống kê của R cùng với khả năng lập trình của Python không?
Về cơ bản, có hai cách tiếp cận mà chúng ta có thể sử dụng song song cả Python và R trong một dự án
R trong Python
- PypeR
PypeR cung cấp một cách đơn giản để truy cập R từ Python thông qua các đường ống. PypeR cũng được bao gồm trong Chỉ mục gói của Python, cung cấp cách cài đặt thuận tiện hơn. PypeR đặc biệt hữu ích khi không cần truyền dữ liệu tương tác thường xuyên giữa Python và R. Bằng cách chạy R thông qua đường ống, chương trình Python có được tính linh hoạt trong kiểm soát quy trình phụ, kiểm soát bộ nhớ và tính di động trên các nền tảng hệ điều hành phổ biến, bao gồm Windows, GNU Linux và Mac OS
Các quy ước chuyển đổi đối tượng Python thành đối tượng R
- pyRserve
pyRserve sử dụng Rserve làm cổng kết nối RPC. Thông qua kết nối như vậy, các biến có thể được đặt trong R từ Python và các hàm R cũng có thể được gọi từ xa. Các đối tượng R được hiển thị dưới dạng các thể hiện của các lớp do Python triển khai, với các hàm R là các phương thức được liên kết với các đối tượng đó trong một số trường hợp
- rpy2
rpy2 chạy R nhúng trong quy trình Python. Nó tạo ra một khung có thể dịch các đối tượng Python thành các đối tượng R, chuyển chúng thành các hàm R và chuyển đổi đầu ra R trở lại thành các đối tượng Python. rpy2 được sử dụng thường xuyên hơn vì nó đang được phát triển tích cực
Một lợi thế của việc sử dụng R trong Python là chúng ta có thể sử dụng các gói tuyệt vời của R như ggplot2, dirtyr, dplyr et al một cách dễ dàng trong Python. Để làm ví dụ, hãy xem cách chúng ta có thể dễ dàng sử dụng ggplot2 để ánh xạ trong Python
- cốt truyện cơ bản
https. //rpy2. github. io/doc/mới nhất/html/đồ họa. html#lô
- hình học
https. //rpy2. github. io/doc/mới nhất/html/đồ họa. html#hình học
Tài nguyên
Bạn có thể muốn xem các tài nguyên sau để đánh giá sâu hơn về rpy2
- Tài liệu chính thức của rpy2
- RPy2. Kết hợp sức mạnh của R + Python cho Khoa học dữ liệu
- Truy cập R từ Python bằng RPy2
Python trong R
Chúng tôi có thể chạy các tập lệnh R trong Python bằng cách sử dụng một trong các lựa chọn thay thế bên dưới
- rJython
Gói này triển khai giao diện với Python thông qua Jython. Nó dành cho các gói khác có thể nhúng mã python cùng với R
- rPython
rPython lại là Gói cho phép R gọi Python. Nó có thể chạy mã Python, thực hiện các lệnh gọi hàm, gán và truy xuất các biến, v.v. từ R
- Con RắnBùa R
SnakeCharmR là phiên bản đại tu hiện đại của rPython. Nó là một nhánh rẽ từ 'rPython' sử dụng 'jsonlite' và có nhiều cải tiến hơn rPython
- PythonInR
PythonInR làm cho việc truy cập Python từ bên trong R trở nên rất dễ dàng bằng cách cung cấp các hàm để tương tác với Python từ bên trong R
- kẻ ô vuông
Gói reticulate cung cấp một bộ công cụ toàn diện cho khả năng tương tác giữa Python và R. Trong số tất cả các lựa chọn thay thế ở trên, cái này được sử dụng rộng rãi nhất, hơn thế nữa vì nó đang được Rstudio phát triển mạnh mẽ. Reticulate nhúng một phiên Python trong phiên R, cho phép khả năng tương tác liền mạch, hiệu suất cao. Gói này cho phép bạn viết lại mã Python thành R, tạo ra một loại dự án mới kết hợp hai ngôn ngữ lại với nhau
Gói mạng lưới cung cấp các tiện ích sau
- Gọi Python từ R theo nhiều cách khác nhau, bao gồm R Markdown, tìm nguồn cung cấp tập lệnh Python, nhập mô-đun Python và sử dụng Python tương tác trong phiên R
- Dịch giữa các đối tượng R và Python [ví dụ: giữa khung dữ liệu R và Pandas hoặc giữa ma trận R và mảng NumPy]
- Liên kết linh hoạt với các phiên bản Python khác nhau bao gồm môi trường ảo và môi trường Conda
Tài nguyên
Một số tài nguyên tuyệt vời về việc sử dụng gói reticulate là
- Tài liệu này khá mạnh mẽ và có nhiều ví dụ cũng như trường hợp sử dụng để giúp bạn bắt đầu
- https. //longhowlam. báo chí. com/2017/04/10/test-drive-python-integration-in-r-using-the-reticulate-package/
- RẮN TRONG GÓI. KẾT HỢP PYTHON VÀ R VỚI RETICULATE
Phần kết luận
Cả R và Python đều là những ngôn ngữ khá mạnh và một trong số chúng thực sự đủ để thực hiện nhiệm vụ Phân tích dữ liệu. Tuy nhiên, chắc chắn có một số điểm cao và thấp cho cả hai và nếu chúng ta có thể tận dụng thế mạnh của cả hai, chúng ta có thể sẽ làm tốt hơn nhiều. Dù bằng cách nào, có kiến thức về cả hai sẽ giúp chúng ta linh hoạt hơn, do đó tăng cơ hội có thể làm việc trong nhiều môi trường
Thẩm quyền giải quyết
Bài báo là bản chuyển thể từ bài nói chuyện xuất sắc này của Andrew Collier mà ông đã trình bày tại Pydata Berlin vào năm 2018