Làm cách nào để xóa NaN khỏi khung dữ liệu?

Khi bạn nhận được tập dữ liệu, có thể có một số giá trị NaN. Pandas Dropna là một phương pháp hữu ích cho phép bạn loại bỏ các giá trị NaN của khung dữ liệu. Trong toàn bộ bài viết này, tôi sẽ chỉ cho bạn các ví dụ khác nhau về cách xử lý các giá trị NaN bằng phương thức drona[]

Cú pháp cho phương thức Pandas Dropna[]

your_dataframe.dropna[axis=0, how='any', thresh=None, subset=None, inplace=False]

giải thích thông số

axis : Requires two values 0 and 1.

how: any or all value. If you use any, then all NaN rows or columns will be removed.

thresh: Require that many non-NA values.

subset : Labels along other axis to consider.

inplace : Default is False. If it it set to True, then do operation inplace

 

Các bước để xóa NaN khỏi Dataframe bằng pandas dropna

Bước 1. Nhập tất cả các thư viện cần thiết

Trong các ví dụ của chúng tôi, Chúng tôi đang sử dụng NumPy để đặt các giá trị NaN và gấu trúc để tạo khung dữ liệu. Hãy nhập chúng

import numpy as np
import pandas as pd

Bước 2. Tạo một khung dữ liệu Pandas

Trong bước này, trước tiên tôi sẽ tạo một khung dữ liệu gấu trúc với các giá trị NaN. Có một phương pháp để tạo các giá trị NaN. Và đó là numpy. nan. Thực thi các dòng mã được cung cấp bên dưới để tạo Khung dữ liệu Pandas

Trong hàm tạo chuỗi pandas, phương thức có tên dropna[] được sử dụng để xóa các giá trị bị thiếu khỏi đối tượng chuỗi. Và nó không cập nhật đối tượng sê-ri ban đầu với các giá trị NaN đã bị xóa thay vì cập nhật đối tượng sê-ri ban đầu, nó sẽ trả về một đối tượng sê-ri khác với các giá trị được cập nhật

Các tham số của phương thức dropna[] là axis, inplace và how

ví dụ 1

# importing packages
import pandas as pd
import numpy as np

# Creating Series objects
sr = pd.Series[[42, np.nan, 55, 42, np.nan, 73, np.nan, 55, 76, 87], index=list["ABCDEFGHIJ"]]

print['Series object:',sr]

# Remove missing elements
result = sr.dropna[]

# display output
print[result]

Giải trình

Ban đầu, chúng tôi đã tạo một Sê-ri gấu trúc với các giá trị chỉ mục được gắn nhãn và có một số giá trị Nan có trong đối tượng sê-ri. Sau khi tạo một đối tượng chuỗi gấu trúc, chúng tôi đã áp dụng phương thức dropna[] để xóa các giá trị bị thiếu

đầu ra

Series object:
A 42.0
B  NaN
C 55.0
D 42.0
E  NaN
F 73.0
G  NaN
H 55.0
I 76.0
J 87.0
dtype: float64

A 42.0
C 55.0
D 42.0
F 73.0
H 55.0
I 76.0
J 87.0
dtype: float64

Trong khối đầu ra ở trên, chúng ta có thể thấy cả đối tượng chuỗi ban đầu và chuỗi kết quả. Đối tượng sê-ri thứ hai là đối tượng đầu ra với các giá trị bị thiếu đã bị xóa

ví dụ 2

# importing packages
import pandas as pd
import numpy as np

dates = pd.date_range['2021-06-01', periods=10, freq='D']

#creating pandas Series with date index
sr = pd.Series[[np.nan, 61, 72, 11, np.nan, 24, 56, 30, np.nan, 55], index=dates]

print['Series object:',sr]

# Remove missing elements
result = sr.dropna[]

# display output
print[result]

Giải trình

