📅  最后修改于: 2023-12-03 14:46:02.028000             🧑  作者: Mango
在 Pandas 中,当处理 DataFrame 或 Series 时,我们可能会遇到数据丢失的情况。这些数据丢失的原因有很多,比如数据收集过程中的错误、数据读取时的错误、数据处理时的错误、数据存储时的错误等。
但不管出现数据丢失的原因是什么,处理数据丢失是非常重要的。Pandas 提供了很多丢失数据的处理方法,比如删除缺失数据、填充缺失数据等。
在本文中,我们将介绍几种处理数据丢失的方法。
删除缺失数据是最直接的方法,可以通过 dropna
函数实现。该函数会删除 DataFrame 或 Series 中由于缺失数据导致的行或列。
import pandas as pd
data = {'name': ['Tom', 'Jerry', 'Mickey', 'Minnie', 'Donald'],
'age': [25, 30, None, 28, 35],
'gender': ['M', 'M', 'M', 'F', None]}
df = pd.DataFrame(data)
print(df.dropna())
输出结果:
name age gender
0 Tom 25 M
1 Jerry 30 M
3 Minnie 28 F
该函数有很多参数,我们可以根据需要指定不同的参数。比如,如果只删除行中所有值都为缺失数据的行,可以使用 how='all'
参数;如果只删除某一列中有缺失数据的行,可以使用 subset
参数;如果对不同的列使用不同的删除方法,可以使用 axis
参数。
# 删除所有值都为缺失数据的行
print(df.dropna(how='all'))
# 只删除 gender 列中有缺失数据的行
print(df.dropna(subset=['gender']))
# 对列 name 使用 how='any',对列 age 使用 how='all'
print(df.dropna(subset=['name'], how='any').dropna(subset=['age'], how='all'))
除了删除缺失数据,我们还可以使用填充方法来处理。fillna
函数可以用指定值、前一行/后一行的值、均值/中位数等来填充缺失数据。以下是一些常用的填充方法:
fillna(0)
:用 0 填充缺失值fillna(df.mean())
:用平均值填充缺失值fillna(df.median())
:用中位数填充缺失值fillna(method='ffill')
:用前一行的值填充缺失值fillna(method='bfill')
:用后一行的值填充缺失值# 用 0 填充缺失值
print(df.fillna(0))
# 用平均值填充 age 列缺失值
print(df.fillna({'age': df['age'].mean()}))
# 用前一行的值填充缺失值
print(df.fillna(method='ffill'))
# 用后一行的值填充缺失值
print(df.fillna(method='bfill'))
在 Pandas 中,处理数据丢失的方法非常丰富。我们可以通过删除缺失数据或填充缺失数据等方法来处理,并根据实际情况选择不同的方法。这些方法可以使我们更方便地处理数据丢失,提高数据处理的效率。