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中处理缺失值的三种常用方法,当处理缺失值时,我们需要根据具体情况选择适用的方法。