এই তিনটি দরকারী কৌশল সহ পান্ডাসে মাস্টার ডেটা ট্রান্সফরমেশন

ফিল্টারিং, ম্যানিপুলেট এবং কাজ করার মধ্যে একটি ডুব

দ্বারা ফোটো মিলাদ ফকুরিয়ান on Unsplash

শেষবার যখন আপনি একটি সুন্দর ফর্ম্যাট করা ডেটা সেটের সাথে কাজ করেছিলেন তা মনে করুন। সু-নামিত কলাম, ন্যূনতম অনুপস্থিত মান, এবং সঠিক সংগঠন। এটি একটি চমৎকার অনুভূতি — প্রায় মুক্ত — এমন ডেটা দিয়ে আশীর্বাদ করা যা আপনার পরিষ্কার এবং রূপান্তর করার দরকার নেই৷

ঠিক আছে, যতক্ষণ না আপনি আপনার দিবাস্বপ্ন থেকে বেরিয়ে আসেন এবং আপনার সামনে ভাঙা সারি এবং অযৌক্তিক লেবেলের আশাহীন ঝাঁকুনিতে আবার টিঙ্কারিং শুরু করেন ততক্ষণ পর্যন্ত এটি ভাল।

পরিষ্কার ডেটা (এর আসল আকারে) বলে কোনও জিনিস নেই। আপনি যদি একজন তথ্য বিজ্ঞানী হন তবে আপনি এটি জানেন। আপনি যদি সবে শুরু করেন তবে আপনার এটি গ্রহণ করা উচিত। এটি কার্যকরভাবে কাজ করার জন্য আপনাকে আপনার ডেটা রূপান্তর করতে হবে।

আসুন এটি করার তিনটি উপায় সম্পর্কে কথা বলি।

ফিল্টারিং - কিন্তু সঠিকভাবে ব্যাখ্যা করা হয়েছে

আসুন ফিল্টারিং সম্পর্কে কথা বলি — তবে আপনি যা করতে অভ্যস্ত হতে পারেন তার চেয়ে একটু বেশি গভীরভাবে। সবচেয়ে সাধারণ এবং দরকারী ডেটা ট্রান্সফরমেশন ক্রিয়াকলাপগুলির মধ্যে একটি হিসাবে, কার্যকরভাবে ফিল্টার করা যে কোনও ডেটা বিজ্ঞানীর জন্য একটি আবশ্যক দক্ষতা। আপনি যদি পান্ডাসকে চেনেন, তাহলে সম্ভবত আপনি যে প্রথম অপারেশন করতে শিখেছেন তার মধ্যে এটি একটি।

আমার প্রিয়, অদ্ভুতভাবে বহুমুখী উদাহরণ ব্যবহার করে পর্যালোচনা করা যাক: ছাত্র গ্রেডের একটি ডেটাফ্রেম, যাকে যথাযথভাবে বলা হয় grades:

লেখক দ্বারা ছবি

আমরা 90 এর নিচের যেকোন স্কোর ফিল্টার করতে যাচ্ছি, কারণ এই দিনে আমরা দুর্বল প্রশিক্ষিত শিক্ষাবিদ হওয়ার সিদ্ধান্ত নিয়েছি যারা শুধুমাত্র শীর্ষ ছাত্রদের জন্য (দয়া করে আসলে এটি কখনই করবেন না)। এটি সম্পন্ন করার জন্য কোডের স্ট্যান্ডার্ড লাইন নিম্নরূপ:

গ্রেড[গ্রেড['স্কোর'] >= 90]
লেখক দ্বারা ছবি

এটি আমাদের জ্যাক এবং হারমায়োনের সাথে রেখে যায়। কুল। কিন্তু এখানে ঠিক কি ঘটেছে? কেন কোডের উপরের লাইন কি কাজ করে? উপরের বাইরের বন্ধনীর ভিতরের এক্সপ্রেশনের আউটপুটটি দেখে আসুন একটু গভীরে ডুব দেওয়া যাক:

গ্রেড ['স্কোর'] >= 90
লেখক দ্বারা ছবি

আহ ঠিক আছে. এটা বোধগম্য. মনে হচ্ছে কোডের এই লাইনটি একটি পান্ডাস সিরিজ অবজেক্ট প্রদান করে যা বুলিয়ান ( True / False ) মান কি দ্বারা নির্ধারিত >= 90 প্রতিটি পৃথক সারি জন্য ফিরে. এটি মূল মধ্যবর্তী পদক্ষেপ। পরবর্তীতে, এটি বুলিয়ানের এই সিরিজ যা বাইরের বন্ধনীতে চলে যায় এবং সেই অনুযায়ী সমস্ত সারি ফিল্টার করে।

