Pandas 使用 dataframe fillna()仅填充某些列

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参数来选择要填充的列。我们还可以通过使用字典将不同的缺失值替换为不同的值。掌握这些技术可以为数据分析师们提供更多的选项,从而使数据分析更加准确和有用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程