2011-02-02 17 views
46

मैं बहुत सारे सांख्यिकीय काम करता हूं और पाइथन का उपयोग अपनी मुख्य भाषा के रूप में करता हूं। कुछ डेटा सेट जो मैं काम करता हूं, हालांकि 20 जीबी मेमोरी ले सकता है, जो इन-मेमोरी फ़ंक्शंस का उपयोग करके निष्क्रिय, स्पीसी और पीआईआईएमएसएल में लगभग असंभव है। सांख्यिकीय विश्लेषण भाषा एसएएस का यहां एक बड़ा फायदा है कि यह सख्त डिस्क-मेमोरी प्रोसेसिंग के विपरीत हार्ड डिस्क से डेटा पर काम कर सकता है। लेकिन, मैं एसएएस (कई कारणों से) में बहुत सारे कोड लिखने से बचना चाहता हूं और इसलिए यह निर्धारित करने की कोशिश कर रहा हूं कि मेरे पास पाइथन के साथ कौन से विकल्प हैं (अधिक हार्डवेयर और मेमोरी खरीदने के अलावा)।पायथन में बड़े डेटा पर विश्लेषणात्मक काम करने के लिए h5py का उपयोग करने का अनुभव?

मैं स्पष्ट करना चाहिए कि ऐसा दृष्टिकोण नक्शा को कम मेरे काम के अधिकांश हिस्सों में मदद नहीं करेगा, क्योंकि मैं डेटा की पूरा सेट (जैसे quantiles कंप्यूटिंग या एक रसद प्रतिगमन मॉडल फिटिंग) पर संचालित करने की जरूरत है।

हाल ही में मैं h5py साथ खेलना शुरू कर दिया और लगता है कि यह सबसे अच्छा विकल्प मैं अजगर एसएएस की तरह काम करते हैं और डिस्क से (HDF5 फ़ाइलों के माध्यम से) डेटा पर संचालित करने के लिए, जबकि अभी भी लाभ उठाने के लिए सक्षम किया जा रहा अनुमति देने के लिए numpy/scipy/matplotlib पाया है है , आदि। मैं सुनना चाहूंगा कि किसी को भी इसी तरह की सेटिंग में पाइथन और एच 5py का उपयोग करने का अनुभव है और उन्हें क्या मिला है। क्या कोई भी एसएएस द्वारा प्रभुत्व वाले "बड़े डेटा" सेटिंग्स में पाइथन का उपयोग करने में सक्षम है?

संपादित करें: अधिक हार्डवेयर/मेमोरी ख़रीदना निश्चित रूप से मदद कर सकता है, लेकिन आईटी परिप्रेक्ष्य से मेरे लिए पाइथन को ऐसे संगठन में बेचना मुश्किल है, जिसमें पाइथन (या आर, या MATLAB आदि) को भारी डेटा सेट का विश्लेषण करने की आवश्यकता होती है स्मृति में डेटा पकड़ो। एसएएस के पास यहां एक मजबूत बिक्री बिंदु है क्योंकि डिस्क-आधारित एनालिटिक्स धीमा हो सकता है, आप आत्मविश्वास से बड़े डेटा सेट से निपट सकते हैं। इसलिए, मुझे उम्मीद है कि स्टैक ओवरफ्लो -र्स मुझे यह समझने में मदद कर सकते हैं कि पाइथन का उपयोग मुख्यधारा के बड़े डेटा एनालिटिक्स भाषा के रूप में कथित जोखिम को कम करने के तरीके को कैसे कम किया जाए।

+2

यह वास्तव में एक प्रोग्रामिंग प्रश्न नहीं है, एक ऑनलाइन डेटिंग प्रश्न के अधिक। स्पष्ट रूप से एच 5 और पायथन का उपयोग करने वाले बहुत से लोग हैं क्योंकि एच 5py टीम कई सालों से विकास कर रही है। अनुलेख विज्ञान में पायथन का उपयोग छलांग और सीमाओं से बढ़ रहा है। –

+4

क्या पुस्तकालय विकास में रहा है, वास्तव में उस सेटिंग में इसका उपयोग करने का संकेतक है जिसके बारे में मैं पूछ रहा हूं? स्पष्ट होने के लिए, मैं पहले से ही एक पाइथन प्रशंसक हूं और व्यवसायिक विश्लेषण में अपने काम के लिए और साथ ही साथ एक प्रमुख विश्वविद्यालय में वायु प्रदूषण मॉडलिंग के लिए इसका उपयोग करता हूं। मैं एक विशिष्ट उपयोग मामले के बारे में पूछ रहा हूं: ऐसी भाषा का उपयोग करना जो मेमोरी प्रोसेसिंग को विशाल डेटा सेट पर काम करने के लिए करता है, मैप-कम करने के लिए उपयुक्त नहीं है, और परंपरागत रूप से दशकों से एसएएस द्वारा निपटाया जाता है। –

+0

कोई मजाक नहीं है, लेकिन क्या आपने हार्डवेयर को पर्याप्त स्मृति के साथ उपयोग करने के लिए माना है? – eat

उत्तर

49

हम डेटा विश्लेषण करने के लिए h5py, numpy/scipy और boost :: पायथन के संयोजन के साथ पायथन का उपयोग करते हैं। हमारे ठेठ डेटासेट में कुछ सौ जीबी तक के आकार होते हैं।