সমাপ্তির স্বার্থে, আমি উল্লেখ করব যে একই আচরণ ব্যবহার করে অর্জন করা যেতে পারে loc মূল শব্দ:

grades.loc[গ্রেড['স্কোর'] >= 90]
লেখক দ্বারা ছবি

আমরা ব্যবহার করতে বেছে নিতে পারি এমন অনেকগুলি কারণ রয়েছে৷ loc (যার মধ্যে একটি হল এটি আসলে একটি একক অপারেশনের মাধ্যমে সারি এবং কলামগুলিকে ফিল্টার করার অনুমতি দেয়), তবে এটি পান্ডোরা অপারেশনগুলির একটি প্যান্ডোরার বক্স খুলে দেয় যা অন্য নিবন্ধে রেখে দেওয়া হয়।

আপাতত, গুরুত্বপূর্ণ শেখার লক্ষ্য হল: যখন আমরা পান্ডাসে ফিল্টার করি, তখন বিভ্রান্তিকর বাক্য গঠন কোনো অদ্ভুত জাদু নয়। আমাদের কেবল এটিকে এর দুটি উপাদান ধাপে বিভক্ত করতে হবে: 1) সারিগুলির একটি বুলিয়ান সিরিজ পাওয়া যা আমাদের অবস্থাকে সন্তুষ্ট করে এবং 2) সমগ্র ডেটাফ্রেম ফিল্টার করতে সিরিজ ব্যবহার করে৷

কেন এই দরকারী, আপনি জিজ্ঞাসা করতে পারেন? ঠিক আছে, সাধারণভাবে বলতে গেলে, আপনি যদি অপারেশনগুলি আসলে কীভাবে কাজ করে তা না বুঝেই ব্যবহার করেন তবে এটি বিভ্রান্তিকর বাগগুলির দিকে পরিচালিত করতে পারে। ফিল্টারিং একটি দরকারী এবং অবিশ্বাস্যভাবে সাধারণ অপারেশন, এবং আপনি এখন জানেন কিভাবে এটি কাজ করে।

চল এগোই.

Lambda ফাংশন সৌন্দর্য

কখনও কখনও, আপনার ডেটার এমন রূপান্তর প্রয়োজন যেগুলি কেবল পান্ডাসের কার্যকারিতাতে অন্তর্নির্মিত নয়। আপনি যতটা পারেন চেষ্টা করুন, স্ট্যাক ওভারফ্লো বা পরিশ্রমের সাথে পান্ডাস ডকুমেন্টেশন অন্বেষণের কোন পরিমাণ আপনার সমস্যার সমাধান প্রকাশ করে না।

ল্যাম্বডা ফাংশন লিখুন - একটি দরকারী ভাষা বৈশিষ্ট্য যা পান্ডাদের সাথে সুন্দরভাবে সংহত করে।

একটি দ্রুত পর্যালোচনা হিসাবে, ল্যাম্বডাস কীভাবে কাজ করে তা এখানে:

>>> add_function = lambda x, y: x + y
>>> add_function(2, 3)
5

ল্যাম্বডা ফাংশনগুলি নিয়মিত ফাংশনগুলির থেকে আলাদা নয়, তাদের একটি আরও সংক্ষিপ্ত বাক্য গঠন করা ছাড়া:

  • সমান চিহ্নের বাম দিকে ফাংশনের নাম
  • সার্জারির lambda সমান চিহ্নের ডানদিকে কীওয়ার্ড (একইভাবে def একটি ঐতিহ্যগত পাইথন ফাংশন সংজ্ঞাতে কীওয়ার্ড, এটি পাইথনকে জানতে দেয় যে আমরা একটি ফাংশন সংজ্ঞায়িত করছি)।
  • পরামিতি(গুলি) lambda কীওয়ার্ড, কোলনের বাম দিকে।
  • কোলনের ডানদিকে মান ফেরত দিন।

এখন তাহলে, বাস্তবসম্মত পরিস্থিতিতে ল্যাম্বডা ফাংশন প্রয়োগ করা যাক।

ডেটা সেটগুলির প্রায়শই তাদের নিজস্ব ফর্ম্যাটিং কুইর্ক থাকে, ডেটা এন্ট্রি এবং সংগ্রহের বিভিন্নতার জন্য নির্দিষ্ট। ফলস্বরূপ, আপনি যে ডেটা নিয়ে কাজ করছেন তাতে অদ্ভুতভাবে নির্দিষ্ট সমস্যা থাকতে পারে যা আপনাকে সমাধান করতে হবে। উদাহরণস্বরূপ, নীচের সাধারণ ডেটা সেটটি বিবেচনা করুন, যা লোকেদের নাম এবং তাদের আয় সংরক্ষণ করে। এর কল করা যাক monies.

