如何在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.我们将打印更新的栏目。
语法: df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
参数:
- value : 用来填补漏洞的值
- method:用于在重新分度的系列中填补孔洞的方法 垫/填
- axis:{0或’索引’}
- inplace : 如果为真,就地填充。
- limit : 如果指定了方法,这是要向前/向后填充的连续NaN值的最大数量。
- downcast : dict, 默认为 None
示例 1:
1.为了计算平均值(),我们使用特定列的平均值函数
2.然后应用fillna()函数,我们将改变所有我们有平均值的那一列的’NaN’,并打印出更新的数据框。
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)
输出:
示例 2:
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()
这个函数用于完成缺失值的估算转化器,提供了估算缺失值的基本策略。这些值可以用一个提供的常数或使用缺失值所在的每一列的统计数据(平均数、中位数或最频繁)进行估算。这个类也允许不同的缺失值编码。
语法: class sklearn.impute.SimpleImputer(*, missing_values=nan, strategy=’mean’, fill_value=None, verbose=0, copy=True, add_indicator=False)
参数:
- missing_values: int float, str, np.nan 或 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列的计算)
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列的计算)
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)
输出: