डेटा संग्रहीत करने के लिए सरल, विश्वसनीय, खुला और अंतर-सादा पाठ प्रारूप


17

पिछले प्रश्न में मैंने CSV फ़ाइलों के संपादन के लिए उपकरणों के बारे में पूछा था ।

गैविन आर डंकन मर्डोक द्वारा आर हेल्प पर एक टिप्पणी से जुड़ा हुआ है जो यह सुझाव देता है कि डेटा इंटरचेंज फॉर्मेट सीएसवी की तुलना में डेटा स्टोर करने का एक अधिक विश्वसनीय तरीका है।

कुछ अनुप्रयोगों के लिए एक समर्पित डेटाबेस प्रबंधन प्रणाली की आवश्यकता होती है। हालांकि, छोटे पैमाने पर डेटा विश्लेषण परियोजनाओं के लिए कुछ अधिक हल्के वजन अधिक उपयुक्त लगते हैं।

फ़ाइल प्रारूप के मूल्यांकन के लिए निम्नलिखित मानदंडों पर विचार करें:

  • reliabile : जो डेटा दर्ज किया गया है वह वही होना चाहिए जो दर्ज किया गया है; डेटा को अलग-अलग सॉफ़्टवेयर में लगातार खोलना चाहिए;
  • सरल : यह अच्छा होगा यदि फ़ाइल प्रारूप को समझना आसान है और एक साधारण पाठ संपादक के साथ आदर्श रूप से पठनीय है; प्रारूप को पढ़ने और लिखने के लिए एक सरल कार्यक्रम लिखना आसान होना चाहिए।
  • खुला : प्रारूप खुला होना चाहिए
  • इंटरऑपरेबल : फ़ाइल प्रारूप को कई प्रणालियों द्वारा समर्थित होना चाहिए

मुझे लगता है कि विश्वसनीयता मानदंड पर टैब और अल्पविराम से अलग किए गए मूल्य प्रारूप विफल हैं। हालांकि मुझे लगता है कि मैं फ़ाइल प्रारूप के बजाय आयात और निर्यात कार्यक्रमों को दोष दे सकता हूं। मैं अक्सर अपने आप को विकल्पों में थोड़ा समायोजन करने के लिए पाता हूं read.tableताकि कुछ अजीब चरित्र को डेटा फ्रेम के लोडिंग को तोड़ने से रोका जा सके।

प्रशन

  • कौन सा फ़ाइल प्रारूप इन जरूरतों को पूरा करता है?
  • क्या डाटा इंटरचेंज फॉर्मेट एक बेहतर विकल्प है? या इसकी अपनी समस्याएं हैं?
  • क्या कोई अन्य प्रारूप है जो बेहतर है?
  • क्या मैं TSV और CSV का गलत मूल्यांकन कर रहा हूं? क्या ऐसी फ़ाइलों के साथ काम करने के लिए युक्तियों का एक सरल सेट है जो फ़ाइल प्रारूप को अधिक विश्वसनीय बनाता है?

2
मुझे जोड़ना चाहिए, आर नहीं है, write.DIF()इसलिए यह एक तरह से एक सड़क है जिससे मैं डरता हूं।
मोनिका की बहाली - जी। सिम्पसन

1
मैं csv और विश्वसनीयता के मुद्दे को नहीं समझता। क्या आपका मतलब है कि सीएसवी पर्याप्त सख्त नहीं है? सख्त का मतलब है कि अगर यह सीएसवी के लिए नियम काफी सख्त थे, तो इन परिभाषाओं का पालन करने वाला हर उपकरण अतिरिक्त मापदंडों की आवश्यकता के बिना किसी फ़ाइल को लोड कर सकता है।
स्टेफेन