লেখক দ্বারা ছবি

এখন, এই কোম্পানির মাস্টার ডেটা হাইনেসেস হিসাবে, আমাদের কিছু গোপনীয় তথ্য দেওয়া হয়েছে: এই কোম্পানির প্রত্যেককে 10% বৃদ্ধি এবং অতিরিক্ত $1000 দেওয়া হবে৷ এটি সম্ভবত একটি গণনার জন্য একটি নির্দিষ্ট পদ্ধতি খুঁজে বের করার জন্য খুব নির্দিষ্ট, কিন্তু একটি ল্যাম্বডা ফাংশনের সাথে যথেষ্ট সোজা:

update_income = lambda num: num + (num * .10) + 1000

তারপর, আমাদের যা করতে হবে তা হল এই ফাংশনটি পান্ডাদের সাথে ব্যবহার করা apply ফাংশন, যা আমাদের নির্বাচিত সিরিজের প্রতিটি উপাদানে একটি ফাংশন প্রয়োগ করতে দেয়:

অর্থ['নতুন আয়'] = অর্থ['আয়']। আবেদন করুন(আপডেট_আয়)
টাকা
লেখক দ্বারা ছবি

এবং আমরা সম্পন্ন! একটি উজ্জ্বল নতুন DataFrame যা আমাদের প্রয়োজনীয় তথ্য সমন্বিত, সবই কোডের দুটি লাইনে। এটিকে আরও সংক্ষিপ্ত করতে, আমরা এর ভিতরে ল্যাম্বডা ফাংশনটিকে সংজ্ঞায়িত করতে পারতাম apply সরাসরি — মনে রাখার মতো একটি দুর্দান্ত টিপ।

আমি এখানে বিন্দু সহজ রাখা হবে.

Lambdas অত্যন্ত দরকারী, এবং এইভাবে, আপনি তাদের ব্যবহার করা উচিত. উপভোগ করুন!

সিরিজ স্ট্রিং ম্যানিপুলেশন ফাংশন

পূর্ববর্তী বিভাগে, আমরা ল্যাম্বডা ফাংশনগুলির বহুমুখিতা এবং সমস্ত দুর্দান্ত জিনিসগুলি সম্পর্কে কথা বলেছিলাম যা তারা আপনাকে আপনার ডেটা দিয়ে সম্পন্ন করতে সহায়তা করতে পারে। এটা চমৎকার, কিন্তু আপনার সাবধান হওয়া উচিত যাতে দূরে না যায়। পাইথন প্রোগ্রামারদের আশীর্বাদ করেছে এমন সহজ শর্টকাটগুলি আপনি মিস করতে পারেন এমন একটি পরিচিত উপায়ে কাজ করার জন্য এটি অবিশ্বাস্যভাবে সাধারণ। এটি অবশ্যই ল্যাম্বডাসের জন্য প্রযোজ্য নয়, তবে আমরা এই মুহুর্তের জন্য এটির সাথে থাকব।

উদাহরণস্বরূপ, ধরা যাক যে আমাদের কাছে নিম্নলিখিত ডেটাফ্রেমটি রয়েছে names যা মানুষের প্রথম এবং শেষ নাম সংরক্ষণ করে:

লেখক দ্বারা ছবি

এখন, আমাদের ডাটাবেসে স্থানের সীমাবদ্ধতার কারণে, আমরা সিদ্ধান্ত নিই যে একজন ব্যক্তির সম্পূর্ণ শেষ নাম সংরক্ষণ করার পরিবর্তে, তাদের শেষ আদ্যক্ষরটি সংরক্ষণ করা আরও কার্যকর। এইভাবে, আমরা রূপান্তর করতে হবে 'Last Name' সেই অনুযায়ী কলাম। ল্যাম্বডাসের সাথে, এটি করার জন্য আমাদের প্রচেষ্টাটি নিম্নলিখিতগুলির মতো দেখতে পারে:

নাম['শেষ নাম'] = নাম['শেষ নাম']।আবেদন করুন(lambda s: s[:1])
নাম
লেখক দ্বারা ছবি

এটি স্পষ্টভাবে কাজ করে, তবে এটি কিছুটা ক্লাঙ্কি, এবং তাই পাইথনিক হিসাবে এটি হতে পারে না। সৌভাগ্যবশত, পান্ডাসে স্ট্রিং ম্যানিপুলেশন ফাংশনের সৌন্দর্যের সাথে, আরেকটি, আরও মার্জিত উপায় রয়েছে (কোডের পরবর্তী লাইনের উদ্দেশ্যে, শুধু এগিয়ে যান এবং ধরে নিন আমরা ইতিমধ্যেই পরিবর্তন করিনি 'Last Name' উপরের কোড সহ কলাম):

