📜  fillna pandas inplace (1)

📅  最后修改于: 2023-12-03 15:00:45.317000             🧑  作者: Mango

Pandas之fillna和inplace

简介

fillna 是 Pandas 中用于处理缺失数据的方法。缺失数据在数据分析中是非常普遍的情况,比如数据采集不完整、数据预处理不完全、数据记录错误等等。当出现缺失数据时,Pandas 中的 fillna 方法可以帮助我们将 NaN 值(Not a Number)或 None 值替换成指定的数值或数据。在使用 fillna 方法时,inplace 参数的设置也非常重要,它决定了是否替换原数据集或返回新的数据集。

基本方法
1. 填充特定的值

Pandas 中可以使用 fillna 方法将 NaN 值或 None 值替换成指定的数值或数据,代码如下:

import pandas as pd

df = pd.read_csv('example.csv')
df.fillna(0, inplace=True)

此代码将 example.csv 文件中的 NaN 值或 None 值替换成 0,修改后的数据将替换原数据集。如果需要返回新的数据集,则可以将 inplace=False

2. 使用前向或后向填充

当出现缺失数据时,我们可以使用前向或后向填充,以利用已有的数据填补缺失的数据。可以使用 fillna 方法中的 method 参数来实现,代码如下:

import pandas as pd

df = pd.read_csv('example.csv')
df.fillna(method='ffill', inplace=True)

此代码使用前向填充的方式处理缺失数据,即使用之前的数据替换缺失数据。若要使用后向填充,则可以使用 method='bfill'

3. 直接删除缺失数据

当缺失数据比较少时,可以考虑直接删除缺失数据。可以使用 dropna 方法来实现,代码如下:

import pandas as pd

df = pd.read_csv('example.csv')
df.dropna(inplace=True)

此代码将删除数据集中所有缺失数据。

代码示例

假设存在以下数据集:

import pandas as pd

data = {
    'name': ['Tom', 'Jess', 'Ricky', 'Jordi', 'Mike', 'Alex', 'Jack'],
    'age': [20, 25, None, 22, 27, None, 30],
    'gender': ['M', 'F', 'M', 'M', 'M', None, 'M'],
    'salary': [5000, 6000, 6500, None, 7000, 8000, 5000]
}

df = pd.DataFrame(data)

对该数据集进行数据清洗、处理,可以使用以下 fillnainplace 方法:

# 填充缺失年龄为平均值
mean_age = df['age'].mean()
df['age'].fillna(mean_age, inplace=True)

# 填充缺失性别为占比最多的性别
mode_gender = df['gender'].mode()[0]
df['gender'].fillna(mode_gender, inplace=True)

# 删除缺失薪资的记录
df.dropna(inplace=True)

通过上述代码,处理后的数据集如下:

   name        age gender  salary
0   Tom  20.000000      M    5000
1  Jess  25.000000      F    6000
2  Ricky  24.666667      M    6500
4  Mike  27.000000      M    7000
6  Jack  30.000000      M    5000
总结

fillnainplace 是 Pandas 中常用的方法之一,能够有效地处理缺失数据。在使用时,需要根据实际情况选择适当的填充方法,同时也需要注意设置 inplace 参数的值,以防止数据误删除或错误替换。