你如何处理与使用numpy的/ SciPy的丢失数据?(How do you deal with m

2019-08-03 16:52发布

有一个问题我处理大多数数据清洗缺失值的东西。 [R处理与这口井使用其“NA”丢失数据标签。 在python,看来我得对付这似乎是一个重大的痛苦建立和似乎并没有做到有据可查蒙面阵列。 关于Python使这个过程更容易有什么建议? 这正在成为一个交易断路器中移动成Python进行数据分析。 谢谢

更新这显然已经有一段时间,因为我已经看过了numpy.ma模块中的方法。 看来,至少基本分析函数可用于蒙面阵列,并且提供的例子帮助我了解如何创建蒙面阵列(感谢作者)。 我想看看一些在Python中较新的统计方法(在今年的编程之夏正在开发)结合这方面,至少不会完整的案例分析。

Answer 1:

如果你愿意考虑一个图书馆,熊猫(http://pandas.pydata.org/)是建立在numpy的哪个以及许多其他的东西提供了顶级库:

智能数据对准和丢失的数据的集成处理:在计算增益自动基于标签的对准​​和容易地操纵杂乱数据转换成一个有序的形式

我已经使用了近一年在缺少金融业和严重对齐的数据是正常的,它真的让我的生活更轻松。



Answer 2:

我也怀疑蒙面阵列的问题。 这里有几个例子:

import numpy as np
data = np.ma.masked_array(np.arange(10))
data[5] = np.ma.masked # Mask a specific value

data[data>6] = np.ma.masked # Mask any value greater than 6

# Same thing done at initialization time
init_data = np.arange(10)
data = np.ma.masked_array(init_data, mask=(init_data > 6))


Answer 3:

掩蔽数组是anwswer,作为DpplerShift描述。 为了快速和肮脏的使用,可以使用带有布尔数组索引花哨:

>>> import numpy as np
>>> data = np.arange(10)
>>> valid_idx = data % 2 == 0 #pretend that even elements are missing

>>> # Get non-missing data
>>> data[valid_idx]
array([0, 2, 4, 6, 8])

您现在可以使用valid_idx作为其他数据的快速蒙版,以及

>>> comparison = np.arange(10) + 10
>>> comparison[valid_idx]
array([10, 12, 14, 16, 18])


Answer 4:

见sklearn.preprocessing.Imputer

import numpy as np
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])
X = [[np.nan, 2], [6, np.nan], [7, 6]]
print(imp.transform(X))  

来自实施例http://scikit-learn.org/



文章来源: How do you deal with missing data using numpy/scipy?