Python Pandas – 使用中位数填充缺失的列值

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()函数可以用来填充缺失的列值。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 教程