Pandas中的dropna函数详解

Pandas中的dropna函数详解

参考:pandas dropna

Pandas是一个强大的Python数据分析工具库,它提供了大量的函数和方法来处理数据。在数据分析过程中,经常会遇到缺失数据的问题。Pandas提供了dropna函数来帮助我们删除缺失数据。本文将详细介绍dropna函数的使用方法,并通过10-20个示例代码来展示其在不同场景下的应用。

dropna函数的基本用法

dropna函数的基本作用是删除DataFrame中包含缺失值的行或列。其基本语法如下:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

参数说明:
axis:确定删除行还是列,axis=0表示删除包含缺失值的行,axis=1表示删除包含缺失值的列。
how:确定何时删除行或列,how='any'表示只要有缺失值就删除,how='all'表示所有值都缺失才删除。
thresh:设置一个阈值,只有非缺失值的数量小于这个阈值时,才会删除行或列。
subset:在某些特定的列中查找缺失值。
inplace:是否在原地修改数据,inplace=True表示在原DataFrame上修改,inplace=False表示创建一个新的DataFrame。

示例代码1:删除包含缺失值的行

import pandas as pd
import numpy as np

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [np.nan, 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [np.nan, np.nan, np.nan, 'pandasdataframe.com']
})

# 删除包含缺失值的行
df_cleaned = df.dropna()
print(df_cleaned)

Output:

Pandas中的dropna函数详解

示例代码2:删除包含缺失值的列

import pandas as pd
import numpy as np

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [np.nan, 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [np.nan, np.nan, np.nan, 'pandasdataframe.com']
})

# 删除包含缺失值的列
df_cleaned = df.dropna(axis=1)
print(df_cleaned)

Output:

Pandas中的dropna函数详解

示例代码3:删除所有值都是缺失值的行

import pandas as pd
import numpy as np

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [np.nan, 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [np.nan, np.nan, np.nan, 'pandasdataframe.com']
})

# 删除所有值都是缺失值的行
df_cleaned = df.dropna(how='all')
print(df_cleaned)

Output:

Pandas中的dropna函数详解

示例代码4:设置阈值删除行

import pandas as pd
import numpy as np

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [np.nan, 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [np.nan, np.nan, np.nan, 'pandasdataframe.com']
})

# 只有当非缺失值少于2个时才删除行
df_cleaned = df.dropna(thresh=2)
print(df_cleaned)

Output:

Pandas中的dropna函数详解

示例代码5:在特定列中查找缺失值并删除行

import pandas as pd
import numpy as np

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [np.nan, 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [np.nan, np.nan, np.nan, 'pandasdataframe.com']
})

# 只在列'B'和'C'中查找缺失值
df_cleaned = df.dropna(subset=['B', 'C'])
print(df_cleaned)

Output:

Pandas中的dropna函数详解

示例代码6:原地删除包含缺失值的行

import pandas as pd
import numpy as np

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [np.nan, 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [np.nan, np.nan, np.nan, 'pandasdataframe.com']
})

# 原地删除包含缺失值的行
df.dropna(inplace=True)
print(df)

Output:

Pandas中的dropna函数详解

复杂场景下的dropna应用

在实际的数据处理中,我们可能会遇到更加复杂的场景,需要灵活运用dropna函数的参数来处理数据。

示例代码7:删除特定列中全部为缺失值的行

import pandas as pd
import numpy as np

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [np.nan, np.nan, 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [np.nan, np.nan, np.nan, 'pandasdataframe.com']
})

# 删除列'B'中全部为缺失值的行
df_cleaned = df[df['B'].notna() | df['C'].notna()]
print(df_cleaned)

Output:

Pandas中的dropna函数详解

示例代码8:结合条件筛选和dropna删除行

import pandas as pd
import numpy as np

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [np.nan, 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [np.nan, np.nan, np.nan, 'pandasdataframe.com']
})

# 删除'A'列大于1且包含缺失值的行
df_cleaned = df[df['A'] > 1].dropna()
print(df_cleaned)

Output:

Pandas中的dropna函数详解

示例代码9:删除缺失值前后的行

import pandas as pd
import numpy as np

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({
    'A': [1, np.nan, 2, np.nan, 4],
    'B': ['pandasdataframe.com', np.nan, 'pandasdataframe.com', np.nan, 'pandasdataframe.com'],
    'C': ['pandasdataframe.com', np.nan, 'pandasdataframe.com', np.nan, 'pandasdataframe.com']
})

# 删除缺失值前的行
df_cleaned = df.dropna().iloc[1:]
print(df_cleaned)

Output:

Pandas中的dropna函数详解

示例代码10:使用不同的方法删除缺失值

import pandas as pd
import numpy as np

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [np.nan, 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [np.nan, np.nan, np.nan, 'pandasdataframe.com']
})

# 使用不同的方法删除缺失值
df_cleaned1 = df.dropna()  # 删除包含缺失值的行
print(df_cleaned1)
df_cleaned2 = df.dropna(axis=1)  # 删除包含缺失值的列
print(df_cleaned2)
df_cleaned3 = df.dropna(how='all')  # 删除所有值都是缺失值的行
print(df_cleaned3)
df_cleaned4 = df.dropna(thresh=2)  # 只有当非缺失值少于2个时才删除行
print(df_cleaned4)
df_cleaned5 = df.dropna(subset=['B', 'C'])  # 只在列'B'和'C'中查找缺失值
print(df_cleaned5)

Output:

Pandas中的dropna函数详解

dropna函数的注意事项

在使用dropna函数时,有几点需要注意:

  1. dropna函数默认会删除包含缺失值的行,如果要删除列,需要设置axis=1
  2. dropna函数默认只要行或列中有缺失值就会删除,如果要删除所有值都是缺失值的行或列,需要设置how='all'
  3. dropna函数默认会返回一个新的DataFrame,如果要在原地修改数据,需要设置inplace=True
  4. dropna函数不仅可以删除np.nan,还可以删除NoneNaT(针对时间类型的缺失值)。

示例代码11:删除包含None的行

import pandas as pd

# 创建一个包含None的DataFrame
df = pd.DataFrame({
    'A': [1, 2, None, 4],
    'B': [None, 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [None, None, None, 'pandasdataframe.com']
})

# 删除包含None的行
df_cleaned = df.dropna()
print(df_cleaned)

Output:

Pandas中的dropna函数详解

示例代码12:删除包含NaT的行

import pandas as pd
import numpy as np

# 创建一个包含NaT的DataFrame
df = pd.DataFrame({
    'A': [pd.Timestamp('2020-01-01'), pd.Timestamp('2020-02-01'), np.nan, pd.Timestamp('2020-04-01')],
    'B': [np.nan, 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'C': [np.nan, np.nan, np.nan, 'pandasdataframe.com']
})

# 删除包含NaT的行
df_cleaned = df.dropna()
print(df_cleaned)

Output:

Pandas中的dropna函数详解

总结

dropna函数是Pandas处理缺失数据的重要工具,它可以帮助我们快速删除包含缺失值的行或列。通过灵活运用dropna函数的参数,我们可以在各种复杂场景下处理缺失数据。在使用dropna函数时,需要注意其默认行为和对不同类型缺失值的处理能力。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程