📜  如何在 Pandas 中用均值填充 NAN 值?

📅  最后修改于: 2022-05-13 01:55:15.550000             🧑  作者: Mango

如何在 Pandas 中用均值填充 NAN 值?

修改我们拥有的数据是一个非常强制性的过程,因为计算机会向您显示无效输入的错误,因为处理带有 'NaN' 的数据是完全不可能的,并且手动更改 ' 几乎是不可能的NaN' 到它的平均值。因此,为了解决这个问题,我们处理数据并使用各种函数,通过这些函数从我们的数据中删除“NaN”并替换为特定的平均值,并准备由系统进行获取。

从数据中删除“NaN”主要有两个步骤-

  1. 使用 Pandas 库中的 Dataframe.fillna()。
  2. 使用 sklearn.impute 中的 SimpleImputer(这仅在数据以 csv 文件的形式存在时才有用)

使用 Pandas 库中的 Dataframe.fillna()

借助 pandas 库中的 Dataframe.fillna(),我们可以轻松替换数据框中的“NaN”。

程序:

  1. 为了计算均值(),我们使用特定列的均值函数
  2. 现在在 fillna()函数的帮助下,我们将更改我们有其均值的特定列的所有“NaN”。
  3. 我们将打印更新的列。

示例 1:

  1. 为了计算均值(),我们使用特定列的均值函数
  2. 然后应用 fillna()函数,我们将更改该特定列的所有“NaN”,并打印更新后的数据框。
Python3
import numpy as np
import pandas as pd
  
# A dictionary with list as values
GFG_dict = { 'G1': [10, 20,30,40],
                'G2': [25, np.NaN, np.NaN, 29],
                'G3': [15, 14, 17, 11],
                'G4': [21, 22, 23, 25]}
  
# Create a DataFrame from dictionary
gfg = pd.DataFrame(GFG_dict)
  
#Finding the mean of the column having NaN
mean_value=gfg['G2'].mean()
  
# Replace NaNs in column S2 with the
# mean of values in the same column
gfg['G2'].fillna(value=mean_value, inplace=True)
print('Updated Dataframe:')
print(gfg)


Python3
import pandas as pd
import numpy as np
  
df = pd.DataFrame({
    'ID': [10, np.nan, 20, 30, np.nan, 50, np.nan,
           150, 200, 102, np.nan, 130],
      
    'Sale': [10, 20, np.nan, 11, 90, np.nan,
             55, 14, np.nan, 25, 75, 35],
      
    'Date': ['2020-10-05', '2020-09-10', np.nan,
             '2020-08-17', '2020-09-10', '2020-07-27', 
             '2020-09-10', '2020-10-10', '2020-10-10',
             '2020-06-27', '2020-08-17', '2020-04-25'],
})
  
df['Sale'].fillna(int(df['Sale'].mean()), inplace=True)
print(df)


Python3
import pandas as pd
import numpy as np
  
Dataset= pd.read_csv("property data.csv")
X = Dataset.iloc[:,0].values
  
# To calculate mean use imputer class
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer = imputer.fit(X)
  
X = imputer.transform(X)
print(X)


Python3
from sklearn.impute import SimpleImputer
import pandas as pd
import numpy as np
  
Dataset = pd.read_csv("property data.csv")
X = Dataset.iloc[:, 1].values
  
# To calculate mean use imputer class
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer = imputer.fit(X)
X = imputer.transform(X)
print(X)


输出:

示例 2:

蟒蛇3

import pandas as pd
import numpy as np
  
df = pd.DataFrame({
    'ID': [10, np.nan, 20, 30, np.nan, 50, np.nan,
           150, 200, 102, np.nan, 130],
      
    'Sale': [10, 20, np.nan, 11, 90, np.nan,
             55, 14, np.nan, 25, 75, 35],
      
    'Date': ['2020-10-05', '2020-09-10', np.nan,
             '2020-08-17', '2020-09-10', '2020-07-27', 
             '2020-09-10', '2020-10-10', '2020-10-10',
             '2020-06-27', '2020-08-17', '2020-04-25'],
})
  
df['Sale'].fillna(int(df['Sale'].mean()), inplace=True)
print(df)

输出:

使用 sklearn.impute 中的 SimpleImputer()

此函数用于补全缺失值的插补转换器提供了插补缺失值的基本策略。可以使用提供的常量值或使用缺失值所在的每一列的统计数据(平均值、中位数或最频繁)来估算这些值。这个类还允许不同的缺失值编码。

注意:以下示例中使用的数据在这里

示例 1 :(PID 列上的计算)

蟒蛇3

import pandas as pd
import numpy as np
  
Dataset= pd.read_csv("property data.csv")
X = Dataset.iloc[:,0].values
  
# To calculate mean use imputer class
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer = imputer.fit(X)
  
X = imputer.transform(X)
print(X)

输出:

示例 2 :(在 ST_NUM 列上计算)

蟒蛇3

from sklearn.impute import SimpleImputer
import pandas as pd
import numpy as np
  
Dataset = pd.read_csv("property data.csv")
X = Dataset.iloc[:, 1].values
  
# To calculate mean use imputer class
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer = imputer.fit(X)
X = imputer.transform(X)
print(X)

输出: