দুটি প্রাথমিক উপায় রয়েছে যে পান্ডারা ডেটা ফ্রেম থেকে নির্বাচন করে।
- লেবেল দ্বারা
- দ্বারা পূর্ণসংখ্যা অবস্থান
ডকুমেন্টেশনটি পূর্ণসংখ্যার অবস্থান উল্লেখ করার জন্য শব্দ পদ ব্যবহার করে । আমি এই পরিভাষাটি পছন্দ করি না কারণ আমার মনে হয় এটি বিভ্রান্তিকর। পূর্ণসংখ্যার অবস্থানটি আরও বর্ণনামূলক এবং ঠিক এর মতোই। এখানে মূল শব্দটি ইন্টিগের - পূর্ণসংখ্যার অবস্থান দ্বারা নির্বাচন করার সময় আপনাকে অবশ্যই পূর্ণসংখ্যার ব্যবহার করতে হবে।.iloc
সংক্ষিপ্তসারটি দেখানোর আগে আসুন সকলে নিশ্চিত হয়ে যান যে ...
.ix হ্রাস ও অস্পষ্ট এবং কখনও ব্যবহার করা উচিত নয়
পান্ডার জন্য তিনটি প্রাথমিক সূচক রয়েছে । আমাদের নিজস্ব সূচীকরণ অপারেটর রয়েছে (বন্ধনীগুলি []
) .loc
, এবং .iloc
। আসুন তাদের সংক্ষিপ্তসার দিন:
[]
- প্রাথমিকভাবে কলামগুলির সাবসেটগুলি নির্বাচন করে তবে সারিগুলিও নির্বাচন করতে পারে। একসাথে সারি এবং কলাম নির্বাচন করতে পারে না।
.loc
- কেবলমাত্র লেবেল দ্বারা সারি এবং কলামগুলির উপগ্রহ নির্বাচন করে
.iloc
- কেবল পূর্ণসংখ্যার অবস্থানের দ্বারা সারি এবং কলামগুলির উপগ্রহ নির্বাচন করে
আমি প্রায়শই ব্যবহার করি না .at
বা .iat
তারা কোনও অতিরিক্ত কার্যকারিতা যুক্ত না করে এবং কেবল সামান্য পারফরম্যান্স বৃদ্ধি করে। আপনার খুব সময় সংবেদনশীল অ্যাপ্লিকেশন না থাকলে আমি তাদের ব্যবহারকে নিরুৎসাহিত করব। নির্বিশেষে, আমাদের তাদের সংক্ষিপ্তসার রয়েছে:
.at
কেবলমাত্র লেবেল দ্বারা ডেটা ফ্রেমে একক স্কেলারের মান নির্বাচন করে
.iat
শুধুমাত্র পূর্ণসংখ্যার অবস্থানের দ্বারা ডেটাফ্রেমে একটি একক স্কেলারের মান নির্বাচন করে
লেবেল এবং পূর্ণসংখ্যার অবস্থান অনুসারে বাছাইয়ের পাশাপাশি বুলিয়ান নির্বাচনও বুলিয়ান সূচক হিসাবে বিদ্যমান।
উদাহরণ ব্যাখ্যা .loc
, .iloc
, বুলিয়ান নির্বাচন এবং .at
এবং .iat
নিচে দেখানো হয়েছে
আমরা প্রথমে .loc
এবং এর মধ্যে পার্থক্যগুলিতে মনোনিবেশ করব .iloc
। পার্থক্য সম্পর্কে কথা বলার আগে, এটি বোঝা গুরুত্বপূর্ণ যে ডেটাফ্রেমে লেবেল রয়েছে যা প্রতিটি কলাম এবং প্রতিটি সারি চিহ্নিত করতে সহায়তা করে। আসুন একটি নমুনা ডেটা ফ্রেমটি একবার দেখুন:
df = pd.DataFrame({'age':[30, 2, 12, 4, 32, 33, 69],
'color':['blue', 'green', 'red', 'white', 'gray', 'black', 'red'],
'food':['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'],
'height':[165, 70, 120, 80, 180, 172, 150],
'score':[4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2],
'state':['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']
},
index=['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])
গা bold় সমস্ত শব্দ লেবেল। লেবেল, age
, color
, food
, height
, score
এবং state
জন্য ব্যবহার করা হয় কলাম । অন্যান্য লেবেল, Jane
, Nick
, Aaron
, Penelope
, Dean
, Christina
, Cornelia
সারির লেবেল হিসাবে ব্যবহার করা হয়। সম্মিলিতভাবে, এই সারি লেবেলগুলি সূচক হিসাবে পরিচিত ।
ডেটাফ্রেমে নির্দিষ্ট সারি নির্বাচন করার প্রাথমিক উপায়গুলি হ'ল সূচক .loc
এবং .iloc
সূচকগুলির সাথে। এই সূচকগুলির প্রত্যেকটি একই সাথে কলামগুলি নির্বাচন করতে ব্যবহার করা যেতে পারে তবে আপাতত সারিগুলিতে ফোকাস করা আরও সহজ। এছাড়াও, সূচকগুলির প্রত্যেকটি বন্ধনীগুলির একটি সেট ব্যবহার করে যা তাদের নির্বাচনগুলি করার জন্য অবিলম্বে তাদের নামটি অনুসরণ করে follow
.loc কেবল লেবেল দ্বারা ডেটা নির্বাচন করে
আমরা প্রথমে .loc
সূচক সম্পর্কে কথা বলব যা কেবল সূচক বা কলাম লেবেলের দ্বারা ডেটা নির্বাচন করে। আমাদের নমুনা ডেটাফ্রেমে আমরা সূচকের মান হিসাবে অর্থবহ নাম সরবরাহ করেছি। অনেক ডেটা ফ্রেমের কোনও অর্থপূর্ণ নাম থাকবে না এবং এর পরিবর্তে 0 থেকে এন -1 পর্যন্ত কেবল পূর্ণসংখ্যায় ডিফল্ট হবে, যেখানে ডেটা ফ্রেমের দৈর্ঘ্য (সারি সংখ্যা) n হবে।
আছে বিভিন্ন ইনপুট জন্য আপনি ব্যবহার করতে পারেন .loc
তিন তাদের বাইরে
- একটি স্ট্রিং
- স্ট্রিংগুলির একটি তালিকা
- স্ট্রিং সূচনা এবং স্টপ মান হিসাবে স্ট্রিং নোটেশন
স্ট্রিং সহ .loc সহ একটি একক সারি নির্বাচন করা হচ্ছে
একক সারির ডেটা নির্বাচন করতে, নীচের বন্ধনীগুলির মধ্যে সূচী লেবেলটি রাখুন .loc
।
df.loc['Penelope']
এটি সিরিজ হিসাবে ডেটা সারি ফেরত দেয়
age 4
color white
food Apple
height 80
score 3.3
state AL
Name: Penelope, dtype: object
স্ট্রিংগুলির তালিকা সহ .loc সহ একাধিক সারি নির্বাচন করা
df.loc[['Cornelia', 'Jane', 'Dean']]
এটি তালিকায় নির্দিষ্ট ক্রমে সারিগুলির সাথে একটি ডেটাফ্রেম প্রদান করে:
স্লাইস নোটেশন সহ .loc সহ একাধিক সারি নির্বাচন করা
স্লাইস নোটেশনটি একটি স্টার্ট, স্টপ এবং ধাপের মানগুলির দ্বারা সংজ্ঞায়িত করা হয়। লেবেলে টুকরো টুকরো করার সময়, পান্ডাসগুলি রিটার্নে স্টপ মান অন্তর্ভুক্ত করে। অন্তর্ভুক্ত হারুন থেকে ডিনের নিম্নলিখিত স্লাইসগুলি। এর ধাপের আকারটি সুস্পষ্টভাবে সংজ্ঞায়িত করা হয়নি তবে 1 এ ডিফল্ট হয়েছে।
df.loc['Aaron':'Dean']
জটিল টুকরোগুলি পাইথন তালিকার মতো একইভাবে নেওয়া যেতে পারে।
.iloc শুধুমাত্র পূর্ণসংখ্যার অবস্থান দ্বারা ডেটা নির্বাচন করে
আসুন এখন ঘুরে আসা যাক .iloc
। ডেটা ফ্রেমের প্রতিটি সারি এবং কলামের ডেটা-এর একটি পূর্ণসংখ্যা অবস্থান থাকে যা এটি সংজ্ঞায়িত করে। এটি আউটপুটে চাক্ষুষভাবে প্রদর্শিত লেবেলের পাশাপাশি রয়েছে। পূর্ণসংখ্যার অবস্থানটি কেবল শীর্ষে / বামে 0 থেকে শুরু করে সারি / কলামগুলির সংখ্যা।
আছে বিভিন্ন ইনপুট জন্য আপনি ব্যবহার করতে পারেন .iloc
তিন তাদের বাইরে
- একটি পূর্ণসংখ্যা
- পূর্ণসংখ্যার একটি তালিকা
- শুরু এবং থামার মান হিসাবে পূর্ণসংখ্যা ব্যবহার করে স্লাইস নোটেশন
একটি পূর্ণসংখ্যার সাথে .iloc সহ একটি একক সারি নির্বাচন করা
df.iloc[4]
এটি সিরিজ হিসাবে 5 তম সারিতে (পূর্ণসংখ্যার অবস্থান 4) প্রদান করে
age 32
color gray
food Cheese
height 180
score 1.8
state AK
Name: Dean, dtype: object
পূর্ণসংখ্যার একটি তালিকা সহ .iloc সহ একাধিক সারি নির্বাচন করা
df.iloc[[2, -2]]
এটি তৃতীয় এবং দ্বিতীয় সারিতে দ্বিতীয়টির ডেটাফ্রেম প্রদান করে:
স্লাইস নোটেশন সহ .iloc সহ একাধিক সারি নির্বাচন করা
df.iloc[:5:3]
.Loc এবং .iloc সহ সারি এবং কলামগুলির যুগপত নির্বাচন
উভয়ের একটি দুর্দান্ত দক্ষতা .loc/.iloc
হ'ল সারি এবং কলাম উভয়ই একই সাথে নির্বাচন করার দক্ষতা। উপরের উদাহরণগুলিতে, প্রতিটি নির্বাচন থেকে সমস্ত কলাম ফিরিয়ে দেওয়া হয়েছিল। আমরা সারিগুলির জন্য একই ধরণের ইনপুট সহ কলামগুলি চয়ন করতে পারি। আমাদের কেবল কমা দিয়ে সারি এবং কলাম নির্বাচন পৃথক করতে হবে ।
উদাহরণস্বরূপ, আমরা সারি সারি জেন, এবং ডিনকে কেবল কলামগুলির উচ্চতা, স্কোর এবং এর মতো অবস্থা নির্বাচন করতে পারি:
df.loc[['Jane', 'Dean'], 'height':]
এটি কলামগুলির জন্য সারিগুলির জন্য লেবেলগুলির তালিকা এবং স্লাইস স্বরলিপি ব্যবহার করে
আমরা .iloc
কেবলমাত্র পূর্ণসংখ্যা ব্যবহার করে একইভাবে কাজ করতে পারি ।
df.iloc[[1,4], 2]
Nick Lamb
Dean Cheese
Name: food, dtype: object
লেবেল এবং পূর্ণসংখ্যার অবস্থান সহ একযোগে নির্বাচন
.ix
লেবেল এবং পূর্ণসংখ্যার অবস্থানের সাথে একযোগে নির্বাচন করতে ব্যবহৃত হয়েছিল যা দরকারী তবে বিভ্রান্তিকর এবং দ্বিধাগ্রস্ত ছিল এবং ধন্যবাদ যে এটি হ্রাস পেয়েছে। আপনার লেবেল এবং পূর্ণসংখ্যার অবস্থানগুলির মিশ্রণ সহ একটি নির্বাচন করা প্রয়োজন সে ক্ষেত্রে আপনার নির্বাচনের লেবেল বা পূর্ণসংখ্যার উভয় স্থানই তৈরি করতে হবে।
উদাহরণস্বরূপ, যদি আমরা সারিগুলি নির্বাচন করতে চাই Nick
এবং Cornelia
2 এবং 4 কলামের পাশাপাশি, আমরা .loc
নিম্নলিখিতগুলির সাথে পূর্ণসংখ্যাকে লেবেলে রূপান্তর করে ব্যবহার করতে পারি :
col_names = df.columns[[2, 4]]
df.loc[['Nick', 'Cornelia'], col_names]
অথবা বিকল্পভাবে, সূচীকরণের get_loc
পদ্ধতি অনুসারে সূচক লেবেলগুলিকে পূর্ণসংখ্যায় রূপান্তর করুন ।
labels = ['Nick', 'Cornelia']
index_ints = [df.index.get_loc(label) for label in labels]
df.iloc[index_ints, [2, 4]]
বুলিয়ান নির্বাচন
.Loc সূচক এছাড়াও বুলিয়ান নির্বাচন করতে পারে। উদাহরণস্বরূপ, যদি আমরা 30 বছরের উপরে যে সমস্ত সারিগুলি সন্ধান করতে আগ্রহী food
এবং নীচের score
কাজগুলি করতে পারি কেবলমাত্র এবং কলামগুলিতে ফিরে আসি:
df.loc[df['age'] > 30, ['food', 'score']]
আপনি এটি দিয়ে প্রতিলিপি .iloc
করতে পারেন তবে আপনি এটি বুলিয়ান সিরিজটি পাস করতে পারবেন না। আপনাকে অবশ্যই বুলিয়ান সিরিজটিকে এই জাতীয় একটি নমীর অ্যারে রূপান্তর করতে হবে:
df.iloc[(df['age'] > 30).values, [2, 4]]
সমস্ত সারি নির্বাচন করা হচ্ছে
.loc/.iloc
কেবল কলাম নির্বাচনের জন্য এটি ব্যবহার করা সম্ভব । আপনি এর মতো কোলন ব্যবহার করে সমস্ত সারি নির্বাচন করতে পারেন:
df.loc[:, 'color':'score':2]
ইনডেক্সিং অপারেটর, []
স্লাইস করে সারি এবং কলামগুলি নির্বাচন করতে পারে তবে একই সাথে নয়।
বেশিরভাগ লোক ডেটা ফ্রেম ইনডেক্সিং অপারেটরের প্রাথমিক উদ্দেশ্য সম্পর্কে পরিচিত, যা কলামগুলি নির্বাচন করা। একটি স্ট্রিং সিরিজ হিসাবে একটি একক কলাম নির্বাচন করে এবং স্ট্রিংয়ের তালিকা একাধিক কলামকে ডেটা ফ্রেম হিসাবে নির্বাচন করে।
df['food']
Jane Steak
Nick Lamb
Aaron Mango
Penelope Apple
Dean Cheese
Christina Melon
Cornelia Beans
Name: food, dtype: object
একটি তালিকা ব্যবহার করে একাধিক কলাম নির্বাচন করে
df[['food', 'score']]
লোকেরা যা সম্পর্কে কম পরিচিত, তা হ'ল, যখন স্লাইস নোটেশন ব্যবহৃত হয়, তারপরে সারি লেবেল বা পূর্ণসংখ্যার অবস্থান দ্বারা নির্বাচন হয়। এটি খুব বিভ্রান্তিকর এবং এমন কিছু যা আমি প্রায় কখনও ব্যবহার করি না তবে এটি কাজ করে।
df['Penelope':'Christina'] # slice rows by label
df[2:6:2] # slice rows by integer location
এর explicitness .loc/.iloc
নির্বাচন সারি জন্য অত্যন্ত পছন্দ করা হয়। ইনডেক্সিং অপারেটর একাই সারি এবং কলামগুলি নির্বাচন করতে অক্ষম।
df[3:5, 'color']
TypeError: unhashable type: 'slice'
দ্বারা নির্বাচন .at
এবং.iat
এর সাথে নির্বাচন .at
প্রায় একইরকম .loc
তবে এটি আপনার ডেটাফ্রেমে কেবল একটি একক 'সেল' নির্বাচন করে। আমরা সাধারণত এই ঘরটিকে একটি স্কেলারের মান হিসাবে উল্লেখ করি। ব্যবহার করতে .at
, এটি কমা দ্বারা পৃথক করা একটি সারি এবং কলাম লেবেল উভয়ই পাস করুন।
df.at['Christina', 'color']
'black'
এর সাথে নির্বাচন .iat
প্রায় একইরকম .iloc
তবে এটি কেবল একটি একক স্কেলারের মান নির্বাচন করে। আপনি এটি উভয় সারি এবং কলাম অবস্থানের জন্য একটি পূর্ণসংখ্যার পাস করতে হবে
df.iat[2, 5]
'FL'