Trong ví dụ sau, chúng tôi đã tạo một Sê-ri pandas với các giá trị chỉ mục phạm vi ngày và có một số giá trị Nan có trong đối tượng sê-ri “sr”. Sau khi tạo một đối tượng chuỗi gấu trúc, chúng tôi đã áp dụng phương thức dropna[] để xóa các giá trị Nan đó

đầu ra

Series object:
2021-06-01  NaN
2021-06-02 61.0
2021-06-03 72.0
2021-06-04 11.0
2021-06-05  NaN
2021-06-06 24.0
2021-06-07 56.0
2021-06-08 30.0
2021-06-09  NaN
2021-06-10 55.0
Freq: D, dtype: float64

2021-06-02 61.0
2021-06-03 72.0
2021-06-04 11.0
2021-06-06 24.0
2021-06-07 56.0
2021-06-08 30.0
2021-06-10 55.0
dtype: float64

Ở đây, chúng tôi có một đối tượng sê-ri mới với các giá trị Nan đã bị xóa. Trong khối đầu ra ở trên, chúng ta có thể thấy cả đối tượng chuỗi ban đầu và chuỗi kết quả. Đối tượng đầu tiên là chuỗi ban đầu và đối tượng thứ hai là đầu ra của phương thức dropna[]

Để loại bỏ các giá trị còn thiếu tôi. e. các giá trị NaN, hãy sử dụng phương thức dropna[]. Đầu tiên, chúng ta hãy nhập thư viện cần thiết -

import pandas as pd

Đọc CSV và tạo DataFrame -

________số 8_______

Sử dụng dropna[] để xóa các giá trị còn thiếu. NaN sẽ được hiển thị cho các giá trị bị thiếu sau khi dropna[] được sử dụng -

Trên thực tế, phần lớn các bộ dữ liệu được thu thập chứa các giá trị bị thiếu do lỗi thủ công, không có sẵn thông tin, v.v. Mặc dù có nhiều cách khác nhau để xử lý các giá trị bị thiếu, nhưng đôi khi bạn không có lựa chọn nào khác ngoài việc loại bỏ các hàng đó khỏi tập dữ liệu. Một phương pháp phổ biến để thả hàng và cột là sử dụng hàm `dropna` của gấu trúc

Trong bài viết này, bạn sẽ tìm hiểu về các chức năng khác nhau của phương thức này để loại bỏ các hàng có giá trị bị thiếu, sau đó là một số mẹo thiết thực để sử dụng phương thức

print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
9 của gấu trúc

Tạo một khung dữ liệu cơ bản

import pandas as pd

# Create the data of the DataFrame as a dictionary
data_dict = {'Name': ['Ankit', 'Aman', 'Riya', 'Ayush', 'Anushka'],
             'ID': [4001, 4002, np.nan, np.nan, 4010], # Use np.nan to create missing values
             'Department': ['Technical', np.nan, np.nan, np.nan, 'Marketing'],
             'Qualification': [np.nan, np.nan, np.nan, np.nan, 'M.A.']}

# Create the DataFrame
df = pd.DataFrame[data_dict]

df

Chức năng dropna của gấu trúc

  • cú pháp. gấu trúc. Khung dữ liệu. dropna[axis = 0, how =’bất kỳ’, thresh = Không, tập hợp con = Không, inplace=False]
  • Mục đích. Để xóa các giá trị còn thiếu khỏi DataFrame
  • Thông số
    • trục. 0 hoặc 1 [mặc định. 0]. Chỉ định hướng theo đó các giá trị bị thiếu sẽ được tìm kiếm. Truyền giá trị 0 cho tham số này tìm kiếm xuống các hàng. Chuyển giá trị 1 cho tham số này để xem qua các cột
    • Làm sao. 'bất kỳ' hoặc 'tất cả' [mặc định. 'bất kỳ']. Nếu nó được đặt thành 'bất kỳ', hàng/cột có ít nhất một giá trị bị thiếu sẽ bị loại bỏ. Nếu nó được đặt thành 'tất cả', thì chỉ những hàng/cột thiếu tất cả các giá trị sẽ bị loại bỏ
    • tuốt lúa. Số nguyên [mặc định. Không có]. Số giá trị bị thiếu tối đa trong một hàng hoặc cột sẽ bị hàm này bỏ qua
    • tập hợp con. mảng [mặc định. Không có]. Nó được sử dụng để chỉ định các nhãn cụ thể dọc theo trục không được chỉ định trong tham số trục trong đó các giá trị   bị thiếu sẽ được tìm kiếm
    • thay thế. Boolean [mặc định. Sai]. Biểu thị nếu các giá trị bị thiếu sẽ bị loại bỏ trong DataFrame gốc hoặc nếu một DataFrame mới có các giá trị bị thiếu sẽ được trả lại
  • trả lại. Nếu tại chỗ được đặt thành 'True' thì Không có. Nếu nó được đặt thành 'Sai', thì DataFrame

