দেখে মনে হচ্ছে ওয়েস একটি data.tableঅনন্য স্ট্রিং ( স্তর ) সংখ্যাটি বড় হলে 10,000 এটি একটি পরিচিত সমস্যা আবিষ্কার করেছে ।
না Rprof()সময় কলে অতিবাহিত অধিকাংশ প্রকাশ sortedmatch(levels(i[[lc]]), levels(x[[rc]])? এটি সত্যিই নিজে যোগদান (অ্যালগরিদম) নয়, তবে প্রাথমিক পদক্ষেপ।
সাম্প্রতিক প্রচেষ্টাগুলি কীগুলিতে অক্ষর কলামগুলিকে মঞ্জুরি দেওয়ার ক্ষেত্রে চলেছে, যা আর এর নিজস্ব বৈশ্বিক স্ট্রিং হ্যাশ টেবিলের সাথে আরও ঘনিষ্ঠভাবে সংহত করে সেই সমস্যাটি সমাধান করা উচিত। কিছু বেঞ্চমার্ক ফলাফল ইতিমধ্যে দ্বারা প্রতিবেদন করা হয়েছে test.data.table()তবে সেই কোডটি স্তরের সাথে মিলের স্তরগুলিকে প্রতিস্থাপন করতে এখনও কোডটি আপ করা হয়নি।
পাণ্ডাসগুলি কি data.tableনিয়মিত পূর্ণসংখ্যা কলামগুলির চেয়ে দ্রুত একত্রিত হয় ? এটি অ্যালগরিদম নিজেই বনাম ফ্যাক্টর সমস্যাগুলি পৃথক করার একটি উপায় হওয়া উচিত।
এছাড়াও, data.tableহয়েছে সময় সিরিজ একত্রীকরণ মনে। এর দুটি দিক: i) একাধিক কলাম নির্দেশিত কী যেমন (আইডি, ডেটটাইম) ii) দ্রুত প্রচলিত যোগদান ( roll=TRUE) ওরফে শেষ পর্যবেক্ষণটি এগিয়ে নিয়ে যাওয়া হয়েছে।
data.tableউপস্থাপনের তুলনায় এটিই আমি প্রথম দেখেছি বলে নিশ্চিত হওয়ার জন্য আমার কিছুটা সময় প্রয়োজন ।
জুলাই ২০১২ এ প্রকাশিত ডেটা.ট্যাবিল v1.8.0 থেকে আপডেট
- টাইপ 'ফ্যাক্টর' এর কলামগুলির সাথে আই লেভেলের সাথে x স্তরের সাথে মেলে যখন অভ্যন্তরীণ ফাংশন सॉোর্টমেচ () মুছে ফেলা হয় এবং chmatch () এর সাথে প্রতিস্থাপন করা হয়। এই প্রাথমিক পদক্ষেপটি যখন একটি ফ্যাক্টর কলামের স্তরের সংখ্যা বড় ছিল (উদাঃ> 10,000) তখন একটি (জ্ঞাত) তাৎপর্যহীন মন্দার কারণ ছিল। ওয়েস ম্যাককেনি (পাইথন প্যাকেজ প্যান্ডাসের লেখক) দ্বারা প্রদর্শিত যেমন এই জাতীয় চারটি কলামে যোগদানের পরীক্ষায় বাড়ে। মিলিয়ন স্ট্রিংগুলির মধ্যে মিল রয়েছে যার মধ্যে ,000০০,০০০ অনন্য, উদাহরণস্বরূপ, এখন ১s এর দশক থেকে ০.০ সেটে নামিয়ে আনা হয়েছে।
যে মুক্তি ছিল:
অক্ষর কলামগুলি এখন কীগুলিতে অনুমোদিত এবং ফ্যাক্টরটি পছন্দ করা হয়। ডেটা.টিটেবল () এবং সেটকি () আর অক্ষরকে ফ্যাক্টারে জোর করে না। উপাদানগুলি এখনও সমর্থিত। FR # 1493, FR # 1224 এবং (আংশিকভাবে) এফআর # 951 কার্যকর করে lements
নতুন ফাংশন chmatch () এবং% chin%, ম্যাচের দ্রুত সংস্করণ () এবং% তে অক্ষর ভেক্টরগুলির জন্য। আর এর অভ্যন্তরীণ স্ট্রিং ক্যাশে ব্যবহার করা হয়েছে (কোনও হ্যাশ টেবিল তৈরি করা হয়নি)। তারা? চিমেচ উদাহরণে ম্যাচের তুলনায় প্রায় 4 গুণ বেশি দ্রুত।
২০১৩ সালের সেপ্টেম্বর পর্যন্ত তথ্য.ট্যাবিল CRAN এ v1.8.10 এবং আমরা v1.9.0 এ কাজ করছি। নিউজ লাইভ আপডেট করা হয়।
তবে আমি যেমনটি লিখেছি মূলত:
data.tableহয়েছে সময় সিরিজ একত্রীকরণ মনে। এর দুটি দিক: i) একাধিক কলাম নির্দেশিত কী যেমন (আইডি, ডেটটাইম) ii) দ্রুত প্রচলিত যোগদান ( roll=TRUE) ওরফে শেষ পর্যবেক্ষণটি এগিয়ে নিয়ে যাওয়া হয়েছে।
সুতরাং দুটি চরিত্রের কলামের পান্ডাস ইকুয় যোগ সম্ভবত ডেটা টেবিলের চেয়ে এখনও দ্রুত। যেহেতু মনে হচ্ছে এটি সংযুক্ত দুটি কলাম হ্যাশ করছে। ডেটা টেবিলটি কীটি হ্যাশ করে না কারণ এটি বিরাজমান অর্ডারটিকে মনে রেখে যায়। ডেটা.ট্যাবেলে একটি "কী" আক্ষরিক অর্থেই সাজান অর্ডার (এসকিউএল এর ক্লাস্টারড ইনডেক্সের অনুরূপ; যেমন, র্যামে ডেটা অর্ডার করা হয়)। তালিকায় উদাহরণস্বরূপ মাধ্যমিক কী যুক্ত করা হবে।
সংক্ষেপে, 10,000 টিরও বেশি অনন্য স্ট্রিং সহ এই দুটি দ্বি-চরিত্রের-কলাম পরীক্ষার মাধ্যমে স্পষ্ট করে দেওয়া স্পষ্ট গতির পার্থক্যটি এখনকার হিসাবে খারাপ হওয়া উচিত নয়, যেহেতু জানা সমস্যাটি স্থির হয়েছে।
data.tableকেবলমাত্র উত্তরাধিকার সূত্রে প্রাপ্তdata.frame, তবে এটি হুডের নীচে সি-কোডের উপর নির্ভর করে।