Hướng dẫn how do you skip nan in python? - làm thế nào để bạn bỏ qua nan trong python?

Hãy thử gọi

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
0 ngay trước cuộc gọi của bạn đến
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
1. Một ví dụ làm việc:

Show
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1': np.random.randint(0, 10, 12)})
df.loc[2] = np.nan
df.loc[5] = np.nan
df['col1'].unique()
### output: array([  4.,   0.,  nan,   8.,   1.,   3.,   2.,   6.])
df['col1'].dropna().unique()
### output: array([ 4.,  0.,  8.,  1.,  3.,  2.,  6.])

Mặc định là

df.dropna()
01, sao cho bất kỳ hàng hoặc cột nào (tùy thuộc vào từ khóa
df.dropna()
02) chứa giá trị null sẽ bị loại bỏ. Bạn cũng có thể chỉ định
df.dropna()
03, sẽ chỉ thả các hàng/cột là tất cả các giá trị null:

Đối với điều khiển chi tiết hơn, tham số

df.dropna()
00 cho phép bạn chỉ định số lượng giá trị không null tối thiểu cho hàng/cột được giữ:

df.dropna()

Ở đây hàng đầu tiên và hàng cuối cùng đã bị loại bỏ, vì chúng chỉ chứa hai giá trị không null.

Lấp đầy các giá trị null

Đôi khi thay vì bỏ các giá trị NA, bạn muốn thay thế chúng bằng một giá trị hợp lệ. Giá trị này có thể là một số duy nhất như số không, hoặc nó có thể là một loại cắt hoặc nội suy từ các giá trị tốt. Bạn có thể thực hiện tại chỗ bằng cách sử dụng phương thức

   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0
9 làm mặt nạ, nhưng vì đây là một hoạt động phổ biến như vậy cung cấp phương thức
df.reset_index(drop=True)
3, trả về một bản sao của mảng với các giá trị null được thay thế.

values_1 values_2
700 Hãy xem xét các
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()
df = df.reset_index(drop=True)

print (df)
1 sau đây:
Chúng ta có thể điền vào các mục NA với một giá trị duy nhất, chẳng hạn như Zero:150
500 350
Chúng tôi có thể chỉ định một forward filling để truyền giá trị trước đó:400
1200 5000

Hoặc chúng ta có thể chỉ định một phần quay ngược để truyền các giá trị tiếp theo ngược:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)

Đối với

df.reset_index(drop=True)
8s, các tùy chọn tương tự nhau, nhưng chúng tôi cũng có thể chỉ định
df.dropna()
02 cùng với việc điền vào đó:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000

Lưu ý rằng nếu một giá trị trước đó không có sẵn trong quá trình điền chuyển tiếp, giá trị NA vẫn còn.

  • Làm thế nào tôi có thể bỏ qua Nan Pandas?
  • Bằng cách sử dụng phương thức dropna (), bạn có thể thả các hàng với NAN (không phải là số) và không có giá trị nào từ Pandas DataFrame. Lưu ý rằng theo mặc định, nó trả về bản sao của DataFrame sau khi xóa hàng. Nếu bạn muốn xóa khỏi DataFrame hiện có, bạn nên sử dụng tại chỗ = true.

Điều gì có thể thay thế các giá trị NAN?

Bạn cũng có thể sử dụng df.replace (np.nan, 0) để thay thế tất cả các giá trị NAN bằng 0. Điều này thay thế tất cả các cột của DataFrame bằng 0 cho các giá trị NAN.

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)

Trong hướng dẫn ngắn này, bạn sẽ thấy cách thả các hàng với các giá trị NAN trong Pandas DataFrame.

Để bắt đầu, đây là cú pháp mà bạn có thể áp dụng theo thứ tự các hàng thả với các giá trị NAN trong DataFrame của bạn:

Trong phần tiếp theo, bạn sẽ quan sát các bước để áp dụng cú pháp trên trong thực tế.

Bước 1: Tạo một khung dữ liệu với các giá trị NAN

Hãy nói rằng bạn có bộ dữ liệu sau:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)

Chạy mã và bạn sẽ chỉ thấy hai hàng mà không có bất kỳ giá trị NAN nào:

   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0

Bạn có thể nhận thấy rằng hai hàng đó không còn có chỉ số tuần tự. Hiện tại là 2 và 4. Sau đó, bạn có thể đặt lại chỉ mục để bắt đầu từ 0.

