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 জিপিইউ অ্যাক্সেস পাবেন যা সেকেন্ডের মধ্যে প্রসেসিং সম্পন্ন করবে।