2015-05-06 28 views
5

Tôi đã sử dụng numpy/scipy để phân tích dữ liệu. Gần đây tôi bắt đầu học Pandas.Python - Cải tiến chính của Pandas trên Numpy/Scipy

Tôi đã trải qua một vài hướng dẫn và tôi đang cố gắng hiểu những cải tiến chính của Pandas trên Numpy/Scipy là gì.

Dường như với tôi ý tưởng chính của Pandas là kết hợp các mảng cứng nhắc khác nhau trong một Khung dữ liệu, với một số chức năng tiện ích xung quanh nó.

Có điều gì đó cách mạng về Pandas mà tôi vừa mới bỏ lỡ?

Trả lời

10

Pandas không phải là đặc biệt cách mạng và không sử dụng các hệ sinh thái NumPy và scipy để hoàn thành mục tiêu đó là cùng với một số mã chủ chốt Cython. Nó có thể được xem như một API đơn giản hơn cho chức năng với việc bổ sung các tiện ích quan trọng như kết nối và khả năng nhóm đơn giản hơn, đặc biệt hữu ích cho những người có dữ liệu giống như bảng hoặc chuỗi thời gian. Nhưng, trong khi không cách mạng, Pandas có những lợi ích chính.

Trong một thời gian, tôi cũng đã nhận thấy Pandas chỉ là tiện ích trên đầu trang của NumPy cho những người thích giao diện DataFrame. Tuy nhiên, bây giờ tôi thấy Pandas là cung cấp các tính năng chính này (đây không phải là toàn diện):

  1. Array of Structures (lưu trữ độc lập các loại khác nhau thay vì lưu trữ liền kề mảng có cấu trúc trong NumPy) --- điều này sẽ cho phép xử lý nhanh hơn trong nhiều trường hợp.
  2. Giao diện đơn giản cho các hoạt động phổ biến (tải tệp, vẽ đồ thị, lựa chọn và tham gia/căn chỉnh dữ liệu) giúp dễ dàng thực hiện nhiều công việc với mã nhỏ.
  3. Mảng chỉ mục có nghĩa là các hoạt động luôn là được liên kết thay vì phải tự theo dõi liên kết.
  4. Split-Áp-Kết hợp là một cách mạnh mẽ của suy nghĩ về và thực hiện xử lý dữ liệu

Tuy nhiên, có nhược điểm để Pandas:

  1. Pandas cơ bản là một thư viện giao diện người dùng và không đặc biệt thích hợp để viết mã thư viện. Các tính năng "tự động" có thể giúp bạn liên tục sử dụng chúng ngay cả khi bạn không cần và làm chậm mã được gọi nhiều lần.
  2. Pandas thường chiếm nhiều bộ nhớ hơn vì nó là hào phóng với việc tạo ra các mảng đối tượng để giải quyết các vấn đề khác về những thứ như xử lý chuỗi.
  3. Nếu trường hợp sử dụng của bạn nằm ngoài phạm vi của những gì Pandas được thiết kế để thực hiện, nó sẽ nhanh chóng trở nên vụng về. Nhưng, trong phạm vi những gì nó được thiết kế để làm, Pandas là mạnh mẽ và dễ sử dụng để phân tích dữ liệu nhanh chóng.
8

Tôi cảm thấy giống như việc mô tả Pandas là "cải thiện" Numpy/SciPy nhớ nhiều điểm. Numpy/Scipy khá tập trung vào tính toán số hiệu quả và giải quyết các vấn đề số của loại mà các nhà khoa học và kỹ sư thường giải quyết. Nếu vấn đề của bạn bắt đầu với công thức và liên quan đến giải pháp số từ đó, bạn có thể tốt với hai người đó.

Pandas phù hợp hơn nhiều với các sự cố bắt đầu với dữ liệu được lưu trữ trong tệp hoặc cơ sở dữ liệu và chứa chuỗi cũng như số. Xem xét vấn đề đọc dữ liệu từ truy vấn cơ sở dữ liệu.Ở Pandas, bạn có thể trực tiếp read_sql_query và có phiên bản có thể sử dụng của dữ liệu trong một dòng. Không có chức năng tương đương trong Numpy/SciPy.

Đối với dữ liệu có chuỗi hoặc dữ liệu rời rạc thay vì liên tục, không có khả năng tương đương với khả năng groupby hoặc tham gia giống như cơ sở dữ liệu của bảng trên giá trị khớp.

Đối với chuỗi thời gian, có lợi ích lớn là handling time series data sử dụng chỉ mục ngày giờ, cho phép bạn định lại mẫu trơn tru theo các khoảng thời gian khác nhau, điền vào các giá trị và vẽ chuỗi của bạn vô cùng dễ dàng.

Vì nhiều sự cố của tôi bắt đầu cuộc sống của họ trong bảng tính, tôi cũng rất biết ơn việc xử lý tệp Excel tương đối minh bạch ở cả hai định dạng .xls.xlsx với uniform interface.

Ngoài ra còn có một hệ sinh thái lớn hơn, với các gói như seaborn cho phép phân tích thống kê trôi chảy hơn và mô hình phù hợp hơn là có thể với các công cụ numpy/scipy cơ bản.

0

Điểm chính là nó giới thiệu các cấu trúc dữ liệu mới như dataframes, panen vv và có giao diện tốt với cấu trúc và libs khác. Vì vậy, nói chung nó là một phần mở rộng tuyệt vời cho hệ sinh thái python hơn là một cải tiến so với các libs khác. Đối với tôi nó là một công cụ tuyệt vời trong số những người khác như gumpy, bcolz. Thường thì tôi sử dụng nó để định hình lại dữ liệu của mình, xem tổng quan trước khi bắt đầu thực hiện khai phá dữ liệu, v.v.

Các vấn đề liên quan