पांडस डेटाफ्रेम्स पायथन में डेटा मैनिपुलेशन का एक आधारशिला हैं। जबकि पांडस वेक्टराइज़्ड ऑपरेशन्स में उत्कृष्टता प्राप्त करता है, ऐसी स्थितियां उत्पन्न होती हैं जहाँ पंक्ति-दर-पंक्ति प्रसंस्करण आवश्यक होता है। यह लेख DataFrame पंक्तियों के माध्यम से पुनरावृति करने के सबसे कुशल तरीकों की खोज करता है, उनकी ताकत और कमजोरियों को उजागर करता है।
विषय-सूची
iterrows()
: एक पंक्ति-दर-पंक्ति पुनरावृत्तिकर्ताitertuples()
: अनुकूलित पंक्ति पुनरावृत्तिapply()
: पंक्ति-वार संचालन के लिए फ़ंक्शन अनुप्रयोग- पुनरावृत्ति से कब बचना चाहिए
iterrows()
: एक पंक्ति-दर-पंक्ति पुनरावृत्तिकर्ता
iterrows()
एक सीधा तरीका है जो प्रत्येक पंक्ति को (सूचकांक, श्रृंखला) जोड़ी के रूप में देता है। जबकि सरल कार्यों के लिए सुविधाजनक है, यह प्रत्येक पंक्ति के लिए एक श्रृंखला बनाने के अतिरिक्त व्यय के कारण बड़े DataFrames के लिए आम तौर पर अन्य विकल्पों की तुलना में कम कुशल है।
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data)
for index, row in df.iterrows():
print(f"सूचकांक: {index}, पंक्ति: {row}")
itertuples()
: अनुकूलित पंक्ति पुनरावृत्ति
बेहतर प्रदर्शन के लिए, विशेष रूप से बड़े डेटासेट के साथ, itertuples()
की सिफारिश की जाती है। यह प्रत्येक पंक्ति को एक नामित टुपल के रूप में देता है, नाम से स्तंभों तक तेज़ पहुँच प्रदान करता है। यह iterrows()
के श्रृंखला निर्माण ओवरहेड से बचाता है।
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data)
for row in df.itertuples():
print(f"Col1: {row.col1}, Col2: {row.col2}")
apply()
: पंक्ति-वार संचालन के लिए फ़ंक्शन अनुप्रयोग
axis=1
के साथ apply()
प्रत्येक पंक्ति पर एक फ़ंक्शन लागू करने के लिए एक शक्तिशाली उपकरण है। यह अक्सर पंक्ति-वार संचालन के लिए सबसे कुशल और पायथोनिक दृष्टिकोण है जिसे एक फ़ंक्शन के रूप में व्यक्त किया जा सकता है।
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data)
def process_row(row):
return row['col1'] * 2 + row['col2']
df['result'] = df.apply(process_row, axis=1)
print(df)
पुनरावृत्ति से कब बचना चाहिए
पंक्ति-वार पुनरावृत्ति का सहारा लेने से पहले, विचार करें कि क्या आपके कार्य को वेक्टराइज़्ड ऑपरेशन्स का उपयोग करके पूरा किया जा सकता है। पांडस की ताकत पूरे स्तंभों पर एक साथ संचालन करने की इसकी क्षमता में निहित है, जिससे प्रदर्शन में काफी सुधार होता है। केवल जब वेक्टराइजेशन असंभव या अव्यावहारिक हो, तो आपको पुनरावृति दृष्टिकोणों पर विचार करना चाहिए, दक्षता के लिए itertuples()
या apply()
को प्राथमिकता देना चाहिए।