📜  Python|熊猫索引.dropna()(1)

📅  最后修改于: 2023-12-03 14:46:31.521000             🧑  作者: Mango

Python | 熊猫索引.dropna()

简介

在使用pandas进行数据预处理时,经常需要对数据进行清洗。其中一个常见的问题是缺失值的处理。pandas中提供了.dropna()方法来删除具有缺失值的行或列。这个方法改变了数据帧的形状。如果只想查看具有缺失值的行或列,可以使用.isnull().notnull()方法。

语法
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数
  • axis:int或字符串,表示要删除哪个轴,0表示删除行,1表示删除列,默认为0。
  • how:字符串,表示缺失值的处理方式。取值范围为{'any','all'}。'any'表示有任意一个缺失值就将此行或列删除;'all'表示全部是缺失值才将此行或列删除。默认为'any'。
  • thresh:int,表示保留行或列中非缺失值的最小个数。只有该行或列非缺失值的个数小于等于thresh才删除。默认为None,表示不考虑非缺失值的个数。
  • subset:字符串或列表,表示保留哪些列或行不删除。默认为None,表示不考虑保留哪些列或行。
  • inplace:bool,表示是否在原数据帧中进行修改。默认为False,表示返回修改后的数据帧,原数据帧不修改。
示例
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