Làm cách nào để thay thế các giá trị NaN trong DataFrame của gấu trúc?

mô-đun nhập khẩu

import pandas as pd
import numpy as np

tạo khung dữ liệu giả

raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
tuổifavorite_colorgradenameWillard Morris20xanh dương88Willard MorrisAl Jennings19đỏ92Al JenningsOmar Mullins22vàng95Omar MullinsSpencer McDaniel21xanh lá cây70Spencer McDaniel

Tạo một số giá trị NaN trong khung dữ liệu

agefavorite_colorgradenameWillard MorrisNaNblue88. 0Willard MorrisAl Jennings19. 0red92. 0Al JenningsOmar Mullins22. 0vàng95. 0Omar MullinsSpencer McDaniel21. 0greenNaNSpencer McDaniel

Thay thế các giá trị NaN trong khung dữ liệu [bằng 0 trong trường hợp này]

agefavorite_colorgradenameWillard Morris0. 0blue88. 0Willard MorrisAl Jennings19. 0red92. 0Al JenningsOmar Mullins22. 0vàng95. 0Omar MullinsSpencer McDaniel21. 0green0. 0Spencer McDaniel

Trong quá trình làm sạch dữ liệu pandas, việc thay thế các giá trị bị thiếu đóng vai trò rất quan trọng và trong một số trường hợp, chúng ta phải thay thế các giá trị bị thiếu đó bằng giá trị trung bình của các phần tử chuỗi. Điều này có thể được thực hiện bằng cách sử dụng phương thức fillna[]

Hoạt động cơ bản của loạt gấu trúc này. Phương thức fillna[] được sử dụng để thay thế các giá trị bị thiếu [Nan hoặc NA] bằng một giá trị được chỉ định. Ban đầu, phương thức xác minh tất cả các giá trị Nan và thay thế chúng bằng giá trị thay thế được chỉ định

ví dụ 1

Ở đây chúng ta sẽ thấy làm thế nào loạt. phương thức fillna[] thay thế giá trị còn thiếu bằng giá trị trung bình

# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[69, np.nan, np.nan, 10, 30, 52, 70, np.nan, 54, 79, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]

Giải trình

Trong ví dụ sau, chúng tôi sẽ thay thế các giá trị còn thiếu bằng giá trị trung bình của các phần tử chuỗi. Để làm điều này, chúng tôi áp dụng loạt. mean[] làm tham số cho phương thức fillna[]

đầu ra

Đầu ra được đưa ra dưới đây -

0    69.0
1     NaN
2     NaN
3    10.0
4    30.0
5    52.0
6    70.0
7     NaN
8    54.0
9    79.0
10    NaN
dtype: float64

Result:
0    69.0
1    52.0
2    52.0
3    10.0
4    30.0
5    52.0
6    70.0
7    52.0
8    54.0
9    79.0
10   52.0
dtype: float64

Như bạn có thể thấy, giá trị 52. 0 [giá trị trung bình] được thay thế bằng các giá trị Nan ở các vị trí chỉ mục 1,2,5,7 và 10

ví dụ 2

Hãy lấy một ví dụ khác để thay thế các giá trị còn thiếu Nan/NA bằng giá trị trung bình của các phần tử chuỗi

# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[np.nan, 49, 45, 47, 99, 99, np.nan, np.nan, 94, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]

Giải trình

Ban đầu, chúng ta đã tạo đối tượng pandas series với danh sách các số nguyên và giá trị Nan, sau đó gọi phương thức fillna[] với giá trị trung bình. Bằng cách sử dụng loạt. mean[] chúng tôi đã tính giá trị trung bình và sau đó áp dụng giá trị trung bình đó làm tham số của phương thức fillna[]

đầu ra

Đầu ra được đưa ra dưới đây -

0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64

Giá trị trung bình 72. 166667 được thay thế cho các giá trị bị thiếu, các vị trí chỉ mục là 0, 6, 7 và 9

Bạn có thể thay thế giá trị còn thiếu [

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
5] trong
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
6 và
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
7 bằng bất kỳ giá trị nào bằng cách sử dụng phương pháp
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
8

  • gấu trúc. Khung dữ liệu. fillna — gấu trúc 1. 4. 0 tài liệu
  • gấu trúc. Loạt. fillna — gấu trúc 1. 4. 0 tài liệu

Bài viết này mô tả các nội dung sau

  • Thay thế tất cả các giá trị bị thiếu bằng cùng một giá trị
  • Thay thế các giá trị bị thiếu bằng các giá trị khác nhau cho mỗi cột
  • Thay thế các giá trị bị thiếu bằng giá trị trung bình, trung bình, chế độ, v.v. cho mỗi cột
  • Thay thế các giá trị bị thiếu bằng các giá trị hợp lệ trước đó/tiếp theo.
    print[df.fillna[0]]
    #       name   age state  point  other
    # 0    Alice  24.0    NY    0.0    0.0
    # 1        0   0.0     0    0.0    0.0
    # 2  Charlie   0.0    CA    0.0    0.0
    # 3     Dave  68.0    TX   70.0    0.0
    # 4    Ellen   0.0    CA   88.0    0.0
    # 5    Frank  30.0     0    0.0    0.0
    
    9,
    raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
    'age': [20, 19, 22, 21],
    'favorite_color': ['blue', 'red', 'yellow', "green"],
    'grade': [88, 92, 95, 70]}
    df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
    df
    10
  • vận hành tại chỗ.
    raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
    'age': [20, 19, 22, 21],
    'favorite_color': ['blue', 'red', 'yellow', "green"],
    'grade': [88, 92, 95, 70]}
    df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
    df
    11
  • Cho
    raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
    'age': [20, 19, 22, 21],
    'favorite_color': ['blue', 'red', 'yellow', "green"],
    'grade': [88, 92, 95, 70]}
    df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
    df
    12

Sử dụng

raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
13 nếu bạn muốn điền các giá trị còn thiếu bằng phép nội suy tuyến tính hoặc spline

  • gấu trúc. Nội suy NaN với nội suy[]

Để biết thêm thông tin về cách xóa hoặc đếm các giá trị bị thiếu, hãy xem các bài viết sau

  • gấu trúc. Xóa các giá trị bị thiếu [NaN] bằng dropna[]
  • gấu trúc. Phát hiện và đếm các giá trị bị thiếu [NaN] với hàm isnull[], isna[]

Lưu ý rằng không chỉ

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
5 [Không phải là số] mà cả
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
15 cũng được coi là giá trị bị thiếu trong pandas

  • Thiếu giá trị trong gấu trúc [nan, Không có, pd. không có]

Ví dụ: đọc tệp CSV có giá trị bị thiếu với

raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
16

  • sample_pandas_normal_nan. csv

raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
8

nguồn. pandas_nan_fillna. py

Liên kết được tài trợ

Thay thế tất cả các giá trị bị thiếu bằng cùng một giá trị

Bằng cách chỉ định giá trị vô hướng làm đối số đầu tiên

raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
17 của
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
8, tất cả các giá trị bị thiếu sẽ được thay thế bằng giá trị

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0

nguồn. pandas_nan_fillna. py

Lưu ý rằng kiểu dữ liệu

raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
19 của một cột số bao gồm
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
5 là
# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[69, np.nan, np.nan, 10, 30, 52, 70, np.nan, 54, 79, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
41, vì vậy ngay cả khi bạn thay thế
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
5 bằng một số nguyên, kiểu dữ liệu vẫn là
# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[69, np.nan, np.nan, 10, 30, 52, 70, np.nan, 54, 79, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
41. Nếu bạn muốn chuyển đổi nó thành
# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[69, np.nan, np.nan, 10, 30, 52, 70, np.nan, 54, 79, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
44, hãy sử dụng
# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[69, np.nan, np.nan, 10, 30, 52, 70, np.nan, 54, 79, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
45

  • gấu trúc. Truyền DataFrame sang một loại dtype cụ thể với astype[]

Thay thế các giá trị bị thiếu bằng các giá trị khác nhau cho mỗi cột

Bằng cách chỉ định một từ điển

# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[69, np.nan, np.nan, 10, 30, 52, 70, np.nan, 54, 79, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
46 làm đối số đầu tiên
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
17 của
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
8, bạn có thể gán các giá trị khác nhau cho mỗi cột

Chỉ định một từ điển của

# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[69, np.nan, np.nan, 10, 30, 52, 70, np.nan, 54, 79, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
49. Nếu tên cột không được chỉ định, các giá trị bị thiếu trong cột của nó sẽ được giữ lại [= không được thay thế]. Nếu
0    69.0
1     NaN
2     NaN
3    10.0
4    30.0
5    52.0
6    70.0
7     NaN
8    54.0
9    79.0
10    NaN
dtype: float64

Result:
0    69.0
1    52.0
2    52.0
3    10.0
4    30.0
5    52.0
6    70.0
7    52.0
8    54.0
9    79.0
10   52.0
dtype: float64
30 không khớp với tên cột, nó sẽ bị bỏ qua

raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
1

nguồn. pandas_nan_fillna. py

Bạn cũng có thể chỉ định

raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
12. Các nhãn của
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
12 tương ứng với khóa của
# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[69, np.nan, np.nan, 10, 30, 52, 70, np.nan, 54, 79, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
46

# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[69, np.nan, np.nan, 10, 30, 52, 70, np.nan, 54, 79, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
4

nguồn. pandas_nan_fillna. py

Thay thế các giá trị bị thiếu bằng giá trị trung bình, trung bình, chế độ, v.v. cho mỗi cột

Giá trị trung bình của mỗi cột có thể được tính bằng phương pháp

0    69.0
1     NaN
2     NaN
3    10.0
4    30.0
5    52.0
6    70.0
7     NaN
8    54.0
9    79.0
10    NaN
dtype: float64

Result:
0    69.0
1    52.0
2    52.0
3    10.0
4    30.0
5    52.0
6    70.0
7    52.0
8    54.0
9    79.0
10   52.0
dtype: float64
34.
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
12 được trả lại.
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
5 bị loại trừ, nhưng kết quả cho một cột có tất cả các phần tử là
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
5 là
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
5

  • gấu trúc. Khung dữ liệu. có nghĩa là - gấu trúc 1. 4. 0 tài liệu

0    69.0
1     NaN
2     NaN
3    10.0
4    30.0
5    52.0
6    70.0
7     NaN
8    54.0
9    79.0
10    NaN
dtype: float64

Result:
0    69.0
1    52.0
2    52.0
3    10.0
4    30.0
5    52.0
6    70.0
7    52.0
8    54.0
9    79.0
10   52.0
dtype: float64
3

nguồn. pandas_nan_fillna. py

Nếu bạn chỉ định

raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
12 này làm đối số đầu tiên
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
17 của
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
8, các giá trị còn thiếu của cột tương ứng sẽ được thay thế bằng giá trị trung bình

# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[np.nan, 49, 45, 47, 99, 99, np.nan, np.nan, 94, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
8

nguồn. pandas_nan_fillna. py

Tương tự, nếu bạn muốn thay thế các giá trị bị thiếu bằng trung vị, hãy sử dụng phương thức

# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[np.nan, 49, 45, 47, 99, 99, np.nan, np.nan, 94, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
82. Nếu số lượng phần tử là số chẵn, giá trị trung bình của hai giá trị trung bình được trả về

  • gấu trúc. Khung dữ liệu. trung bình — gấu trúc 1. 4. 0 tài liệu

0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
0

nguồn. pandas_nan_fillna. py

Chế độ có thể thu được bằng phương pháp

# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[np.nan, 49, 45, 47, 99, 99, np.nan, np.nan, 94, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
83. Vì
# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[np.nan, 49, 45, 47, 99, 99, np.nan, np.nan, 94, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
83 trả về
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
6, hàng đầu tiên được truy xuất là
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
12 bởi
# importing pandas package
import pandas as pd
import numpy as np

# create a series
s = pd.Series[[np.nan, 49, 45, 47, 99, 99, np.nan, np.nan, 94, np.nan]]
print[s]

# replace Missing values with an average value
result = s.fillna[s.mean[]]
print['Result:']
print[result]
87 trong ví dụ này

  • gấu trúc. Khung dữ liệu. chế độ — gấu trúc 1. 4. 0 tài liệu

0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
6

nguồn. pandas_nan_fillna. py

Trong các ví dụ này, không có vấn đề gì, nhưng các phương thức như

0    69.0
1     NaN
2     NaN
3    10.0
4    30.0
5    52.0
6    70.0
7     NaN
8    54.0
9    79.0
10    NaN
dtype: float64

Result:
0    69.0
1    52.0
2    52.0
3    10.0
4    30.0
5    52.0
6    70.0
7    52.0
8    54.0
9    79.0
10   52.0
dtype: float64
34 có thể trả về các giá trị không mong muốn vì chúng cố gắng vận hành không chỉ các cột số mà cả các loại cột khác theo mặc định

Trong

0    69.0
1     NaN
2     NaN
3    10.0
4    30.0
5    52.0
6    70.0
7     NaN
8    54.0
9    79.0
10    NaN
dtype: float64

Result:
0    69.0
1    52.0
2    52.0
3    10.0
4    30.0
5    52.0
6    70.0
7    52.0
8    54.0
9    79.0
10   52.0
dtype: float64
34, v.v., nếu đối số
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
00 được đặt thành
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
01, thì chỉ các cột số được xử lý. Lưu ý rằng các cột loại
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
02 được coi là
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
03 và
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
04 ngay cả khi
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
05

Liên kết được tài trợ

Thay thế các giá trị bị thiếu bằng các giá trị hợp lệ trước đó/tiếp theo.
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
9,
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
10

Đối số

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
9 của
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
8 có thể được sử dụng để thay thế các giá trị bị thiếu bằng các giá trị hợp lệ trước đó/tiếp theo

Nếu

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
9 được đặt thành
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
61 hoặc
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
62, các giá trị bị thiếu sẽ được thay thế bằng các giá trị hợp lệ trước đó [= điền về phía trước] và nếu
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
63 hoặc
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
64, được thay thế bằng các giá trị hợp lệ tiếp theo [= điền vào phía sau]

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
4

nguồn. pandas_nan_fillna. py

Nếu chỉ định

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
9, thì có thể sử dụng
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
10 để chỉ định số lần thay thế liên tiếp tối đa

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
7

nguồn. pandas_nan_fillna. py

Nó có thể không được sử dụng thường xuyên, nhưng nếu đối số

0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
67 được đặt thành
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
68 hoặc
0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64
69, các giá trị bị thiếu sẽ được thay thế bằng các giá trị bên trái và bên phải

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
0

nguồn. pandas_nan_fillna. py

Các phương thức tương ứng với đối số

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
9 được cung cấp riêng

  • gấu trúc. Khung dữ liệu. ffill — gấu trúc 1. 4. 0 tài liệu
  • gấu trúc. Khung dữ liệu. pad — gấu trúc 1. 4. 0 tài liệu
  • gấu trúc. Khung dữ liệu. bfill — gấu trúc 1. 4. 0 tài liệu
  • gấu trúc. Khung dữ liệu. chèn lấp — pandas 1. 4. 0 tài liệu

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
41 và
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
42 tương đương với
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
43, và
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
44 và
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
45 tương đương với
print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
46. Bạn có thể chỉ định
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
10

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
1

nguồn. pandas_nan_fillna. py

vận hành tại chỗ.
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame[raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel']]
df
11

Như đã trình bày trong các ví dụ trên, theo mặc định, một đối tượng mới được trả về và đối tượng ban đầu không bị thay đổi, nhưng nếu

print[df.fillna[0]]
#       name   age state  point  other
# 0    Alice  24.0    NY    0.0    0.0
# 1        0   0.0     0    0.0    0.0
# 2  Charlie   0.0    CA    0.0    0.0
# 3     Dave  68.0    TX   70.0    0.0
# 4    Ellen   0.0    CA   88.0    0.0
# 5    Frank  30.0     0    0.0    0.0
49, đối tượng ban đầu sẽ được cập nhật

Làm cách nào để thay thế NaN bằng các giá trị trong gấu trúc?

Các bước thay thế giá trị NaN. .
Đối với một cột sử dụng gấu trúc. df['Cột khung dữ liệu'] = df['Cột khung dữ liệu']. điền[0]
Đối với một cột sử dụng numpy. df['Cột khung dữ liệu'] = df['Cột khung dữ liệu']. thay thế [np. nan, 0]
Đối với toàn bộ DataFrame sử dụng gấu trúc. df. điền[0]
Đối với toàn bộ DataFrame bằng cách sử dụng numpy. df. thay thế [np. nan, 0]

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

Bằng cách sử dụng phương thức dropna[] bạn có thể thả các hàng có giá trị NaN [Không phải là Số] và Không có từ DataFrame của gấu trúc. 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 tại, bạn nên sử dụng inplace=True.

Làm cách nào để thay thế các giá trị NaN thành 0 trong gấu trúc?

Thay thế các giá trị NaN bằng số 0 trong Khung dữ liệu Pandas .
[1] Đối với một cột sử dụng Pandas. df['Cột khung dữ liệu'] = df['Cột khung dữ liệu']. điền[0]
[2] Đối với một cột sử dụng NumPy. df['Cột khung dữ liệu'] = df['Cột khung dữ liệu']. thay thế [np. nan, 0]
[3] Đối với toàn bộ Khung dữ liệu bằng Pandas. df. điền[0]

Làm cách nào để thay thế các giá trị NaN trong gấu trúc bằng chuỗi?

Chúng ta có thể thay thế NaN bằng một chuỗi trống bằng cách sử dụng df. hàm thay thế[] . Hàm này sẽ thay thế một chuỗi rỗng thay cho giá trị NaN.

Chủ Đề