ailiteracynepal 🇳🇵
पाठ आकार

अध्याय २ · खण्ड I · 24 मिनेट

पहिले नै भएका फाइल र स्प्रेडसिट

तपाईंले कहिल्यै निर्माण गर्ने अधिकांश उपयोगी डाटासेट कतै फोन, साझा ड्राइभ, वा सहकर्मीको ल्यापटपमा पहिले नै अस्तित्वमा छन्। आकर्षक API पछ्याउनुअघि, तपाईंसँग पहिले नै भएको कुरा राम्रोसँग लोड र पढ्न सिक्नुहोस्।

डाटा खोज्ने पहिलो ठाउँ झन्डै कहिल्यै इन्टरनेट होइन। यो एक वर्षदेखि सहकर्मीले मर्मत गरिरहेको स्प्रेडसिट हो, तपाईंको डाउनलोडको फोल्डरमा बैङ्क स्टेटमेन्ट PDF हो, WhatsApp समूहमा कसैले साझा गरेको विद्यार्थी उपस्थितिको Google Sheet हो, गत महिना तपाईंको हाकिमले निर्यात गरेका ग्राहक सन्देशको डम्प हो। नेपाली एआई परियोजना चलाउने अधिकांश उपयोगी, स्थानीय रूपमा भुइँमा टेकेका, समस्या-विशिष्ट डाटासेटहरूले अरूले राख्दै आएका फाइलहरूका रूपमा जीवन सुरु गर्छन्। यो खण्ड तिनलाई ध्यानले लोड गर्ने बारे हो।

तपाईंले सबैभन्दा बढी भेट्ने चार फाइल प्रकार

एक वर्षको निर्माणमा, चार फाइल प्रकारले तपाईंले पढ्ने झन्डै 95% ओगट्छन्:

  1. CSV (.csv) — Course 01 मा छोइसकेको। विश्वव्यापी आदानप्रदान ढाँचा। सादा पाठ, अल्पविरामले छुट्याइएको।
  2. Excel (.xlsx, कहिलेकाहीं .xls) — कार्यालय, मन्त्रालय, र NGO मा सबैभन्दा सामान्य। प्रति फाइल धेरै पाना, इम्बेड गरिएको ढाँचा, सूत्र।
  3. JSON (.json) — API ले फिर्ता गर्ने, केही औजारले निर्यात गर्ने। Course 01 मा छोइसकेको।
  4. PDF (.pdf) — सम्पादन गरून् भन्ने नचाहँदा मानिसले पठाउने ढाँचा। बैङ्क स्टेटमेन्ट, सरकारी परिपत्र, नागरिकता।

हामीले Course 01 मा CSV र JSON ओगट्यौं। यो खण्डले Excel र PDF थप्छ — दुई जुन नेपाली कार्यालयमा निरन्तर देखापर्छन् र सुरुआतीहरू प्रायः अड्किन्छन्।

Excel फाइल पढ्ने

तपाईंलाई चाहिने पुस्तकालय openpyxl हो (pandas को Excel रिडरको निर्भरताका रूपमा स्थापना हुने):

pip install openpyxl

अनि तपाईंको नोटबुकमा, pandas ले झन्डै सबै काम गर्छ:

import pandas as pd

df = pd.read_excel("data/attendance.xlsx")
print(df.head())

यसले वर्कबुकको पहिलो पाना लाई DataFrame मा पढ्छ। यदि फाइलमा धेरै पाना छन् — र अधिकांश वास्तविकमा हुन्छन् — तपाईं पाना नाम दिन सक्नुहुन्छ:

df = pd.read_excel("data/attendance.xlsx", sheet_name="Class 8")

वा सबै पाना एकैचोटि DataFrames को शब्दकोशमा पढ्नुहोस्:

sheets = pd.read_excel("data/attendance.xlsx", sheet_name=None)
print(sheets.keys())   # dict_keys(['Class 6', 'Class 7', 'Class 8'])
print(sheets["Class 8"].head())

