2016-05-01 23 views
6

Tôi đã sử dụng cácbiến đổi scipy sparse csr thành gấu trúc?

sklearn.preprocessing.OneHotEncoder 

để chuyển đổi một số dữ liệu đầu ra là scipy.sparse.csr.csr_matrix làm thế nào tôi có thể kết hợp nó trở lại vào dataframe ban đầu của tôi cùng với các cột khác?

Tôi cố gắng để sử dụng pd.concat nhưng tôi nhận

TypeError: cannot concatenate a non-NDFrame object 

Cảm ơn

Trả lời

8

Nếu A là csr_matrix, bạn có thể sử dụng .toarray() (có cũng .todense() đó tạo ra một numpymatrix, cũng là làm việc cho DataFrame hàm tạo):

df = pd.DataFrame(A.toarray()) 

Bạn c sau đó sử dụng điều này với pd.concat().

A = csr_matrix([[1, 0, 2], [0, 3, 0]]) 

    (0, 0) 1 
    (0, 2) 2 
    (1, 1) 3 

<class 'scipy.sparse.csr.csr_matrix'> 

pd.DataFrame(A.todense()) 

    0 1 2 
0 1 0 2 
1 0 3 0 

<class 'pandas.core.frame.DataFrame'> 
RangeIndex: 2 entries, 0 to 1 
Data columns (total 3 columns): 
0 2 non-null int64 
1 2 non-null int64 
2 2 non-null int64 

Trong phiên bản 0.20, pandas giới thiệu sparse data structures, bao gồm SparseDataFrame.

Hoặc, bạn có thể chuyển ma trận thưa thớt đến sklearn để tránh hết bộ nhớ khi chuyển đổi về pandas. Chỉ cần chuyển đổi dữ liệu khác của bạn thành định dạng thưa thớt bằng cách chuyển một số numpyarray tới hàm tạo scipy.sparse.csr_matrix và sử dụng scipy.sparse.hstack để kết hợp (xem docs).

+0

Tôi có thể làm gì nếu A.toarray() của tôi dẫn đến một MemoryError? Có cách nào để tạo Dataframe mà không chuyển đổi nó trở lại một ndarray không? – user77005

+0

Bạn có thể muốn xem gấu trúc [cấu trúc dữ liệu thưa thớt] (https://pandas.pydata.org/pandas-docs/stable/sparse.html) – Stefan

1

Bạn cũng có thể tránh lấy lại ma trận thưa thớt ở địa điểm đầu tiên bằng cách đặt tham số sparse thành False khi tạo Bộ mã hóa.

Các tài liệu của OneHotEncoder trạng thái:

thưa thớt: boolean, mặc định = True

Sẽ trở lại ma trận thưa thớt nếu thiết lập Đúng khác sẽ trả về một mảng.

Sau đó, bạn có thể gọi lại phương thức khởi tạo của DataFrame để chuyển mảng cố định thành DataFrame.

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