HDF5 फायदे:

  • डेटा आसानी से h5view आवेदन, h5py/IPython और h5 * कमांडलाइन उपकरण
  • एपीआई विभिन्न प्लेटफार्मों और भाषाओं
  • संरचना समूहों का उपयोग कर डेटा के लिए उपलब्ध हैं का उपयोग कर निरीक्षण किया जा सकता है विशेषताओं का उपयोग
  • टिप्पणी करने के लिए डेटा
  • चिंता मुक्त निर्मित डेटा संपीड़न
  • कब एकल डेटासेट पर

HDF5 नुकसान तेज है:,

  • प्रदर्शन टूट जाती है, तो एक h5 फ़ाइल में बहुत अधिक डेटासेट/समूह हो सकते हैं (> 1000), क्योंकि उन्हें traversing बहुत धीमी है। दूसरी तरफ, आईओ कुछ बड़े डेटासेट के लिए तेज़ है। एक सुनिश्चित करने के लिए है, कि पुस्तकालय सही विकल्प के साथ संकलित किया गया था:
  • उन्नत डेटा प्रश्नों (जैसे SQL) को लागू करने के अनाड़ी और धीमी गति से (उस मामले में SQLite पर विचार करें)
  • HDF5 थ्रेड-सुरक्षित सभी मामलों में नहीं है
  • एच 5 डेटासेट बदलना (आकार बदलें, हटाएं आदि।) फ़ाइल आकार (सबसे अच्छे मामले में) को उड़ाता है या असंभव है (सबसे खराब मामले में) (पूरे एच 5 फाइल को फिर से फ़्लैट करने के लिए कॉपी किया जाना चाहिए)
+1

यह वास्तव में एक उपयोगी उत्तर है। मुझे h5view के बारे में पता नहीं था। सौभाग्य से, मुझे गहराई से पदानुक्रमित फाइलों की आवश्यकता नहीं दिख रही है। लेकिन थ्रेड-सुरक्षा pitfall एक महत्वपूर्ण है क्योंकि मैं जितना संभव हो सके गति गणना करने के लिए मल्टीप्रोसेसिंग पैकेज या आईपीथॉन में समांतर एक्सटेंशन का उपयोग करने का प्रयास करता हूं। –

+0

क्या आप पहले पतन के लिए संदर्भ प्रदान कर सकते हैं? यह [एचडीएफ 5 एफएक्यू] (http://www.hdfgroup.org/HDF5/faq/perfissues.html) में सूचीबद्ध नहीं है, उदाहरण के लिए। –

+0

खराब प्रदर्शन मेरे व्यक्तिगत अनुभव पर आधारित है। हो सकता है कि ब्रेकडाउन गलत शब्द है: हजारों डेटासेट/समूहों के माध्यम से ट्रैवर्सिंग एक ही डेटासेट में हजारों स्लाइसों के माध्यम से ट्रैवर करने से बहुत धीमी है। –

5

यह एक लंबी टिप्पणी है, उत्तर नहीं h5py के बारे में आपके वास्तविक प्रश्न के लिए। मैं आंकड़ों के लिए पायथन का उपयोग नहीं करता हूं और अपेक्षाकृत छोटे डेटासेट से निपटने के लिए प्रवृत्त होता हूं, लेकिन आर में विशेष रूप से "बड़ी मेमोरी और आउट-ऑफ-मेमोरी डेटा" अनुभाग में high-performance computing के लिए CRAN कार्य दृश्य को देखने के लिए एक पल लायक हो सकता है। ।

तीन कारण हैं:

  • आप विचारों है कि आप मदद कर सकता है के लिए उन पैकेज में से किसी के स्रोत कोड मेरी सकता है आम तौर पर
  • आप पैकेज के नाम पायथन समकक्ष के लिए खोज में उपयोगी लग सकते; आर उपयोगकर्ताओं का एक बहुत कुछ परिस्थितियों में अजगर उपयोगकर्ताओं रहे हैं, भी
  • , यह सुविधाजनक साबित हो सकता बस एक विशेष विश्लेषण ऊपर से जुड़े संकुल में से एक का उपयोग कर के लिए R से जोड़ने के लिए और उसके बाद अजगर
  • में
परिणामों को वापस आकर्षित

फिर, मैं जोर देता हूं कि यह मेरी लीग से बाहर है, और यह निश्चित रूप से संभव है कि आप पहले से ही यह सब जान सकें। लेकिन शायद यह आपके लिए या एक ही समस्या पर काम करने वाले किसी के लिए उपयोगी साबित होगा।

+0

यह अच्छी सलाह है। हम भी आर का उपयोग करते हैं, लेकिन अधिक पाइथन। इन-मेमोरी एनालिटिक्स के संबंध में वही समस्या। आपके द्वारा भेजे गए लिंक से एफएफ पैकेज आर एनालॉग जैसा लगता है जो मैं बुद्धि h5py के बारे में बात कर रहा हूं। और निश्चित रूप से व्यावसायिक रूप से क्रांति Analytics द्वारा समर्थित एक्सडीएफ प्रारूप है। लेकिन जो मैं समझता हूं वह वर्तमान में प्रतिगमन पर केंद्रित कार्यक्षमता का एक बहुत ही सीमित सेट है। –

+0

निम्नलिखित के लिए धन्यवाद - मुझे जानने के लिए भी उपयोगी है (मान लीजिए कि मुझे कभी भी किसी भी वास्तव में पर्याप्त डेटासेट पर हाथ मिलते हैं ...) –

संबंधित मुद्दे