Pandas là một công cụ đặc biệt cho phép chúng tôi thực hiện các thao tác dữ liệu phức tạp một cách hiệu quả và hiệu quả. Bên trong gấu trúc, chúng tôi chủ yếu xử lý tập dữ liệu ở dạng DataFrame. DataFrames là cấu trúc dữ liệu 2 chiều trong gấu trúc. DataFrames bao gồm các hàng, cột và dữ liệu
Tự động lọc khung dữ liệu gấu trúc
Vì vậy, chúng tôi đang tạo một Khung dữ liệu có nhiều cột và sau đó chúng tôi cần lọc df bằng cách sử dụng các ngưỡng cho ba cột
Chúng ta có thể làm điều này bằng cách áp dụng tất cả các điều kiện và nếu dữ liệu thỏa mãn điều kiện, đó sẽ là kết quả cuối cùng. Tuy nhiên, chúng ta cần thực hiện điều này bên trong một hàm trong đó tên của các ngưỡng và các cột được cung cấp dưới dạng từ điển
Với mục đích này, chúng tôi sẽ sử dụng một cách nhanh chóng và dễ dàng để thực hiện việc này. Chúng tôi sẽ xây dựng một truy vấn động bằng cách sử dụng khả năng hiểu danh sách và phương thức nối chuỗi
Cuối cùng, chúng ta có một phương thức gọi là gấu trúc. Khung dữ liệu. query [] bên trong đó chúng ta có thể chuyển bất kỳ truy vấn đã hiểu nào và nó sẽ tự động tính toán tất cả các kết quả
Pandas có các công cụ dễ sử dụng để lọc DataFrames của bạn, tuy nhiên, các phương thức cơ bản — như loc, iloc hoặc truyền biểu thức boolean — thiếu khả năng sử dụng chúng một cách thoải mái khi các tham số lọc không tĩnh. Phương thức DataFrame truy vấn đưa ra giải pháp cho vấn đề này
Đối với bài viết này, tôi sẽ sử dụng bộ dữ liệu Hiệu suất & Tỷ lệ Tiêu hao Nhân viên của IBM HR Analytics từ Kaggle
Khung dữ liệu. truy vấn
Phương thức truy vấn trên bề mặt hoạt động tương tự như mặt nạ boolean cơ bản mà chúng ta tìm hiểu đầu tiên khi tìm hiểu cách lọc trong Pandas. Hãy xem ví dụ dưới đây về một truy vấn
Ảnh chụp màn hình của tác giả
Bộ lọc trên tương đương với biểu thức sau
Ảnh chụp màn hình của tác giả
Sự khác biệt là chúng tôi đã tạo một biểu thức chuỗi — chuỗi truy vấn — để đánh giá và được sử dụng làm bộ lọc trên dữ liệu của chúng tôi. Chuỗi truy vấn được đánh giá theo từng hàng và bất cứ nơi nào nó trả về True, truy vấn sẽ trả về hàng đó
Tất nhiên chúng ta có thể xâu chuỗi các điều kiện bằng cách sử dụng các toán tử logic
Ảnh chụp màn hình của tác giả
Một số điều cần lưu ý khi tạo chuỗi truy vấn
- bạn đề cập đến tên biến bằng cách sử dụng tiền tố '@'
Ảnh chụp màn hình của tác giả
- Trong trường hợp đề cập đến các cột không phải là tên biến Python hợp lệ, bạn phải sử dụng backticks — ví dụ: khi tên cột chứa dấu cách, dấu câu khác không phải là dấu gạch dưới, bắt đầu bằng một chữ số
Lọc động
Sức mạnh của truy vấn phát huy tác dụng khi các biểu thức bộ lọc được viết tĩnh không còn đủ. Chúng tôi có thể xử lý trường hợp khi tiêu chí thay đổi để lọc một cột [thay vì kiểm tra sự bằng nhau, chúng tôi có thể sử dụng từ khóa “trong” và đặt tiêu chí vào danh sách, kiểm tra thành viên danh sách nơi nội dung của danh sách có thể được thay đổi tự do
Đây là một vấn đề thực tế tôi phải giải quyết trong một dự án. chúng tôi muốn theo dõi các thay đổi dữ liệu cho nhân viên trong dữ liệu tổng thể về nhân sự. đưa ra tháng trước và tháng hiện tại [giả sử dữ liệu vào ngày làm việc đầu tiên] cần trích xuất nhân viên và điểm dữ liệu nếu bất kỳ điểm dữ liệu nào trong phạm vi đã thay đổi. Những thách thức thực sự là cần nhiều hơn một đầu ra như vậy, các báo cáo khác nhau có các cột khác nhau để theo dõi và các bên liên quan rất muốn thay đổi các cột quan tâm, đôi khi hàng tháng
Vì những lý do này, tôi muốn một giải pháp có thể được sử dụng lại cho các báo cáo khác nhau và việc bảo trì dễ dàng. Đoạn mã dưới đây chỉ dựa trên giải pháp tôi đã sử dụng, không phải bản sao chính xác
Bước đầu tiên, chúng tôi cần hợp nhất dữ liệu của tháng trước và tháng hiện tại bằng cách sử dụng các cột mà chúng tôi đang theo dõi sự thay đổi và một số loại mã định danh [ví dụ: ID nhân viên] để có thể kết hợp hai bộ dữ liệu
Bước thứ hai là tạo chuỗi truy vấn dựa trên các cột chúng tôi đang theo dõi các thay đổi
Cuối cùng, tôi thích gói các lệnh gọi hàm thành một hàm gói, chỉ để giữ cho mọi thứ đơn giản
Chúng ta hãy nhìn vào đầu ra. Tôi đã tạo hai tập dữ liệu nhỏ hơn dựa trên dữ liệu tiêu hao của IBM, sau đó trộn ngẫu nhiên các giá trị cột trong tập thứ hai để chúng ta có thể thấy sự khác biệt
Ảnh chụp màn hình của tác giả
Theo dự định, các cột "Thay đổi" có giá trị True bất cứ khi nào có sự không khớp và tất cả các hàng đã được trả về nếu ít nhất một cột "Thay đổi" có giá trị True
Nếu danh sách các cột cần kiểm tra thay đổi, tôi chỉ phải thay đổi danh sách thực tế, phần còn lại để các chức năng lo
Ảnh chụp màn hình của tác giả
Ảnh chụp màn hình của tác giả
Xem xét việc xây dựng chuỗi truy vấn. vì danh sách các cột cần theo dõi được cung cấp tại lệnh gọi hàm và việc đặt tên cho các cột kiểm tra tính bình đẳng cũng có logic cố định, bằng cách lặp qua các tên cột trong phạm vi, chúng ta có thể dễ dàng tạo danh sách các chuỗi con của tiêu chí. Sau đó, chúng tôi chỉ tham gia cùng họ với “. ” để chúng tôi lấy lại tất cả các hàng có ít nhất một giá trị True
Ảnh chụp màn hình của tác giả
Tất nhiên, giải pháp tôi đã sử dụng chỉ là một cách tiếp cận để lọc động, tuy nhiên, đây là một cách thể hiện tốt về sức mạnh của chức năng truy vấn của Pandas. Trong trường hợp bạn muốn biết thêm, vui lòng truy cập tài liệu của truy vấn. Cảm ơn bạn đã đọc bài viết này, hy vọng bạn đã tìm thấy giá trị trong đó