Giảm các hàng có ít nhất 1 giá trị bị thiếu

Để xóa tất cả các hàng có ít nhất một giá trị bị thiếu, giá trị của tham số trục phải là 0 và tham số cách được đặt thành 'bất kỳ'. Vì đây là các giá trị mặc định của tham số nên bạn không cần truyền bất kỳ đối số nào cho hàm. Đây là usecase đơn giản nhất của hàm gấu trúc

print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
9

print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
Original DataFrame:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.


DataFrame after dropping the rows having missing values:
      Name      ID Department Qualification
4  Anushka  4010.0  Marketing          M.A.

Xoá các cột có ít nhất 1 giá trị bị thiếu

Để xóa tất cả các cột có ít nhất một giá trị bị thiếu, hãy chuyển giá trị 1 cho tham số trục thành

Original DataFrame:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.


DataFrame after dropping the rows having missing values:
      Name      ID Department Qualification
4  Anushka  4010.0  Marketing          M.A.
1

print['Original DataFrame:']
print[df]
print['\n']

# Drop all columns that have at least one missing value
print['DataFrame after dropping the columns having missing values:']
print[df.dropna[axis=1]]
Original DataFrame:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.


DataFrame after dropping the columns having missing values:
      Name
0    Ankit
1     Aman
2     Riya
3    Ayush
4  Anushka

Chỉ bỏ hàng hoặc cột khi tất cả các giá trị là null

Với sự trợ giúp của chức năng này, bạn cũng có thể xóa tất cả các hàng và cột có tất cả các giá trị là giá trị null

Bỏ tất cả các hàng có tất cả các giá trị là giá trị null

data_dict = {'Name': ['Ankit', 'Aman', np.nan, 'Ayush', 'Anushka'],
             'ID': [4001, 4002, np.nan, np.nan, 4010],
             'Department': ['Technical', np.nan, np.nan, np.nan, 'Marketing'],
             'Qualification': [np.nan, np.nan, np.nan, np.nan, 'M.A.']}

df = pd.DataFrame[data_dict]

df

Để loại bỏ tất cả các hàng chỉ chứa các giá trị bị thiếu, hãy chuyển giá trị 0 cho tham số trục và đặt giá trị _______13_______2.

print['Original DataFrame:']
print[df]
print['\n']

# Drop only those rows where all the row values are null values
print['DataFrame after dropping the rows where all the values were null values:']
print[df.dropna[axis=0, how='all']]
Original DataFrame:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.


DataFrame after dropping the rows where all the values were null values:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.

Ở đây, không có cột nào chứa giá trị bị thiếu trong tất cả các cột. Do đó, không có hàng nào bị loại bỏ

Bỏ tất cả các cột trong đó tất cả các giá trị là giá trị null

Trong các trường hợp cụ thể, bạn có thể gặp các cột chứa đầy giá trị rỗng [thông tin không được thu thập]. Những điều này chắc chắn phải được bỏ

