Tôi đã kế thừa một tệp dữ liệu được lưu ở định dạng Stata .dta. Tôi có thể tải nó với chức năng scikits.statsmodels
genfromdta()
. Điều này đặt dữ liệu của tôi vào một mảng NumPy 1 chiều, trong đó mỗi mục nhập là một hàng dữ liệu, được lưu trữ trong một bộ 24-bit.Xây dựng một cách hiệu quả Pandas DataFrame từ danh sách lớn các bộ/hàng
In [2]: st_time = time.time(); initialload = sm.iolib.genfromdta("/home/myfile.dta"); ed_time = time.time(); print (ed_time - st_time)
666.523324013
In [3]: type(initialload)
Out[3]: numpy.ndarray
In [4]: initialload.shape
Out[4]: (4809584,)
In [5]: initialload[0]
Out[5]: (19901130.0, 289.0, 1990.0, 12.0, 199.0, 18.0, 40301000.0, 'GB', 18242.0, -2.368063, 1.0, 1.7783716290878204, 4379.355, 66.17669677734375, -999.0, -999.0, -0.60000002, -999.0, -999.0, -999.0, -999.0, -999.0, 0.2, 371.0)
Tôi tò mò nếu có cách hiệu quả để sắp xếp việc này vào khung dữ liệu Pandas. Từ những gì tôi đã đọc, việc xây dựng một DataFrame từng hàng có vẻ khá kém hiệu quả ... nhưng các lựa chọn của tôi là gì?
Tôi đã viết một thông báo đầu tiên khá chậm mà chỉ cần đọc từng bộ dữ liệu dưới dạng một DataFrame một hàng và nối thêm nó. Chỉ cần tự hỏi nếu bất cứ điều gì khác được biết là tốt hơn.
Liệu 'pandas.DataFrame (initialload) 'trả lại những gì bạn đang tìm kiếm? – eumiro
Chà. Hầu hết. Nó có một số tên cột, nhưng tôi có thể dễ dàng sửa nó. Khùng. Cảm ơn bạn, tôi sẽ không bao giờ đoán được rằng ngay cả sau khi đọc tài liệu về Pandas. Xin lỗi điều này thật đơn giản. – ely