2009-09-04 32 views
11

Một trong những điều tôi giải quyết nhiều nhất trong việc làm sạch dữ liệu là thiếu giá trị. R giao dịch với giếng này bằng cách sử dụng nhãn "NA" thiếu nhãn dữ liệu. Trong python, nó xuất hiện rằng tôi sẽ phải đối phó với các mảng mặt nạ mà dường như là một nỗi đau lớn để thiết lập và dường như không được tài liệu tốt. Bất kỳ gợi ý nào về việc làm cho quy trình này dễ dàng hơn trong Python? Điều này đang trở thành một đối tác phá vỡ trong việc chuyển sang Python để phân tích dữ liệu. Cảm ơnLàm thế nào để bạn xử lý dữ liệu bị thiếu bằng cách sử dụng numpy/scipy?

Cập nhật Rõ ràng là tôi đã xem xét các phương pháp trong mô-đun numpy.ma. Dường như ít nhất các hàm phân tích cơ bản có sẵn cho các mảng được che dấu, và các ví dụ được cung cấp đã giúp tôi hiểu cách tạo các mảng mặt nạ (nhờ các tác giả). Tôi muốn xem liệu một số phương pháp thống kê mới hơn trong Python (được phát triển trong GSoC năm nay) có kết hợp khía cạnh này hay không, và ít nhất là phân tích trường hợp hoàn chỉnh.

+0

Tại sao không sử dụng numpy.NaN để xác định dữ liệu bị mất? – Paul

Trả lời

1

Tôi cũng đặt câu hỏi về vấn đề với mảng bị che dấu. Dưới đây là một vài ví dụ:

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

Mảng mặt nạ là anwswer, như DpplerShift mô tả. Để sử dụng nhanh chóng và dơ bẩn, bạn có thể sử dụng chỉ mục ưa thích với mảng boolean:

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

Bây giờ bạn có thể sử dụng valid_idx như một mặt nạ nhanh chóng trên các dữ liệu khác cũng

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

Nếu bạn sẵn sàng xem xét một thư viện, gấu trúc (http://pandas.pydata.org/) là một thư viện được xây dựng trên đầu trang của một số vật dụng khác cung cấp:

Căn chỉnh thông minh và xử lý tích hợp dữ liệu còn thiếu: nhận được nhãn tự động- dựa trên căn chỉnh nt trong tính toán và dễ dàng thao tác dữ liệu lộn xộn thành một hình thức có trật tự

Tôi đã sử dụng nó trong gần một năm trong ngành tài chính mà dữ liệu bị thiếu và bị căn chỉnh là tiêu chuẩn và nó thực sự làm cho cuộc sống của tôi dễ dàng hơn.

0

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

Ví dụ từ http://scikit-learn.org/

Các vấn đề liên quan