Tạo khung dữ liệu động trong python

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ố

Ảnh chụp màn hình của tác giả

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 đó

Chủ Đề