Python như một bàn làm việc thống kê


355

Nhiều người sử dụng một công cụ chính như Excel hoặc bảng tính khác, SPSS, Stata hoặc R cho nhu cầu thống kê của họ. Họ có thể chuyển sang một số gói cụ thể cho các nhu cầu rất đặc biệt, nhưng rất nhiều thứ có thể được thực hiện với một bảng tính đơn giản hoặc gói thống kê chung hoặc môi trường lập trình thống kê.

Tôi luôn thích Python là ngôn ngữ lập trình và với những nhu cầu đơn giản, thật dễ dàng để viết một chương trình ngắn tính toán những gì tôi cần. Matplotlib cho phép tôi vẽ nó.

Có ai đã chuyển đổi hoàn toàn từ, nói R, sang Python chưa? R (hoặc bất kỳ gói thống kê nào khác) có rất nhiều chức năng dành riêng cho thống kê và nó có cấu trúc dữ liệu cho phép bạn suy nghĩ về số liệu thống kê bạn muốn thực hiện và ít hơn về biểu diễn bên trong của dữ liệu của bạn. Python (hoặc một số ngôn ngữ động khác) có lợi ích cho phép tôi lập trình bằng ngôn ngữ cấp cao, quen thuộc và nó cho phép tôi tương tác với các hệ thống trong thế giới thực trong đó dữ liệu cư trú hoặc từ đó tôi có thể thực hiện các phép đo. Nhưng tôi chưa tìm thấy gói Python nào cho phép tôi diễn đạt mọi thứ bằng "thuật ngữ thống kê" - từ thống kê mô tả đơn giản đến các phương pháp đa biến phức tạp hơn.

Bạn có thể đề xuất gì nếu tôi muốn sử dụng Python làm "bàn làm việc thống kê" để thay thế R, SPSS, v.v.?

Tôi sẽ được và mất gì, dựa trên kinh nghiệm của bạn?


5
FYI, có một subreddit thống kê trăn mới sắp ra mắt: reddit.com/r/pystats
naught101

Khi bạn cần di chuyển mọi thứ trên dòng lệnh, pythonpy ( github.com/Russell91/pythonpy ) là một công cụ hay.
RussellStewart

Câu trả lời:


307

Thật khó để bỏ qua sự giàu có của các gói thống kê có sẵn trong R / CRAN. Điều đó nói rằng, tôi dành nhiều thời gian ở vùng đất Python và sẽ không bao giờ ngăn cản bất cứ ai có được nhiều niềm vui như tôi. :) Dưới đây là một số thư viện / liên kết bạn có thể thấy hữu ích cho công việc thống kê.

  • NumPy / Scipy Có lẽ bạn đã biết về những điều này rồi. Nhưng hãy để tôi chỉ ra Cookbook nơi bạn có thể đọc về nhiều cơ sở thống kê đã có sẵn và Danh sách ví dụ là tài liệu tham khảo tuyệt vời cho các chức năng (bao gồm thao tác dữ liệu và các hoạt động khác). Một tài liệu tham khảo hữu ích khác là Bản phân phối của John Cook trong Scipy .

  • pandas Đây là một thư viện thực sự tốt để làm việc với dữ liệu thống kê - dữ liệu dạng bảng, chuỗi thời gian, dữ liệu bảng. Bao gồm nhiều hàm dựng sẵn để tóm tắt dữ liệu, nhóm / tổng hợp, xoay vòng. Cũng có một thư viện thống kê / kinh tế lượng.

  • larry Mảng được gắn nhãn chơi tốt với NumPy. Cung cấp các hàm thống kê không có trong NumPy và tốt cho thao tác dữ liệu.

  • python-statlib Một nỗ lực gần đây kết hợp một số thư viện thống kê phân tán. Hữu ích cho thống kê cơ bản và mô tả nếu bạn không sử dụng NumPy hoặc gấu trúc.

  • statsmodels Mô hình thống kê: Mô hình tuyến tính, GLM, trong số những người khác.

  • scikits Gói máy tính thống kê và khoa học - đáng chú ý là làm mịn, tối ưu hóa và học máy.

  • PyMC Dành cho nhu cầu mô hình hóa phân cấp Bayesian / MCMC / phân cấp của bạn. Rat khuyen khich.

  • Mô hình hỗn hợp PyMix .

  • Biopython Hữu ích để tải dữ liệu sinh học của bạn vào python và cung cấp một số công cụ thống kê / máy học thô sơ để phân tích.

Nếu tốc độ trở thành một vấn đề, hãy xem xét Theano - được sử dụng với sự thành công tốt của những người học sâu.

Có rất nhiều thứ khác ở ngoài đó, nhưng đây là những gì tôi thấy hữu ích nhất dọc theo dòng bạn đã đề cập.


16
Tất cả các câu trả lời đều hữu ích và hữu ích, và tất cả đều xứng đáng được chấp nhận. Tuy nhiên, điều này làm rất tốt trong việc trả lời câu hỏi: với Python, bạn phải tập hợp nhiều phần để làm những gì bạn muốn. Những con trỏ này chắc chắn sẽ rất hữu ích cho bất kỳ ai muốn làm thống kê / mô hình hóa / v.v. với Python. Cảm ơn mọi người!
Fabian Fagerholm

