কম্পিউটার টিউটোরিয়াল

পাইথন পান্ডাসে লেক্সিকোগ্রাফিক্যাল স্লাইসিং ব্যবহার করে ডেটার সাবসেট নির্বাচন (আপডেটেড সংস্করণ)

ভূমিকা

পান্ডাসে ডেটার সাবসেট নির্বাচনের জন্য দুটি পদ্ধতি রয়েছে: ইনডেক্স পজিশন এবং ইনডেক্স লেবেল। এই পোস্টে লেক্সিকোগ্রাফিক্যাল স্লাইসিং ব্যবহার করে ডেটা নির্বাচন দেখানো হয়েছে। ক্যাগেল থেকে মুভি ডেটাসেট ব্যবহার করা হয়েছে।

কিভাবে করবেন

  • প্রয়োজনীয় কলামসহ মুভি ডেটাসেট ইম্পোর্ট করুন:

import pandas as pd
import numpy as np
movies = pd.read_csv(
    "https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv",
    index_col="title",
    usecols=["title", "budget", "vote_average", "vote_count"]
)
movies.sample(n=5)
  • ইনডেক্স সর্ট করুন (স্ট্রিং ইনডেক্সের জন্য খুবই গুরুত্বপূর্ণ):

বড় ডেটাসেটে ইনডেক্স সর্ট করা থাকলে লেক্সিকোগ্রাফিক্যাল স্লাইসিং খুব দ্রুত হয়। অনসর্টেড ইনডেক্স থাকলে পান্ডাসকে প্রতিটি লেবেল এক একটি করে ট্রাভার্স করতে হয়।

ইনডেক্স সর্ট না করলে কী হয়?

কোড চলে যাবে কিন্তু খুব ধীর হবে। অনসর্টেড লেবেল থাকলে পান্ডাস লিনিয়ার সার্চ করতে বাধ্য হয়। সর্টেড ইনডেক্স থাকলে বাইনারি সার্চের মতো দ্রুত লোকেশন খুঁজে পায়।

# ইনডেক্স সর্টেড কিনা চেক
movies.index.is_monotonic
# আউটপুট: False
  • অনসর্টেড ইনডেক্সে 'A%' প্যাটার্নে স্লাইসিং চেষ্টা:

movies.loc["Aa":"Bb"]

এটি KeyError: 'Aa' এরর দেবে কারণ ইনডেক্স মোনোটোনিক নয়।

  • ইনডেক্স অ্যাসেন্ডিং অর্ডারে সর্ট করুন:

movies.sort_index(inplace=True)
# এখন চেক করলে True আসবে
  • এখন লেক্সিকোগ্রাফিক্যাল স্লাইসিং করুন (A থেকে B পর্যন্ত):

আউটপুট: ২৯২ সারি × ৩ কলাম (A এবং B অক্ষরে শুরু হওয়া সিনেমাগুলো)।

ডিসেন্ডিং অর্ডারে স্লাইসিং: ইনডেক্স ডিসেন্ডিং সর্ট করলে movies.loc["Bb":"Aa"] দিতে হয়। অন্যথায় খালি ডেটাফ্রেম পাওয়া যাবে।

  1. পাইথন - প্যান্ডাস ইন্ডেক্সের ডেটা প্রতিনিধিত্বকারী অ্যারে ফেরত দেওয়া

  2. পাইথন - প্যান্ডাস ইন্ডেক্স ক্যাটাগরিক্যাল ডেটা ধারণ করে কিনা তা যাচাই করুন

  3. পাইথনে পান্ডাস ডেটাফ্রেমের সাবসেট সিলেক্ট করা (সিঙ্গল এবং মাল্টিপল কলাম)

  4. পাইথনে বাইনারি ডেটা ফাইলে লেখার পদ্ধতি