Python pandas处理缺失值方法详解(dropna、drop、fillna)

  • Post category:Python

Python pandas处理缺失值方法详解

Pandas是Python中一个非常强大的数据处理库,其中处理缺失值是一个很重要的问题。在数据处理过程中,可能会遇到一些数据缺失的情况。Pandas提供了一些常用的方法来处理缺失值,包括dropna、drop和fillna等方法。

dropna方法

dropna方法是直接去除缺失值的方法。例如:

import pandas as pd
import numpy as np

data = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8], 'C': [np.nan, 10, 11, 12]})

# 使用dropna方法去除缺失值
data.dropna()

# 结果如下:
#      A    B     C
# 1.0  2.0  7.0  10.0
# 2.0  4.0  8.0  11.0

在上面的例子中,我们首先用Pandas的DataFrame方法创建了一个3列4行的数据,其中有一些缺失值。然后我们使用dropna方法去除缺失值,得到了一个去除了缺失值的新数据。

dropna有许多输入参数, 其中比较常用的是axis、how和thresh。

  • axis:指定删除缺失值的维度,0表示删除行(默认),1表示删除列;
  • how:指定删除的方式,有两个选择:’any’表示删除缺失值所在的整行(列),’all’表示整行(列)都是缺失值时才删除;
  • thresh:指定一个整数,表示一行或一列中至少有多少非缺失值时才保留,默认是0,即删除整行或整列。

drop方法

drop方法也是删除缺失值的方法之一,但与dropna方法有所不同。drop方法是可以删除多行、多列的。

data = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8], 'C': [np.nan, 10, 11, 12]})

# 使用drop方法删除所有包含缺失值的行
data.drop(index=[1,2,3])

# 结果如下:
#     A    B     C
# 0  1.0  5.0   NaN

在上面的例子中,我们使用drop方法删除了包含缺失值的所有行。

drop也有许多输入参数,其中最常用的是axis。设置axis为1意味着删除列。

fillna方法

fillna方法是一种填充缺失值的方法。它接受一个标量或字典或Series或DataFrame。例如:

data = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8], 'C': [np.nan, 10, 11, 12]})

# 使用fillna方法填充缺失值
data.fillna(0)

# 结果如下:
#      A    B     C
# 0  1.0  5.0   0.0
# 1  2.0  0.0  10.0
# 2  0.0  7.0  11.0
# 3  4.0  8.0  12.0

在上面的例子中,我们使用fillna方法将所有缺失值填充为0。

fillna也有许多输入参数,其中最常用的是value。当使用value时,所有缺失值将被填充为该值。另外,我们还可以选择使用method输入参数,这个参数接受一个字符串,表示填充缺失值的方法,如前向填充(ffill)或后向填充(bfill)。

示例1

数据中有一列为交易金额,其中存在一些缺失值,需要将这些缺失值填充为该列其他非缺失数据的中位数。

import pandas as pd
import numpy as np

data = pd.read_csv("data.csv")
median = data['交易金额'].median()
data['交易金额'].fillna(median, inplace=True)

在这个例子中,我们首先使用read_csv方法读取一个csv文件,然后计算列’交易金额’的中位数,并使用fillna方法将缺失值填充为该中位数。

示例2

数据中有一列为测量值,其中存在一些缺失数据,需要删除包含缺失数据的整行。

import pandas as pd
import numpy as np

data = pd.read_csv("data.csv")
data.dropna(inplace=True)

在这个例子中,我们首先使用read_csv方法读取一个csv文件,然后使用dropna方法删除包含缺失数据的整行。

以上就是Pandas中处理缺失值的三种常用方法,当处理缺失值时,我们需要根据具体情况选择适用的方法。