Tôi có một bảng SQL mà tôi có thể đọc trong như một khung dữ liệu Pandas, có cấu trúc sau:Làm cách nào để tạo SparseDataFrame hiệu quả từ một bảng dài?
user_id value
1 100
1 200
2 100
4 200
Đó là một đại diện của một ma trận, mà tất cả các giá trị là 1 hoặc 0. dày đặc đại diện của ma trận này sẽ trông như thế này:
100 200
1 1 1
2 1 0
4 0 1
Thông thường, để làm chuyển đổi này, bạn có thể sử dụng trục, nhưng trong trường hợp của tôi với hàng chục hoặc hàng trăm triệu hàng trong bảng đầu tiên ta có một ma trận dày đặc lớn đầy đủ của số không đắt tiền để kéo xung quanh. Bạn có thể chuyển đổi nó thành thưa thớt, nhưng nhận được rằng đến nay đòi hỏi rất nhiều tài nguyên.
Hiện tại tôi đang làm việc trên một giải pháp để gán số hàng cho mỗi user_id, sắp xếp và sau đó chia cột 'giá trị' thành SparseSeries trước khi kết hợp lại thành SparseDataFrame. Có cách nào tốt hơn?
Tôi chưa thấy nhiều cuộc thảo luận về SparseSeries trên SO. Tôi đã trả lời một số câu hỏi về việc chuyển qua lại giữa điều đó và ma trận 'scipy'' sparse'. Ấn tượng của tôi là cấu trúc Pandas 'sparse' vẫn đang được phát triển. – hpaulj
Tôi đã tìm thấy một số ít, như câu trả lời của bạn ở đây http://stackoverflow.com/questions/34181494/populate-a-pandas-sparsedataframe-from-a-scipy-sparse-coo-matrix Vấn đề là nó không dường như không có quy mô. Ngay bây giờ tôi đang cố gắng chuyển đổi một ma trận csc là 40.000 x 15.000 và nó đã được chạy trong hơn 30 phút. –