Cách loại trừ dữ liệu trong python
Khung dữ liệu. loc lấy hàng và cột tương ứng. Trong trường hợp này, ". ” chỉ ra tất cả các hàng và ~df. cột. isin([‘Salary’]) chỉ ra tất cả các cột ngoại trừ “Lương”. Do đó, một khung dữ liệu mới được tạo bằng cách loại trừ cột "Lương"
Chúng tôi sẽ sử dụng tập dữ liệu chứa thông tin chi tiết về các chuyến bay khởi hành từ NYC vào năm 2013. Tập dữ liệu này có 336776 hàng và 16 cột. Xem tên cột bên dưới. Để nhập tập dữ liệu, chúng tôi đang sử dụng hàm newdf.head() Out[23]: year month day dep_time .. air_time distance hour minute 3 2013 1 1 544.0 .. 183.0 1576 5.0 44.0 8 2013 1 1 557.0 .. 140.0 944 5.0 57.0 10 2013 1 1 558.0 .. 149.0 1028 5.0 58.0 11 2013 1 1 558.0 .. 158.0 1005 5.0 58.0 15 2013 1 1 559.0 .. 44.0 187 5.0 59.0 [5 rows x 16 columns]2 từ gói gấu trúc Show
['year', 'month', 'day', 'dep_time', 'dep_delay', 'arr_time', 'arr_delay', 'carrier', 'tailnum', 'flight', 'origin', 'dest', 'air_time', 'distance', 'hour', 'minute'] import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17)) Lọc pandas dataframe theo giá trị cộtChọn chi tiết chuyến bay của JetBlue Airways có 2 chữ cái mã hãng hàng không newdf.head() Out[23]: year month day dep_time .. air_time distance hour minute 3 2013 1 1 544.0 .. 183.0 1576 5.0 44.0 8 2013 1 1 557.0 .. 140.0 944 5.0 57.0 10 2013 1 1 558.0 .. 149.0 1028 5.0 58.0 11 2013 1 1 558.0 .. 158.0 1005 5.0 58.0 15 2013 1 1 559.0 .. 44.0 187 5.0 59.0 [5 rows x 16 columns]3 xuất phát từ sân bay newdf.head() Out[23]: year month day dep_time .. air_time distance hour minute 3 2013 1 1 544.0 .. 183.0 1576 5.0 44.0 8 2013 1 1 557.0 .. 140.0 944 5.0 57.0 10 2013 1 1 558.0 .. 149.0 1028 5.0 58.0 11 2013 1 1 558.0 .. 158.0 1005 5.0 58.0 15 2013 1 1 559.0 .. 44.0 187 5.0 59.0 [5 rows x 16 columns]4 Phương pháp 1. Cách khung dữ liệu newdf = df[(df.origin == "JFK") & (df.carrier == "B6")] newdf.head() Out[23]: year month day dep_time .. air_time distance hour minute 3 2013 1 1 544.0 .. 183.0 1576 5.0 44.0 8 2013 1 1 557.0 .. 140.0 944 5.0 57.0 10 2013 1 1 558.0 .. 149.0 1028 5.0 58.0 11 2013 1 1 558.0 .. 158.0 1005 5.0 58.0 15 2013 1 1 559.0 .. 44.0 187 5.0 59.0 [5 rows x 16 columns]
Phương pháp 2. Chức năng truy vấn Trong gói gấu trúc, có nhiều cách để thực hiện lọc. Đoạn mã trên cũng có thể được viết giống như đoạn mã dưới đây. Phương pháp này thanh lịch và dễ đọc hơn và bạn không cần phải đề cập đến tên khung dữ liệu mỗi khi bạn chỉ định các cột (biến).newdf = df.query('origin == "JFK" & carrier == "B6"')Cách truyền biến trong hàm truy vấn Phương pháp 3. chức năng định vị loc là viết tắt của thuật ngữ vị trí. Cả 3 phương thức này đều trả về cùng một đầu ra. Đó chỉ là một cách khác để lọc hàng.newdf = df.loc[(df.origin == "JFK") & (df.carrier == "B6")] Lọc khung dữ liệu Pandas theo vị trí hàng và cộtGiả sử bạn muốn chọn các hàng cụ thể theo vị trí của chúng (giả sử từ hàng thứ hai đến hàng thứ năm). Chúng ta có thể sử dụng hàmnewdf.head() Out[23]: year month day dep_time .. air_time distance hour minute 3 2013 1 1 544.0 .. 183.0 1576 5.0 44.0 8 2013 1 1 557.0 .. 140.0 944 5.0 57.0 10 2013 1 1 558.0 .. 149.0 1028 5.0 58.0 11 2013 1 1 558.0 .. 158.0 1005 5.0 58.0 15 2013 1 1 559.0 .. 44.0 187 5.0 59.0 [5 rows x 16 columns]9 cho cùng một Lập chỉ mục trong python bắt đầu từ con số không. df. iloc[0. 5,] đề cập đến hàng đầu tiên đến hàng thứ năm (không bao gồm điểm cuối hàng thứ 6 ở đây). df. iloc[0. 5,] tương đương với df. iloc[. 5,] df.iloc[:5,] #First 5 rows df.iloc[1:5,] #Second to Fifth row df.iloc[5,0] #Sixth row and 1st column df.iloc[1:5,0] #Second to Fifth row, first column df.iloc[1:5,:5] #Second to Fifth row, first 5 columns df.iloc[2:7,1:3] #Third to Seventh row, 2nd and 3rd column Sự khác biệt giữa chức năng loc và iloc loc xem xét các hàng dựa trên nhãn chỉ mục. Trong khi iloc xem xét các hàng dựa trên vị trí trong chỉ mục nên nó chỉ lấy số nguyên. Hãy tạo một dữ liệu mẫu để minh họaimport numpy as np x = pd.DataFrame({"col1" : np.arange(1,20,2)}, index=[9,8,7,6,0, 1, 2, 3, 4, 5]) col1 9 1 8 3 7 5 6 7 0 9 1 11 2 13 3 15 4 17 5 19 iloc - Vị trí chỉ mục____17_______Chọn hàng dựa trên chỉ mục hoặc vị trí hàng loc - Nhãn chỉ mục import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))0Chọn hàng dựa trên nhãn của chỉ mục Làm thế nào newdf = df.query('origin == "JFK" & carrier == "B6"')0 trả về 6 hàng (bao gồm 5 là phần tử thứ 6)? Đó là bởi vì newdf = df.query('origin == "JFK" & carrier == "B6"')1 không tạo ra đầu ra dựa trên vị trí chỉ số. Nó chỉ xem xét các nhãn của chỉ mục cũng có thể là bảng chữ cái và bao gồm cả điểm bắt đầu và điểm kết thúc. Tham khảo ví dụ bên dưới import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))1 Lọc khung dữ liệu gấu trúc theo vị trí hàng và tên cộtỞ đây chúng tôi đang chọn năm hàng đầu tiên của hai cột có tên gốc và đích.import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))2 newdf = df.query('origin == "JFK" & carrier == "B6"')2 trả về nhãn chỉ mục. df. chỉ mục [0. 5] là bắt buộc thay vì 0. 5 (không có df. index) vì các nhãn chỉ mục không phải lúc nào cũng theo thứ tự và bắt đầu từ 0. Nó có thể bắt đầu từ bất kỳ số nào hoặc thậm chí có thể có các chữ cái trong bảng chữ cái. Tham khảo ví dụ mà chúng tôi đã so sánh iloc và loc Chọn nhiều giá trị của một cộtGiả sử bạn muốn bao gồm tất cả các chi tiết chuyến bay có điểm xuất phát là JFK hoặc LGA.import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))3_______11_______3 ngụ ý điều kiện HOẶC có nghĩa là bất kỳ điều kiện nào đúng. newdf = df.query('origin == "JFK" & carrier == "B6"')4 tương tự như toán tử IN trong SAS và R, có thể nhận nhiều giá trị và áp dụng điều kiện OR. Đảm bảo bạn chỉ định các giá trị trong danh sách [ ] Chọn các hàng có giá trị cột không bằng một giá trị cụ thểTrong ví dụ này, chúng tôi đang xóa tất cả các chi tiết chuyến bay có nguồn gốc từ JFK.newdf = df.query('origin == "JFK" & carrier == "B6"')5 ngụ ý KHÔNG BẰNG. import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))4Hãy kiểm tra xem dòng mã trên có hoạt động tốt hay không bằng cách xem xét các giá trị duy nhất của cột gốc trong newdf. import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))5 Làm thế nào để phủ nhận toàn bộ điều kiệnDấu ngãnewdf = df.query('origin == "JFK" & carrier == "B6"')6 được dùng để phủ định điều kiện. Nó tương đương với toán tử NOT trong SAS và R. import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))6 Chọn dữ liệu không bị thiếu trong Pandas DataframeVới việc sử dụng hàmnewdf = df.query('origin == "JFK" & carrier == "B6"')7, bạn có thể loại trừ hoặc loại bỏ các giá trị NA và NAN. Trong ví dụ bên dưới, chúng tôi đang xóa các giá trị bị thiếu khỏi cột gốc. Vì khung dữ liệu này không chứa bất kỳ giá trị trống nào, nên bạn sẽ tìm thấy cùng một số hàng trong newdf. import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))7 Chuỗi lọc trong Pandas DataframeNó thường được coi là khó khăn để xử lý dữ liệu văn bản. Nhưng python giúp dễ dàng hơn khi xử lý các cột ký tự hoặc chuỗi. Hãy chuẩn bị một dữ liệu giả chẳng hạn.import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))8 Chọn các hàng có giá trị bắt đầu từ chữ 'A' Bằng cách sử dụngnewdf = df.query('origin == "JFK" & carrier == "B6"')8, bạn có thể kích hoạt các hàm chuỗi và có thể áp dụng trên pandas dataframe. str[0] có nghĩa là chữ cái đầu tiên. import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))9 Lọc các hàng có độ dài chuỗi lớn hơn 3 Hàmnewdf = df.query('origin == "JFK" & carrier == "B6"')9 tính độ dài của iterable. newdf = df[(df.origin == "JFK") & (df.carrier == "B6")]0 Chọn chuỗi chứa chữ cái A hoặc B newdf = df.loc[(df.origin == "JFK") & (df.carrier == "B6")]0 tương tự như câu lệnh LIKE trong SQL và SAS. Bạn có thể tập hợp con dữ liệu bằng cách đề cập đến mẫu trong hàm chứa (). newdf = df[(df.origin == "JFK") & (df.carrier == "B6")]1 Xử lý khoảng trắng trong tên cột khi lọcHãy đổi tên cột var1 với khoảng trắng ở giữa var 1 Chúng ta có thể đổi tên cột bằng cách sử dụng chức năng đổi tên.newdf = df[(df.origin == "JFK") & (df.carrier == "B6")]2Bằng cách sử dụng dấu ngược newdf = df.loc[(df.origin == "JFK") & (df.carrier == "B6")]1, chúng tôi có thể bao gồm cột có khoảng trống. Xem mã ví dụ bên dưới. newdf = df[(df.origin == "JFK") & (df.carrier == "B6")]3 Backticks được hỗ trợ từ phiên bản 0. 25 gói gấu trúc. Chạy lệnh này trong bảng điều khiển để kiểm tra phiên bản gấu trúc newdf.head() Out[23]: year month day dep_time .. air_time distance hour minute 3 2013 1 1 544.0 .. 183.0 1576 5.0 44.0 8 2013 1 1 557.0 .. 140.0 944 5.0 57.0 10 2013 1 1 558.0 .. 149.0 1028 5.0 58.0 11 2013 1 1 558.0 .. 158.0 1005 5.0 58.0 15 2013 1 1 559.0 .. 44.0 187 5.0 59.0 [5 rows x 16 columns]0 Nếu bạn có phiên bản trước phiên bản 0. 25 bạn có thể nâng cấp nó bằng cách sử dụng lệnh này newdf = df.loc[(df.origin == "JFK") & (df.carrier == "B6")]3 Cách lọc dữ liệu mà không cần sử dụng gói pandasBạn có thể thực hiện lọc bằng các phương thức python thuần túy mà không phụ thuộc vào gói gấu trúcCảnh báo. Các phương pháp hiển thị bên dưới để lọc không hiệu quả. Mục tiêu chính của việc hiển thị các phương pháp sau là chỉ ra cách thực hiện cài đặt con mà không cần sử dụng gói gấu trúc. Trong dự án trực tiếp của bạn, bạn nên sử dụng các hàm dựng sẵn của gấu trúc (truy vấn(), loc[ ], iloc[ ]) đã được giải thích ở trên Chúng tôi không cần tạo một khung dữ liệu để lưu trữ dữ liệu. Chúng ta có thể lưu trữ nó trong cấu trúc dữ liệu danh sách.newdf = df.loc[(df.origin == "JFK") & (df.carrier == "B6")]4 chứa dữ liệu chuyến bay được nhập từ tệp CSV. newdf = df[(df.origin == "JFK") & (df.carrier == "B6")]4 Phương pháp Lambda để lọc Lambda là một cách khác để xác định hàm do người dùng xác định. Với việc sử dụng lambda, bạn có thể xác định chức năng trong một dòng mã. Bạn có thể kiểm tra liên kết này để tìm hiểu thêm về nó.newdf = df[(df.origin == "JFK") & (df.carrier == "B6")]5Nếu bạn đang thắc mắc cách sử dụng hàm lambda này trên khung dữ liệu, bạn có thể gửi mã bên dưới. newdf = df[(df.origin == "JFK") & (df.carrier == "B6")]6 Liệt kê phương pháp hiểu để lọc Khả năng hiểu danh sách là một giải pháp thay thế cho hàm lambda và làm cho mã dễ đọc hơn. Hướng dẫn chi tiết. Khả năng hiểu danh sách_______5_______7Bạn có thể sử dụng khả năng hiểu danh sách trên khung dữ liệu như cách hiển thị bên dưới.newdf = df[(df.origin == "JFK") & (df.carrier == "B6")]8 Tạo lớp để lọc Python là một ngôn ngữ lập trình hướng đối tượng trong đó mã được triển khai bằng cách sử dụngnewdf = df.loc[(df.origin == "JFK") & (df.carrier == "B6")]5. newdf = df[(df.origin == "JFK") & (df.carrier == "B6")]9 Học Python. 50 hướng dẫn Python hàng đầu Thông báo bài viết liên quan về tác giả Deepanshu thành lập ListenData với một mục tiêu đơn giản - Làm cho các phân tích trở nên dễ hiểu và dễ theo dõi. Ông có hơn 10 năm kinh nghiệm trong lĩnh vực khoa học dữ liệu. Trong nhiệm kỳ của mình, ông đã làm việc với các khách hàng toàn cầu trong nhiều lĩnh vực khác nhau như Ngân hàng, Bảo hiểm, Cổ phần tư nhân, Viễn thông và Nhân sự Làm cách nào để lọc dữ liệu trong gấu trúc?Chọn các cột cụ thể bằng cách sử dụng các giá trị cột trong phương thức khung dữ liệu. . Cắt bằng cách sử dụng chỉ mục để lọc các hàng. . Lọc hàng và cột bằng hàm iloc(). . Lọc các hàng và cột bằng phương thức loc() (cắt bằng nhãn). Lọc khung dữ liệu gấu trúc bằng các điều kiện quan hệ. . Sử dụng chức năng truy vấn Làm cách nào để chọn mọi cột ngoại trừ trong gấu trúc?Chọn tất cả trừ một cột bằng cách sử dụng phương pháp drop() trong gấu trúc
. Lưu ý rằng drop() cũng được sử dụng để thả hàng từ pandas DataFrame. Để xóa các cột, hãy sử dụng axis=1 hoặc cột param. ví dụ df.
Làm cách nào để loại trừ gấu trúc cột cuối cùng?Sử dụng từ khóa del để bỏ cột cuối cùng của khung dữ liệu Pandas
. cột [-1]] để xóa cột cuối cùng của DataFrame. |