Tôi đã cố gắng tìm ra câu trả lời cho câu hỏi này trong nhiều tháng khi học gấu trúc. Tôi sử dụng SAS cho công việc hàng ngày của mình và thật tuyệt vời cho sự hỗ trợ vượt trội. Tuy nhiên, SAS là khủng khiếp như một phần mềm vì nhiều lý do khác.
Một ngày nào đó tôi hy vọng sẽ thay thế việc sử dụng SAS của tôi bằng python và gấu trúc, nhưng hiện tại tôi thiếu một quy trình làm việc bên ngoài cho các bộ dữ liệu lớn. Tôi không nói về "dữ liệu lớn" đòi hỏi một mạng phân tán, mà là các tệp quá lớn để phù hợp với bộ nhớ nhưng đủ nhỏ để vừa với ổ cứng.
HDFStore
Suy nghĩ đầu tiên của tôi là sử dụng để giữ các bộ dữ liệu lớn trên đĩa và chỉ kéo các phần tôi cần vào dataframes để phân tích. Những người khác đã đề cập MongoDB như là một thay thế dễ sử dụng hơn. Câu hỏi của tôi là:
Một số quy trình thực hành tốt nhất để hoàn thành những điều sau đây là gì:
- Đang tải các tệp phẳng vào cấu trúc cơ sở dữ liệu trên đĩa cố định
- Truy vấn cơ sở dữ liệu đó để lấy dữ liệu để đưa vào cấu trúc dữ liệu của gấu trúc
- Cập nhật cơ sở dữ liệu sau khi thao tác các mảnh trong gấu trúc
Các ví dụ trong thế giới thực sẽ được đánh giá cao, đặc biệt là từ bất kỳ ai sử dụng gấu trúc trên "dữ liệu lớn".
Chỉnh sửa - một ví dụ về cách tôi muốn làm việc này:
- Lặp lại nhập một tệp phẳng lớn và lưu trữ nó trong một cấu trúc cơ sở dữ liệu cố định trên đĩa. Những tập tin này thường quá lớn để phù hợp với bộ nhớ.
- Để sử dụng Pandas, tôi muốn đọc các tập hợp con của dữ liệu này (thường chỉ là một vài cột tại một thời điểm) có thể phù hợp với bộ nhớ.
- Tôi sẽ tạo các cột mới bằng cách thực hiện các hoạt động khác nhau trên các cột đã chọn.
- Sau đó tôi sẽ phải nối các cột mới này vào cấu trúc cơ sở dữ liệu.
Tôi đang cố gắng tìm một cách thực hành tốt nhất để thực hiện các bước này. Đọc các liên kết về gấu trúc và pytables có vẻ như việc nối thêm một cột mới có thể là một vấn đề.
Chỉnh sửa - Trả lời cụ thể các câu hỏi của Jeff:
- Tôi đang xây dựng mô hình rủi ro tín dụng tiêu dùng. Các loại dữ liệu bao gồm đặc điểm điện thoại, SSN và địa chỉ; giá trị tài sản; thông tin xúc phạm như hồ sơ tội phạm, phá sản, v.v ... Các bộ dữ liệu tôi sử dụng hàng ngày có trung bình gần 1.000 đến 2.000 trường dữ liệu hỗn hợp: biến liên tục, danh nghĩa và thứ tự của cả dữ liệu số và ký tự. Tôi hiếm khi nối các hàng, nhưng tôi thực hiện nhiều thao tác tạo cột mới.
- Các hoạt động tiêu biểu liên quan đến việc kết hợp một số cột sử dụng logic có điều kiện thành một cột ghép mới. Ví dụ ,
if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'
. Kết quả của các hoạt động này là một cột mới cho mỗi bản ghi trong tập dữ liệu của tôi. - Cuối cùng, tôi muốn nối các cột mới này vào cấu trúc dữ liệu trên đĩa. Tôi sẽ lặp lại bước 2, khám phá dữ liệu với chéo bảng và thống kê mô tả cố gắng tìm các mối quan hệ trực quan thú vị để mô hình hóa.
- Một tệp dự án điển hình thường là khoảng 1GB. Các tệp được sắp xếp theo cách như vậy trong đó một hàng bao gồm một bản ghi dữ liệu người tiêu dùng. Mỗi hàng có cùng số cột cho mỗi bản ghi. Điều này sẽ luôn luôn là trường hợp.
- Thật hiếm khi tôi tập hợp các hàng khi tạo một cột mới. Tuy nhiên, nó khá phổ biến đối với tôi để tập hợp con trên các hàng khi tạo báo cáo hoặc tạo số liệu thống kê mô tả. Ví dụ: tôi có thể muốn tạo một tần suất đơn giản cho một ngành nghề kinh doanh cụ thể, ví dụ như thẻ tín dụng Bán lẻ. Để làm điều này, tôi sẽ chỉ chọn những bản ghi trong đó dòng doanh nghiệp = bán lẻ ngoài bất kỳ cột nào tôi muốn báo cáo. Tuy nhiên, khi tạo các cột mới, tôi sẽ kéo tất cả các hàng dữ liệu và chỉ các cột tôi cần cho các hoạt động.
- Quá trình mô hình hóa yêu cầu tôi phân tích mọi cột, tìm kiếm các mối quan hệ thú vị với một số biến kết quả và tạo các cột ghép mới mô tả các mối quan hệ đó. Các cột mà tôi khám phá thường được thực hiện trong các bộ nhỏ. Ví dụ: tôi sẽ tập trung vào một nhóm gồm 20 cột nói về việc xử lý các giá trị tài sản và quan sát cách chúng liên quan đến mặc định cho khoản vay. Khi những cột đó được khám phá và các cột mới được tạo, sau đó tôi chuyển sang một nhóm cột khác, nói giáo dục đại học và lặp lại quy trình. Những gì tôi đang làm là tạo ra các biến số ứng viên giải thích mối quan hệ giữa dữ liệu của tôi và một số kết quả. Vào cuối quá trình này, tôi áp dụng một số kỹ thuật học tập tạo ra một phương trình từ các cột ghép đó.
Rất hiếm khi tôi thêm hàng vào tập dữ liệu. Tôi gần như sẽ luôn tạo các cột mới (các biến hoặc tính năng trong thống kê / cách học máy).