Giới thiệu
Trong bài đăng này, tôi sẽ chỉ cho bạn cách thực hiện Phân tích dữ liệu với tính năng lọc kiểu SQL với Pandas. Hầu hết dữ liệu của công ty doanh nghiệp được lưu trữ trong cơ sở dữ liệu yêu cầu SQL truy xuất và xử lý dữ liệu đó. Ví dụ, có những công ty như Oracle, IBM, Microsoft có cơ sở dữ liệu của riêng họ với các triển khai SQL của riêng họ.
Các nhà khoa học dữ liệu phải xử lý SQL ở một số giai đoạn trong sự nghiệp của họ vì dữ liệu không phải lúc nào cũng được lưu trữ trong các tệp CSV. Cá nhân tôi thích sử dụng Oracle hơn vì phần lớn dữ liệu của công ty tôi được lưu trữ trong Oracle.
Tình huống - 1 Giả sử chúng tôi được giao nhiệm vụ tìm tất cả phim từ tập dữ liệu phim của chúng tôi với các điều kiện dưới đây.
- Ngôn ngữ của phim phải là tiếng Anh (en) hoặc tiếng Tây Ban Nha.
- Mức độ phổ biến của các bộ phim phải từ 500 đến 1000.
- Trạng thái của phim phải được công bố.
- Số phiếu bầu phải lớn hơn 5000. Đối với trường hợp trên, câu lệnh SQL sẽ trông giống như bên dưới.
SELECTFROM WHEREtitle AS movie_title, original_language AS movie_language, sự nổi tiếng trước>Bây giờ bạn đã thấy SQL cho yêu cầu, hãy làm điều này từng bước bằng cách sử dụng pandas. Tôi sẽ chỉ cho bạn hai phương pháp.
Phương pháp 1:- Lập chỉ mục Boolean
1. Tải tập dữ liệu phim_data vào DataFrame.
nhập gấu trúc dưới dạng pd movies =pd.read_csv ("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")Chỉ định một biến cho mỗi điều kiện.
Languages =["en", "es"] condition_on_languages =phim. ngôn ngữ gốc . isin (ngôn ngữ) condition_on_status =phim. status =="Đã phát hành" condition_on_popularity =phim. phổ biến . giữa (500, 1000) condition_on_votecount =phim. vote_count> 50003. Kết hợp tất cả các điều kiện (mảng boolean) với nhau.
final_conditions =(condition_on_languages &condition_on_status &condition_on_popularity &condition_on_votecount) cột =["title", "original_language", "status", "phổ biến", "vote_count"] # nhóm tất cả các phim lại với nhau. loc [final_conditions, column]
title | original_language | trạng thái | phổ biến | vote_count |
---|---|---|---|---|
95 Interstellar | vi | Đã phát hành | 724.247784 | 10867 |
788Deadpool | vi | Đã phát hành | 514.569956 | 10995 |
Phương pháp 2:- Phương thức .query ().
Phương thức .query () là một phương thức kiểu mệnh đề SQL để lọc dữ liệu. Các điều kiện có thể được chuyển dưới dạng một chuỗi cho phương thức này, tuy nhiên, tên cột không được chứa bất kỳ khoảng trắng nào.
Nếu bạn có khoảng trắng trong tên cột của mình, hãy thay thế chúng bằng dấu gạch dưới bằng cách sử dụng hàm thay thế python.
Từ kinh nghiệm của mình, tôi đã thấy phương thức query () khi được áp dụng trên DataFrame lớn hơn nhanh hơn phương pháp trước đó.
nhập gấu trúc dưới dạng pd phim =pd. read_csv ("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")
4 Xây dựng chuỗi truy vấn và thực thi phương thức.
Lưu ý rằng phương thức .query không hoạt động với ba chuỗi được trích dẫn kéo dài nhiều dòng.
final_conditions =("original_language in ['en', 'es']" "và trạng thái =='Đã phát hành'" "và mức độ phổ biến> 500" "và mức độ phổ biến <1000" "và vote_count> 5000") final_result =phim . truy vấn (final_conditions) final_result
| ngân sách | id | original_language | original_title | phổ biến | release_date | doanh thu | thời gian chạy | st |
---|---|---|---|---|---|---|---|---|---|
95 | 165000000 | 157336 | vi | Interstellar | 724.247784 | 5/11/2014 | 675120017 | 169.0 | Phát hành |
788 | 58000000 | 293660 | vi | Deadpool | 514.569956 | 09/02/2016 | 783112979 | 108.0 | Phát hành |
Còn nhiều hơn nữa, thường là trong quá trình viết mã của tôi, tôi có nhiều giá trị để kiểm tra trong mệnh đề “in” của mình. Vì vậy, cú pháp trên không phải là lý tưởng để làm việc với. Có thể tham chiếu các biến Python bằng ký hiệu at (@).
Bạn cũng có thể lập trình tạo các giá trị dưới dạng Danh sách python và sử dụng chúng với (@).
movie_languages =['en', 'es'] final_conditions =("original_language trong @movie_languages" "và trạng thái ==" Đã phát hành "" và mức độ phổ biến> 500 "" và mức độ phổ biến <1000 "" và vote_count> 5000 " ) final_result =phim. truy vấn (final_conditions) final_result
| ngân sách | id | original_language | original_title | phổ biến | release_date | doanh thu | thời gian chạy | st |
---|---|---|---|---|---|---|---|---|---|
95 | 165000000 | 157336 | vi | Interstellar | 724.247784 | 5/11/2014 | 675120017 | 169.0 | Phát hành |
788 | 58000000 | 293660 | vi | Deadpool | 514.569956 | 09/02/2016 | 783112979 | 108.0 | Phát hành |