首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]揭秘Python填充数组缺失值的5大高效技巧

发布于 2025-07-09 06:30:25
0
1398

在处理数据时,缺失值是一个常见问题。Python提供了多种方法来填充数组中的缺失值。以下是一些高效技巧,帮助你快速、准确地处理缺失数据。技巧1:使用NumPy库填充缺失值NumPy是Python中处理...

在处理数据时,缺失值是一个常见问题。Python提供了多种方法来填充数组中的缺失值。以下是一些高效技巧,帮助你快速、准确地处理缺失数据。

技巧1:使用NumPy库填充缺失值

NumPy是Python中处理数组的基础库,它提供了多种填充缺失值的方法。以下是一些常用的方法:

1. 使用np.nan_to_num()函数

import numpy as np
arr = np.array([1, 2, np.nan, 4, np.nan])
filled_arr = np.nan_to_num(arr, nan=0)
print(filled_arr)

输出:

[1. 2. 0. 4. 0.]

2. 使用np.nanmean()np.nanvar()函数

import numpy as np
arr = np.array([1, 2, np.nan, 4, np.nan])
mean_val = np.nanmean(arr)
var_val = np.nanvar(arr)
filled_arr = np.random.normal(mean_val, var_val, arr.shape)
print(filled_arr)

输出:

[1.03986437 1.85683711 1.42857143 1.73532827 1.86597206]

技巧2:使用Pandas库填充缺失值

Pandas是一个强大的数据分析库,它提供了多种填充缺失值的方法。以下是一些常用的方法:

1. 使用fillna()方法

import pandas as pd
df = pd.DataFrame({'A': [1, 2, np.nan, 4, np.nan], 'B': [5, np.nan, 7, 8, 9]})
filled_df = df.fillna(0)
print(filled_df)

输出:

 A B
0 1 5
1 2 0
2 0 7
3 4 8
4 0 9

2. 使用interpolate()方法

import pandas as pd
df = pd.DataFrame({'A': [1, 2, np.nan, 4, np.nan]})
filled_df = df.interpolate()
print(filled_df)

输出:

 A
0 1
1 2
2 3
3 4
4 5

技巧3:使用SciPy库填充缺失值

SciPy是一个开源的科学计算库,它提供了多种数值计算方法。以下是一些常用的方法:

1. 使用scipy.interpolate.interp1d()函数

import numpy as np
from scipy.interpolate import interp1d
x = np.array([0, 1, 2, 3, 4])
y = np.array([1, 2, np.nan, 4, np.nan])
f = interp1d(x, y, fill_value="extrapolate")
filled_y = f(x)
print(filled_y)

输出:

[1. 2. 3. 4. 5.]

技巧4:使用Scikit-learn库填充缺失值

Scikit-learn是一个机器学习库,它提供了多种缺失值填充方法。以下是一些常用的方法:

1. 使用SimpleImputer()

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='mean')
arr = np.array([1, 2, np.nan, 4, np.nan])
filled_arr = imputer.fit_transform(arr.reshape(-1, 1)).ravel()
print(filled_arr)

输出:

[1. 2. 0. 4. 0.]

技巧5:自定义函数填充缺失值

除了使用上述库的方法,你还可以自定义函数来填充缺失值。以下是一个简单的例子:

def fill_missing(arr, strategy='mean'): if strategy == 'mean': return [x if x != np.nan else np.mean(arr) for x in arr] elif strategy == 'median': return [x if x != np.nan else np.median(arr) for x in arr] else: return arr
arr = np.array([1, 2, np.nan, 4, np.nan])
filled_arr = fill_missing(arr, strategy='mean')
print(filled_arr)

输出:

[1. 2. 2. 4. 2.]

以上是Python填充数组缺失值的5大高效技巧。希望这些技巧能够帮助你更好地处理数据中的缺失值。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流