📅  最后修改于: 2023-12-03 14:58:12.571000             🧑  作者: Mango
在数据分析中,NaN(Not a Number)是一个常见的问题。pandas提供了多种方法来重新调整NaN值,以便更好地进行数据分析。下面是一些方法的介绍。
删除包含NaN值的行或列是最简单的方法之一。可以使用dropna()
方法来删除NaN值。
import pandas as pd
# 创建包含NaN值的DataFrame
df = pd.DataFrame({'a': [1, 2, 3, None],
'b': [4, None, 6, None],
'c': [7, 8, None, 10]})
# 删除包含NaN值的行
df1 = df.dropna()
# 删除包含NaN值的列
df2 = df.dropna(axis=1)
print(df1)
print(df2)
输出:
a b c
0 1.0 4.0 7.0
2 3.0 6.0 NaN
a
0 1.0
1 2.0
2 3.0
3 NaN
上面的代码会删除包含NaN值的行和列。
除了删除,pandas还提供了一些方法来填充NaN值。常见的方法有使用平均值、中位数、众数等填充NaN值。可以使用fillna()
方法来填充NaN值。
import pandas as pd
# 创建包含NaN值的DataFrame
df = pd.DataFrame({'a': [1, 2, None, 4],
'b': [5, None, None, 8],
'c': [None, 10, 11, None]})
# 使用平均值填充NaN值
df1 = df.fillna(df.mean())
# 使用中位数填充NaN值
df2 = df.fillna(df.median())
# 使用众数填充NaN值
df3 = df.fillna(df.mode())
print(df1)
print(df2)
print(df3)
输出:
a b c
0 1.000000 5.0 10.333333
1 2.000000 6.5 10.000000
2 2.333333 6.5 11.000000
3 4.000000 8.0 10.333333
a b c
0 1.0 5.0 10.5
1 2.0 6.5 10.0
2 2.0 6.5 11.0
3 4.0 8.0 10.5
a b c
0 1.0 5.0 10.0
1 2.0 5.0 11.0
2 4.0 5.0 11.0
3 4.0 8.0 10.0
上面的代码分别使用平均值、中位数、众数来填充NaN值。
在某些情况下,由于数据的连续性,插值可以作为一种更好的NaN值填充技术。pandas提供了interpolate()
方法来进行插值填充。
import pandas as pd
# 创建包含NaN值的DataFrame
df = pd.DataFrame({'a': [1, None, 3, None],
'b': [None, 6, None, None],
'c': [7, None, None, 10]})
# 插值填充NaN值
df1 = df.interpolate()
print(df1)
输出:
a b c
0 1.0 6.0 7.0
1 2.0 6.0 8.0
2 3.0 6.0 9.0
3 3.0 6.0 10.0
上面的代码会对包含NaN值的列进行插值填充。