Computer >> Máy Tính >  >> Lập trình >> Python

Python - Làm cách nào để điền giá trị NAN với giá trị trung bình trong Pandas?

Đối với giá trị trung bình, hãy sử dụng hàm mean (). Tính giá trị trung bình cho cột với NaN và sử dụng fillna () để điền giá trị NaN với giá trị trung bình.

Trước tiên, hãy để chúng tôi nhập các thư viện được yêu cầu -

import pandas as pd
import numpy as np

Tạo một DataFrame với 2 cột và một số giá trị NaN. Chúng tôi đã nhập các giá trị NaN này bằng numpy np.NaN -

dataFrame = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Lexus', 'Mustang', 'Bentley', 'Mustang'],"Units": [100, 150, np.NaN, 80, np.NaN, np.NaN]
   }
)

Tìm giá trị trung bình của các giá trị cột với NaN, tức là cho các cột Đơn vị tại đây. Vì vậy, cột Đơn vị có 100, 150 và 80; do đó, giá trị trung bình sẽ là 110 -

meanVal = dataFrame['Units'].mean()

Thay thế các NaN bằng giá trị trung bình của cột mà nó nằm ở đâu. Giá trị trung bình được tính toán ở trên là 110, vì vậy giá trị NaN sẽ được thay thế bằng 110 -

dataFrame['Units'].fillna(value=meanVal, inplace=True)

Ví dụ

Sau đây là mã -

import pandas as pd
import numpy as np

# Create DataFrame
dataFrame = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Lexus', 'Mustang', 'Bentley', 'Mustang'],"Units": [100, 150, np.NaN, 80, np.NaN, np.NaN]
   }
)

print"DataFrame ...\n",dataFrame

# finding mean of the column values with NaN i.e, for Units columns here
# so the Units column has 100, 150 and 80; therefore the mean would ne 110
meanVal = dataFrame['Units'].mean()

# Replace NaNs with the mean of the column where it is located
# the mean calculated above is 110, so NaN values will be replaced with 110
dataFrame['Units'].fillna(value=meanVal, inplace=True)
print"\nUpdated Dataframe after filling NaN values with mean...\n",dataFrame

Đầu ra

Điều này sẽ tạo ra kết quả sau -

DataFrame ...
       Car   Units
0      BMW   100.0
1    Lexus   150.0
2    Lexus     NaN
3  Mustang    80.0
4  Bentley     NaN
5  Mustang     NaN

Updated Dataframe after filling NaN values with mean...
       Car   Units
0      BMW   100.0
1    Lexus   150.0
2    Lexus   110.0
3  Mustang    80.0
4  Bentley   110.0
5  Mustang   110.0