📅  最后修改于: 2023-12-03 14:46:31.521000             🧑  作者: Mango
在使用pandas进行数据预处理时,经常需要对数据进行清洗。其中一个常见的问题是缺失值的处理。pandas中提供了.dropna()
方法来删除具有缺失值的行或列。这个方法改变了数据帧的形状。如果只想查看具有缺失值的行或列,可以使用.isnull()
或.notnull()
方法。
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
{'any','all'}
。'any'表示有任意一个缺失值就将此行或列删除;'all'表示全部是缺失值才将此行或列删除。默认为'any'。import pandas as pd
# 创建测试数据
data = {
'name': ['Alice', 'Bob', 'Carol', 'David'],
'age': [20, 25, None, 35],
'gender': ['F', 'M', 'F', None],
'salary': [3000, None, 5000, 7000]
}
df = pd.DataFrame(data)
# 删除带有缺失值的行
df1 = df.dropna()
print(df1)
# name age gender salary
# 0 Alice 20.0 F 3000.0
# 删除带有缺失值的列
df2 = df.dropna(axis=1)
print(df2)
# name
# 0 Alice
# 1 Bob
# 2 Carol
# 3 David
# 只删除全部是缺失值的行或列
df3 = df.dropna(how='all')
print(df3)
# name age gender salary
# 0 Alice 20.0 F 3000.0
# 1 Bob 25.0 M NaN
# 2 Carol NaN F 5000.0
# 3 David 35.0 None 7000.0
# 设置thresh参数为2,表示至少有两个非缺失值才保留
df4 = df.dropna(thresh=2)
print(df4)
# name age gender salary
# 0 Alice 20.0 F 3000.0
# 1 Bob 25.0 M NaN
# 2 Carol NaN F 5000.0
# 3 David 35.0 None 7000.0
# 保留name和salary两列
df5 = df.dropna(subset=['name', 'salary'])
print(df5)
# name age gender salary
# 0 Alice 20.0 F 3000.0
# 2 Carol NaN F 5000.0
# 3 David 35.0 None 7000.0
# 在原数据帧中进行修改
df6 = df.dropna(inplace=True)
print(df6)
# None
print(df)
# name age gender salary
# 0 Alice 20.0 F 3000.0