pandas 移除 nan值

在数据处理过程中,经常会遇到缺失值(NaN)的情况,这些缺失值会影响数据分析和建模的结果。在处理数据时,通常需要将这些缺失值移除或者进行填充。本文将介绍如何使用Pandas库来移除DataFrame中的NaN值。
1. 移除NaN值
Pandas提供了dropna()方法来移除DataFrame中包含NaN值的行或列。默认情况下,该方法会删除包含任意NaN值的行。下面是一个示例代码:
import pandas as pd
data = {'A': [1, 2, None, 4],
'B': ['geek-docs.com', None, 'hello', 'world']}
df = pd.DataFrame(data)
# 移除包含NaN值的行
df_cleaned = df.dropna()
print(df_cleaned)
运行结果如下:
A B
0 1.0 geek-docs.com
3 4.0 world
可以看到,包含NaN值的行已经被移除了。
如果想指定删除包含NaN值的列,可以通过设置axis参数为1来实现。示例如下:
# 移除包含NaN值的列
df_cleaned = df.dropna(axis=1)
print(df_cleaned)
运行结果如下:
A
0 1
1 2
2 NaN
3 4
2. 使用thresh参数
除了dropna()方法外,Pandas还提供了thresh参数,用于指定删除行或列时的阈值。只有当非NaN值的数量达到或超过指定的阈值时,才会保留该行或列。下面是一个示例代码:
# 指定阈值为2,保留至少有2个非NaN值的行
df_cleaned = df.dropna(thresh=2)
print(df_cleaned)
运行结果如下:
A B
0 1.0 geek-docs.com
2 NaN hello
3 4.0 world
可以看到,只有第一行和最后一行符合保留条件,其余行被移除。
3. 填充NaN值
除了移除NaN值外,还可以使用fillna()方法来填充NaN值。可以指定一个常数值或者使用插值的方式进行填充。下面是一个示例代码:
# 使用常数值0填充NaN值
df_filled = df.fillna(0)
print(df_filled)
运行结果如下:
A B
0 1.0 geek-docs.com
1 2.0 0
2 0.0 hello
3 4.0 world
可以看到,NaN值被填充为0。
除了常数值外,还可以使用插值的方式进行填充。示例如下:
# 使用前一个非NaN值填充NaN值
df_filled = df.fillna(method='ffill')
print(df_filled)
运行结果如下:
A B
0 1.0 geek-docs.com
1 2.0 geek-docs.com
2 2.0 hello
3 4.0 world
可以看到,NaN值被前一个非NaN值填充了。
结论
本文介绍了使用Pandas库来移除DataFrame中的NaN值,包括使用dropna()方法移除NaN值、使用thresh参数指定删除行或列的阈值、使用fillna()方法填充NaN值。在数据处理过程中,根据实际需求选择适当的方法来处理NaN值,可以提高数据分析及建模的准确性和可靠性。
极客教程