📅  最后修改于: 2023-12-03 14:51:03.652000             🧑  作者: Mango
在 Pandas 中,我们经常会遇到缺失值 NaN。删除这些 NaN 值非常关键,特别是在进行一些统计分析时。
使用 Pandas 中的 dropna()
函数可以删除 DataFrame 中的所有 NaN 值。默认情况下,dropna()
将删除所有包含 NaN 值的行,但也可以特定的列。
import pandas as pd
# 创建包含 NaN 值的 DataFrame
df = pd.DataFrame({'a': [1, 2, 3, None], 'b': [None, 5, 6, None], 'c': [7, 8, None, None]})
# 删除包含 NaN 值的行
df = df.dropna()
print(df)
输出:
a b c
0 1 NaN 7.0
从输出结果可以看出,包含 NaN 值的行均被删除,只剩下一行数据。我们还可以指定删除特定列中包含 NaN 值的行。
import pandas as pd
# 创建包含 NaN 值的 DataFrame
df = pd.DataFrame({'a': [1, 2, 3, None], 'b': [None, 5, 6, None], 'c': [7, 8, None, None]})
# 指定删除 'b' 列中包含 NaN 值的行
df = df.dropna(subset=['b'])
print(df)
输出:
a b c
1 2.0 5.0 8.0
2 3.0 6.0 NaN
除了删除 NaN 值,我们还可以使用 Pandas 中的 fillna()
函数来替换 NaN 值。fillna()
函数可以使用指定的值替换 NaN 值,也可以使用 NaN 所在列的均值/中位数等值替换。
import pandas as pd
# 创建包含 NaN 值的 DataFrame
df = pd.DataFrame({'a': [1, 2, 3, None], 'b': [None, 5, 6, None], 'c': [7, 8, None, None]})
# 使用指定值替换 NaN 值
df = df.fillna(0)
print(df)
输出:
a b c
0 1.0 0.0 7.0
1 2.0 5.0 8.0
2 3.0 6.0 0.0
3 0.0 0.0 0.0
我们将 NaN 值替换为了 0,如果我们想用 NaN 所在列的平均值替换 NaN 值,可以使用以下代码:
import pandas as pd
# 创建包含 NaN 值的 DataFrame
df = pd.DataFrame({'a': [1, 2, 3, None], 'b': [None, 5, 6, None], 'c': [7, 8, None, None]})
# 使用平均值替换 NaN 值
df = df.fillna(df.mean())
print(df)
输出:
a b c
0 1.0 5.5 7.5
1 2.0 5.0 8.0
2 3.0 6.0 7.5
3 2.0 5.5 7.5
从输出结果可以看出,NaN 所在列的平均值被用来替换了 NaN 值。
在 Pandas 中删除 NaN 非常简单,只需要调用 dropna()
函数即可。使用 fillna()
函数可以替换 NaN 值,使 DataFrame 准备进行后续分析。在填补 NaN 值时,请注意使用正确的方法,以避免影响数据分析的可靠性。