Pandas 使用 dataframe fillna()仅填充某些列
在本文中,我们将介绍如何使用Pandas中的fillna()函数仅填充数据框中的某些列。
阅读更多:Pandas 教程
填充数据框中的所有列
在Pandas中,fillna()函数用于填充缺失值。默认情况下,它会在数据框的所有列中填充缺失值。下面是一个示例,演示如何使用fillna()函数填充数据框中的所有列:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eric'],
'age': [25, 30, 35, 40, 45],
'score': [82, 75, None, 90, None],
'gender': ['F', 'M', 'M', 'M', 'M']}
df = pd.DataFrame(data)
# 填充所有缺失值
df.fillna(0, inplace=True)
print(df)
以上代码将缺失的值用0来进行填充,并使用了inplace参数使原始数据框被修改。这将输出以下结果:
name age score gender
0 Alice 25 82.0 F
1 Bob 30 75.0 M
2 Charlie 35 0.0 M
3 David 40 90.0 M
4 Eric 45 0.0 M
仅填充选定列
有时候,我们只需要填充数据框中的某些列,而不是所有列。为了做到这一点,我们可以使用subset参数,该参数确定要填充哪些列。以下是示例代码:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eric'],
'age': [25, 30, 35, 40, 45],
'score': [82, 75, None, 90, None],
'gender': ['F', 'M', 'M', 'M', 'M']}
df = pd.DataFrame(data)
# 仅填充'score'列
df.fillna(value={'score': 0}, subset=['score'], inplace=True)
print(df)
以上代码指定了要填充的列为’score’,并将缺失值填充为0。这将输出以下结果:
name age score gender
0 Alice 25 82.0 F
1 Bob 30 75.0 M
2 Charlie 35 0.0 M
3 David 40 90.0 M
4 Eric 45 0.0 M
填充选定列的所有缺失值
有时我们需要填充选定列中的所有缺失值,而不管这些缺失值在数据框中的位置。为了做到这一点,我们可以使用以下代码:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eric'],
'age': [25, 30, 35, 40, 45],
'score': [82, None, None, 90, None],
'gender': ['F', 'M', 'M', 'M', 'M']}
df = pd.DataFrame(data)
# 仅填充'score'列的所有缺失值
df['score'].fillna(0, inplace=True)
print(df)
以上代码在选定的’score’列中填充了所有缺失值。这将输出以下结果:
name age score gender
0 Alice 25 82.0 F
1 Bob 30 0.0 M
2 Charlie 35 0.0 M
3 David 40 90.0 M
4 Eric 45 0.0 M
替换所有缺失值
如果我们需要替换所有缺失值,而不仅仅是在选定的列中,我们可以使用fillna()函数,而不指定subset参数。以下是一个示例:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eric'],
'age': [25, None, 35, None, 45],
'score': [82, None, None, None, None],
'gender': ['F', 'M', 'M', 'M', 'M']}
df = pd.DataFrame(data)
# 替换所有缺失值
df.fillna(0, inplace=True)
print(df)
以上代码将数据框中的所有缺失值用0替换。这将输出以下结果:
name age score gender
0 Alice 25.0 82.0 F
1 Bob 0.0 0.0 M
2 Charlie 35.0 0.0 M
3 David 0.0 0.0 M
4 Eric 45.0 0.0 M
处理不同的缺失值
有时候,我们需要针对不同的缺失值进行不同的填充操作。例如,在某些情况下,我们可能想要用列的平均值来填充缺失值,而在其他情况下,我们可能想要用列中的最大值或最小值来填充缺失值。为了处理这种情况,我们可以使用字典作为fillna()函数的值参数。以下是一个示例:
import pandas as pd
import numpy as np
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eric'],
'age': [25, 30, None, None, 45],
'score': [82, None, None, None, 95],
'gender': ['F', 'M', 'M', 'M', 'M']}
df = pd.DataFrame(data)
# 计算平均值和最大值
avg_age = np.mean(df['age'])
max_score = np.max(df['score'])
# 用平均值填充'age'列中的缺失值,用最大值填充'score'列中的缺失值
fill_values = {
'age': avg_age,
'score': max_score
}
df.fillna(value=fill_values, inplace=True)
print(df)
以上代码用平均值填充’age’列中的缺失值,用最大值填充’score’列中的缺失值。这将输出以下结果:
name age score gender
0 Alice 25.0 82.0 F
1 Bob 30.0 95.0 M
2 Charlie 33.75 95.0 M
3 David 33.75 95.0 M
4 Eric 45.0 95.0 M
总结
Pandas中的fillna()函数是处理缺失值的强大工具。我们可以使用该函数来填充数据框中的缺失值,而且可以通过指定subset参数来选择要填充的列。我们还可以通过使用字典将不同的缺失值替换为不同的值。掌握这些技术可以为数据分析师们提供更多的选项,从而使数据分析更加准确和有用。