Data Science & Python

Mobile Data Engineering: High-Performance Data Analysis with Python Pandas

ডেটা সায়েন্স ও বিগ-ডেটা প্রসেসিং এর ক্ষেত্রে পাইথনের **Pandas** লাইব্রেরিটি ইন্ডাস্ট্রি স্ট্যান্ডার্ড। অনেকেই মনে করেন বিশাল ডেটাসেট ক্লিনিং এবং ফিল্টারিং এর কাজ করার জন্য একটি হাই-কনফিগারেশনের পিসি দরকার। কিন্তু সঠিক মেমোরি ম্যানেজমেন্ট এবং অপ্টিমাইজেশন ট্রিকস জানা থাকলে সরাসরি স্মার্টফোনের **Termux CLI** কিংবা **Kaggle Mobile Kernel** এনভায়রনমেন্টেই ডেটা ইঞ্জিনিয়ারিং পাইপলাইন চমৎকারভাবে এক্সিকিউট করা সম্ভব।

মোবাইল ডেটা বা র‍্যামের ওপর অতিরিক্ত চাপ না দিয়ে কীভাবে লাখ লাখ লাইনের CSV ফাইল পার্স ও অ্যানালিটিক্স রিপোর্ট জেনারেট করবেন, তার প্রফেশনাল পদ্ধতি নিচে তুলে ধরা হলো।

১. মোবাইল টার্মিনালে Pandas ও কমপাইলর ডিপেন্ডেন্সি ইনস্টল

Pandas ব্যাকএন্ডে হাই-স্পিড সি (C) বাইনারি মডিউল রান করে। তাই সাধারণ pip install টার্মাক্সে সরাসরি এরর দিতে পারে। নিচের মেথডে ইনস্টল করুন:

# কোর ম্যাথ ও কম্পাইলার লাইব্রেরি সেটআপ
pkg install clang python-lint ndk-sysroot libffi openssl -y
pip install --upgrade pip setuptools

# পাইথন ডেটা প্যাকেজ ইনস্টলেশন
pip install numpy pandas

ধাপ ২: অপ্টিমাইজড ডেটা প্রসেসিং স্ক্রিপ্ট (`analyzer.py`)

মেমোরি লোড নিয়ন্ত্রণে রেখে বড় আকারের ডেটা চাংক (Chunking) মেথডে রিড করা এবং ফিল্টার করার রিয়াল-ওয়ার্ল্ড পাইথন পাইপলাইন কোড:

import pandas as pd
import numpy as np

def process_large_mobile_dataset(csv_file_path):
    print("[+] Loading Data Streaming Engines...")
    
    # মেমোরি বাঁচানোর জন্য নির্দিষ্ট ডেটা টাইপ ডিফাইন (Memory Optimization)
    custom_dtypes = {
        'user_id': np.int32,
        'country_code': 'category', # স্ট্রিং এর বদলে ক্যাটাগরি ব্যবহার করলে ৯০% র‍্যাম বাঁচে
        'transaction_val': np.float32
    }
    
    # সম্পূর্ণ ফাইল একবারে লোড না করে ২০,০০০ লাইন করে চাংক আকারে রিড করা
    chunk_size = 20000
    total_revenue = 0
    
    for chunk in pd.read_csv(csv_file_path, chunksize=chunk_size, dtype=custom_dtypes):
        # নাল বা খালি ভ্যালু ক্লিন করা
        chunk.dropna(subset=['transaction_val'], inplace=True)
        
        # কাস্টম ফিল্টারিং কন্ডিশন (যেমন- শুধুমাত্র বাংলাদেশের ট্রাফিক ট্র্যাক করা)
        bd_traffic = chunk[chunk['country_code'] == 'BD']
        total_revenue += bd_traffic['transaction_val'].sum()
        
    print(f"\n--- Data Analysis Computation Finished ---")
    print(f"[+] Total Calculated Revenue from Bangladesh Nodes: ${total_revenue:,.2f}")

if __name__ == "__main__":
    process_large_mobile_dataset("global_traffic_logs.csv")

মোবাইল ডেভ-টিপ: যদি আপনার লোকাল স্মার্টফোনের র‍্যাম ২ বা ৪ জিবি হয় এবং ডেটাসেট যদি ১ জিবির চেয়ে বড় হয়, তবে কোডটি টার্মাক্সে রান না করে সরাসরি Kaggle Cloud Kernel-এর ফ্রি এনভায়রনমেন্টে আপলোড করে দিন। সেখানে ফ্রিতে ৩০ জিবি পর্যন্ত র‍্যাম এবং এক্সটার্নাল T4/P100 জিপিইউ অ্যাক্সেস পাবেন যা সেকেন্ডের মধ্যে প্রসেসিং সম্পন্ন করবে।