নাম['শেষ নাম'] = নাম['শেষ নাম']।str[:1]
নাম
লেখক দ্বারা ছবি

তা-দা! দ্য .str একটি পান্ডাস সিরিজের বৈশিষ্ট্য আমাদেরকে একটি নির্দিষ্ট স্ট্রিং অপারেশন সহ সিরিজের প্রতিটি স্ট্রিংকে বিভক্ত করতে দেয়, ঠিক যেন আমরা প্রতিটি স্ট্রিংয়ের সাথে পৃথকভাবে কাজ করছি।

তবে অপেক্ষা করুন, এটি আরও ভাল হয়। থেকে .str কার্যকরভাবে আমাদের সিরিজের মাধ্যমে একটি স্ট্রিংয়ের স্বাভাবিক কার্যকারিতা অ্যাক্সেস করতে দেয়, আমরা আমাদের ডেটা দ্রুত প্রক্রিয়া করতে সাহায্য করার জন্য বিভিন্ন স্ট্রিং ফাংশন প্রয়োগ করতে পারি! উদাহরণস্বরূপ, বলুন আমরা উভয় কলামকে ছোট হাতের অক্ষরে রূপান্তর করার সিদ্ধান্ত নিয়েছি। নিম্নলিখিত কোড কাজ করে:

নাম['প্রথম নাম'] = নাম['প্রথম নাম'].str.lower()
নাম['শেষ নাম'] = নাম['শেষ নাম'].str.lower()
নাম
লেখক দ্বারা ছবি

আপনার নিজের ল্যাম্বডা ফাংশনগুলিকে সংজ্ঞায়িত করার এবং এর ভিতরে স্ট্রিং ফাংশনগুলিকে কল করার ঝামেলার মধ্য দিয়ে যাওয়ার চেয়ে অনেক বেশি সোজা। এমন নয় যে আমি ল্যাম্বডাসকে ভালবাসি না — তবে সবকিছুরই তার জায়গা আছে এবং পাইথনে সর্বদা সরলতাকে অগ্রাধিকার দেওয়া উচিত।

আমি এখানে শুধুমাত্র কয়েকটি উদাহরণ কভার করেছি, কিন্তু স্ট্রিং ফাংশন একটি বড় সংগ্রহ আপনার নিষ্পত্তি হয় [1]।

তাদের উদারভাবে ব্যবহার করুন। তারা চমৎকার.

ফাইনাল থটস এবং রিক্যাপ

এখানে আপনার জন্য একটি ছোট ডেটা ট্রান্সফরমেশন চিট শীট রয়েছে:

  1. ফিল্টার যেমন আপনি এটা মানে. সত্যিই কি ঘটছে তা জানুন যাতে আপনি জানেন যে আপনি কি করছেন।
  2. তোমার ল্যাম্বডাসকে ভালবাসি. তারা আপনাকে আশ্চর্যজনক উপায়ে ডেটা ম্যানিপুলেট করতে সাহায্য করতে পারে।
  3. পান্ডারা আপনার মতো স্ট্রিংগুলিকে ভালবাসে. প্রচুর বিল্ট-ইন কার্যকারিতা রয়েছে — আপনি এটিও ব্যবহার করতে পারেন।

এখানে উপদেশের একটি চূড়ান্ত অংশ: একটি ডেটা সেট ফিল্টার করার কোন "সঠিক" উপায় নেই। এটি হাতে থাকা ডেটার পাশাপাশি আপনি যে অনন্য সমস্যাটি সমাধান করতে চাইছেন তার উপর নির্ভর করে। যাইহোক, যদিও প্রতিবার আপনি অনুসরণ করতে পারেন এমন কোন সেট পদ্ধতি নেই, আপনার হাতে থাকা মূল্যবান সরঞ্জামগুলির একটি দরকারী সংগ্রহ রয়েছে। এই নিবন্ধে, আমি তাদের তিনটি নিয়ে আলোচনা করেছি।

আমি আপনাকে বাইরে যেতে এবং আরও কিছু খুঁজে পেতে উত্সাহিত করি।

তথ্যসূত্র

[1] https://www.aboutdatablog.com/post/10-most-useful-string-functions-in-pandas

উৎস থেকে পুনঃপ্রকাশিত এই তিনটি দরকারী কৌশল সহ পান্ডাসে মাস্টার ডেটা ট্রান্সফরমেশন 20699 https://towardsdatascience.com/feed এর মাধ্যমে

<!–

->

সময় স্ট্যাম্প:

থেকে আরো ব্লকচেইন পরামর্শদাতা