data_dict = {'Name': ['Ankit', 'Aman', 'Riya', 'Ayush', 'Anushka'],
             'ID': [4001, 4002, np.nan, np.nan, 4010],
             'Department': ['Technical', np.nan, np.nan, np.nan, 'Marketing'],
             'Qualification': [np.nan, np.nan, np.nan, np.nan, np.nan]}

df = pd.DataFrame[data_dict]

df

Để loại bỏ tất cả các cột chỉ chứa các giá trị bị thiếu, hãy chuyển giá trị 1 cho tham số trục và giá trị 'tất cả' cho tham số cách.

print['Original DataFrame:']
print[df]
print['\n']

# Drop only those columns where all values are null values
print['DataFrame after dropping the columns where all the values were null values:']
print[df.dropna[axis=1, how='all']]
print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
0

Làm cách nào để loại bỏ các hàng/cột chứa các giá trị bị thiếu trên một ngưỡng nhất định?

Trong một số trường hợp nhất định, bạn không muốn loại bỏ một hàng có rất ít giá trị bị thiếu, vì vậy pandas

print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
9 cung cấp cho bạn tùy chọn để đặt ngưỡng. Để chỉ xóa những hàng hoặc cột thiếu giá trị trên một ngưỡng nhất định, bạn cần chuyển một giá trị ngưỡng cho tham số ngưỡng

Tham số `thresh` biểu thị số lượng giá trị không bị thiếu cần thiết để giữ lại hàng/cột

print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
1
print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
2

Xoá hàng nếu các giá trị bị thiếu chỉ xuất hiện trong các cột cụ thể

Original DataFrame:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.


DataFrame after dropping the rows having missing values:
      Name      ID Department Qualification
4  Anushka  4010.0  Marketing          M.A.
4 cũng cung cấp cho bạn tùy chọn xóa các hàng bằng cách tìm kiếm các giá trị rỗng hoặc bị thiếu trên các cột được chỉ định

Để tìm kiếm các giá trị null trong các cột cụ thể, hãy chuyển tên cột cho tham số tập hợp con. Nó có thể lấy danh sách tên cột hoặc vị trí cột

print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
3_______9_______4

Hãy nhìn vào các tên cột

print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
5
print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
6

Những mẹo có ích

  1. Trong trường hợp hạn chế về bộ nhớ, hãy sử dụng tham số inplace. Đặt giá trị của nó là True để các thay đổi sẽ diễn ra trong chính DataFrame ban đầu và DataFrame mới sẽ không được tạo
  2. Xin lưu ý rằng trong khi thả hàng hoặc cột bằng cách sử dụng tham số cách và đặt giá trị của nó là 'tất cả' , hàm sẽ chỉ xóa những nhãn có tất cả giá trị của nó bị thiếu hoặc giá trị null
  3. Trong khi xóa cột, bạn cũng có thể chuyển nhãn hàng cho tham số tập hợp con để tìm kiếm các hàng chứa giá trị bị thiếu

Thí dụ

Nhận khóa học Python hoàn chỉnh miễn phí

Đối mặt với tình huống tương tự như những người khác?

Xây dựng sự nghiệp khoa học dữ liệu của bạn với bằng cấp được ngành công nhận trên toàn cầu. Có được tư duy, sự tự tin và các kỹ năng khiến Nhà khoa học dữ liệu trở nên có giá trị

Nhận khóa học Python hoàn chỉnh miễn phí

Xây dựng sự nghiệp khoa học dữ liệu của bạn với bằng cấp được ngành công nhận trên toàn cầu. Có được tư duy, sự tự tin và các kỹ năng khiến Nhà khoa học dữ liệu trở nên có giá trị

print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
7
print['Original DataFrame:']
print[df]
print['\n']

# Default configuration drops rows having at least 1 missing value
print['DataFrame after dropping the rows having missing values:']
print[df.dropna[]]
8

Phần kết luận

Trong bài viết này, bạn đã học về pandas dropna bằng cách sử dụng

Original DataFrame:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.


