📅  最后修改于: 2023-12-03 15:00:45.317000             🧑  作者: Mango
fillna
是 Pandas 中用于处理缺失数据的方法。缺失数据在数据分析中是非常普遍的情况,比如数据采集不完整、数据预处理不完全、数据记录错误等等。当出现缺失数据时,Pandas 中的 fillna
方法可以帮助我们将 NaN 值(Not a Number)或 None 值替换成指定的数值或数据。在使用 fillna
方法时,inplace
参数的设置也非常重要,它决定了是否替换原数据集或返回新的数据集。
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
。
当出现缺失数据时,我们可以使用前向或后向填充,以利用已有的数据填补缺失的数据。可以使用 fillna
方法中的 method
参数来实现,代码如下:
import pandas as pd
df = pd.read_csv('example.csv')
df.fillna(method='ffill', inplace=True)
此代码使用前向填充的方式处理缺失数据,即使用之前的数据替换缺失数据。若要使用后向填充,则可以使用 method='bfill'
。
当缺失数据比较少时,可以考虑直接删除缺失数据。可以使用 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)
对该数据集进行数据清洗、处理,可以使用以下 fillna
和 inplace
方法:
# 填充缺失年龄为平均值
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
fillna
和 inplace
是 Pandas 中常用的方法之一,能够有效地处理缺失数据。在使用时,需要根据实际情况选择适当的填充方法,同时也需要注意设置 inplace
参数的值,以防止数据误删除或错误替换。