हैलो कोडर्स!
यह आलेख एक ओपन-सोर्स टूल प्रस्तुत करता है जो स्थानीय और दूरस्थ सीएसवी फ़ाइलों को संसाधित करने में सक्षम है, जानकारी को लोड और प्रिंट करता है, और बाद में कॉलम को Django प्रकारों में मैप करता है। सीएसवी फ़ाइलों को संसाधित करना आमतौर पर तब आवश्यक होता है जब डेटासेट बड़ा हो जाता है, कस्टम रिपोर्ट एक्सेल द्वारा समर्थित नहीं होती हैं या डेटा तालिकाओं के माध्यम से पूर्ण डेटा हेरफेर होता है, और एपीआई की आवश्यकता होती है।
सीएसवी फ़ाइलों को डेटाबेस तालिकाओं/मॉडलों में मैप करने और डैशबोर्ड वेब ऐप्स को पूरी तरह से जेनरेट करने के लिए सुविधाओं की वर्तमान सूची को और बढ़ाया जा सकता है।
स्रोत कोड: सीएसवी प्रोसेसर ऐपसीड सेवा का हिस्सा (ओपन-सोर्स)
कोड और उपयोग की व्याख्या शुरू करने से पहले, आइए टूल सुविधाओं को संक्षेप में प्रस्तुत करें:
सीएसवी पार्सर को प्रोजेक्ट स्रोतों की क्लोनिंग के बाद सीएलआई के माध्यम से निष्पादित किया जा सकता है और इसे रीडमी में बताए अनुसार उपयोग योग्य बनाया जा सकता है। एक बार इंस्टॉलेशन पूरा हो जाने पर, हम इस वन-लाइनर का उपयोग करके सीवीएस प्रोसेसर को कॉल कर सकते हैं:
$ python manage.py tool_inspect_source -f media/tool_inspect/csv_inspect.json
उपकरण निम्नलिखित कार्य करता है:
इसे स्थानीय और दूरस्थ फ़ाइलों पर लागू किया जा सकता है। उदाहरण के लिए, हम इस एक-लाइनर को चलाकर कुख्यात टाइटैनिक.सीवीएस का विश्लेषण कर सकते हैं:
$ python manage.py tool_inspect_source -f media/tool_inspect/csv_inspect_distant.json # Output > Processing .\media\tool_inspect\csv_inspect_distant.json |-- file: https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv |-- type: csv Field CSV Type Django Types ----------- ---------- ------------------------------------------ PassengerId int64 models.IntegerField(blank=True, null=True) Survived int64 models.IntegerField(blank=True, null=True) Pclass int64 models.IntegerField(blank=True, null=True) Name object models.TextField(blank=True, null=True) Sex object models.TextField(blank=True, null=True) Age float64 models.FloatField(blank=True, null=True) SibSp int64 models.IntegerField(blank=True, null=True) Parch int64 models.IntegerField(blank=True, null=True) Ticket object models.TextField(blank=True, null=True) Fare float64 models.FloatField(blank=True, null=True) Cabin object models.TextField(blank=True, null=True) Embarked object models.TextField(blank=True, null=True) [1] - PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked [2] - 1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S [3] - 2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C [4] - 3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S [5] - 4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S [6] - 5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S [7] - 6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q [8] - 7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S [9] - 8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S [10] - 9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S ... (truncated output)
यहां टूल के प्रासंगिक भाग दिए गए हैं:
जानकारी लोड करता है और पहले स्रोत की जांच करता है कि क्या स्रोत स्थानीय या दूरस्थ है
print( '> Processing ' ARG_JSON ) print( ' |-- file: ' JSON_DATA['source'] ) print( ' |-- type: ' JSON_DATA['type' ] ) print( '\n') tmp_file_path = None if 'http' in JSON_DATA['source']: url = JSON_DATA['source'] r = requests.get(url) tmp_file = h_random_ascii( 8 ) '.csv' tmp_file_path = os.path.join( DIR_TMP, tmp_file ) if not file_write(tmp_file_path, r.text ): return JSON_DATA['source'] = tmp_file_path else: if not file_exists( JSON_DATA['source'] ): print( ' > Err loading SOURCE: ' JSON_DATA['source'] ) return csv_types = parse_csv( JSON_DATA['source'] )
हेडर का विश्लेषण करें और पाए गए प्रकारों को Django प्रकारों में मैप करें।
सारणीबद्ध दृश्य के लिए, टेबुलेट लाइब्रेरी का उपयोग किया जाता है:
csv_types = parse_csv( JSON_DATA['source'] ) #pprint.pp ( csv_types ) table_headers = ['Field', 'CSV Type', 'Django Types'] table_rows = [] for t in csv_types: t_type = csv_types[t]['type'] t_type_django = django_fields[ t_type ] table_rows.append( [t, t_type, t_type_django] ) print(tabulate(table_rows, table_headers))
अंतिम चरण है सीएसवी डेटा प्रिंट करें:
csv_data = load_csv_data( JSON_DATA['source'] ) idx = 0 for l in csv_data: idx = 1 print( '[' str(idx) '] - ' str(l) ) # Truncate output .. if idx == 10: print( ' ... (truncated output) ' ) break
इस बिंदु पर, कोड हमें Django के लिए CSV जानकारी, डेटा प्रकार और संवाददाता डेटा प्रकारों तक पहुंच प्रदान करता है। मैपिंग को फ्लास्क, एक्सप्रेस या नेक्स्टजेएस जैसे किसी भी फ्रेमवर्क के लिए आसानी से बढ़ाया जा सकता है।
Django के लिए टाइप मैपिंग यह है:
# Pandas Type django_fields = { 'int' : 'models.IntegerField(blank=True, null=True)', 'integer' : 'models.IntegerField(blank=True, null=True)', 'string' : "models.TextField(blank=True, null=True)", 'string_unique' : "models.TextField(blank=True, null=False, unique=True)", 'object' : "models.TextField(blank=True, null=True)", 'object_unique' : "models.TextField(blank=True, null=False, unique=True)", 'int64' : 'models.IntegerField(blank=True, null=True)', 'float64' : 'models.FloatField(blank=True, null=True)', 'bool' : 'models.BooleanField(null=True)', }
यह उपकरण सक्रिय विकास के अधीन है और यहां अगले चरण हैं:
पढ़ने के लिए धन्यवाद!
जो लोग योगदान देने में रुचि रखते हैं, वे बेझिझक नए ऐपसीड प्लेटफॉर्म से जुड़ सकते हैं और डिस्कॉर्ड पर समुदाय से जुड़ सकते हैं:
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3