1
@ars xin vui lòng bạn biết cách tốt nhất để sử dụng Python với Windows là gì?
Stéphane Laurent

1
@ StéphaneLaurent Tôi thường tự cài đặt các phần khác nhau, nhưng để bắt đầu / cài đặt nhanh, bạn có thể cân nhắc: pythonxy .
ars

Kịch bản này cài đặt nhiều thư viện được trích dẫn ở trên: fonnesbeck.github.com/ScipySuperpack
Fr.

Pythonxy là tốt nhưng nó có thể gây phiền nhiễu nếu bạn muốn thực hiện các tính toán lớn vì nó chỉ có sẵn cho 32 bit. Dưới đây là các tệp nhị phân không chính thức để cài đặt nhiều gói python. Chúng có thể khá hữu ích nếu bạn quyết định làm việc dưới cửa sổ. lfd.uci.edu/~gohlke/pythonlibs @ StéphaneLaurent
JEquihua 26/03/13

140

Là một nền tảng số và thay thế cho MATLAB, Python đã trưởng thành ít nhất 2-3 năm trước và hiện tốt hơn nhiều so với MATLAB ở nhiều khía cạnh. Tôi đã cố gắng chuyển sang Python từ R trong khoảng thời gian đó và thất bại thảm hại. Có quá nhiều gói R tôi sử dụng hàng ngày không có Python tương đương. Sự vắng mặt của ggplot2 là đủ để trở thành một showstopper, nhưng còn nhiều hơn nữa. Ngoài ra, R có một cú pháp tốt hơn để phân tích dữ liệu. Hãy xem xét ví dụ cơ bản sau:

Python :

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

R :

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

Bạn nghĩ gì về biểu cảm hơn? Trong R, bạn có thể suy nghĩ về các biến và có thể dễ dàng mở rộng một mô hình, để, nói,

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

So với R, Python là ngôn ngữ cấp thấp để xây dựng mô hình.

Nếu tôi có ít yêu cầu hơn cho các chức năng thống kê nâng cao và đã mã hóa Python trên một dự án lớn hơn, tôi sẽ coi Python là một ứng cử viên tốt. Tôi cũng sẽ xem xét nó khi cần một cách tiếp cận xương sống, vì giới hạn tốc độ, hoặc vì các gói R không cung cấp lợi thế.

Đối với những người làm Thống kê tương đối tiên tiến ngay bây giờ , câu trả lời là không có trí tuệ, và là không . Trên thực tế, tôi tin rằng Python sẽ giới hạn cách bạn nghĩ về phân tích dữ liệu. Sẽ mất vài năm và nhiều năm nỗ lực để tạo ra các thay thế mô-đun cho 100 gói R thiết yếu, và thậm chí sau đó, Python sẽ cảm thấy giống như một ngôn ngữ mà các khả năng phân tích dữ liệu đã được củng cố. Vì R đã chiếm được tỷ lệ tương đối lớn nhất của các nhà thống kê ứng dụng trên nhiều lĩnh vực, tôi không thấy điều này xảy ra bất cứ lúc nào sớm. Phải nói rằng, đó là một đất nước tự do và tôi biết những người làm Thống kê ở APL và C.


9
+1 Tôi chỉ thích phản hồi này vì sự nhấn mạnh bạn đặt vào R làm ngôn ngữ thống kê để làm việc với dữ liệu bằng các công thức và tương tự. Điều đó đang được nói, tôi đang mong đợi một tác động tích cực lớn của gấu trúc (kết hợp với thống kê mô hình) trong cộng đồng Python.
chl

28
trong cộng đồng Python, patsy đang giải quyết nhu cầu về "công thức", mà bạn mô tả, đôi khi cải thiện những gì R cung cấp: patsy.readthedocs.org/en/v0.1.0/index.html Điều tuyệt vời ở Python là tất cả những điều này các khía cạnh được xử lý trực giao. Pandas sẽ chăm sóc thời gian và đại diện dataframe / loạt. patsy cho các công thức. numpy cho đại diện mảng và vector hóa. statsmodels kết thúc số liệu thống kê algos. scipy để tối ưu hóa và một loạt các công cụ khác. Kết quả là giao diện sạch hơn. R, so sánh, trưởng thành hơn, nhưng là một quả bóng tóc. ../ ..
blais

3
../ .. Tôi nghĩ về lâu dài, các lực lượng sẽ đẩy theo hướng tích hợp Python ngày càng nhiều và bạn sẽ thấy nó sẽ trở thành một đối thủ cạnh tranh với R. Làm sạch dữ liệu trong R là một PIA so với Python và nó không bao giờ là một phần tầm thường của công việc. - blais
chl

9
như một bản cập nhật: ví dụ đầu tiên trong tài liệu thống kê thống kê hiện nay results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit(). Statsmodels vẫn thua xa các gói thống kê khác như R về phạm vi bảo hiểm, nhưng ngày càng có nhiều điều bạn có thể làm trong python trước khi bạn phải lấy một gói ngôn ngữ hoặc thống kê khác. (GEE và Hỗn hợp sẽ có trong phiên bản tiếp theo.)
Josef

