📜  Python Pandas-数据丢失(1)

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

Python Pandas - 数据丢失

介绍

在 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 中,处理数据丢失的方法非常丰富。我们可以通过删除缺失数据或填充缺失数据等方法来处理,并根据实际情况选择不同的方法。这些方法可以使我们更方便地处理数据丢失,提高数据处理的效率。