2009-09-04 2 views
11

Одна из вещей, которые я имею в большинстве случаев при очистке данных, - это отсутствие значений. R имеет дело с этой скважиной, используя метку «Нет данных». В python кажется, что мне придется иметь дело с масками массивов, которые, похоже, являются главной болью для настройки и, похоже, не документированы хорошо. Любые предложения по упрощению этого процесса в Python? Это становится нарушителем транзакций при переходе на Python для анализа данных. СпасибоКак вы справляетесь с отсутствующими данными с помощью numpy/scipy?

Обновление Очевидно, прошло некоторое время с тех пор, как я просмотрел методы в модуле numpy.ma. Похоже, что по крайней мере основные функции анализа доступны для маскированных массивов, а приведенные примеры помогли мне понять, как создавать маскированные маски (спасибо авторам). Я хотел бы узнать, включает ли некоторые из новых статистических методов в Python (разрабатываемых в GSoC в этом году) этот аспект и, по крайней мере, делает полный анализ ситуации.

+0

Почему бы не использовать numpy.NaN для выявления недостающих данных? – Paul

ответ

1

Я также задаю вопрос с помощью маскированных массивов. Вот несколько примеров:

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)) 
1

Замаскированные массивы являются 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]) 
4

Если вы готовы рассмотреть библиотека, панды (http://pandas.pydata.org/) библиотека построена на вершине NumPy, который среди многих других вещей обеспечивает:

Интеллектуальное выравнивание данных и интегрированной обработки недостающих данных: усиление автоматического label- основанное выравнивание нт в вычислениях и легко манипулировать беспорядочные данные в упорядоченную форму

Я использую его почти один год в финансовом секторе, где отсутствует и плохо выровнены данными являются нормой, и это действительно сделали мою жизнь легче.