4
"Điều tuyệt vời ở Python là tất cả các khía cạnh này đều được xử lý trực giao ...". Tôi không đồng ý về một số tính. Có sự chồng chéo đáng kể giữa numpy, scipy, statsmodels. Thiết kế của R là mô-đun và kinh tế hơn nhiều. Bên cạnh đó, hầu hết không phải là tất cả những đổi mới về khái niệm trong các ngôn ngữ hướng dữ liệu (không chỉ là công thức, mà cả khung dữ liệu, ngữ pháp đồ họa, caret như một ngữ pháp của huy chương, đan và ngữ pháp dữ liệu vẫn đang phát triển của dplyr) có nguồn gốc từ R. Cộng đồng Python dường như luôn chậm một bước và tập trung quá mức vào hiệu suất.
vui vẻ

95

Trước tiên, hãy để tôi nói rằng tôi đồng ý với câu trả lời của John D Cook: Python không phải là Ngôn ngữ cụ thể của miền như R, và theo đó, sẽ có nhiều hơn nữa bạn có thể làm với nó hơn nữa. Tất nhiên, R là DSL có nghĩa là các thuật toán mới nhất được xuất bản trong JASA gần như chắc chắn sẽ ở R. Nếu bạn đang làm việc chủ yếu là ad hoc và muốn thử nghiệm kỹ thuật hồi quy lasso mới nhất, giả sử, R rất khó để đánh bại. Nếu bạn đang làm nhiều công việc phân tích sản xuất, tích hợp với phần mềm và môi trường hiện có và quan tâm đến tốc độ, khả năng mở rộng và khả năng bảo trì, Python sẽ phục vụ bạn tốt hơn nhiều.

Thứ hai, ars đã đưa ra một câu trả lời tuyệt vời với các liên kết tốt. Dưới đây là một vài gói nữa mà tôi xem là cần thiết cho công việc phân tích trong Python:

  • matplotlib cho đồ họa đẹp, chất lượng xuất bản.
  • IPython cho một giao diện điều khiển Python tương tác nâng cao. Điều quan trọng, IPython cung cấp một khung công tác mạnh mẽ cho tính toán tương tác, song song trong Python.
  • Cython để dễ dàng viết các phần mở rộng C trong Python. Gói này cho phép bạn lấy một đoạn mã Python chuyên sâu tính toán và dễ dàng chuyển đổi nó thành một phần mở rộng C. Sau đó, bạn sẽ có thể tải tiện ích mở rộng C như mọi mô-đun Python khác nhưng mã sẽ chạy rất nhanh vì nó nằm trong C.
  • PyIMSL Studio cho một bộ sưu tập hàng trăm thuật toán thống kê và toán học được ghi lại và hỗ trợ kỹ lưỡng. Bạn có thể gọi chính xác các thuật toán từ Python và C, với gần như cùng một API và bạn sẽ nhận được kết quả tương tự. Tiết lộ đầy đủ: Tôi làm việc trên sản phẩm này, nhưng tôi cũng sử dụng nó rất nhiều.
  • xlrd để đọc trong các tệp Excel dễ dàng.

Nếu bạn muốn có IDE / console tương tác giống MATLAB hơn, hãy xem Spyder hoặc plugin PyDev cho Eclipse .


15
R không phải là DSL theo nghĩa thông thường của thuật ngữ này. Đó là một ngôn ngữ lập trình đầy đủ, Turing.
hadley

4
@hadley: Có lẽ tôi đang sử dụng "DSL" quá phổ biến, nhưng với giá trị của nó, trang Wikipedia về DSL liệt kê rõ ràng S + và R là ví dụ về DSL và Python làm ngôn ngữ cho mục đích chung. Xem en.wikipedia.org/wiki/Domain-specific_lingu . Đồng quan điểm, SAS là Turing-Complete (chỉ khi sử dụng thành phần macro IML), nhưng tôi khó có thể gọi nó là ngôn ngữ hoàn chỉnh theo nghĩa thực tế. Tôi thấy R là vô giá trong công việc của mình, nhưng tôi cố gắng viết mã bằng các ngôn ngữ có mục đích chung càng nhiều càng tốt thay vì cố gắng làm mọi thứ trong R (hoặc Excel cho vấn đề đó).
Josh Hemann

16
Tôi nghĩ thật không công bằng khi đưa R và S vào cùng một danh sách với các ngôn ngữ khác trong wikipedia - không có gì bạn không thể làm trong R mà bạn có thể làm trong python. Tất nhiên có nhiều điều phù hợp hơn với ngôn ngữ lập trình khác, nhưng điều tương tự cũng đúng với Python.
hadley

6
Ahh, hadley đã loại bỏ R và S + khỏi trang Wikipedia cùng ngày chúng tôi trao đổi ý kiến, ngày 13 tháng 10 năm 2011. Vì vậy, tôi thường nghe câu thần chú "R được phát triển bởi và cho các nhà thống kê" là sức mạnh nền tảng của nó. Rõ ràng, bây giờ nó cũng là một ngôn ngữ có mục đích chung ...
Josh Hemann

