如何在 Pandas 中用均值填充 NAN 值?
修改我们拥有的数据是一个非常强制性的过程,因为计算机会向您显示无效输入的错误,因为处理带有 'NaN' 的数据是完全不可能的,并且手动更改 ' 几乎是不可能的NaN' 到它的平均值。因此,为了解决这个问题,我们处理数据并使用各种函数,通过这些函数从我们的数据中删除“NaN”并替换为特定的平均值,并准备由系统进行获取。
从数据中删除“NaN”主要有两个步骤-
- 使用 Pandas 库中的 Dataframe.fillna()。
- 使用 sklearn.impute 中的 SimpleImputer(这仅在数据以 csv 文件的形式存在时才有用)
使用 Pandas 库中的 Dataframe.fillna()
借助 pandas 库中的 Dataframe.fillna(),我们可以轻松替换数据框中的“NaN”。
程序:
- 为了计算均值(),我们使用特定列的均值函数
- 现在在 fillna()函数的帮助下,我们将更改我们有其均值的特定列的所有“NaN”。
- 我们将打印更新的列。
Syntax: df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
Parameter:
- value : Value to use to fill holes
- method : Method to use for filling holes in reindexed Series pad / fill
- axis : {0 or ‘index’}
- inplace : If True, fill in place.
- limit : If method is specified, this is the maximum number of consecutive NaN values to forward/backward fill
- downcast : dict, default is None
示例 1:
- 为了计算均值(),我们使用特定列的均值函数
- 然后应用 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()
此函数用于补全缺失值的插补转换器提供了插补缺失值的基本策略。可以使用提供的常量值或使用缺失值所在的每一列的统计数据(平均值、中位数或最频繁)来估算这些值。这个类还允许不同的缺失值编码。
Syntax: class sklearn.impute.SimpleImputer(*, missing_values=nan, strategy=’mean’, fill_value=None, verbose=0, copy=True, add_indicator=False)
Parameters:
- missing_values: int float, str, np.nan or None, default=np.nan
- strategy string: default=’mean’
- fill_valuestring or numerical value: default=None
- verbose: integer, default=0
- copy: boolean, default=True
- add_indicator: boolean, default=False
注意:以下示例中使用的数据在这里
示例 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)
输出: