fancyimpute

raw JSON →
0.7.0 verified Fri May 01 auth: no python maintenance

Matrix completion and feature imputation algorithms for Python. Current version is 0.7.0 (last release 2020). The library provides iterative imputation methods like SoftImpute, IterativeImputer, KNN, and NuclearNormMinimization. It is in maintenance mode with no recent updates.

pip install fancyimpute
error ImportError: No module named 'fancyimpute'
cause fancyimpute not installed or installed in wrong environment.
fix
Run: pip install fancyimpute
error ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
cause Data contains infinity or extremely large values.
fix
Replace infinity with NaN using np.isinf, or scale data.
error ModuleNotFoundError: No module named 'cvxpy'
cause Attempting to use NuclearNormMinimization without cvxpy installed.
fix
Install cvxpy: pip install cvxpy
error AttributeError: 'SoftImpute' object has no attribute 'fit_transform'
cause Old version of fancyimpute (<0.5.0) where fit() returned imputed matrix.
fix
Upgrade fancyimpute: pip install --upgrade fancyimpute
deprecated fancyimpute is no longer actively maintained (last release 2020). Consider using sklearn.impute.IterativeImputer for iterative imputation or other modern alternatives.
fix Use sklearn.impute.IterativeImputer or other up-to-date libraries.
gotcha Input data must be a 2D numpy array with NaN values for missing entries. If you use a pandas DataFrame, it will be converted but columns may be reordered.
fix Ensure data is a 2D numpy array with NaN for missing values. Convert pandas DataFrame with .values.
gotcha Some solvers (e.g., NuclearNormMinimization) require cvxpy, which is an optional dependency. If not installed, import will fail.
fix Install cvxpy: pip install cvxpy
breaking In version 0.5.0, the API changed: fit() returns a fitted model, and transform() or fit_transform() must be used to impute. Older versions used fit() to return imputed data.
fix Use fit_transform() or fit() then transform() instead of relying on fit() returning imputed data.

Basic usage: impute missing values using SoftImpute.

import numpy as np
from fancyimpute import SoftImpute

# Create data with missing values
X = np.array([[1, 2, np.nan], [4, np.nan, 6], [7, 8, 9]])
# impute using SoftImpute
X_filled = SoftImpute().fit_transform(X)
print(X_filled)