ইতিমধ্যে সরবরাহ করা বেশিরভাগ সম্ভাব্য সমাধানগুলির ভিত্তিতে আমি আরও বিস্তৃত উত্তর দিতে চাই। আমি আরও একটি সম্ভাব্য সহায়তা উল্লেখ করতে চাই যা পড়া প্রক্রিয়াটি সহায়তা করতে পারে।
বিকল্প 1: dtyype
"ডিটাইপস" একটি দুর্দান্ত শক্তিশালী পরামিতি যা আপনি read
পদ্ধতির মেমরির চাপ কমাতে ব্যবহার করতে পারেন । দেখুন এই এবং এই উত্তর। পান্ডস, ডিফল্টরূপে, ডেটাটির টাইপগুলি অনুমান করার চেষ্টা করুন।
ডেটা স্ট্রাকচারের উল্লেখ, প্রতিটি ডেটা সঞ্চিত, একটি মেমরি বরাদ্দ স্থান নেয়। একটি মৌলিক স্তরে নীচের মানগুলি দেখুন (নীচে সারণী সি প্রোগ্রামিং ভাষার মানগুলি চিত্রিত করে):
The maximum value of UNSIGNED CHAR = 255
The minimum value of SHORT INT = -32768
The maximum value of SHORT INT = 32767
The minimum value of INT = -2147483648
The maximum value of INT = 2147483647
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -9223372036854775808
The maximum value of LONG = 9223372036854775807
পড়ুন এই NumPy এবং C ধরনের মধ্যে ম্যাচিং দেখতে পাতা।
ধরা যাক আপনার কাছে সংখ্যার পূর্ণসংখ্যার একটি অ্যারে রয়েছে । আপনি তাত্ত্বিকভাবে এবং ব্যবহারিকভাবে উভয়ই নির্ধারণ করতে পারেন, ১ 16-বিট পূর্ণসংখ্যার ধরণের অ্যারে বলুন, তবে তারপরে আপনাকে আসলে সেই অ্যারেটি সংরক্ষণ করার চেয়ে বেশি মেমরি বরাদ্দ করতে হবে। এটি প্রতিরোধ করতে, আপনি dtype
বিকল্পটি সেট করতে পারেন read_csv
। আপনি অ্যারে আইটেমগুলিকে দীর্ঘ পূর্ণসংখ্যার হিসাবে সংরক্ষণ করতে চান না যেখানে আসলে আপনি 8-বিট পূর্ণসংখ্যার ( np.int8
বাnp.uint8
) ।
নিম্নলিখিত dtype মানচিত্র পর্যবেক্ষণ করুন।
সূত্র: https://pbpython.com/pandas_dtyype.html
আপনি dtype
and read
কলাম: টাইপ like এর মতো ড্যান্ড হিসাবে পান্ডাস পদ্ধতিতে পরামিতি হিসাবে প্যারামিটারটি পাস করতে পারেন }
import numpy as np
import pandas as pd
df_dtype = {
"column_1": int,
"column_2": str,
"column_3": np.int16,
"column_4": np.uint8,
...
"column_n": np.float32
}
df = pd.read_csv('path/to/file', dtype=df_dtype)
বিকল্প 2: অংশ দ্বারা পড়া
খণ্ডে ডেটা পড়া আপনাকে মেমোরির উপাত্তের একটি অংশ অ্যাক্সেস করার অনুমতি দেয় এবং আপনি নিজের ডেটাতে প্রিপ্রসেসিং প্রয়োগ করতে পারেন এবং কাঁচা ডেটার পরিবর্তে প্রক্রিয়াজাত ডেটা সংরক্ষণ করতে পারেন। আপনি যদি প্রথমটি, টাইপগুলির সাথে এই বিকল্পটি একত্রিত করেন তবে এটি আরও ভাল ।
আমি সেই প্রক্রিয়াটির জন্য পান্ডাস কুকবুক বিভাগগুলি উল্লেখ করতে চাই, যেখানে আপনি এটি এখানে খুঁজে পেতে পারেন । সেখানে দুটি বিভাগ নোট করুন;
বিকল্প 3: দশক
ডাস্ক একটি কাঠামো যা ডাসকের ওয়েবসাইটে সংজ্ঞায়িত করা হয় :
ডাস্ক আপনার পছন্দসই সরঞ্জামগুলির জন্য স্কেল পারফরম্যান্স সক্ষম করে বিশ্লেষণের জন্য উন্নত সমান্তরালতা সরবরাহ করে
এটি পণ্ডগুলি পৌঁছাতে পারে না এমন প্রয়োজনীয় অংশগুলি coverাকতে জন্মগ্রহণ করেছিল। ডাস্ক একটি শক্তিশালী কাঠামো যা আপনাকে বিতরণ উপায়ে প্রক্রিয়া করার মাধ্যমে আরও অনেক বেশি ডেটা অ্যাক্সেসের অনুমতি দেয়।
আপনি সম্পূর্ণরূপে আপনার ডেটা প্রিপ্রোস করার জন্য ড্যাস্ক ব্যবহার করতে পারেন, ডশক চুনকিং অংশটির যত্ন নেয়, তাই পান্ডাসের বিপরীতে আপনি কেবল আপনার প্রসেসিং পদক্ষেপগুলি সংজ্ঞায়িত করতে পারেন এবং ডেস্ককে কাজটি করতে দিন। স্পষ্টভাবে compute
এবং এর দ্বারা ধাক্কা দেওয়ার আগে এবং / অথবা persist
(উত্তরটি এখানে দেখুন) ডেস্ক গণনাগুলি প্রয়োগ করে না পার্থক্যের জন্য ) ।
অন্যান্য এইডস (ধারণা)
- ETL প্রবাহ ডেটা জন্য ডিজাইন করা। কাঁচা তথ্য থেকে যা প্রয়োজন তা কেবল রেখে দেওয়া।
- প্রথমে ডেস্ক বা পাইস্পার্কের মতো ফ্রেমওয়ার্ক সহ পুরো ডেটাতে ইটিএল প্রয়োগ করুন এবং প্রক্রিয়াজাত ডেটা রফতানি করুন।
- তারপরে দেখুন প্রক্রিয়াজাত ডেটা পুরো মেমরির সাথে ফিট হতে পারে কিনা।
- আপনার র্যাম বাড়ানোর কথা বিবেচনা করুন।
- ক্লাউড প্ল্যাটফর্মে সেই ডেটা নিয়ে কাজ করার কথা বিবেচনা করুন।