2012-07-10 9 views
15

मुझे स्टेटस। डीटीए प्रारूप में सहेजी गई डेटा फ़ाइल विरासत में मिली है। मैं इसे scikits.statsmodelsgenfromdta() फ़ंक्शन के साथ लोड कर सकता हूं। यह मेरे डेटा को 1-आयामी NumPy सरणी में रखता है, जहां प्रत्येक प्रविष्टि डेटा की एक पंक्ति होती है, जो 24-टुपल में संग्रहीत होती है।tuples/पंक्तियों की बड़ी सूची से पांडस डेटाफ्रेम का कुशलतापूर्वक निर्माण

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) 

मुझे उत्सुकता है कि अगर इसे पांडस डेटाफ्रेम में व्यवस्थित करने का कोई प्रभावी तरीका है। मैंने जो पढ़ा है, उससे डेटाफ्रेम पंक्ति-दर-पंक्ति का निर्माण काफी अक्षम लगता है ... लेकिन मेरे विकल्प क्या हैं?

मैं एक बहुत धीमी गति से पहले-पास कि बस एक ही पंक्ति DataFrame के रूप में प्रत्येक टपल पढ़कर उस पर संलग्न कर देता है लिखा है। बस सोच रहा है कि कुछ और बेहतर होने के लिए जाना जाता है।

+0

'pandas.DataFrame (initialload)' वापसी करता है कि आप क्या खोज रहे हो? – eumiro

+0

वाह। लगभग। यह कुछ कॉलम नामों को गुमराह कर दिया, लेकिन मैं इसे आसानी से ठीक कर सकता हूं। पागल। धन्यवाद, मैंने कभी अनुमान लगाया नहीं होगा कि पांडस दस्तावेज़ पढ़ने के बाद भी। क्षमा करें यह इतना आसान था। – ely

उत्तर

19

अगर मेरी टिप्पणी आपके प्रश्न का उत्तर, मेरा उत्तर किसी भी अधिक उस पर टिप्पणी करने के लिए नहीं है ... ;-)

pandas.DataFrame(initialload, columns=list_of_column_names) 
3

पांडा का संस्करण 0.12 के बाद Stata प्रारूप सीधे (Reference) लोड हो रहा है समर्थन करना चाहिए।

प्रलेखन से:

उच्च-स्तरीय समारोह read_stata एक डीटीए प्रारूप फ़ाइल को पढ़ने और एक DataFrame वापस आ जाएगी: वर्ग StataReader प्रारंभ में दिया डीटीए फ़ाइल के हेडर पढ़ा जाएगा। इसकी विधि डेटा() टिप्पणियों पढ़ा जाएगा, उन्हें एक DataFrame जो दिया जाता है को बदलने:

pd.read_stata('stata.dta') 
संबंधित मुद्दे