‘পিভোট’, কলাম স্প্লিটিং ব্যাপারগুলো কি?
শুরুতেই প্রশ্ন আসতে পারে ‘পিভোট’ ব্যাপারটা কি?
বেশি ভিতর না গিয়ে বলতে হয় যে - কোন টেবিলের কলামগুলোকে সারি এবং সারিগুলোকে কলামে ‘ট্রান্সফার’ করার পদ্ধতিকে আমরা ‘পিভোট’ পদ্ধতি বলতে পারি। আমরা এভাবে বলতে পারি - ‘পিভোট’ পদ্ধতি ব্যবহার করার জন্য, আমাদের কাছে যদি এ ধরনের কোন ডাটাসেট থাকে যার একপাশে লম্বালম্বিভাবে কলামের সংখ্যা বেশি থাকে এবং কলামগুলোতে বেশিরভাগই একই ধরনের তথ্য থাকে। বিশেষ করে, এটা কিছুটা কলাম নির্ভর ডাটাসেট যেখানে কাছাকাছি সব ডাটা কলামেই রাখা হয়। আমাদের হাতের লেখা খাতা-কলমে টেবিলগুলোর মতো। এ ধরনের টেবিলগুলোকে সাধারণত আমাদের নিজেদের সুবিধার জন্য তৈরি করে থাকি - যেগুলোকে বিভিন্ন ইউজার রিপোর্ট হিসেবে ব্যবহার হয়। আমরা যখন এ ধরনের স্ট্রাকচার নিয়ে কাজ করি, তখন এনালাইসিস এর ক্ষেত্রে এগুলো বেশকিছু সমস্যা তৈরি করে। যেহেতু এটা ‘মানবিক’ অর্থাৎ ‘হিউম্যান সেন্টারড মাইন্ডসেট’ থেকে তৈরি করা হয় বলে এর ভেতর থেকে এনালাইসিস করে ডাটা বের করা দুষ্কর।
একটা উদাহরন নিয়ে কথা বললে ব্যাপারটা আরো পরিস্কার হবে। নিচের টেবিলটা দেখুন, যেখানে কয়েকজন ব্যক্তি পার্কিং ফী দিয়েছেন বিভিন্ন সময়ে। টিকেট কাউন্টারে একজন মানুষ যখন তার খাতা কলমে প্রতিটা ব্যক্তির জন্য আলাদা আলাদা করে প্রতিদিন ধরে পার্কিং টিকেট এর হিসাব করেন তখন সেটা এধরনের একটা টেবিলে দাঁড়ায়।
টেবিল
এ ধরনের ডাটা স্ট্রাকচার আমরা যদি ‘মাইক্রোসফট এক্সেল’ / ‘পাওয়ার বিআই’ অথবা ‘ট্যাবলিউ’তে ব্যবহার করি, তাহলে প্রতিটা কলামের জন্য একটা করে ফিল্ড পাব। ভালো করে লক্ষ্য করলে দেখা যাবে যে এখানে পাঁচজন মানুষের জন্য একেক দিন করে কতো টাকা পার্কিং ফি হচ্ছে সেটা দেখা যাচ্ছে। তবে, এ থেকে ‘সরাসরি’ কোন ধরনের এনালাইসিস করা যাচ্ছে না - যেহেতু সময়ের সাথে ডাটাগুলো আলাদা আলাদা ফিল্ডে চলে গেছে। এটা ডাটা অ্যানালাইসিসের জন্য একটা বড় অন্তরায়। ব্যাপারটা বোঝার চেষ্টা করুন।
আর সে কারণেই এমপ্লয়ির নাম, তারিখ এবং পার্কিং ফি এগুলো কলামে যাওয়া উচিত কলামের হেডার সহ। এর পাশাপাশি, প্রতিটা মানুষের নাম আমরা নিতে পারি সারিতে যা ‘অবজারভেশন’ অর্থাৎ ‘ভ্যারিয়েবলের অবজারভেশন ভ্যালু’ হিসেবে ব্যবহার হবে। ঠিক তো? এখানে সারি হিসেবে সে কারণে ব্যক্তির নাম তার সাথে সেই দিনের তারিখ এবং সেইদিনের তারিখে কত টাকা পার্কিং ফি দেওয়া হয়েছে সেটার হিসেব থাকলে আমাদের জন্য এনালাইসিস করতে সুবিধা হবে। এই পিভোট পদ্ধতির পরে আমরা পুরনো টেবিলটাকে নতুন টেবিলে দেখলে ব্যাপারটা আরো পরিস্কার হবে। আগের লম্বালম্বি টেবিলটা এখন হরাইজন্টাল লম্বায় চলে এসেছে যাতে ক্যালকুলেশন সহজ হয়। এখানেই মানুষের সাথে যন্ত্রের হিসেব কিতাব আলাদা।
কলাম স্প্লিটিং
মনে আছে ওই ধরনের টেবিলের কথা - যেখানে একটা কলামের মধ্যে অনেকগুলো তথ্য থাকে যা মানুষের চোখের জন্য সহনীয় হলেও অ্যানালাইসিসের জন্য সেটা সমস্যায় দাঁড়ায়। সে কারণে অনেক সময় আমরা একটা কলামের তথ্যগুলোকে ভাগাভাগি করে ফেলি বিভিন্ন কলামে - যাতে কলাম ধরে সেগুলোকে ‘সর্টিং’ এবং অন্যান্য এনালাইসিস করতে সুবিধা হয়। এই ধরনের স্প্লিটিং সাধারণত একটা “স্ট্রিং” ভ্যালুর মধ্যে যেমন ‘কমা’ (,) অথবা কোলন (-) হাইফেন হিসেবে থাকে, যেখানে এই জিনিসগুলোকে আলাদা আলাদা করে বিভিন্ন কলামে ফেললে সেগুলোকে অ্যানালাইসিস করতে সুবিধা হয়।
এখানে একটা উদাহরণ দেখি। এটা একটা খেলনা উদাহরণ, তবে এধরনের অনেক বড় কাজ দেখবেন ভিডিওতে।
টেবিল
এ ধরনের স্প্লিটিং - একটা ফিল্ড কম্পোনেন্ট এর মধ্যে আলাদা আলাদা ধরনের ‘মিনিংফুল’ ইনফরমেশনগুলোকে বিভিন্ন কলামের ফেলে - যাতে সেগুলোকে ‘ডাটা এনালাইসিস’ টুল ঠিকমতো বুঝতে পারে। আমাদের উপরের উদাহরনে সেরকম একটা ধারণা দিয়েছে যেখানে একটা এয়ারপোর্ট এর নাম এবং সেই এয়ারপোর্ট এর কোড মাঝখানে ‘কোলন’ দিয়ে ভাগ করা থাকলেও সেটাকে আলাদা কলামে না ফেললে ডাটা এনালাইসিস টুল এটা নিয়ে সমস্যায় পড়তে পারে। এই স্প্লিটিং এর কারণে এখন এয়ারপোর্ট এর নাম এবং এয়ারপোর্ট এর কোড এখন আলাদা আলাদা কলামে চলে গিয়েছে। অনেক সময় আমি একই কলামে নামের সাথে বয়স দেখি [রহমান খান -৩৭] , সেখানের নাম একটা কলাম এবং বয়স আরেকটা কলামে ফেললে ডাটা এনালাইসিসে অনেক সুবিধা হয়।