DataFrame after dropping the rows having missing values:
      Name      ID Department Qualification
4  Anushka  4010.0  Marketing          M.A.
4 và sử dụng các tham số khác nhau của nó như tập hợp con, cách thức và đập. Nếu bạn muốn tìm hiểu thêm về các chức năng khác nhau của thư viện pandas, hãy xem 101 Bài tập Pandas về Phân tích Dữ liệu

Chúng tôi cũng đã có khóa học Pandas cho Khoa học dữ liệu toàn diện nhất bao gồm Pandas chuyên sâu

Kiểm tra kiến ​​thức của bạn

Q1. Cấu hình mặc định của

Original DataFrame:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.


DataFrame after dropping the rows having missing values:
      Name      ID Department Qualification
4  Anushka  4010.0  Marketing          M.A.
4 xóa tất cả các hàng có giá trị bị thiếu khỏi DataFrame. Đúng hay sai?

Câu trả lời

Câu trả lời. Thật

quý 2. Tham số nào được sử dụng để chỉ định nhãn hàng hoặc cột sẽ được đưa vào khi xóa giá trị bị thiếu?

Câu trả lời

Câu trả lời. Hàm tập hợp con

Q3. Viết mã để loại bỏ các hàng có nhiều hơn hai giá trị bị thiếu khỏi DataFrame df

Câu trả lời

Câu trả lời.

Original DataFrame:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.


DataFrame after dropping the rows having missing values:
      Name      ID Department Qualification
4  Anushka  4010.0  Marketing          M.A.
7

Q4. Viết mã để chỉ xóa các cột đó khỏi DataFrame chỉ chứa các giá trị null

Câu trả lời

Câu trả lời.

Original DataFrame:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.


DataFrame after dropping the rows having missing values:
      Name      ID Department Qualification
4  Anushka  4010.0  Marketing          M.A.
8

Q5. Viết mã để xóa các hàng khỏi DataFrame df, đặc biệt là trong các hàng có giá trị của cột 'col_3' là null

Câu trả lời

Câu trả lời.

Original DataFrame:
      Name      ID Department Qualification
0    Ankit  4001.0  Technical           NaN
1     Aman  4002.0        NaN           NaN
2     Riya     NaN        NaN           NaN
3    Ayush     NaN        NaN           NaN
4  Anushka  4010.0  Marketing          M.A.


DataFrame after dropping the rows having missing values:
      Name      ID Department Qualification
4  Anushka  4010.0  Marketing          M.A.
9

Bài viết được đóng góp bởi Shreyansh B và Shri Varsheni

MáyHọcPlus

Machine Learning Plus được tạo thành từ một nhóm những người nhiệt tình đam mê Khoa học dữ liệu. Họ giúp các Nhà phát triển, Nhà quản lý doanh nghiệp và Nhà khoa học dữ liệu tuyệt vời trở nên giỏi hơn trong công việc của họ

Làm cách nào để xóa các giá trị NaN khỏi DataFrame của gấu trúc?

Chức năng dropna[] của Pandas DataFrame
Pandas thả tất cả các hàng với bất kỳ giá trị Null/NaN/NaT nào
Bỏ tất cả các cột với bất kỳ giá trị nào bị thiếu
Chỉ thả hàng/cột nếu tất cả các giá trị là Null
DataFrame Drop Rows/Columns khi vượt qua ngưỡng giá trị null
Xác định Nhãn để tìm giá trị null
Giảm hàng với NA tại chỗ

Làm cách nào để xóa các giá trị NaN trong Sê-ri gấu trúc?

Sử dụng phương thức dropna[] để xóa giá trị NaN khỏi chuỗi . Hãy sử dụng Sê-ri. dropna[] để xóa các giá trị NaN [thiếu] khỏi Sê-ri ban đầu để nhận một sê-ri mới. Phương thức này trả về một Sê-ri mới sau khi loại bỏ tất cả các giá trị NAN.

Chủ Đề