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

['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["//raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range[1,17]]

Lọc pandas dataframe theo giá trị cột

Chọ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]
  1. Dữ liệu được lọc [sau khi đặt con] được lưu trữ trên khung dữ liệu mới có tên là
    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]
    
    5
  2. Ký hiệu
    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]
    
    6 đề cập đến điều kiện
    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]
    
    7 có nghĩa là đáp ứng cả hai tiêu chí
  3. Phần mã này
    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]
    
    8 trả về True/False. Đúng khi điều kiện thỏa mãn và Sai khi điều kiện không thỏa mãn. Sau đó, nó được truyền trong df và trả về tất cả các hàng tương ứng với True. Nó trả về 4166 hàng

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ột

Giả 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à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]
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ọa
import 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["//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["//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["//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ột

Giả 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["//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["//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["//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ện

Dấ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["//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 Dataframe

Với việc sử dụng hàm
newdf = 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["//raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range[1,17]]
7

Chuỗi lọc trong Pandas Dataframe

Nó 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["//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ụng
newdf = 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["//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àm
newdf = 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

Hàm
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ọc

Hã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 pandas

Bạ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úc

Cả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ụng
newdf = 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
Chia sẻ Chia sẻ Tweet Đăng ký

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.

Chủ Đề