@steffen से मेरा मतलब है जैसे: कुछ प्रोग्राम में csv फाइल को लोड और सेव करना csv फाइल को बदल देता है; सीएसवी फ़ाइलों को लोड करने से अनुचित रूपांतरण हो सकता है जब तक कि आप सावधान न हों; सीएसवी फाइलें कभी-कभी तब टूटती हैं जब पात्रों के अजीब संयोजनों को उचित रूप से भागने के बिना जोड़ा जाता है। शायद मैं स्वयं प्रारूप के साथ सीएसवी के उपयोग को भ्रमित कर रहा हूं, हालांकि मैंने सुना है कि लोग आधिकारिक मानक की कमी के बारे में टिप्पणी करते हैं। बेशक, मुझे एहसास है कि कई मामलों में यह ठीक काम करता है।
जेरोमे एंग्लीम

5
@steffen: CSV फ़ाइल में संग्रहीत डेटा के प्रारूप या डेटा-प्रकारों के बारे में कोई जानकारी संग्रहीत नहीं करता है। आप अच्छी तरह से दो अलग-अलग ऐप में एक सीएसवी फ़ाइल खोल सकते हैं और यह फ़ाइल में दो अलग-अलग तरीकों से डेटा की व्याख्या कर सकता है।
मोनिका को बहाल करें - जी। सिम्पसन

1
@JeromyAnglim, मुझे लगता है कि csv फ़ाइल का बदलना आपके सॉफ़्टवेयर पर निर्भर करता है, न कि csv प्रारूप के अनुसार।
रोमन लुसट्रिक 13

जवाबों:


9

मुझे आश्चर्य है कि अगर कोई कसौटी टक्कर यहां चल रही है।

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

इसके विपरीत, मानदंड जो इसे डेटा नहीं मिलाते हैं, या डेटा को मूक करने की अनुमति देते हैं, कुछ त्रुटि जाँच की आवश्यकता होती है। जब तक आप सिस्टम को स्वचालित रूप से डेटा प्रकारों (जो कि अनिवार्य रूप से जहां Excel आपको विफल कर रहा है) का पता लगाने देता है, तब तक आपके केक को खाने और इसे खाने का कोई तरीका नहीं है।

आईएमओ, दो में से, दूसरा मानदंड अधिक महत्वपूर्ण है। डेटा अखंडता, एक बार उल्लंघन होने पर, विश्लेषण को मुश्किल या असंभव बनाता है। खोए हुए अवलोकन या अमान्य मान (यदि ठीक से जाँच नहीं किए गए हैं) सब कुछ गड़बड़ कर सकते हैं।

डीआईएफ के संबंध में, वास्तविक कच्चा पाठ मानव पठनीय नहीं है और मनुष्यों के लिए डेटा प्रविष्टि करना मुश्किल (आईएमओ) होगा।

IMO, आपको सीमांकित फ़ाइलों को एक उचित शेक देना चाहिए। जैसा कि टिप्पणियों में ऊपर उल्लेख किया गया है, 'डेटा मैनलिंग' ज्यादातर आपके द्वारा उपयोग किए जा रहे उपकरणों के सबसेट का दोष है। अच्छी तरह से व्यवहार किए गए प्रोग्रामों को सीमांकित फ़ाइलों को प्रबंधित नहीं करना चाहिए। प्रबंध का सबसे बड़ा स्रोत खराब निर्दिष्ट परिसीमन है। उदाहरण के लिए, यदि आपके डेटा में अल्पविराम हो सकता है, तो CSV अनुचित है। यदि यह टैब हो सकता है TSV अनुचित है। कई (लेकिन सभी नहीं) कार्यक्रमों के लिए आप एक वैकल्पिक सीमांकक निर्दिष्ट कर सकते हैं। उदाहरण के लिए, मैंने कुछ कठिन मामलों में टिल्ड (~) का उपयोग किया है।


धन्यवाद। ऐसा लगता है कि उचित देखभाल के साथ एक सीमांकित फ़ाइल प्रारूप का उपयोग करना सबसे अच्छा विकल्प हो सकता है।
जेरोमे एंग्लीम

6

सभी गंभीरता से, मैं आरडीए द्वारा बनाई गई आरडीएटा फाइलों पर विचार करूंगा क्योंकि यह फिट बैठता है

  • विश्वसनीय (जांच)
  • सरल (इसे ड्रा कहें - प्रारूप द्विआधारी है)
  • खुला (चेक: आर सोर्स कोड से अधिक खुला नहीं मिलता है)
  • इंटरऑपरेबल (जाँच करें: हर जगह काम करता है R काम करता है)

मेरे लिए पर्याप्त बंद करें। यदि सिस्टम द्वारा आप ऑपरेटिंग सिस्टम के बजाय अनुप्रयोगों से मतलब रखते हैं तो अंतिम बिंदु विफल है।

ओह, और RData कुशल है क्योंकि फाइलें अब डिफ़ॉल्ट रूप से संपीड़ित होती हैं (जो एक विकल्प हुआ करता था जिसे डिफ़ॉल्ट रूप से बंद कर दिया गया था)।


2
आरडीएटा निश्चित रूप से आर के साथ अच्छी तरह से काम करता है। यह संस्करण नियंत्रण के संबंध में समस्याग्रस्त हो सकता है। मुझे लगता है कि आर फ़ंक्शन dput()एक सादा पाठ विकल्प प्रदान करता है जो संस्करण नियंत्रण के साथ काम करेगा। हालाँकि, csv / tsv की एक अपील यह है कि जब मैं डेटा के साथ एक रिपॉजिटरी साझा करता हूं (एक जर्नल लेख के लिए कहता हूं), तो लोग डेटा ले सकते थे और किसी भी सॉफ़्टवेयर का उपयोग करके आसानी से रिअनलीज कर सकते थे।
जेरोमे एंग्लीम

1
हां, यह बेहद जटिल मामला है। मुझे लगता है कि कंप्यूटिंग की सुबह से लोगों ने इस पर चर्चा की है। मेरे पास दो और विचार थे (और मैं अपने उत्तर का विस्तार कर सकता था): प्रोटोकॉलबफर्स पायथन, जावा, सी ++, ... और अन्य भाषाओं के मेजबान के साथ कुशलता से साझा करने के लिए अच्छे हैं; रोमेन और मैं आर। को कवर करते हैं। नई-ईश साइट mldata.org मशीन लर्निंग में शोध के लिए इसे कवर करती है - उनके पास ऐसे उपकरण भी हैं जिन्हें वे बदलने के लिए उपलब्ध कराते हैं । यह देखने लायक हो सकता है।
डिर्क एडल्डबुलेटेल

1
दरअसल, SVN बिना किसी समस्या के बाइनरी ब्लब्स जैसे कि पीडीएफ फाइल आदि लेता है। मुझे संदेह है कि git भी करता है।
डिर्क एडल्डबुलेटेल

बाइनरी ब्लॉब्स के बारे में जानना अच्छा है। यह अभी भी अच्छा होगा कि पाठ फ़ाइलों में अंतर चलाने में सक्षम हो और परिवर्तनों के बारे में सार्थक जानकारी प्राप्त कर सके। Mldata.org के लिंक के लिए भी धन्यवाद। यह दिलचस्प लग रहा है।
जेरोमे एंग्लीम

अभिराम। बहन साइट mloss.org बस महान है, अगर आशा है कि वे mldata.org के लिए कर्षण प्राप्त करते हैं। उसके लिए समय सही है।
डिर्क एडल्डबुलेटेल

4

डिर्क एडडेलबेटेल के जवाब के जवाब में, मैं एचडीएफ 5 फ़ाइल प्रारूप का उपयोग करने का सुझाव देता हूं । यह आरडीएटा प्रारूप की तुलना में कम सरल है, या आप कह सकते हैं, 'अधिक समृद्ध', लेकिन निश्चित रूप से अधिक अंतर (सी, जावा, मैटलैब, आदि में इस्तेमाल किया जा सकता है)। मैंने पाया है कि I / O में बड़ी HDF5 फाइलें शामिल हैं जो बहुत तेज़ हैं।


