Python Pandas – 使用中位数填充缺失的列值
在进行数据分析时,常常会遇到缺失值的情况。如果数据样本量较小,可以考虑删除含有缺失值的行或者列。但当数据量非常大时,删除会导致数据量大量减少,影响分析结果。为了保留尽量多的数据,我们可以使用中位数填充缺失的列值。
更多Pandas相关文章,请阅读:Pandas 教程
如何填充缺失的列值?
Pandas提供了很多函数来清洗和处理数据。其中,.fillna()
函数可以用来填充缺失的列值。我们可以使用该函数来填充缺失的列值。
下面是一份示例数据,其中“Age”列存在缺失值。
import pandas as pd
import numpy as np
data = pd.DataFrame({
'Name': ['Tom', 'James', 'Ricky', 'Vin', 'Steve', 'Smith', 'Jack', 'Lee', 'David', 'Gasper', 'Betina', 'Andrew', 'Alex', 'John', 'Yanni', 'Phillip', 'Ann', 'Ross', 'Laura', 'Laura'],
'Age': [28, np.nan, 33, 43, 36, 39, 32, 40, np.nan, 37, 26, 46, 29, 31, 28, 23, 21, 41, 30, np.nan],
'Country': ['US', 'UK', np.nan, 'US', 'UK', 'US', 'UK', 'US', 'US', 'US', 'US', 'US', 'UK', 'UK', 'US', 'US', 'UK', 'US', 'US', 'UK']
})
我们使用下面的方法来填充“Age”列的缺失值。
data['Age'] = data['Age'].fillna(data['Age'].median())
data['Age'].median()
计算出“Age”列的中位数。通过使用.fillna()
函数,我们用计算出的中位数来填充缺失值。
完整代码
完整代码如下所示。
import pandas as pd
import numpy as np
data = pd.DataFrame({
'Name': ['Tom', 'James', 'Ricky', 'Vin', 'Steve', 'Smith', 'Jack', 'Lee', 'David', 'Gasper', 'Betina', 'Andrew', 'Alex', 'John', 'Yanni', 'Phillip', 'Ann', 'Ross', 'Laura', 'Laura'],
'Age': [28, np.nan, 33, 43, 36, 39, 32, 40, np.nan, 37, 26, 46, 29, 31, 28, 23, 21, 41, 30, np.nan],
'Country': ['US', 'UK', np.nan, 'US', 'UK', 'US', 'UK', 'US', 'US', 'US', 'US', 'US', 'UK', 'UK', 'US', 'US', 'UK', 'US', 'US', 'UK']
})
data['Age'] = data['Age'].fillna(data['Age'].median())
print(data.head())
输出结果如下所示。
Name Age Country
0 Tom 28.0 US
1 James 34.0 UK
2 Ricky 33.0 NaN
3 Vin 43.0 US
4 Steve 36.0 UK
结论
在数据分析过程中,我们常常会遇到数据缺失的情况。使用删除缺失值的方法会导致数据量减少,影响结果的分析。为了保留尽量多的数据,我们可以使用中位数填充缺失的列值。Pandas提供的.fillna()
函数可以用来填充缺失的列值。