5
Chà, tôi có thể có mã đa luồng với R không? Mạng I / O không đồng bộ? Hãy tin tôi, những usecase này thực sự phát sinh trong điện toán khoa học. R là một DSL, theo ý kiến ​​của tôi. Nó mạnh về thống kê, và xấu ở hầu hết những thứ khác.
Gael Varoquaux

61

Tôi không nghĩ có bất kỳ lập luận nào cho thấy phạm vi của các gói thống kê trong cranBioconductor vượt xa mọi thứ được cung cấp từ các ngôn ngữ khác, tuy nhiên, đó không phải là điều duy nhất cần xem xét.

Trong nghiên cứu của tôi, tôi sử dụng R khi tôi có thể nhưng đôi khi R quá chậm. Ví dụ, một MCMC lớn chạy.

Gần đây, tôi đã kết hợp python và C để giải quyết vấn đề này. Tóm tắt ngắn gọn: phù hợp với mô hình dân số ngẫu nhiên lớn với ~ 60 tham số và suy ra khoảng 150 trạng thái tiềm ẩn khi sử dụng MCMC.

  1. Đọc dữ liệu trong python
  2. Xây dựng cấu trúc dữ liệu C trong python bằng cách sử dụng ctypes .
  3. Sử dụng forvòng lặp python , gọi các hàm C cập nhật các tham số và tính khả năng.

Một tính toán nhanh cho thấy chương trình đã chi 95% cho các hàm C. Tuy nhiên, tôi không phải viết mã C đau đớn để đọc dữ liệu hoặc xây dựng cấu trúc dữ liệu C.


Tôi biết cũng có rpy , nơi trăn có thể gọi các hàm R. Điều này có thể hữu ích, nhưng nếu bạn "chỉ" làm thống kê thì tôi sẽ sử dụng R.


29
Chèn phích cắm không biết xấu hổ cho Rcpp :)
Dirk Eddelbuettel

tò mò nếu bạn đã thử PyMC và cách hiệu suất so sánh (so với python / C) cho các mô hình của bạn.
ars

@ars: Trong trường hợp trên, mỗi lần lặp (trong số 10 ^ 8 lần lặp) liên quan đến việc giải quyết 5 ODE. Điều này thực sự phải được thực hiện trong C. Phần còn lại của mã khá đơn giản và vì vậy mã C rất đơn giản. Ứng dụng của tôi không chuẩn và vì vậy PyMC không áp dụng được - cũng đã 2 năm rồi.
csgillespie


36

Tôi chưa thấy scikit-learn được đề cập rõ ràng trong các câu trả lời ở trên. Đây là gói Python để học máy bằng Python. Nó còn khá trẻ nhưng đang phát triển cực kỳ nhanh chóng (từ chối trách nhiệm: Tôi là một nhà phát triển học hỏi). Mục tiêu của nó là cung cấp các công cụ thuật toán học máy tiêu chuẩn trong một giao diện hợp nhất, tập trung vào tốc độ và khả năng sử dụng. Theo tôi biết, bạn không thể tìm thấy bất cứ điều gì tương tự trong Matlab. Điểm mạnh của nó là:

  • Một tài liệu chi tiết , với nhiều ví dụ

  • Các công cụ học tập (hồi quy / phân loại) có giám sát tiêu chuẩn chất lượng cao . Đặc biệt:

  • Khả năng thực hiện lựa chọn mô hình bằng cách xác thực chéo bằng nhiều CPU

  • Học tập không giám sát để khám phá dữ liệu hoặc thực hiện giảm chiều thứ nhất, có thể dễ dàng bị xiềng xích vào việc học có giám sát.

  • Nguồn mở, BSD được cấp phép. Nếu bạn không ở trong một môi trường học thuật thuần túy (tôi đang ở trong phòng thí nghiệm quốc gia ở tiểu bang) thì điều này rất quan trọng vì chi phí Matlab rất cao và bạn có thể nghĩ đến việc lấy sản phẩm từ công việc của mình.

Matlab là một công cụ tuyệt vời, nhưng trong công việc của riêng tôi, scipy + scikit-learn đang bắt đầu mang lại cho tôi một lợi thế trên Matlab vì Python làm việc tốt hơn với bộ nhớ do cơ chế xem của nó (và tôi có dữ liệu lớn) và vì scikit-learn cho phép tôi rất dễ dàng so sánh các cách tiếp cận khác nhau.


29

Một lợi ích của việc chuyển sang Python là khả năng thực hiện nhiều công việc hơn trong một ngôn ngữ. Python là một lựa chọn hợp lý cho việc bẻ số, viết trang web, viết kịch bản quản trị, v.v. Vì vậy, nếu bạn thực hiện thống kê của mình bằng Python, bạn sẽ không phải chuyển ngôn ngữ để thực hiện các tác vụ lập trình khác.

Cập nhật: Vào ngày 26 tháng 1 năm 2011 Microsoft Research đã công bố Sho , một môi trường dựa trên Python mới để phân tích dữ liệu. Tôi chưa có cơ hội dùng thử, nhưng nghe có vẻ là một khả năng thú vị nếu muốn chạy Python và cũng tương tác với các thư viện .NET.


4
Tôi đã thực hiện rất nhiều cuộc khủng hoảng số, một trang web và một vài tập lệnh quản trị trong R và chúng đang hoạt động khá tốt.

28

Có lẽ câu trả lời này là gian lận, nhưng có vẻ lạ khi không ai nhắc đến dự án rpy , cung cấp giao diện giữa R và Python. Bạn nhận được một api pythonic cho hầu hết các chức năng của R trong khi vẫn giữ cú pháp (tôi sẽ tranh luận đẹp hơn), xử lý dữ liệu và trong một số trường hợp tốc độ của Python. Không chắc là Python sẽ có nhiều công cụ thống kê cạnh chảy máu như R, chỉ vì R là một dsl và cộng đồng thống kê được đầu tư vào R nhiều hơn bất kỳ ngôn ngữ nào khác.

Tôi thấy điều này tương tự như sử dụng ORM để tận dụng các lợi thế của SQL, trong khi để Python là Python và SQL là SQL.

Các gói hữu ích khác dành riêng cho cấu trúc dữ liệu bao gồm:

  • pydataframe sao chép data.frame và có thể được sử dụng với rpy. Cho phép bạn sử dụng tính năng lọc và hoạt động giống như R.
  • pyTables Sử dụng kiểu dữ liệu hdf5 nhanh bên dưới, có từ rất lâu đời
  • h5py Cũng hdf5, nhưng đặc biệt nhằm mục đích tương tác với numpy
  • pandas Một dự án khác quản lý data.frame như dữ liệu, hoạt động với rpy, pyTables và numpy

1
Tôi luôn thấy luộm thuộm khi làm việc. Nó yêu cầu các dòng mã lớn với một số chức năng đơn giản, ví dụ.
Néstor

Có lẽ phần mở rộng rmagic cho IPython (như được chỉ ra bởi @CarlSmith) có thể giúp làm việc với rpy2 dễ dàng hơn? Xem ipython.org/ipython-doc/dev/config/extensions/rmagic.html .
Jonathan

26

Tôi là một nhà sinh học trong thực chất là một cửa hàng R (~ 80 người sử dụng R làm công cụ chính của họ). Tuy nhiên, tôi dành khoảng 3/4 thời gian để làm việc với Python. Tôi gán điều này chủ yếu cho thực tế là công việc của tôi liên quan đến phương pháp tiếp cận Bayesian và máy học để mô hình hóa thống kê. Python đánh gần điểm ngọt hiệu suất / năng suất hơn R, ít nhất là đối với các phương pháp thống kê dựa trên lặp hoặc dựa trên mô phỏng. Nếu tôi đang thực hiện ANOVAS, hồi quy và kiểm tra thống kê, tôi chắc chắn rằng tôi chủ yếu sẽ sử dụng R. Tuy nhiên, hầu hết những gì tôi cần, không có sẵn dưới dạng gói R đóng hộp.


5
+1 để phân biệt khu vực thống kê nào bạn làm việc. Có các lĩnh vực tính toán thống kê (ví dụ: phân tích văn bản phi cấu trúc và tầm nhìn máy tính) có rất nhiều chức năng tồn tại trong Python và Python dường như là ngôn ngữ chung trong các tên miền phụ đó. Tôi nghĩ rằng nơi cộng đồng Python phải bắt kịp đang cải thiện cấu trúc dữ liệu và ngữ nghĩa xung quanh mô hình thống kê cổ điển mà thiết kế của R rất giỏi. Các nhà phát triển scikits.statsmodels đang đạt được nhiều tiến bộ trên mặt trận đó: scikits.appspot.com/statsmodels
Josh Hemann

26

Tôi muốn nói rằng từ quan điểm của một người phụ thuộc rất nhiều vào các mô hình tuyến tính cho công việc thống kê của tôi và yêu thích Python về các khía cạnh khác trong công việc của tôi, tôi đã rất thất vọng về Python như một nền tảng để làm bất cứ điều gì ngoài những thống kê khá cơ bản.

Tôi thấy R có sự hỗ trợ tốt hơn từ cộng đồng thống kê, triển khai mô hình tuyến tính tốt hơn nhiều và thẳng thắn từ khía cạnh thống kê của mọi thứ, ngay cả với các bản phân phối xuất sắc như Enth think, Python cảm thấy hơi giống với Wild West.

Và trừ khi bạn đang làm việc một mình, tỷ lệ bạn có các cộng tác viên sử dụng Python để thống kê, tại thời điểm này, là khá mong manh.


26

Thực sự không cần phải từ bỏ R cho Python. Nếu bạn sử dụng IPython với một ngăn xếp đầy đủ, bạn có các phần mở rộng R, Octave và Cython, vì vậy bạn có thể dễ dàng và sử dụng sạch các ngôn ngữ đó trong sổ ghi chép IPython của mình. Bạn cũng có hỗ trợ để chuyển các giá trị giữa chúng và không gian tên Python của bạn. Bạn có thể xuất dữ liệu của mình dưới dạng các ô, sử dụng matplotlib và như các biểu thức toán học được hiển thị đúng. Có rất nhiều tính năng khác và bạn có thể thực hiện tất cả điều này trong trình duyệt của mình.

IPython đã đi một chặng đường dài :)


19

Những gì bạn đang tìm kiếm được gọi là Sage: http://www.sagemath.org/

Nó là một giao diện trực tuyến tuyệt vời cho sự kết hợp được xây dựng tốt của các công cụ Python cho toán học.


4
Điểm tuyệt vời của Sage là về cơ bản nó là sự kết hợp của một số công cụ miễn phí tuyệt vời cho toán học, thống kê, phân tích dữ liệu, v.v. Nó không chỉ là Python; nó có quyền truy cập vào R, maxima, GLPK, GSL, v.v.
shabbychef

18

Rpy2 - chơi với R ở lại Python ...

Xây dựng thêm theo yêu cầu của Gung:

Tài liệu Rpy2 có thể được tìm thấy tại http://rpy.sourceforge.net/rpy2/doc-dev/html/int sinhtion.html

Từ tài liệu, Giao diện cấp cao trong rpy2 được thiết kế để tạo thuận lợi cho việc sử dụng R bởi các lập trình viên Python. 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 ràng buộc với các đối tượng đó trong một số trường hợp. Phần này cũng có phần giới thiệu về đồ họa với các sơ đồ R: trellis (mạng tinh thể) cũng như ngữ pháp của đồ họa được triển khai trong ggplot2, hãy tạo một sơ đồ phức tạp và nhiều thông tin với ít mã được viết, trong khi đồ họa lưới bên dưới cho phép tất cả các tùy chỉnh có thể được phác thảo.

Tại sao tôi thích nó:

Tôi có thể xử lý dữ liệu của mình bằng tính linh hoạt của python, biến nó thành ma trận bằng cách sử dụng numpy hoặc gấu trúc và thực hiện tính toán trong R và lấy lại các đối tượng r để xử lý bài. Tôi sử dụng kinh tế lượng và python đơn giản là sẽ không có các công cụ thống kê cạnh chảy máu của R. Và R sẽ không bao giờ linh hoạt như python. Điều này đòi hỏi bạn phải hiểu R. May mắn thay, nó có một cộng đồng nhà phát triển tốt đẹp.

Bản thân Rpy2 cũng được hỗ trợ tốt và các quý ông ủng hộ nó thường xuyên đến các diễn đàn SO. Cài đặt Windows có thể hơi đau - https://stackoverflow.com/questions/5068760/bizzarre-su-trying-to-make-rpy2-2-1-9-work-with-r-2-12-1-USE -python-2-6-un? rq = 1 có thể giúp ích.


1
Chào mừng đến với trang web, @pythOnometrist. Tôi nghi ngờ đây là một đóng góp hữu ích. Bạn có phiền khi đưa ra một bản tóm tắt ngắn gọn về Rpy2, để độc giả có thể quyết định xem đó có phải là thứ họ đang tìm kiếm không?
gung

17

Tôi sử dụng Python để phân tích và dự báo thống kê. Như đã đề cập bởi những người khác ở trên, Numpy và Matplotlib là những con ngựa tốt. Tôi cũng sử dụng ReportLab để tạo đầu ra PDF.

Tôi hiện đang xem xét cả Resolver và Pysiverse là các ứng dụng bảng tính giống như Excel dựa trên Python. Resolver là một sản phẩm thương mại nhưng Pys tràn lan vẫn là nguồn mở. (Xin lỗi, tôi chỉ giới hạn ở một liên kết)


1
Lại một số công cụ thú vị. Tôi biết về Numpy, Matplotlib và ReportLab, nhưng Pys tràn lan dường như là một ý tưởng thú vị. Ít nhất tôi muốn gõ biểu thức Python trong các ô bảng tính. Mặc dù nó không giải quyết được tất cả các vấn đề có thể xảy ra, nhưng nó có thể tốt cho việc tạo mẫu và xử lý dữ liệu.
Fabian Fagerholm

1
+1 bảng tính trăn Wow! Chưa nghe nói về những điều đó. Tôi luôn mong muốn OpenOffice / LibreOffice sẽ thực sự nắm lấy và tích hợp kịch bản python trong phần mềm bảng tính của họ
Người dùng

15

tổng quan tuyệt vời cho đến nay. Tôi đang sử dụng python (cụ thể là scipy + matplotlib) để thay thế matlab kể từ 3 năm làm việc tại trường Đại học. Thỉnh thoảng tôi vẫn quay lại vì tôi quen thuộc với các thư viện cụ thể, ví dụ như gói wavelet matlab hoàn toàn tuyệt vời.

Tôi thích bản phân phối http:// enth think.com/ python. Đó là thương mại, nhưng miễn phí cho mục đích học thuật và, theo như tôi biết, hoàn toàn là nguồn mở. Vì tôi đang làm việc với rất nhiều sinh viên, trước khi sử dụng, đôi khi họ gặp rắc rối khi cài đặt numpy, scipy, ipython, v.v. Enth think cung cấp trình cài đặt cho Windows, Linux và Mac.

Hai gói khác đáng nói:

  1. ipython (đã đi kèm với enth think) vỏ tiên tiến tuyệt vời. một đoạn giới thiệu tốt có trên showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. nltk - bộ công cụ ngôn ngữ tự nhiên http://www.nltk.org/ gói tuyệt vời trong trường hợp bạn muốn thực hiện một số thống kê / học máy trên bất kỳ kho văn bản nào.


12

Đây là một câu hỏi thú vị, với một số câu trả lời tuyệt vời.

Bạn có thể tìm thấy một số cuộc thảo luận hữu ích trong một bài báo mà tôi đã viết với Roseline Bilina. Phiên bản cuối cùng có tại đây: http://www.enac.fr/recherche/leea/Steve%20Lawford/ con / python_apers_Vvised.pdf (gần đây đã xuất hiện, dưới dạng này, dưới dạng "Python cho nghiên cứu thống nhất về Kinh tế lượng và Thống kê ", Trong Đánh giá kinh tế lượng (2012), 31 (5), 558-591).


10

Có lẽ không liên quan trực tiếp, nhưng R có môi trường GUI đẹp cho các phiên tương tác (chỉnh sửa: trên Mac / Windows). IPython rất tốt nhưng đối với một môi trường gần gũi hơn với Matlab, bạn có thể thử Spyder hoặc IEP. Tôi đã có may mắn hơn khi sử dụng IEP, nhưng Spyder có vẻ hứa hẹn hơn.

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

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

Và trang web IEP bao gồm một so sánh ngắn gọn về phần mềm liên quan: http://code.google.com.vn/p/iep/wiki/Alternigin


9

Tôi tìm thấy một đoạn giới thiệu tuyệt vời về gấu trúc ở đây mà tôi đề nghị kiểm tra. Pandas là một bộ công cụ tuyệt vời và cung cấp khả năng phân tích dữ liệu cấp cao của R với các thư viện và chất lượng sản xuất rộng lớn của Python.

Bài đăng trên blog này cung cấp một giới thiệu tuyệt vời cho Pandas từ quan điểm của một người mới bắt đầu hoàn chỉnh:

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


3
Bạn có thể vui lòng viết một vài từ về những phẩm chất làm cho nó trở nên "tuyệt vời" để người đọc có thể xác định trước liệu việc xem nó có phù hợp với họ không?
whuber

1
Lấy làm tiếc. Chỉ cần nhận ra tôi đã đính kèm các liên kết sai trong bài viết gốc của tôi.
padawan

8

Tôi nên thêm tiếng hét cho Sho, môi trường điện toán số được xây dựng trên IronPython. Tôi đang sử dụng nó ngay bây giờ cho lớp học máy Stanford và nó thực sự hữu ích. Nó được xây dựng trong các gói đại số tuyến tính và khả năng biểu đồ. Là .Net thật dễ dàng để mở rộng với C # hoặc bất kỳ ngôn ngữ .Net nào khác. Tôi đã thấy dễ dàng hơn nhiều để bắt đầu, là một người dùng windows, hơn là Python và NumPy.


8

Không ai nhắc đến Orange trước đây:

Khai thác dữ liệu thông qua lập trình trực quan hoặc kịch bản Python. Linh kiện cho máy học. Tiện ích bổ sung cho tin sinh học và khai thác văn bản. Được đóng gói với các tính năng để phân tích dữ liệu.

Tôi không sử dụng nó hàng ngày, nhưng đó là điều bắt buộc đối với bất kỳ ai thích GUI hơn giao diện dòng lệnh.

Ngay cả khi bạn thích cái thứ hai, Orange vẫn là một thứ tốt để làm quen, vì bạn có thể dễ dàng nhập các mảnh Orange vào tập lệnh Python của mình trong trường hợp bạn cần một số chức năng của nó.


7

Lưu ý rằng SPSS Statistics có giao diện Python tích hợp (cũng R). Vì vậy, bạn có thể viết các chương trình Python sử dụng các quy trình Thống kê và tạo đầu ra Thống kê được định dạng độc đáo thông thường hoặc trả kết quả cho chương trình của bạn để xử lý thêm. Hoặc bạn có thể chạy các chương trình Python trong luồng lệnh Statistics. Bạn vẫn phải biết ngôn ngữ lệnh Thống kê, nhưng bạn có thể tận dụng tất cả việc quản lý dữ liệu, đầu ra trình bày, vv mà Thống kê cung cấp cũng như các quy trình.


7

So sánh gần đây từ DataCamp cung cấp hình ảnh rõ ràng về R và Python.

Việc sử dụng hai ngôn ngữ này trong lĩnh vực phân tích dữ liệu. Python thường được sử dụng khi các nhiệm vụ phân tích dữ liệu cần được tích hợp với các ứng dụng web hoặc nếu mã thống kê cần được tích hợp vào cơ sở dữ liệu sản xuất. R chủ yếu được sử dụng khi các tác vụ phân tích dữ liệu yêu cầu tính toán hoặc phân tích độc lập trên các máy chủ riêng lẻ.

Tôi thấy nó rất hữu ích trong blog này và hy vọng nó cũng sẽ giúp những người khác hiểu được các xu hướng gần đây trong cả hai ngôn ngữ này. Julia cũng đang đến trong khu vực. Hi vọng điêu nay co ich !


6

Tôi tin rằng Python là một bàn làm việc vượt trội trong lĩnh vực của tôi. Tôi thực hiện nhiều thao tác cạo, sắp xếp dữ liệu, công việc dữ liệu lớn, phân tích mạng, mô hình Bayes và mô phỏng. Tất cả những điều này thường cần tốc độ và tính linh hoạt vì vậy tôi thấy Python hoạt động tốt hơn R trong những trường hợp này. Dưới đây là một vài điều về Python mà tôi thích (một số được đề cập ở trên, những điểm khác thì không):

Cú pháp -Cleaner; mã dễ đọc hơn. Tôi tin rằng Python là một ngôn ngữ hiện đại và phù hợp hơn về mặt cú pháp.

-Python có Notebook, Ipython và các công cụ tuyệt vời khác để chia sẻ mã, cộng tác, xuất bản.

-iPython's notebook cho phép một người sử dụng R trong mã Python của một người để luôn có thể quay lại R.

- Nhanh hơn đáng kể mà không cần truy cập C. Sử dụng Cython, NUMBA và các phương thức tích hợp C khác sẽ đưa mã của bạn đạt tốc độ tương đương với C. Điều này, theo như tôi biết, không thể đạt được trong R.

-Pandas, Numpy và Scipy thổi R tiêu chuẩn ra khỏi nước. Có, có một vài điều mà R có thể làm trong một dòng nhưng mất Pandas 3 hoặc 4. Tuy nhiên, nói chung, Pandas có thể xử lý các tập dữ liệu lớn hơn, dễ sử dụng hơn và cung cấp sự linh hoạt đáng kinh ngạc khi tích hợp với Python khác gói và phương pháp.

-Python ổn định hơn. Hãy thử tải một tập dữ liệu 2gig vào RStudio.

-Một gói gọn gàng mà dường như không được đề cập ở trên là PyMC3 - gói chung tuyệt vời cho hầu hết mô hình Bayes của bạn.

-Một số, ở trên đã đề cập đến ggplot2 và grub về sự vắng mặt của nó với Python. Nếu bạn đã từng sử dụng các chức năng vẽ đồ thị của Matlab và / hoặc đã sử dụng matplotlib trong Python thì bạn sẽ biết rằng các tùy chọn sau thường có khả năng cao hơn nhiều so với ggplot2.

Tuy nhiên, có lẽ R dễ học hơn và tôi thường xuyên sử dụng nó trong trường hợp tôi chưa quá quen thuộc với các quy trình mô hình hóa. Trong trường hợp đó, độ sâu của các thư viện thống kê ngoài luồng là không thể đánh bại. Lý tưởng nhất, tôi sẽ biết cả hai đủ tốt để có thể sử dụng khi cần.


5

Đối với những người phải làm việc dưới Windows, Anaconda ( https://store.cContuum.io/cshop/anaconda/ ) thực sự giúp ích rất nhiều. Cài đặt các gói trong Windows là một vấn đề đau đầu. Với Anaconda được cài đặt, bạn có thể thiết lập môi trường phát triển sẵn sàng sử dụng với một lớp lót.

Ví dụ với

conda create -n stats_env python pip numpy scipy matplotlib pandas

tất cả các gói này sẽ được tìm nạp và cài đặt tự động.


5

Python còn một chặng đường dài trước khi có thể so sánh với R. Nó có các gói ít hơn đáng kể so với R và có chất lượng thấp hơn. Những người bám vào những điều cơ bản hoặc chỉ dựa vào thư viện tùy chỉnh của họ có thể thực hiện công việc của họ bằng Python nhưng nếu bạn là người cần các giải pháp định lượng tiên tiến hơn, tôi dám nói rằng không có gì đến gần R ngoài đó.

Cũng cần lưu ý rằng, cho đến nay, Python không có IDE kiểu Matlab khoa học phù hợp có thể so sánh với R-Studio (xin đừng nói Spyder) và bạn cần phải xử lý mọi thứ trên bảng điều khiển. Nói chung, toàn bộ trải nghiệm Python đòi hỏi một lượng "đam mê" tốt mà hầu hết mọi người thiếu và không quan tâm.

Đừng hiểu lầm tôi, tôi yêu Python, đây thực sự là ngôn ngữ yêu thích của tôi, không giống như R, là ngôn ngữ lập trình thực sự . Tuy nhiên, khi nói đến phân tích dữ liệu thuần túy, tôi phụ thuộc vào R, cho đến nay là giải pháp chuyên biệt và phát triển nhất cho đến nay. Tôi sử dụng Python khi tôi cần kết hợp phân tích dữ liệu với công nghệ phần mềm, ví dụ: tạo một công cụ sẽ thực hiện tự động hóa trên các phương thức mà lần đầu tiên tôi lập trình trong tập lệnh R bẩn. Trong nhiều trường hợp, tôi sử dụng rpy2 để gọi R từ Python vì trong phần lớn các trường hợp, các gói R tốt hơn rất nhiều (hoặc hoàn toàn không tồn tại trong Python). Bằng cách này, tôi cố gắng để có được tốt nhất của cả hai thế giới.

Tôi vẫn sử dụng một số Matlab để phát triển thuật toán thuần túy vì tôi thích cú pháp và tốc độ kiểu toán học của nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.