(+1) नेटसीडीएफ की तुलना में इसके प्रदर्शन के बारे में कोई विचार किया गया ?
chl

IIRC जो कि mldata.org पर चुना गया आंतरिक प्रारूप भी है - जो उपकरणों के एक सूट के साथ परिवर्तित होता है। कन्वर्टर्स देखने लायक हो सकते हैं। मुझे हमेशा यह एहसास था कि HDF5 के लिए R सपोर्ट कम है जो एकदम सही है।
डिर्क एडल्डबुलेटेल

@chl मैंने अस्पष्ट रूप से सोचा था कि NetCDF ने आंतरिक रूप से HDF5 का उपयोग किया है, लेकिन ऐसा लगता है कि यह बिल्कुल सटीक नहीं है।
shabbychef

2

मुझे यकीन नहीं है कि उचित मेटा डेटा के साथ निश्चित पाठ प्रारूप आपके मानदंडों को पूरा क्यों नहीं करता है। यह एक सीमांकक के रूप में पढ़ने के लिए उतना आसान नहीं है लेकिन आपको जानकारी का उपयोग करने के लिए मेटाडेटा की आवश्यकता है। प्रोग्राम को पढ़ने के लिए सिंटैक्स लिखने का कार्य केवल इस बात पर निर्भर करता है कि डेटासेट की संरचना कितनी बड़ी और जटिल है। इन कार्यों में मदद करने के लिए SPSS और Excel के पास एक GUI है।

CSV फ़ाइलों के साथ केवल दो त्रुटियाँ हैं, जो मेरे सामने आई हैं:

  1. सीमांकित के बिना फ़ील्ड गुम (इसलिए उस रिकॉर्ड में प्रत्येक अन्य फ़ील्ड गलत है, मुझे XML में गुम टैग के साथ भी यह समस्या हुई है)
  2. एक पाठ स्ट्रिंग के भीतर एक अल्पविराम

(यदि आपने अन्य समस्याओं का सामना किया है तो उदाहरण देने के लिए स्वतंत्र महसूस करें)

दो को अधिक अनियमित सीमांकक के साथ हल किया गया है जैसा कि ड्रेनक्सस ने सुझाव दिया है (एक पाइप (!) एक है जिसका मैंने पहले सामना किया है, लेकिन एक टिल्ड (~) केवल उसी तरह काम करता है जिसमें न तो स्ट्रिंग क्षेत्रों में शामिल होने की संभावना है।) एक वह है। आपके द्वारा उपयोग किए जा रहे सॉफ़्टवेयर द्वारा समस्या को आसानी से हल नहीं किया जा सकता है, और दोनों समस्याएं हैं जिस तरह से लोगों ने फ़ाइलों को शुरू करने के लिए लिखा है, न कि फ़ाइलों को पढ़ने के लिए उपयोग किए गए सॉफ़्टवेयर।

मैं यह भी कहना चाहूंगा कि मैं इस धागे और उसकी प्रतिक्रिया दोनों पर ड्रेनक्सस से सहमत हूं इन फ़ाइलों को संपादित करने के बारे में आपके अन्य हालिया थ्रेड पर । आपको लगता है कि आपके द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर (विशेष रूप से एक्सेल) के बारे में शिकायत हो रही है और डेटा को उस प्रारूप में संग्रहीत करने के लिए कह रहा है जो आपके बीमार व्यवहार वाले सॉफ़्टवेयर के अनुरूप है। शायद सवाल यह होना चाहिए कि ऑटो-स्वरूपण सादे पाठ फ़ाइलों को रोकने के लिए एक्सेल कैसे प्राप्त करें। जैसा कि मुझे प्रतीत होता है कि आपके विश्वसनीय मानदंड सादा पाठ फ़ाइलों को पढ़ने के साथ एक सॉफ्टवेयर समस्या है। मैं डेटा प्रबंधन के लिए R का उपयोग नहीं करता हूं, लेकिन एसपीएसएस में सीमांकित फ़ाइलों को पढ़ने में आपको समय नहीं लगता, जैसा कि आप सुझाव दे रहे हैं।

यदि मूल फ़ाइलें ठीक से नहीं लिखी जाती हैं, तो क्या आप किसी सॉफ़्टवेयर से मज़बूती से फ़ाइल पढ़ने की अपेक्षा करते हैं? और एक विशिष्ट फ़ाइल प्रारूप निश्चित रूप से आपको डेटा को गलत तरीके से लिखने से नहीं रोकेगा कि आप किस फ़ाइल प्रकार के साथ शुरू करना चाहते हैं।


(1) मैं डेटा फ़ाइल को आसानी से खोलने और बंद करने में सक्षम होना चाहूंगा, क्योंकि मैं एक Rdata, Excel, या SPSS फ़ाइल खोल सकता हूं। एक जादूगर के माध्यम से चलने में समय व्यतीत करना, लेकिन यह काफी सरल और विश्वसनीय वर्कफ़्लो नहीं है जो मैं आदर्श रूप से पसंद करूंगा। (२) हाँ, मैं एक अनियमित सीमांकक के उपयोग के बारे में सहमत हूँ। सामान्य तौर पर टैब मेरे लिए ज्यादातर समय पर्याप्त होता है; (३) मुझे CSV / TSV से कोई बड़ी समस्या नहीं है। मेरे पास कभी-कभार समस्याएं हैं जो आसानी से हल हो जाती हैं। हालाँकि, मैं नहीं चाहूंगा कि सीमांकक और प्रारूप रूपांतरण के मुद्दों पर विचार किया जाए।
जेरोमे एंग्लीम

@Jeromy Anglim, बिंदु # 1 के लिए, मैं आपको सामान्य रूप से केवल एक बार ऐसा करने का अनुमान लगाऊंगा (जब तक कि आप दो अलग-अलग वातावरणों के बीच पलायन नहीं करते हैं जो अक्सर अन्य फ़ाइलों को पढ़ या आउटपुट नहीं कर सकते हैं)। बिंदु # 3 के लिए, निश्चित पाठ फ़ाइलें उस समस्या को ठीक करती हैं। मैं कभी भी ऐसी स्थिति में नहीं आया हूँ जहाँ SPSS ने गलत तरीके से एक अलग फ़ाइल टाइप की हो। यदि आपको फ़ाइलों को प्रसारित करने की आवश्यकता नहीं है, तो यह पूरा प्रश्न मूक है, यदि आप फ़ाइल को उस वातावरण में सही ढंग से सहेजने के लिए प्राप्त कर सकते हैं, जिसमें आप जिस भी वातावरण में काम कर रहे हैं, वहाँ रूपांतरण / भंडारण की अधिक आवश्यकता नहीं है।
एंडी डब्ल्यू

1

सादे पाठ प्रारूप के साथ आम समस्या यह है कि यह मेटाडेटा संग्रहीत नहीं कर सकता है। आप लापता डेटा को कैसे परिभाषित करते हैं? आप 1 = दृढ़ता से असहमत, 2 = असहमत, ... सादे पाठ प्रारूप में सामान के प्रकार को कैसे परिभाषित करते हैं? सादे पाठ प्रारूप के साथ, आपको उन मेटाडेटा को परिभाषित करने के लिए किसी अन्य दस्तावेज़ का उपयोग करना होगा। और XML में करना आसान नहीं है।

कभी-कभी यह मुद्दा बहुत परेशान कर सकता है।

मेरा समाधान एसपीएसएस डेटा प्रारूप का उपयोग करना है, जो एसपीएसएस में संपादित करने के लिए स्व-निहित और आसान है। मुझे पता है कि यह आपके प्रश्न का सही उत्तर नहीं है, लेकिन मैं बहुत लंबे समय से एक ही समस्या से जूझ रहा हूं और यह मेरा वर्तमान समाधान है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.