Bước 3 (Tùy chọn): Đặt lại chỉ mục

Bạn có thể áp dụng cú pháp sau để đặt lại một chỉ mục trong Pandas DataFrame:

df.reset_index(drop=True)

Vì vậy, đây là mã Python đầy đủ để thả các hàng với các giá trị NAN, sau đó đặt lại chỉ mục:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()
df = df.reset_index(drop=True)

print (df)

Bây giờ bạn sẽ nhận thấy rằng chỉ mục bắt đầu từ 0:

df.dropna()
0

Mặc định là

df.dropna()
01, sao cho bất kỳ hàng hoặc cột nào (tùy thuộc vào từ khóa
df.dropna()
02) chứa giá trị null sẽ bị loại bỏ. Bạn cũng có thể chỉ định
df.dropna()
03, sẽ chỉ thả các hàng/cột là tất cả các giá trị null:

Đối với điều khiển chi tiết hơn, tham số

df.dropna()
00 cho phép bạn chỉ định số lượng giá trị không null tối thiểu cho hàng/cột được giữ:

Ở đây hàng đầu tiên và hàng cuối cùng đã bị loại bỏ, vì chúng chỉ chứa hai giá trị không null.

Lấp đầy các giá trị null

Đôi khi thay vì bỏ các giá trị NA, bạn muốn thay thế chúng bằng một giá trị hợp lệ. Giá trị này có thể là một số duy nhất như số không, hoặc nó có thể là một loại cắt hoặc nội suy từ các giá trị tốt. Bạn có thể thực hiện tại chỗ bằng cách sử dụng phương thức

   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0
9 làm mặt nạ, nhưng vì đây là một hoạt động phổ biến như vậy cung cấp phương thức
df.reset_index(drop=True)
3, trả về một bản sao của mảng với các giá trị null được thay thế.

Hãy xem xét các

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()
df = df.reset_index(drop=True)

print (df)
1 sau đây:

Không có cách tiếp cận nào trong số này là không có sự đánh đổi: Sử dụng một mảng mặt nạ riêng biệt yêu cầu phân bổ một mảng boolean bổ sung, điều này bổ sung chi phí trong cả lưu trữ và tính toán. Một giá trị sentinel làm giảm phạm vi của các giá trị hợp lệ có thể được biểu diễn và có thể yêu cầu logic thêm (thường không được tối ưu hóa) trong số học CPU và GPU. Các giá trị đặc biệt phổ biến như NAN không có sẵn cho tất cả các loại dữ liệu.

Như trong hầu hết các trường hợp không có lựa chọn tối ưu phổ biến tồn tại, các ngôn ngữ và hệ thống khác nhau sử dụng các quy ước khác nhau. Ví dụ: ngôn ngữ R sử dụng các mẫu bit dành riêng trong mỗi loại dữ liệu làm giá trị sentinel cho biết dữ liệu bị thiếu, trong khi hệ thống SCIDB sử dụng một byte phụ được gắn vào mọi ô cho biết trạng thái NA.

Thiếu dữ liệu trong Pandas¶

Cách mà gấu trúc xử lý các giá trị bị thiếu bị hạn chế bởi sự phụ thuộc của nó vào gói Numpy, không có khái niệm tích hợp về các giá trị NA cho các loại dữ liệu không nổi.

Pandas có thể đã theo hướng dẫn của R trong việc chỉ định các mẫu bit cho từng loại dữ liệu riêng lẻ để chỉ ra sự vô hiệu, nhưng phương pháp này hóa ra là khá khó sử dụng. Mặc dù R chứa bốn loại dữ liệu cơ bản, Numpy hỗ trợ nhiều hơn thế này: ví dụ: trong khi R có một loại số nguyên duy nhất, Numpy hỗ trợ mười bốn loại số nguyên cơ bản khi bạn tính đến các độ trước, độ ký hợp đồng và tính của mã hóa. Đặt một mẫu bit cụ thể trong tất cả các loại numpy có sẵn sẽ dẫn đến một lượng chi phí khó sử dụng trong các hoạt động đặc biệt cho các loại khác nhau, thậm chí có thể yêu cầu một ngã ba mới của gói Numpy. Hơn nữa, đối với các loại dữ liệu nhỏ hơn (chẳng hạn như số nguyên 8 bit), việc hy sinh một chút để sử dụng làm mặt nạ sẽ làm giảm đáng kể phạm vi các giá trị mà nó có thể biểu thị.

Numpy có hỗ trợ cho các mảng đeo mặt nạ - nghĩa là các mảng có mảng mặt nạ boolean riêng được gắn để đánh dấu dữ liệu là "tốt" hoặc "xấu". Pandas có thể bắt nguồn từ điều này, nhưng chi phí trong cả lưu trữ, tính toán và bảo trì mã làm cho nó trở thành một lựa chọn không hấp dẫn.

Với những ràng buộc này, Pandas đã chọn sử dụng Sentinels để thiếu dữ liệu và chọn thêm để sử dụng hai giá trị Python Null đã tồn tại: giá trị

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
2 điểm nổi đặc biệt và đối tượng Python
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
3. Sự lựa chọn này có một số tác dụng phụ, như chúng ta sẽ thấy, nhưng trong thực tế cuối cùng là một sự thỏa hiệp tốt trong hầu hết các trường hợp quan tâm.

import pandas as pd df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'], 'values_2': ['DDD','150','350','400','5000'] }) df = df.apply (pd.to_numeric, errors='coerce') print (df) 3: Dữ liệu thiếu Pythonic

Giá trị Sentinel đầu tiên được sử dụng bởi Pandas là

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
3, một đối tượng Singleton Python thường được sử dụng để thiếu dữ liệu trong mã Python. Bởi vì nó là một đối tượng Python,
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
3 không thể được sử dụng trong bất kỳ mảng Numpy/Pandas tùy ý nào, nhưng chỉ trong các mảng có loại dữ liệu
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
7 (tức là, các mảng của các đối tượng Python):

In [1]:

df.dropna()
1

In [2]:

df.dropna()
2

Out[2]:

df.dropna()
3

Điều này

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
8 có nghĩa là biểu diễn loại phổ biến tốt nhất có thể suy ra cho nội dung của mảng là chúng là các đối tượng python. Mặc dù loại mảng đối tượng này hữu ích cho một số mục đích, bất kỳ hoạt động nào trên dữ liệu sẽ được thực hiện ở cấp độ Python, với chi phí cao hơn nhiều so với các hoạt động nhanh thông thường được thấy cho các mảng có loại gốc:

In [3]:

df.dropna()
4

df.dropna()
5

Việc sử dụng các đối tượng Python trong một mảng cũng có nghĩa là nếu bạn thực hiện các tập hợp như

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
9 hoặc
   values_1   values_2
0     700.0        NaN
1       NaN      150.0
2     500.0      350.0
3       NaN      400.0
4    1200.0     5000.0
0 trên một mảng có giá trị
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
3, bạn thường sẽ gặp lỗi:

df.dropna()
6

Điều này phản ánh thực tế rằng sự bổ sung giữa số nguyên và

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
3 không được xác định.

import pandas as pd df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'], 'values_2': ['DDD','150','350','400','5000'] }) df = df.apply (pd.to_numeric, errors='coerce') print (df) 2: Thiếu dữ liệu số

Biểu diễn dữ liệu bị thiếu khác,

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
2 (từ viết tắt không phải là số), là khác nhau; Nó là một giá trị điểm nổi đặc biệt được công nhận bởi tất cả các hệ thống sử dụng biểu diễn điểm nổi tiêu chuẩn của IEEE:

In [5]:

df.dropna()
7

Lưu ý rằng Numpy đã chọn một loại dấu phẩy động gốc cho mảng này: điều này có nghĩa là không giống như mảng đối tượng từ trước, mảng này hỗ trợ các hoạt động nhanh được đẩy vào mã được biên dịch. Bạn nên lưu ý rằng

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
2 giống như một loại virus dữ liệu, nó lây nhiễm bất kỳ đối tượng nào khác mà nó chạm vào. Bất kể hoạt động nào, kết quả của số học với
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
2 sẽ là một
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
2 khác:

Lưu ý rằng điều này có nghĩa là tổng hợp các giá trị được xác định rõ (nghĩa là, chúng không dẫn đến lỗi) nhưng không phải lúc nào cũng hữu ích:

In [8]:

df.dropna()
8

Numpy không cung cấp một số tập hợp đặc biệt sẽ bỏ qua các giá trị bị thiếu này:

In [9]:

df.dropna()
9

Hãy nhớ rằng

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
2 đặc biệt là một giá trị dấu phẩy động; Không có giá trị NAN tương đương cho số nguyên, chuỗi hoặc các loại khác.

Nan và không có ở Pandas¶

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
2 và
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
3 đều có vị trí của họ và gấu trúc được xây dựng để xử lý hai người họ gần như thay thế cho nhau, chuyển đổi giữa chúng khi thích hợp:

In [10]:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
0

Out[10]:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
1

Đối với các loại không có giá trị sentinel có sẵn, gấu trúc tự động loại đúc khi có giá trị Na. Ví dụ: nếu chúng ta đặt giá trị trong một mảng số nguyên thành

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
1, nó sẽ tự động được nâng lên thành một loại dấu phẩy động để chứa NA:

In [11]:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
2

Out[12]:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
3

Lưu ý rằng ngoài việc đúc mảng số nguyên thành điểm nổi, gấu trúc tự động chuyển đổi

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
3 thành giá trị
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
2. .

Mặc dù loại ma thuật này có thể cảm thấy hơi hack so với cách tiếp cận thống nhất hơn đối với các giá trị NA trong các ngôn ngữ cụ thể về miền như R, phương pháp tiếp cận Sentinel/Casting của Pandas hoạt động khá tốt trong thực tế và theo kinh nghiệm của tôi chỉ hiếm khi gây ra vấn đề.

Bảng sau đây liệt kê các quy ước upcasting trong gấu trúc khi các giá trị NA được giới thiệu:

TypeclassChuyển đổi khi lưu trữ NASGiá trị na sentinel
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
4
Không thay đổi
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
1
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
6
Không thay đổi
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
1
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
6
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
3 hoặc
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
1
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
1
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
6
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)
3 hoặc
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
1
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
1

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
6

import pandas as pd df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'], 'values_2': ['DDD','150','350','400','5000'] }) df = df.apply (pd.to_numeric, errors='coerce') print (df) 3 hoặc import pandas as pd df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'], 'values_2': ['DDD','150','350','400','5000'] }) df = df.apply (pd.to_numeric, errors='coerce') df = df.dropna() print (df) 1

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)
9

  • Đúc đến
       values_1   values_2
    2     500.0      350.0
    4    1200.0     5000.0
    
    0
  •    values_1   values_2
    2     500.0      350.0
    4    1200.0     5000.0
    
    2
  • Đúc đến
    import pandas as pd
    
    df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                       'values_2': ['DDD','150','350','400','5000'] 
                       })
    
    df = df.apply (pd.to_numeric, errors='coerce')
    df = df.dropna()
    
    print (df)
    
    6
  • Hãy nhớ rằng trong gấu trúc, dữ liệu chuỗi luôn được lưu trữ với
    import pandas as pd
    
    df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                       'values_2': ['DDD','150','350','400','5000'] 
                       })
    
    df = df.apply (pd.to_numeric, errors='coerce')
    df = df.dropna()
    
    print (df)
    
    6 DTYPE.

Hoạt động trên Null Value¶

Như chúng ta đã thấy, Pandas xử lý import pandas as pd df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'], 'values_2': ['DDD','150','350','400','5000'] }) df = df.apply (pd.to_numeric, errors='coerce') print (df) 3 và import pandas as pd df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'], 'values_2': ['DDD','150','350','400','5000'] }) df = df.apply (pd.to_numeric, errors='coerce') print (df) 2 về cơ bản có thể hoán đổi cho nhau để chỉ ra các giá trị thiếu hoặc null. Để tạo điều kiện cho quy ước này, có một số phương pháp hữu ích để phát hiện, loại bỏ và thay thế các giá trị null trong các cấu trúc dữ liệu gấu trúc. Họ đang:

   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0
9: Tạo mặt nạ Boolean cho biết các giá trị bị thiếu

In [13]:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
4

Out[14]:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
5

Out[15]:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
6

df.reset_index(drop=True)
0: Đối diện với
   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0
9

df.reset_index(drop=True) 2: Trả về phiên bản lọc dữ liệu

df.reset_index(drop=True)
3: Trả về một bản sao của dữ liệu với các giá trị bị thiếu hoặc bị buộc tội

Out[16]:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
6

Chúng tôi sẽ kết thúc phần này với một cuộc thăm dò ngắn gọn và trình diễn các thói quen này.

In [17]:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
8

Out[17]:

012
01.0 Phát hiện các giá trị null2
12.0 3.0 5
2Phát hiện các giá trị null4.0 6

Cấu trúc dữ liệu PANDAS có hai phương pháp hữu ích để phát hiện dữ liệu null:

   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0
