Câu hỏi đầu tiên thực sự là tại sao mọi người làm việc hiệu quả hơn với trừu tượng DataFrame hơn là trừu tượng SQL thuần túy.
TLDR; SQL không hướng đến quá trình phát triển và gỡ lỗi (con người), DataFrames là.
Lý do chính là các tóm tắt DataFrame cho phép bạn xây dựng các câu lệnh SQL trong khi tránh dài dòng và lồng nhau không thể đọc được. Mô hình viết các thói quen lồng nhau, nhận xét chúng để kiểm tra chúng, và sau đó bỏ qua chúng được thay thế bằng các dòng chuyển đổi duy nhất. Bạn có thể tự nhiên chạy mọi thứ theo từng dòng trong một thay thế (ngay cả trong Spark) và xem kết quả.
Xem xét ví dụ, về việc thêm một cột được chuyển đổi mới (cột xâu chuỗi) vào một bảng, sau đó nhóm theo nó và thực hiện một số phép gộp. SQL trở nên khá xấu xí. Gấu trúc có thể giải quyết điều này nhưng thiếu một số thứ khi nói đến dữ liệu thực sự lớn hoặc trong các phân vùng cụ thể (có lẽ được cải thiện gần đây).
DataFrames nên được xem như là một API cấp cao cho các thói quen SQL, ngay cả khi với gấu trúc, chúng hoàn toàn không được kết xuất với một số trình hoạch định SQL.
-
Bạn có thể có nhiều cuộc thảo luận kỹ thuật xung quanh vấn đề này, nhưng tôi đang xem xét quan điểm người dùng bên dưới.
Một lý do đơn giản tại sao bạn có thể thấy nhiều câu hỏi hơn xung quanh thao tác dữ liệu của Pandas trái ngược với SQL là sử dụng SQL, theo định nghĩa, có nghĩa là sử dụng cơ sở dữ liệu và rất nhiều trường hợp sử dụng ngày nay chỉ đơn giản là yêu cầu bit dữ liệu cho ' nhiệm vụ một lần và thực hiện (từ .csv, web api, v.v.). Trong các trường hợp này, tải, lưu trữ, thao tác và trích xuất từ cơ sở dữ liệu là không khả thi.
Tuy nhiên, xem xét các trường hợp trong trường hợp sử dụng có thể biện minh cho việc sử dụng Pandas hoặc SQL, bạn chắc chắn không sai. Nếu bạn muốn thực hiện nhiều tác vụ thao tác dữ liệu lặp đi lặp lại và duy trì kết quả đầu ra, tôi luôn khuyên bạn nên thử qua SQL trước. Từ những gì tôi đã thấy lý do tại sao nhiều người dùng, ngay cả trong những trường hợp này, không thông qua SQL là hai lần.
Thứ nhất, gấu trúc có lợi thế lớn hơn SQL là nó là một phần của vũ trụ Python rộng hơn, có nghĩa là trong một cú trượt tôi có thể tải, dọn dẹp, thao tác và trực quan hóa dữ liệu của mình (tôi thậm chí có thể thực thi SQL thông qua Pandas ...). Một điều khác, khá đơn giản là tất cả quá nhiều người dùng không biết mức độ của các khả năng của SQL. Mọi người mới bắt đầu học 'cú pháp trích xuất' của SQL (CHỌN, TỪ, Ở ĐÂU, v.v.) như một phương tiện để đưa dữ liệu của bạn từ DB đến nơi tiếp theo. Một số có thể chọn một số cú pháp nhóm và lặp trước nâng cao hơn. Nhưng sau đó, có xu hướng có một lỗ hổng kiến thức khá lớn, cho đến khi bạn tìm đến các chuyên gia (DBA, Data Engineers, v.v.).
tl; dr: Nó thường tùy thuộc vào trường hợp sử dụng, sự thuận tiện hoặc lỗ hổng kiến thức về phạm vi khả năng của SQL.