जान्न लायक तीन साना विशेषता:

  • लुकेका हेडर पङ्क्ति। धेरै Excel फाइल वास्तविक स्तम्भ हेडरअघि केही शीर्षक पाठ पङ्क्ति ("District: Morang", "Year: 2025") बाट सुरु हुन्छन्। वास्तविक हेडर पङ्क्तिमा छिटो जान header=4 प्रयोग गर्नुहोस्।
  • मर्ज गरिएका सेल। प्रदर्शनका लागि मर्ज गरिएका सेल पढेपछि माथिल्लो-बायाँमा मानमा र अन्यत्र NaN मा रूपान्तरण हुन्छन्। यदि मर्ज गरिएको सेल अवधारणात्मक रूपमा धेरै पङ्क्तिका लागि लेबल थियो भने अगाडि-भर्न df.ffill() प्रयोग गर्नुहोस्।
  • मानका रूपमा सूत्र। तपाईंले Excel फाइल पढ्दा, सूत्रको नतिजा मानका रूपमा आउँछ। यदि सेलले =SUM(...) का कारण 120 देखाउँछ भने, तपाईंलाई 120 मिल्छ, सूत्र होइन। सामान्यतया तपाईंलाई चाहिने।

Google Sheets पढ्ने

यदि फाइल Google Sheets मा बस्छ र तपाईं हरेक पटक Excel का रूपमा डाउनलोड गर्न चाहनुहुन्न भने, दुई सफा विकल्प छन्:

विकल्प 1: CSV का रूपमा वेबमा प्रकाशन। Google Sheets मा, File → Share → Publish to web → CSV। तपाईंलाई पानाको हालको अवस्था सधैं प्रतिबिम्बित गर्ने URL मिल्छ, र pandas ले सिधै पढ्छ:

url = "https://docs.google.com/spreadsheets/d/.../pub?output=csv"
df = pd.read_csv(url)

यो सबैभन्दा सरल बाटो हो। तल्लो छेउ: URL भएको जुनसुकैले पाना पढ्न सक्छन्।

विकल्प 2: Sheets API प्रयोग गर्ने। निजी पानाका लागि, gspread स्थापना गर्नुहोस् र प्रमाणित गर्नुहोस्। बढी सेटअप, बढी कोड; हामी यो पाठ्यक्रमको अध्याय 2, खण्ड 2 मा उहीँ ढाँचा (API की, OAuth) ओगट्छौं।

Course 02 का लागि हामी उदाहरणमा विकल्प 1 प्रयोग गर्नेछौँ — यो पाँच मिनेटमा काम गराउने बाटो हो।

PDF पढ्ने

PDF चार ढाँचामध्ये सबैभन्दा खराब हो धेरै फरकले, किनभने यिनलाई मेसिन-पठनीय होइन, हरेक स्क्रिनमा उस्तै देखिने डिजाइन गरिएको थियो। एउटै उत्तम औजार छैन। सही दृष्टिकोण तपाईंसँग कस्तो PDF छ निर्भर हुन्छ:

  • पाठ-आधारित PDF (अधिकांश सरकारी रिपोर्ट, बैङ्क स्टेटमेन्ट): तपाईंको PDF रिडरमा पाठ चयन गर्न मिल्छ। pdfplumber ले सफा निकाल्छ:
pip install pdfplumber
import pdfplumber

with pdfplumber.open("data/bank-statement.pdf") as pdf:
    for page in pdf.pages:
        print(page.extract_text())
  • तालिकाबद्ध PDF (कारोबारका पङ्क्तिसहितको बैङ्क स्टेटमेन्ट, NEPSE दैनिक रिपोर्ट): pdfplumber ले तालिका पनि निकाल्छ:
with pdfplumber.open("data/bank-statement.pdf") as pdf:
    rows = []
    for page in pdf.pages:
        for table in page.extract_tables():
            rows.extend(table)

तपाईं यी तालिका निकाल्नभन्दा सफा गर्नमा बढी समय खर्च गर्नुहुनेछ — PDF मा स्तम्भ पङ्क्तिबद्धता अनुमानित छ र pdfplumber ले आफ्नो सक्दो गर्छ।

  • छवि-आधारित PDF (वास्तवमा पृष्ठका फोटो मात्र भएको PDF): पाठ चयन गर्न मिल्दैन। तपाईंलाई OCR चाहिन्छ — Course 01, अध्याय 5 जस्तै। हरेक पृष्ठ छविलाई Tesseract बाट चलाउनुहोस्, अनि पाठ जोड्नुहोस्।

यदि फाइल केवल अव्यवस्थित पाठ हो भने?

कहिलेकाहीं तपाईंलाई .txt फाइलहरूको फोल्डर (च्याट लग, स्क्र्याप गरिएका लेख, स्वतन्त्र-रूपका नोट) वा .docx फाइलहरू (जिल्ला कार्यालयबाट टाइप गरिएका रिपोर्ट) मिल्छन्। यिनका लागि:

  • .txt: सिधै खोल्नुहोस् र पढ्नुहोस्। सफा गर्ने काम छ।
  • .docx: python-docx स्थापना गर्नुहोस् र अनुच्छेद पाठ निकाल्नुहोस्:
pip install python-docx
from docx import Document
doc = Document("data/report.docx")
text = "\n".join(p.text for p in doc.paragraphs)

यो पाठ्यक्रमका अधिकांश परियोजनाका लागि, तपाईंलाई यो चाहिँदैन — अधिकांश उपयोगी स्थानीय डाटा CSV, Excel, वा PDF मा बस्छ।

घण्टा बचाउने सानो कार्यप्रवाह

हप्ताभित्र आफ्नो लागत चुक्ता गर्ने अनुशासन:

  1. data/ फोल्डर बनाउनुहोस्। हरेक परियोजनाका लागि हरेक डाटासेट यहीँ जान्छ। Desktop वा Downloads मा कहिल्यै डाउनलोड नगर्नुहोस्।
  2. data/raw/data/clean/ बनाउनुहोस्। तपाईंले पाएको मूल फाइल raw/ मा राख्नुहोस् र कहिल्यै सम्पादन नगर्नुहोस्। सफा गरिएका संस्करण clean/ मा जान्छन्।
  3. सानो data/README.md थप्नुहोस्, प्रति फाइल एक लाइनमा: कहाँबाट आयो, कहिले पाउनुभयो, र सफा गर्न के गर्नुभयो।
  4. data/raw/ लाई आफ्नो .gitignore मा थप्नुहोस् — कच्चा डाटा प्रायः संवेदनशील हुन्छ र git रिपोमा प्रायः बस्दैन। (आकारको आधारमा तपाईंले data/clean/ पनि बेवास्ता गर्न चाहन सक्नुहुन्छ।)

यी चार चरणले प्रति परियोजना पाँच मिनेट लाग्छन्। तिनले रोक्छन्: “फाइलको कुन संस्करण सही थियो?”, “मैले के बदलेँ?”, “पर्ख, के मैले अहिले कसैको व्यक्तिगत जानकारी GitHub मा पुश गरेँ?”

आफ्नो बुझाइ जाँच्नुहोस्

Quick check

एउटा NGO ले तपाईंलाई प्रति जिल्ला एक पाना भएको Excel फाइल पठाउँछ — कुल 77 पाना। तपाईं हरेक पङ्क्ति एउटै DataFrame मा चाहनुहुन्छ, प्रत्येक पङ्क्ति कुन जिल्लाबाट आयो ट्र्याक गर्ने स्तम्भसहित। सबैभन्दा प्रत्यक्ष दृष्टिकोण कुन हो?

Quick check

तपाईंलाई 12-पृष्ठको PDF बैङ्क स्टेटमेन्ट प्राप्त हुन्छ। PDF रिडरमा खोल्दा तपाईं पाठ Word मा कपी-पेस्ट गर्न सक्नुहुन्छ र सही देखिन्छ। *पहिले* कुन निकालन दृष्टिकोण कोसिस गर्नुपर्छ?

अब के आउँछ

तपाईं अब झन्डै कुनै पनि स्थानीय फाइललाई Python मा लोड गर्न सक्नुहुन्छ। तर धेरै उपयोगी डाटासेट तपाईंका फाइल होइनन् — यी अरू सेवाहरूले प्रकाशन गर्ने प्रत्यक्ष डाटा हुन्: मौसम फिड, NEPSE उद्धरण, विनिमय दर, सरकारी तथ्याङ्क। यी API मार्फत आउँछन्, र अर्को खण्ड तिनलाई सफासँग छुनेबारे हो।