Có nhiều cách để chọn và lập chỉ mục các hàng và cột từ Pandas DataFrames. Tôi thấy các hướng dẫn trực tuyến tập trung vào các lựa chọn nâng cao của các lựa chọn hàng và cột hơi phức tạp đối với các yêu cầu của tôi, nhưng việc thành thạo các bộ chọn iloc, loc và ix của Pandas thực sự có thể được thực hiện khá đơn giản
Tùy chọn lựa chọn
Có ba tùy chọn chính để đạt được các hoạt động lựa chọn và lập chỉ mục trong Pandas, điều này có thể gây nhầm lẫn. Ba trường hợp lựa chọn và phương pháp được đề cập trong bài đăng này là
- Chọn dữ liệu theo số hàng [. iloc]
- Chọn dữ liệu theo nhãn hoặc theo câu lệnh điều kiện [. lộc]
- Chọn lọc theo phương pháp kết hợp [. ix] [hiện không dùng nữa trong Pandas 0. 20. 1]
Thiết lập dữ liệu
Bài đăng trên blog này, lấy cảm hứng từ các hướng dẫn khác, mô tả các hoạt động lựa chọn với các hoạt động này. Hướng dẫn phù hợp với tình hình khoa học dữ liệu nói chung, trong đó, tôi thường thấy mình
- Mỗi hàng trong khung dữ liệu của bạn đại diện cho một mẫu dữ liệu
- Mỗi cột là một biến và thường được đặt tên. Tôi hiếm khi chọn các cột không có tên của chúng
- Tôi cần nhanh chóng và thường xuyên chọn các hàng có liên quan từ khung dữ liệu cho các hoạt động mô hình hóa và trực quan hóa
Đối với những người chưa quen, thư viện Pandas dành cho Python cung cấp các công cụ phân tích dữ liệu và cấu trúc dữ liệu hiệu suất cao, dễ sử dụng để xử lý dữ liệu dạng bảng trong “sê-ri” và trong “khung dữ liệu”. Thật tuyệt vời khi giúp quá trình xử lý dữ liệu của bạn dễ dàng hơn và trước đây tôi đã viết về việc nhóm và tóm tắt dữ liệu với Pandas
Phương pháp lựa chọn và lập chỉ mục cho Pandas DataFrames
Đối với những dữ liệu khám phá này, chúng tôi sẽ cần một số dữ liệu mẫu – Tôi đã tải bộ dữ liệu mẫu uk-500 xuống từ www. briandunning. com. Dữ liệu này chứa tên giả, địa chỉ, công ty và số điện thoại của các nhân vật hư cấu ở Vương quốc Anh. Để theo dõi, bạn có thể tải về. tệp csv tại đây. Tải dữ liệu như sau [các sơ đồ ở đây lấy từ sổ ghi chép Jupyter trong bản cài đặt Anaconda Python]
Xem mã trên Gist
1. Pandas iloc lựa chọn dữ liệu
Trình lập chỉ mục iloc cho Pandas Dataframe được sử dụng để lập chỉ mục/lựa chọn dựa trên vị trí số nguyên theo vị trí
The iloc indexer syntax is data.iloc[, ], which is sure to be a source of confusion for R users. “iloc” in pandas is used to select rows and columns by number, in the order that they appear in the data frame. You can imagine that each row has a row number from 0 to the total rows [data.shape[0]] and iloc[] allows selections based on these numbers. The same applies for columns [ranging from 0 to data.shape[1] ]
Có hai "đối số" để iloc - bộ chọn hàng và bộ chọn cột. Ví dụ
Xem mã trên Gist
Nhiều cột và hàng có thể được chọn cùng nhau bằng cách sử dụng. người lập chỉ mục iloc
Xem mã trên Gist
Có hai vấn đề cần nhớ khi sử dụng iloc theo cách này
- Lưu ý rằng. iloc trả về Sê-ri Pandas khi một hàng được chọn và Khung dữ liệu Pandas khi nhiều hàng được chọn hoặc nếu bất kỳ cột nào đầy đủ được chọn. Để chống lại điều này, hãy chuyển một danh sách có giá trị đơn nếu bạn yêu cầu đầu ra DataFrame
Trong thực tế, tôi hiếm khi sử dụng bộ chỉ mục iloc, trừ khi tôi muốn cái đầu tiên [. iloc[0] ] hoặc cái cuối cùng [. iloc[-1] ] hàng của khung dữ liệu
2. Pandas loc lựa chọn dữ liệu
Bộ chỉ mục vị trí của Pandas có thể được sử dụng với DataFrames cho hai trường hợp sử dụng khác nhau
- a. ] Chọn hàng theo nhãn/chỉ mục
- b. ] Chọn các hàng có tra cứu boolean/có điều kiện
The loc indexer is used with the same syntax as iloc: data.loc[, ] .
2a. Lập chỉ mục dựa trên nhãn / Dựa trên chỉ mục bằng cách sử dụng. lộc
Selections using the loc method are based on the index of the data frame [if any]. Where the index is set on a DataFrame, using df.set_index[]
, the .loc method directly selects based on index values of any rows. For example, setting the index of our test data frame to the persons “last_name”:
Xem mã trên Gist
Now with the index set, we can directly select rows for different “last_name” values using .loc[] – either singly, or in multiples. For example:
Chọn các cột có. loc bằng tên của các cột. Trong hầu hết công việc dữ liệu của tôi, tôi thường đặt tên cột và sử dụng các lựa chọn được đặt tên này
Bạn có thể chọn phạm vi nhãn chỉ mục – dữ liệu lựa chọn. loc[‘Bruch’. 'Julio'] sẽ trả về tất cả các hàng trong khung dữ liệu giữa các mục nhập chỉ mục cho "Bruch" và "Julio". Các ví dụ sau bây giờ sẽ có ý nghĩa
Xem mã trên Gist
Lưu ý rằng trong ví dụ trước, dữ liệu. loc[487] [hàng có giá trị chỉ mục 487] không bằng dữ liệu. iloc[487] [hàng thứ 487 trong dữ liệu]. Chỉ mục của DataFrame có thể không theo thứ tự số và/hoặc chuỗi hoặc đa giá trị
2b. Pandas Loc Boolean / Lập chỉ mục logic
Conditional selections with boolean arrays using data.loc[] is the most common method that I use with Pandas DataFrames. With boolean indexing or logical selection, you pass an array or Series of True/False values to the .loc indexer to select the rows where your Series has True values.
Trong hầu hết các trường hợp sử dụng, bạn sẽ thực hiện các lựa chọn dựa trên giá trị của các cột khác nhau trong tập dữ liệu của mình
Ví dụ: câu lệnh data['first_name'] == 'Antonio'] tạo ra Chuỗi Pandas có giá trị Đúng/Sai cho mọi hàng trong Khung dữ liệu 'dữ liệu', trong đó có các giá trị "Đúng" cho các hàng chứa first_name . Các loại mảng boolean này có thể được chuyển trực tiếp đến. loc chỉ mục như vậy
Như trước đây, một đối số thứ hai có thể được chuyển đến. loc để chọn các cột cụ thể ra khỏi khung dữ liệu. Một lần nữa, các cột được gọi theo tên cho bộ chỉ mục loc và có thể là một chuỗi đơn, danh sách các cột hoặc một lát “. " hoạt động
Lưu ý rằng khi chọn cột, nếu chỉ chọn một cột, thì. toán tử loc trả về một Sê-ri. Đối với DataFrame một cột, hãy sử dụng danh sách một phần tử để giữ định dạng DataFrame, chẳng hạn
Đảm bảo rằng bạn hiểu các ví dụ bổ sung sau đây về. lựa chọn loc cho rõ ràng
Xem mã trên Gist
Các lựa chọn logic và Sê-ri boolean cũng có thể được chuyển đến bộ chỉ mục [] chung của Khung dữ liệu gấu trúc và sẽ cho kết quả tương tự. dữ liệu. loc[data[‘id’] == 9] == data[data[‘id’] == 9]
3. Chọn dữ liệu gấu trúc bằng ix
Ghi chú. Bộ chỉ mục ix không còn được dùng trong các phiên bản gần đây của Pandas, bắt đầu từ phiên bản 0. 20. 1
Bộ chỉ mục ix[] là sự kết hợp của. định vị và. iloc. Nói chung, ix dựa trên nhãn và hoạt động giống như. người lập chỉ mục loc. Tuy nhiên,. ix cũng hỗ trợ các lựa chọn kiểu số nguyên [như trong. iloc] nơi đã truyền một số nguyên. Điều này chỉ hoạt động khi chỉ mục của DataFrame không dựa trên số nguyên. ix sẽ chấp nhận bất kỳ đầu vào nào của. định vị và. iloc
Phức tạp hơn một chút, tôi thích sử dụng rõ ràng. iloc và. loc để tránh kết quả không mong muốn
như một ví dụ
Xem mã trên Gist
Đặt giá trị trong DataFrames bằng cách sử dụng. lộc
Với một chút thay đổi về cú pháp, bạn thực sự có thể cập nhật DataFrame của mình theo cùng một câu lệnh khi bạn chọn và lọc bằng cách sử dụng. người lập chỉ mục loc. Mẫu cụ thể này cho phép bạn cập nhật các giá trị trong các cột tùy thuộc vào các điều kiện khác nhau. Thao tác cài đặt không tạo bản sao của khung dữ liệu mà chỉnh sửa dữ liệu gốc
như một ví dụ
Xem mã trên Gist
Đó là những điều cơ bản về lập chỉ mục và lựa chọn với Pandas. Nếu bạn đang tìm kiếm thêm, hãy xem qua. và. tại các hoạt động cho một số trình truy cập giá trị nâng cao hiệu suất hơn trong Tài liệu Pandas và hãy xem việc chọn theo các hàm có thể gọi để có thêm niềm vui về iloc và loc