संक्षेप में: किसी DataFrame के लिए .shape एक टपल लौटाता है जिसमें पंक्तियों और कॉलमों की संख्या होती है। Series के लिए, यह पंक्तियों की संख्या देता है। .shape का उपयोग अपने डेटासेट के आकार को जल्दी जाँचने या फ़िल्टरिंग और चयन के परिणामों को सत्यापित करने के लिए करें। ध्यान रखें कि .shape एक एट्रिब्यूट है, इसलिए इसे एक्सेस करने के लिए कोष्ठकों की आवश्यकता नहीं होती।
इस ट्यूटोरियल के सभी उदाहरण कोड को खुद आसानी से चलाने के लिए, आप मुफ्त में एक DataLab वर्कबुक बनाएँ जिसमें Python पहले से इंस्टॉल हो और सभी कोड नमूने शामिल हों।
यदि आपके पास एक DataFrame है और आप उससे कुछ विशिष्ट पंक्तियाँ/कॉलम एक्सेस या चुनना चाहते हैं, तो आप स्क्वायर ब्रैकेट्स या अन्य उन्नत तरीकों जैसे loc और iloc का उपयोग कर सकते हैं।
स्क्वायर ब्रैकेट्स का उपयोग करके कॉलम चुनना
मान लीजिए आप brics DataFrame से country कॉलम चुनना चाहते हैं। इसके लिए आप brics लिखेंगे और फिर स्क्वायर ब्रैकेट्स के अंदर कॉलम लेबल देंगे।
एक कॉलम चुनना
country capital area population
BR Brazil Brasilia 8.516 200.40
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
SA South Africa Pretoria 1.221 52.98
brics["country"]
BR Brazil
RU Russia
IN India
CH China
SA South Africa
Name: country, dtype: object
ऑब्जेक्ट के प्रकार की जाँच करना
आइए type() फ़ंक्शन से उस ऑब्जेक्ट का प्रकार जाँचें जो वापस मिलता है।
type(brics["country"])
pandas.core.series.Series
ऊपर के आउटपुट से स्पष्ट है कि हम यहाँ एक pandas Series से काम कर रहे हैं! Series को एक-आयामी array की तरह समझा जा सकता है, जिसे DataFrame की तरह लेबल किया जा सकता है।
यदि आप डेटा चुनना चाहते हैं और उसे DataFrame के रूप में ही रखना चाहते हैं, तो आपको डबल स्क्वायर ब्रैकेट्स का उपयोग करना होगा:
brics[["country"]]
BR Brazil
RU Russia
IN India
CH China
SA South Africa
यदि हम इसके आउटपुट का प्रकार देखें, तो यह एक DataFrame है! हालांकि इसमें केवल एक ही कॉलम है।
type(brics[["country"]])
pandas.core.frame.DataFrame
.shape एट्रिब्यूट समझना
अब .shape एट्रिब्यूट पर नज़र डालते हैं। pandas में .shape एट्रिब्यूट DataFrame या Series की संरचना को जल्दी से देखने का तरीका देता है। यह एक टपल लौटाता है जो DataFrame के लिए पंक्तियों और कॉलमों की संख्या दर्शाता है, और Series के लिए केवल पंक्तियों की संख्या।
उदाहरण: DataFrame के साथ .shape का उपयोग
आइए अपने brics नामक DataFrame को फिर देखें:
import pandas as pd
# Sample DataFrame
data = {
"country": ["Brazil", "Russia", "India", "China", "South Africa"],
"capital": ["Brasilia", "Moscow", "New Delhi", "Beijing", "Pretoria"],
"area": [8.516, 17.1, 3.286, 9.597, 1.221],
"population": [200.4, 143.5, 1252, 1357, 52.98],
}
brics = pd.DataFrame(data, index=["BR", "RU", "IN", "CH", "SA"])
# Check the shape
print(brics.shape)
आउटपुट:
(5, 4)
यह बताता है कि brics DataFrame में 5 पंक्तियाँ और 4 कॉलम हैं।
उदाहरण: Series के साथ .shape का उपयोग
जब आप DataFrame से एक ही कॉलम चुनते हैं, जैसे country कॉलम, तो परिणाम एक Series होता है। इस स्थिति में .shape ऐसे व्यवहार करता है:
country_series = brics["country"]
print(country_series.shape)
आउटपुट:
(5,)
यहाँ Series में 5 पंक्तियाँ हैं और कोई कॉलम नहीं, क्योंकि Series एक-आयामी होती है।
एकाधिक कॉलम चुनना
आप इस कॉल को बढ़ाकर दो कॉलम चुन सकते हैं। आइए country और capital चुनने की कोशिश करें।
brics[["country", "capital"]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Dehli
CH China Beijing
SA South Africa Pretoria
ध्यान से देखें तो आप वास्तव में कॉलम लेबल्स की एक सूची को एक और स्क्वायर ब्रैकेट्स के अंदर रख रहे हैं और अंततः एक सब-DataFrame मिलता है जिसमें केवल country और capital कॉलम होते हैं।
स्क्वायर ब्रैकेट्स का उपयोग करके पंक्तियाँ चुनना
स्क्वायर ब्रैकेट्स केवल कॉलम चुनने से अधिक कर सकते हैं। आप उनका उपयोग DataFrame से पंक्तियाँ, या ऑब्ज़र्वेशन, लेने के लिए भी कर सकते हैं।
उदाहरण
आप केवल तभी स्क्वायर ब्रैकेट्स से पंक्तियाँ चुन सकते हैं जब आप कोई स्लाइस दें, जैसे 0:4। साथ ही, यहाँ आप पंक्तियों के रो लेबल नहीं, बल्कि इंटीजर इंडेक्स का उपयोग कर रहे हैं!
brics DataFrame की दूसरी, तीसरी और चौथी पंक्तियाँ पाने के लिए, हम 1 से 4 तक का स्लाइस उपयोग करते हैं। याद रखें कि स्लाइस का अंत एक्सक्लूसिव होता है, और इंडेक्स शून्य से शुरू होता है।
brics[1:4]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Delhi 3.286 1252.00
CH China Beijing 9.597 1357.00
ये स्क्वायर ब्रैकेट्स काम तो करते हैं, पर इनकी क्षमताएँ सीमित हैं। आदर्श रूप से, हम 2D Numpy arrays जैसा कुछ चाहेंगे, जहाँ आप स्क्वायर ब्रैकेट्स भी उपयोग करते हैं। कॉमा से पहले का इंडेक्स या स्लाइस पंक्तियों को दर्शाता है और कॉमा के बाद का स्लाइस कॉलमों को।
2D Numpy array का उदाहरण:
my_array[rows, columns]
यदि आप pandas में कुछ ऐसा ही करना चाहते हैं, तो आपको loc और iloc फ़ंक्शनों का उपयोग देखना होगा।
-
loc: लेबल-आधारित -
iloc: इंटीजर पोज़िशन-आधारित
loc फ़ंक्शन
loc आपके डेटा के हिस्सों को लेबल्स के आधार पर चुनने की तकनीक है। आइए brics DataFrame देखें और Russia के लिए पंक्तियाँ लें।
इसके लिए आप loc के बाद स्क्वायर ब्रैकेट्स में संबंधित लेबल रखेंगे।
पंक्तियाँ चुनना
brics.loc["RU"]
country Russia
capital Moscow
area 17.1
population 143.5
Name: RU, dtype: object
हमें एक pandas Series मिलती है जिसमें उस पंक्ति की सारी जानकारी होती है; हालाँकि, यह अलग-अलग लाइनों पर प्रदर्शित होती है। DataFrame पाने के लिए हमें RU स्ट्रिंग को एक और जोड़ी ब्रैकेट्स में रखना होगा। हम एक साथ कई पंक्तियाँ भी चुन सकते हैं। मान लीजिए आप India और China को भी शामिल करना चाहते हैं। बस उन रो लेबल्स को सूची में जोड़ दें।
brics.loc[["RU", "IN", "CH"]]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Delhi 3.286 1252.00
CH China Beijing 9.597 1357.00
loc और बेसिक स्क्वायर ब्रैकेट्स के उपयोग में अंतर यह है कि आप चयन को कॉमा लगाकर उन कॉलमों के विनिर्देशन के साथ बढ़ा सकते हैं जिनमें रुचि है।
पंक्तियाँ और कॉलम चुनना
आइए पिछले कॉल को बढ़ाकर केवल country और capital कॉलम शामिल करें। हम कॉमा जोड़ते हैं और उन कॉलम लेबल्स की सूची देते हैं जिन्हें रखना है। इंटरसेक्शन लौटाया जाता है।
brics.loc[["RU", "IN", "CH"], ["country", "capital"]]
country capital
RU Russia Moscow
IN India New Delhi
CH China Beijing
आप loc का उपयोग सभी पंक्तियाँ चुनने लेकिन केवल कुछ विशिष्ट कॉलम रखने के लिए भी कर सकते हैं। बस पहली सूची, जो रो लेबल्स बताती है, को कॉलन से बदल दें। यानी शुरुआत से अंत तक का स्लाइस। इस बार, हमें सभी पंक्तियाँ मिलती हैं लेकिन केवल दो कॉलम।
सभी पंक्तियाँ और विशिष्ट कॉलम चुनना
brics.loc[:, ["country", "capital"]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Delhi
CH China Beijing
SA South Africa Pretoria
iloc फ़ंक्शन
iloc फ़ंक्शन आपको उनकी पोज़िशन या इंडेक्स के आधार पर pandas DataFrames को सबसेट करने देता है।
पंक्तियाँ चुनना
आइए loc के लिए उपयोग किए गए वही डेटा और मिलते-जुलते उदाहरण लें। चलिए Russia की पंक्ति से शुरू करते हैं।
brics.iloc[[1]]
country capital area population
RU Russia Moscow 17.100 143.50
Russia, India और China की पंक्तियाँ पाने के लिए अब आप इंडेक्स की सूची 1, 2, 3 का उपयोग कर सकते हैं।
brics.iloc[[1, 2, 3]]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Delhi 3.286 1252.00
CH China Beijing 9.597 1357.00
पंक्तियाँ और कॉलम चुनना
loc की तरह ही, हम iloc के साथ भी पंक्तियाँ और कॉलम दोनों चुन सकते हैं। यहाँ, हम Russia, India और China की पंक्तियाँ और country तथा capital कॉलम चुनेंगे।
brics.iloc[[1, 2, 3], [0, 1]]
country capital
RU Russia Moscow
IN India New Delhi
CH China Beijing
सभी पंक्तियाँ और विशिष्ट कॉलम चुनना
अंत में, यदि आप सभी पंक्तियाँ चुनना चाहते हैं लेकिन केवल country और capital कॉलम रखना चाहते हैं, तो आप यह कर सकते हैं:
brics.loc[:, [0, 1]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Delhi
CH China Beijing
SA South Africa Pretoria
loc और iloc फ़ंक्शन काफी समान हैं। फर्क केवल इस बात में है कि आप पंक्तियों और कॉलमों का संदर्भ कैसे देते हैं।
डेटा के एक सबसेट का चयन: इंटरैक्टिव उदाहरण
निम्न उदाहरण में, cars डेटा एक CSV फ़ाइल से Pandas DataFrame के रूप में इंपोर्ट किया गया है। केवल cars_per_cap column को cars से चुनने के लिए, आप यह उपयोग कर सकते हैं:
cars['cars_per_cap']
cars[['cars_per_cap']]
सिंगल ब्रैकेट वाला संस्करण एक Pandas Series देता है; डबल ब्रैकेट वाला संस्करण एक Pandas DataFrame देता है।
- आप सिंगल स्क्वायर ब्रैकेट्स का उपयोग करके
carsकेcountryकॉलम को Pandas Series के रूप में प्रिंट करेंगे। - फिर डबल स्क्वायर ब्रैकेट्स का उपयोग करके
carsकेcountryकॉलम को Pandas DataFrame के रूप में प्रिंट करेंगे। - अंत में, डबल स्क्वायर ब्रैकेट्स का उपयोग करके
carsकेcountryऔरdrives_rightदोनों कॉलमों के साथ, इसी क्रम में, एक DataFrame प्रिंट करेंगे।
# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)
# Print out country column as Pandas Series
print(cars['country'])
# Print out country column as Pandas DataFrame
print(cars[['country']])
# Print out DataFrame with country and drives_right columns
print(cars[['country', 'drives_right']])
जब हम ऊपर का कोड चलाते हैं, तो यह निम्न परिणाम देता है:
US United States
AUS Australia
JPN Japan
IN India
RU Russia
MOR Morocco
EG Egypt
Name: country, dtype: object
country
US United States
AUS Australia
JPN Japan
IN India
RU Russia
MOR Morocco
EG Egypt
country drives_right
US United States True
AUS Australia False
JPN Japan False
IN India False
RU Russia True
MOR Morocco True
EG Egypt True
pandas के बारे में और सीखने के लिए, हमारे कोर्स Intermediate Python का यह वीडियो देखें।
यह सामग्री DataCamp के Intermediate Python कोर्स से ली गई है, लेखक: Hugo Bowne-Anderson।