9 và
df.reset_index(drop=True)
0. Một trong hai sẽ trả lại mặt nạ Boolean trên dữ liệu. Ví dụ:

Các phương pháp

   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0
9 và
df.reset_index(drop=True)
0 tạo ra kết quả boolean tương tự cho
df.reset_index(drop=True)
8s.

Bỏ giá trị null

Ngoài mặt nạ được sử dụng trước đó, còn có các phương thức tiện lợi,

df.reset_index(drop=True)
2 (loại bỏ các giá trị NA) và
df.reset_index(drop=True)
3 (điền vào các giá trị NA). Đối với
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()
df = df.reset_index(drop=True)

print (df)
1, kết quả rất đơn giản:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
9

Đối với một

df.reset_index(drop=True)
8, có nhiều lựa chọn hơn. Hãy xem xét các
df.reset_index(drop=True)
8 sau đây:

Nan

Out[20]:

0123
01.0 Phát hiện các giá trị null2 Phát hiện các giá trị null
12.0 3.0 5 Phát hiện các giá trị null
2Phát hiện các giá trị null4.0 6 Phát hiện các giá trị null

In [21]:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000
0

Out[21]:

012
01.0 Phát hiện các giá trị null2
12.0 3.0 5
2Phát hiện các giá trị null4.0 6

Cấu trúc dữ liệu PANDAS có hai phương pháp hữu ích để phát hiện dữ liệu null:

   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0
9 và
df.reset_index(drop=True)
0. Một trong hai sẽ trả lại mặt nạ Boolean trên dữ liệu. Ví dụ:

In [22]:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000
1

Các phương pháp

   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0
9 và
df.reset_index(drop=True)
0 tạo ra kết quả boolean tương tự cho
df.reset_index(drop=True)
8s.

Bỏ giá trị null

Ngoài mặt nạ được sử dụng trước đó, còn có các phương thức tiện lợi,

df.reset_index(drop=True)
2 (loại bỏ các giá trị NA) và
df.reset_index(drop=True)
3 (điền vào các giá trị NA). Đối với
import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()
df = df.reset_index(drop=True)

print (df)
1, kết quả rất đơn giản:

Hãy xem xét các

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()
df = df.reset_index(drop=True)

print (df)
1 sau đây:

In [23]:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000
2

Out[23]:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000
3

Chúng ta có thể điền vào các mục NA với một giá trị duy nhất, chẳng hạn như Zero:

Out[24]:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000
4

Chúng tôi có thể chỉ định một forward filling để truyền giá trị trước đó:

In [25]:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000
5

Out[25]:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000
6

Hoặc chúng ta có thể chỉ định một phần quay ngược để truyền các giá trị tiếp theo ngược:

In [26]:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000
7

Out[26]:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000
8

Đối với

df.reset_index(drop=True)
8s, các tùy chọn tương tự nhau, nhưng chúng tôi cũng có thể chỉ định
df.dropna()
02 cùng với việc điền vào đó:

Out[27]:

0123
01.0 Nan2 Nan
12.0 3.0 5 Nan
2Nan4.0 6 Nan

In [28]:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000
9

Out[28]:

0123
01.0 1.0 2.0 2.0
12.0 3.0 5.0 5.0
2Nan4.0 6.0 6.0

Lưu ý rằng nếu một giá trị trước đó không có sẵn trong quá trình điền chuyển tiếp, giá trị NA vẫn còn.

Làm thế nào tôi có thể bỏ qua Nan Pandas?

Bằng cách sử dụng phương thức dropna (), bạn có thể thả các hàng với NAN (không phải là số) và không có giá trị nào từ Pandas DataFrame.Lưu ý rằng theo mặc định, nó trả về bản sao của DataFrame sau khi xóa hàng.Nếu bạn muốn xóa khỏi DataFrame hiện có, bạn nên sử dụng tại chỗ = true. you can drop rows with NaN (Not a Number) and None values from pandas DataFrame. Note that by default it returns the copy of the DataFrame after removing rows. If you wanted to remove from the existing DataFrame, you should use inplace=True .

Điều gì có thể thay thế các giá trị NAN?

Bạn cũng có thể sử dụng df.replace (np.nan, 0) để thay thế tất cả các giá trị NAN bằng 0.Điều này thay thế tất cả các cột của DataFrame bằng 0 cho các giá trị NAN.df. replace(np. nan,0) to replace all NaN values with zero. This replaces all columns of DataFrame with zero for Nan values.