"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > सीएसवी - पायथन में स्थानीय और दूरस्थ फ़ाइलों को संसाधित करें

सीएसवी - पायथन में स्थानीय और दूरस्थ फ़ाइलों को संसाधित करें

2024-08-29 को प्रकाशित
ब्राउज़ करें:123

CSV - Process Local & Remote Files in Python

हैलो कोडर्स!

यह आलेख एक ओपन-सोर्स टूल प्रस्तुत करता है जो स्थानीय और दूरस्थ सीएसवी फ़ाइलों को संसाधित करने में सक्षम है, जानकारी को लोड और प्रिंट करता है, और बाद में कॉलम को Django प्रकारों में मैप करता है। सीएसवी फ़ाइलों को संसाधित करना आमतौर पर तब आवश्यक होता है जब डेटासेट बड़ा हो जाता है, कस्टम रिपोर्ट एक्सेल द्वारा समर्थित नहीं होती हैं या डेटा तालिकाओं के माध्यम से पूर्ण डेटा हेरफेर होता है, और एपीआई की आवश्यकता होती है।
सीएसवी फ़ाइलों को डेटाबेस तालिकाओं/मॉडलों में मैप करने और डैशबोर्ड वेब ऐप्स को पूरी तरह से जेनरेट करने के लिए सुविधाओं की वर्तमान सूची को और बढ़ाया जा सकता है।

स्रोत कोड: सीएसवी प्रोसेसर ऐपसीड सेवा का हिस्सा (ओपन-सोर्स)


कोड और उपयोग की व्याख्या शुरू करने से पहले, आइए टूल सुविधाओं को संक्षेप में प्रस्तुत करें:

  • स्थानीय और दूरस्थ फ़ाइलें लोड करें
  • प्रिंट मान
  • पता लगाए गए कॉलम प्रकार प्रिंट करें
  • मैपिंग प्रकारों को Django मॉडल पर प्रिंट करें

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

$ python manage.py tool_inspect_source -f media/tool_inspect/csv_inspect.json

उपकरण निम्नलिखित कार्य करता है:

  • इनपुट को सत्यापित करें
  • सीएसवी फ़ाइल का पता लगाएं (यदि नहीं मिली तो त्रुटि के साथ बाहर निकलें)
  • जानकारी लोड करता है और कॉलम प्रकारों का पता लगाता है
  • Django कॉलम प्रकार का पता लगाता है
  • पहली 10 पंक्तियाँ प्रिंट करें

इसे स्थानीय और दूरस्थ फ़ाइलों पर लागू किया जा सकता है। उदाहरण के लिए, हम इस एक-लाइनर को चलाकर कुख्यात टाइटैनिक.सीवीएस का विश्लेषण कर सकते हैं:

$ 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)',
}

यह उपकरण सक्रिय विकास के अधीन है और यहां अगले चरण हैं:

  • टूल को दूरस्थ/स्थानीय डेटाबेस (SQLite, MySql, PgSQL), JSON जैसे अधिक डेटा स्रोतों से कनेक्ट करें
  • किसी भी ढांचे के लिए मॉडल तैयार करें: फास्टएपीआई, फ्लास्क, एक्सप्रेस, नेक्स्टजेएस
  • शीर्ष पर सुरक्षित एपीआई उत्पन्न करें
  • स्टाइलिंग के लिए टेलविंड/बूटस्ट्रैप का उपयोग करके सर्वर-साइड पेजिनेटेड डेटाटेबल्स जेनरेट करें

पढ़ने के लिए धन्यवाद!

जो लोग योगदान देने में रुचि रखते हैं, वे बेझिझक नए ऐपसीड प्लेटफॉर्म से जुड़ सकते हैं और डिस्कॉर्ड पर समुदाय से जुड़ सकते हैं:

  • AppSeed - डेवलपर्स के लिए ओपन-सोर्स प्लेटफ़ॉर्म
  • ऐपसीड समुदाय - 3k डिसॉर्डर सदस्य
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/sm0ke/csv-process-local-remote-files-in-python-3b64?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3