अध्याय 04 मैटप्लॉटलिब का उपयोग करके डेटा प्लॉट करना
“मानव दृश्य धारणा कंप्यूटरों और मनुष्यों के बीच डेटा इंटरफेस का “सबसे शक्तिशाली” है”
— एम. मैकइंटायर
4.1 परिचय
हमने सीखा है कि डेटा को कैसे संगठित और विश्लेषित किया जाता है और Pandas DataFrames पर विभिन्न सांख्यिकीय संचालन कैसे किए जाते हैं। इसी प्रकार, कक्षा XI में, हमने NumPy का उपयोग करके संख्यात्मक डेटा का विश्लेषण करना सीखा है। विश्लेषण के बाद प्राप्त परिणामों का उपयोग डेटा के बारे में निष्कर्ष निकालने या निष्कर्ष तैयार करने के साथ-साथ महत्वपूर्ण व्यावसायिक निर्णय लेने के लिए किया जाता है। कभी-कभी, केवल परिणामों को देखकर निष्कर्ष निकालना आसान नहीं होता है। ऐसे मामलों में, विज़ुअलाइज़ेशन विश्लेषण के परिणामों की बेहतर समझ में मदद करता है।
डेटा विज़ुअलाइज़ेशन का अर्थ है ग्राफ, चार्ट आदि का उपयोग करके डेटा की ग्राफिकल या चित्रात्मक प्रस्तुति। डेटा प्लॉट करने का उद्देश्य विचरण को दिखाना या चरों के बीच संबंधों को दर्शाना है।
विज़ुअलाइज़ेशन इच्छित उपयोगकर्ताओं को जानकारी को प्रभावी ढंग से संप्रेषित करने में भी मदद करता है। ट्रैफिक प्रतीक, अल्ट्रासाउंड रिपोर्ट, मानचित्रों की एटलस पुस्तक, वाहन का स्पीडोमीटर, वाद्ययंत्रों के ट्यूनर हमारे दैनिक जीवन में आने वाले विज़ुअलाइज़ेशन के कुछ उदाहरण हैं। डेटा का विज़ुअलाइज़ेशन स्वास्थ्य, वित्त, विज्ञान, गणित, इंजीनियरिंग आदि क्षेत्रों में प्रभावी रूप से उपयोग किया जाता है। इस अध्याय में, हम सीखेंगे कि Python की Matplotlib लाइब्रेरी का उपयोग करके डेटा को कैसे विज़ुअलाइज़ किया जाता है, जैसे कि लाइन, बार, स्कैटर चार्ट प्लॉट करके विभिन्न प्रकार के डेटा के संदर्भ में।
4.2 Matplotlib का उपयोग करके प्लॉटिंग
Matplotlib लाइब्रेरी Python में स्थिर, एनिमेटेड और इंटरैक्टिव 2D-प्लॉट या आकृतियाँ बनाने के लिए प्रयोग की जाती है। इसे कमांड प्रॉम्प्ट से निम्नलिखित pip कमांड का उपयोग करके इंस्टॉल किया जा सकता है:
pip install matplotlib
Matplotlib का उपयोग करके प्लॉटिंग के लिए हमें इसके Pyplot मॉड्यूल को निम्नलिखित कमांड का उपयोग करके इंपोर्ट करना होता है:
import matplotlib.pyplot as plt
यहाँ, plt matplotlib.pyplot का एक उपनाम या वैकल्पिक नाम है। हम कोई अन्य उपनाम भी उपयोग कर सकते हैं।
आकृति 4.1: एक प्लॉट के घटक
matplotlib के pyplot मॉड्यूल में फ़ंक्शनों का एक संग्रह होता है जिसका उपयोग प्लॉट पर काम करने के लिए किया जा सकता है। pyplot मॉड्यूल की plot() फ़ंक्शन का उपयोग एक आकृति बनाने के लिए किया जाता है। एक आकृति समग्र विंडो होती है जहाँ pyplot फ़ंक्शनों के आउटपुट प्लॉट किए जाते हैं। एक आकृति में एक प्लॉटिंग क्षेत्र, लेजेंड, एक्सिस लेबल, टिक्स, शीर्षक आदि होते हैं (आकृति 4.1)। प्रत्येक फ़ंक्शन आकृति में कुछ बदलाव करता है: उदाहरण के लिए, एक आकृति बनाता है, एक आकृति में प्लॉटिंग क्षेत्र बनाता है, प्लॉटिंग क्षेत्र में कुछ रेखाएँ प्लॉट करता है, लेबल के साथ प्लॉट को सजाता है, आदि।
यह हमेशा अपेक्षित होता है कि चार्ट के माध्यम से प्रस्तुत किया गया डेटा आसानी से समझ में आए। इसलिए, डेटा प्रस्तुत करते समय हमें हमेशा चार्ट का शीर्षक देना चाहिए, चार्ट के एक्सिस को लेबल करना चाहिए और लेजेंड प्रदान करना चाहिए यदि हमारे पास एक से अधिक प्लॉट किया गया डेटा है।
$\mathrm{x}$ बनाम $\mathrm{y}$ प्लॉट करने के लिए हम plt. $\operatorname{plot}(\mathrm{x}, \mathrm{y})$ लिख सकते हैं। show() फ़ंक्शन का उपयोग plot() फ़ंक्शन द्वारा बनाए गए आकृति को प्रदर्शित करने के लिए किया जाता है।
मान लीजिए किसी शहर में लगातार तीन दिनों तक दिन का अधिकतम तापमान दर्ज किया गया है। प्रोग्राम 4-1 दिखाता है कि दी गई तिथियों के लिए तापमान मानों को कैसे प्लॉट किया जाए। उत्पन्न आउटपुट एक लाइन चार्ट है।
प्रोग्राम 4-1 तापमान बनाम ऊँचाई प्लॉट करना
import matplotlib.pyplot as plt
#स्ट्रिंग प्रारूप में तिथि संग्रहीत करने वाली सूची
date=[“25/12”,“26/12”,“27/12”]
#तापमान मान संग्रहीत करने वाली सूची
temp=[8.5,10.5,6.8]
#तिथि बनाम तापमान प्लॉट करते हुए एक आकृति बनाएँ
plt.plot(date, temp)
#आकृति दिखाएँ
plt.show()
आकृति 4.2: प्रोग्राम 4-1 के आउटपुट के रूप में लाइन चार्ट
प्रोग्राम 4-1 में, plot() को दो पैरामीटर दिए गए हैं, जो क्रमशः $\mathrm{x}$-अक्ष और $\mathrm{y}$-अक्ष के मान दर्शाते हैं। $\mathrm{x}$ और $\mathrm{y}$ टिक्स तदनुसार प्रदर्शित होते हैं। जैसा कि आकृति 4.2 में दिखाया गया है, plot() फ़ंक्शन डिफ़ॉल्ट रूप से एक लाइन चार्ट प्लॉट करता है। हम आउटपुट विंडो पर सेव बटन पर क्लिक करके प्लॉट को इमेज के रूप में सहेज सकते हैं। किसी आकृति को savefig() फ़ंक्शन का उपयोग करके भी सहेजा जा सकता है। आकृति का नाम फ़ंक्शन को पैरामीटर के रूप में पास किया जाता है।
उदाहरण के लिए: plt.savefig(‘x.png’).
पिछले उदाहरण में हमने एक लाइन ग्राफ बनाने के लिए plot() फ़ंक्शन का इस्तेमाल किया। विश्लेषण के लिए कई प्रकार के डेटा उपलब्ध होते हैं। प्लॉटिंग विधियाँ डिफ़ॉल्ट लाइन प्लॉट के अलावा कुछ अन्य प्लॉट प्रकारों की अनुमति देती हैं, जैसा कि तालिका 4.1 में सूचीबद्ध है। प्लॉट का चयन हमारे पास मौजूद डेटा के प्रकार से निर्धारित होता है।
तालिका 4.1 विभिन्न चार्ट प्लॉट करने के लिए Pyplot फ़ंक्शंस की सूची
| plot(*args[, scalex, scaley, data]) | x बनाम y को लाइनों और/या मार्करों के रूप में प्लॉट करें। |
| bar(x, height[, width, bottom, align, data]) | एक बार प्लॉट बनाएँ। |
| boxplot(x[, notch, sym, vert, whis, …]) | एक बॉक्स और व्हिस्कर प्लॉट बनाएँ। |
| hist(x[, bins, range, density, weights, …]) | एक हिस्टोग्राम प्लॉट करें। |
| pie(x[, explode, labels, colors, autopct, …]) | एक पाई चार्ट प्लॉट करें। |
| scatter(x, y[, s, c, marker, cmap, norm, …]) | x बनाम y का एक स्कैटर प्लॉट। |
4.3 प्लॉट्स का अनुकूलन
Pyplot लाइब्रेरी हमें कई फ़ंक्शन प्रदान करती है, जिनका उपयोग चार्ट्स को अनुकूलित करने के लिए किया जा सकता है, जैसे कि शीर्षक या लेजेंड जोड़ना। कुछ अनुकूलन विकल्प तालिका 4.2 में सूचीबद्ध हैं:
तालिका 4.2 प्लॉट्स को अनुकूलित करने के लिए Pyplot फ़ंक्शंस की सूची
| grid([b, which, axis]) | ग्रिड लाइनों को कॉन्फ़िगर करें। |
| legend(*args, **kwargs) | एक्सेस पर लेजेंड रखें। |
| savefig(*args, **kwargs) | वर्तमान फ़िगर को सहेजें। |
| show(*args, **kw) | सभी फ़िगर्स प्रदर्शित करें। |
| title(label[, fontdict, loc, pad]) | एक्सेस के लिए एक शीर्षक सेट करें। |
| xlabel(xlabel[, fontdict, labelpad]) | x-अक्ष के लिए लेबल सेट करें। |
| xticks([ticks, labels]) | x-अक्ष के वर्तमान टिक स्थान और लेबल प्राप्त करें या सेट करें। |
| ylabel(ylabel[, fontdict, labelpad]) | y-अक्ष के लिए लेबल सेट करें। |
| yticks([ticks, labels]) | y-अक्ष के वर्तमान टिक स्थान और लेबल प्राप्त करें या सेट करें। |
प्रोग्राम 4-2 $\mathrm{X}$ और $\mathrm{Y}$ अक्ष पर लेबल जोड़कर, और चार्ट को शीर्षक और ग्रिड जोड़कर दिनांक बनाम तापमान का लाइन चार्ट प्लॉट करना।
import matplotlib.pyplot as plt
date=[“25/12”,“26/12”,“27/12”]
temp=[8.5,10.5,6.8]
plt.plot(date, temp)
plt.xlabel(“Date”)
plt.ylabel(“Temperature”)
plt.title(“Date wise Temperature”)
plt.grid(True)
plt.yticks(temp)
plt.show()
#x-अक्ष पर लेबल जोड़ें
#y-अक्ष पर लेबल जोड़ें
#चार्ट को शीर्षक दें
#पृष्ठभूमि में ग्रिडलाइनें जोड़ें
सोचिए और विचार कीजिए
क्या plot() फ़ंक्शन को एकल सूची या ऐरे देने पर matplotlib $\mathrm{x}$ और y दोनों अक्षों के लिए मान उत्पन्न कर सकता है?
उपरोक्त उदाहरण में, हमने xlabel, ylabel, title और yticks फ़ंक्शनों का उपयोग किया है। हम देख सकते हैं कि आकृति 4.2 की तुलना में, आकृति 4.3 अधिक अर्थ आसानी से व्यक्त करती है। हम बाद के खंडों में अन्य प्लॉट्स की अनुकूलन के बारे में सीखेंगे।
4.3.1 मार्कर
हम plot() फ़ंक्शन को विभिन्न पैरामीटर पास करके प्लॉट्स में कुछ अन्य परिवर्तन कर सकते हैं। आकृति 4.3 में, हम तापमान को दिनवार प्लॉट करते हैं। यह भी संभव है कि लाइन में प्रत्येक बिंदु को एक मार्कर के माध्यम से निर्दिष्ट किया जाए।
मार्कर कोई भी प्रतीक होता है जो एक लाइन चार्ट या स्कैटर प्लॉट में डेटा मान को दर्शाता है। तालिका 4.3 मार्करों की एक सूची दिखाती है जिनमें उनके संगत प्रतीक और विवरण हैं। इन मार्करों का उपयोग प्रोग्राम कोड में किया जा सकता है:
तालिका 4.3 Matplotlib के कुछ मार्कर
4.3.2 रंग
यह भी संभव है कि प्लॉट को और अधिक स्वरूप दिया जाए, जिसमें प्लॉट किए गए डेटा का रंग बदला जा सके। तालिका 4.4 समर्थित रंगों की सूची दिखाती है। हम या तो वर्ण कोड या रंग के नामों का उपयोग plot() में color पैरामीटर के मान के रूप में कर सकते हैं।
तालिका 4.4 प्लॉटिंग के लिए रंग संक्षेप
| वर्ण | रंग |
|---|---|
| ‘b’ | नीला |
| ‘g’ | हरा |
| $’ r ‘$ | लाल |
| ‘c’ | सायन |
| $’ m ‘$ | मैजेंटा |
| ’ $\mathrm{y} ‘$ | पीला |
| $’ \mathrm{k} ‘$ | काला |
| ’ $\mathrm{w} ‘$ | सफेद |
4.3.3 लाइनचौड़ाई और लाइन शैली
linewidth और linestyle प्रॉपर्टी का उपयोग लाइन चार्ट की चौड़ाई और स्टाइल बदलने के लिए किया जा सकता है। Linewidth पिक्सेल में निर्दिष्ट किया जाता है। डिफ़ॉल्ट लाइन चौड़ाई 1 पिक्सेल होती है जो एक पतली रेखा दिखाती है। इस प्रकार, 1 से बड़ी कोई संख्या दी गई वैल्यू के आधार पर एक मोटी रेखा आउटपुट करेगी।
हम linestyle पैरामीटर का उपयोग करके लाइन चार्ट की लाइन स्टाइल भी सेट कर सकते हैं। यह “solid”, “dotted”, “dashed” या “dashdot” जैसी स्ट्रिंग ले सकता है। आइए कुछ कस्टमाइज़ेशन लागू करते हुए प्रोग्राम 4-3 लिखें।
प्रोग्राम 4-3 8 से 16 वर्ष की आयु के व्यक्तियों की औसत ऊंचाई और वजन निम्नलिखित दो सूचियों में संग्रहीत हैं:
height $=[121.9,124.5,129.5,134.6,139.7,147.3$, 152.4, 157.5,162.6]
weight $=[19.7,21.3,23.5,25.9,28.5,32.1,35.7,39.6$, 43.2]
आइए एक लाइन चार्ट प्लॉट करें जहां:
i. $x$ अक्ष वजन को दर्शाएगा
ii. y अक्ष ऊंचाई को दर्शाएगा
iii. x अक्ष लेबल “Weight in kg” होना चाहिए
iv. y अक्ष लेबल “Height in cm” होना चाहिए
v. लाइन का रंग हरा होना चाहिए
vi. मार्कर के लिए * का उपयोग करें
vii. मार्कर का आकार 10 हो
viii. चार्ट का शीर्षक “Average weight with respect to average height” होना चाहिए।
ix. लाइन स्टाइल dashed होनी चाहिए
x. Linewidth 2 होनी चाहिए।
import matplotlib.pyplot as plt
import pandas as pd
height=[121.9,124.5,129.5,134.6,139.7,147.3,152.4,157.5,162.6]
weight=[19.7,21.3,23.5,25.9,28.5,32.1,35.7,39.6,43.2]
df=pd.DataFrame({"height":height,"weight":weight})
#Set xlabel for the plot
plt.xlabel('वज़न किलोग्राम में')
#Set ylabel for the plot
plt.ylabel('ऊँचाई सेंटीमीटर में')
#Set chart title:
plt.title('औसत ऊँचाई के सापेक्ष औसत वज़न')
#plot using marker'-*' and line colour as green
plt.plot(df.weight,df.height,marker='*',markersize=10,color='green
',linewidth=2, linestyle='dashdot')
plt.show()
निरंतर डेटा मापा जाता है जबकि विविक्त डेटा गिनती द्वारा प्राप्त किया जाता है। ऊँचाई, वज़न निरंतर डेटा के उदाहरण हैं। यह दशमलव में हो सकता है। कक्षा में छात्रों की कुल संख्या विविक्त है। यह कभी भी दशमलव में नहीं हो सकती।
ऊपर हमने 2 सूचियों का उपयोग करके DataFrame बनाया, और plot फ़ंक्शन में हमने DataFrame के height और weight कॉलम पास किए हैं। आउटपुट Figure 4.4 में दिखाया गया है।
Figure 4.4: औसत ऊँचाई के विरुद्ध औसत वज़न दिखाता रेखा चार्ट
4.4 Pandas Plot फ़ंक्शन (Pandas विज़ुअलाइज़ेशन)
प्रोग्राम 4-1 और 4-2 में, हमने सीखा कि matplotlib के pyplot मॉड्यूल की plot() फ़ंक्शन का उपयोग करके चार्ट प्लॉट किया जा सकता है। हालांकि, संस्करण 0.17.0 से शुरू होकर, Pandas ऑब्जेक्ट Series और DataFrame अपने खुद के .plot() मेथड से लैस आते हैं। यह plot() मेथड pyplot के plot() फ़ंक्शन के चारों ओर एक सरल wrapper है। इस प्रकार, यदि हमारे पास Series या DataFrame प्रकार का ऑब्जेक्ट है (मान लीजिए ’s’ या ‘df’) तो हम plot मेथड को इस प्रकार कॉल कर सकते हैं:
s.plot() या df.plot()
Pandas का plot() मेथड काफी संख्या में तर्कों को स्वीकार करता है जो विभिन्न ग्राफ़ प्लॉट करने के लिए उपयोग किए जा सकते हैं। यह kind कीवर्ड तर्कों की आपूर्ति करके विभिन्न प्लॉट प्रकारों को अनुकूलित करने की अनुमति देता है। सामान्य वाक्यविन्यास है: plt.plot(kind), जहाँ kind .plot के प्रकार को इंगित करने वाला स्ट्रिंग स्वीकार करता है, जैसा कि तालिका 4.5 में सूचीबद्ध है। इसके अतिरिक्त, हम matplotlib.pyplot मेथड और फ़ंक्शन को भी Pandas ऑब्जेक्ट्स के plt() मेथड के साथ उपयोग कर सकते हैं।
तालिका 4.5 विभिन्न प्लॉट्स के लिए kind द्वारा स्वीकार किए गए तर्क
| kind $=$ | प्लॉट प्रकार |
|---|---|
| line | लाइन प्लॉट (डिफ़ॉल्ट) |
| bar | वर्टिकल बार प्लॉट |
| barh | हॉरिज़ॉन्टल बार प्लॉट |
| hist | हिस्टोग्राम |
| box | बॉक्सप्लॉट |
| area | एरिया प्लॉट |
| pie | पाई प्लॉट |
| scatter | स्कैटर प्लॉट |
पिछले अध्यायों में, हमने DataFrame का उपयोग करके विभिन्न प्रकार के डेटा को दो-आयामी प्रारूप में संग्रहीत करना सीखा है। आगामी खंडों में हम DataFrame में संग्रहीत डेटा के प्रकार के संबंध में विभिन्न प्रकार के चार्ट बनाने के लिए plot) फ़ंक्शन का उपयोग करना सीखेंगे।
4.4.1 लाइन चार्ट प्लॉट करना
लाइन प्लॉट एक ऐसा ग्राफ है जो डेटा की आवृत्ति को एक संख्या रेखा के साथ दिखाता है। इसका उपयोग निरंतर डेटासेट को दिखाने के लिए किया जाता है। लाइन प्लॉट का उपयोग किसी समय अंतराल में डेटा की वृद्धि या गिरावट को दिखाने के लिए किया जाता है। हमने पहले ही प्रोग्राम 4-1 और 4-2 के माध्यम से लाइन चार्ट प्लॉट किए हैं। इस खंड में, हम एक लाइन चार्ट प्लॉट करना सीखेंगे जो डेटा को एक DataFrame में संग्रहीत करता है।
प्रोग्राम 4-4 स्माइल एनजीओ ने तीन सप्ताह के सांस्कृतिक मेले में भाग लिया है। पांडा का उपयोग करते हुए, उन्होंने हर सप्ताह के दिन-वार बिक्री (रुपये में) को “MelaSales.csv” नामक CSV फ़ाइल में संग्रहीत किया है, जैसा कि तालिका 4.6 में दिखाया गया है।
गतिविधि 4.1
Python Pandas का उपयोग करके MelaSale.csv बनाएं जिसमें तालिका 4.6 के अनुसार डेटा हो।
तालिका 4.6 दिन-वार मेला बिक्री डेटा
| सप्ताह 1 | सप्ताह 2 | सप्ताह 3 |
|---|---|---|
| 5000 | 4000 | 4000 |
| 5900 | 3000 | 5800 |
| 6500 | 5000 | 3500 |
| 3500 | 5500 | 2500 |
| 4000 | 3000 | 3000 |
| 5300 | 4300 | 5300 |
| 7900 | 5900 | 6000 |
तीनों सप्ताहों की बिक्री को लाइन चार्ट के माध्यम से दिखाएं। इसमें निम्नलिखित होना चाहिए:
i. चार्ट शीर्षक “Mela Sales Report” हो।
ii. अक्ष लेबल Days हो।
iii. अक्ष लेबल “Sales in Rs” हो।
लाइन के रंग सप्ताह 1 के लिए लाल, सप्ताह 2 के लिए नीले और सप्ताह 3 के लिए भूरे हों।
import pandas as pd
import matplotlib.pyplot as plt
# "MelaSales.csv" को फ़ाइल के पथ देकर df में पढ़ता है
df=pd.read_csv("MelaSales.csv")
# प्रत्येक सप्ताह के लिए अलग रंग की लाइन प्लॉट बनाता है
df.plot(kind='line', color=['red','blue','brown'])
# शीर्षक "Mela Sales Report" सेट करें
plt.title('Mela Sales Report')
# x अक्ष को "Days" लेबल करें
plt.xlabel('Days')
# y अक्ष को "Sales in Rs" लेबल करें
plt.ylabel('Sales in Rs')
# आकृति प्रदर्शित करें
plt.show()
आकृति 4.5 प्रोग्राम 4-4 के आउटपुट के रूप में एक लाइन प्लॉट प्रदर्शित करती है। ध्यान दें कि लेजेंड डिफ़ॉल्ट रूप से प्रदर्शित होता है जो रंगों को प्लॉट किए गए डेटा से जोड़ता है।
आकृति 4.5: मेला बिक्री आंकड़े दिखाता लाइन प्लॉट
लाइन प्लॉट x अक्ष पर प्रदर्शित करने के लिए एक संख्यात्मक मान लेता है और इसलिए उपरोक्त उदाहरण में DataFrame के सूचकांक (पंक्ति लेबल) का उपयोग करता है। इस प्रकार, x टिक मान DataFramedf का सूचकांक हैं जिसमें MelaSales.CSV में संग्रहीत डेटा है।
लाइन प्लॉट को अनुकूलित करना
हम x अक्ष पर टिक्स को अपनी पसंद के मानों की सूची से प्रतिस्थापित कर सकते हैं plt.xticks(ticks,label) का उपयोग करके, जहाँ ticks x अक्ष पर उन स्थानों (locs) की सूची है जहाँ टिक्स रखे जाने चाहिए, label दिए गए टिक्स पर रखने योग्य आइटमों की सूची है।
प्रोग्राम 4-5 उसी CSV फ़ाइल, अर्थात् MelaSales.CSV को मानते हुए, निम्न अनुकूलनों के साथ लाइन चार्ट प्लॉट करें:
Maker = “”
Marker size=10
linestyle="–"
Linewidth =3
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv(“MelaSales.csv”)
#creates plot of different color for each week
df.plot(kind=‘line’,color=[‘red’,‘blue’,‘brown’],marker="",markersize=10,linewidth=3 \linestyle="–")
plt.title(‘Mela Sales Report’)
plt.xlabel(‘Days’)
plt.ylabel(‘Sales in Rs’)
#store converted index of DataFrame to a list
ticks = df.index.tolist()
#displays corresponding day on x axis
plt.xticks(ticks,df.Day)
plt.show()
आकृति 4.6 प्रोग्राम 4-5 के आउटपुट के रूप में उत्पन्न होती है जिसमें xticks के रूप में Day names हैं।
आकृति 4.6: दिनों के नामों के साथ मेला बिक्री के आंकड़े
4.4.2 बार चार्ट प्लॉट करना
आकृति 4.6 में लाइन प्लॉट दिखाता है कि सभी सप्ताहों की बिक्री वीकएंड के दौरान बढ़ी। वीकएंड के अलावा, यह दिखाता है कि सप्ताह 1 में बुधवार, सप्ताह 2 में गुरुवार और सप्ताह 3 में मंगलवार को बिक्री बढ़ी।
लेकिन, लाइनें सप्ताहों के बीच तुलना को प्रभावी ढंग से दर्शाने में असमर्थ हैं जिनके लिए बिक्री डेटा प्लॉट किया गया है। तुलना दिखाने के लिए, हम बार चार्ट पसंद करते हैं। लाइन प्लॉट के विपरीत, बार चार्ट $\mathrm{x}$ अक्ष पर स्ट्रिंग्स प्लॉट कर सकते हैं। बार चार्ट प्लॉट करने के लिए, हम kind=‘bar’ निर्दिष्ट करेंगे। हम यह भी निर्दिष्ट कर सकते हैं कि डेटाफ्रेम के कौन-से कॉलमों को $\mathrm{x}$ और $\mathrm{y}$ अक्ष के रूप में इस्तेमाल करना है।
आइए अब “MelaSales.csv” में दिनों के नाम वाला एक कॉलम “Days” जोड़ें जैसा कि तालिका 4.7 में दिखाया गया है।
तालिका 4.7 दिन-वार बिक्री डेटा दिनों के नामों के साथ
| सप्ताह 1 | सप्ताह 2 | सप्ताह 3 | दिन |
|---|---|---|---|
| 5000 | 4000 | 4000 | सोमवार |
| 5900 | 3000 | 5800 | मंगलवार |
| 6500 | 5000 | 3500 | बुधवार |
| 3500 | 5500 | 2500 | गुरुवार |
| 4000 | 3000 | 3000 | शुक्रवार |
| 5300 | 4300 | 5300 | शनिवार |
| 7900 | 5900 | 6000 | रविवार |
यदि हम plot() में $\mathrm{x}$ पैरामीटर के लिए कॉलम नाम निर्दिष्ट नहीं करते हैं, तो बार प्लॉट DataFrame के सभी कॉलमों को DataFrame के इंडेक्स (पंक्ति लेबल) के साथ $\mathrm{x}$ अक्ष पर प्लॉट करेगा जो 0 से शुरू होने वाला संख्यात्मक होता है।
प्रोग्राम 4-6 यह प्रोग्राम “MelaSales.csv” फ़ाइल के लिए बार प्लॉट प्रदर्शित करने के लिए Python स्क्रिप्ट दिखाता है जिसमें $\mathrm{x}$ अक्ष पर Day कॉलम है जैसा कि नीचे चित्र 4.7 में दिखाया गया है
import pandas as pd
df= pd.read_csv(‘MelaSales.csv’)
import matplotlib.pyplot as plt
# बार चार्ट प्लॉट करता है जिसमें “Days” कॉलम को x अक्ष के रूप में लिया गया है
df.plot(kind=‘bar’,x=‘Day’,title=‘Mela Sales Report’)
#शीर्षक सेट करें और ylabel सेट करें
plt.ylabel(‘Sales in Rs’)
plt.show()
चित्र 4.7: प्रोग्राम 4-6 के आउटपुट के रूप में एक बार चार्ट
बार चार्ट को अनुकूलित करना
हम बार चार्ट को कस्टमाइज़ भी कर सकते हैं, जिसके लिए हम plot फंक्शन में कुछ पैरामीटर जोड़ते हैं। हम बार का edgecolor, linestyle और linewidth नियंत्रित कर सकते हैं। हम लाइनों के रंग को भी नियंत्रित कर सकते हैं। निम्न उदाहरण Figure 4.8 के बार चार्ट पर विभिन्न कस्टमाइज़ेशन दिखाता है।
प्रोग्राम 4-7 आइए एक Python स्क्रिप्ट लिखें जो “MelaSales.csv” फ़ाइल के लिए Bar plot प्रदर्शित करे, जिसमें $\mathrm{x}$ अक्ष पर Day कॉलम हो और निम्नलिखित कस्टमाइज़ेशन हों:
- प्रत्येक बार का रंग लाल, पीला और बैंगनी करना।
- Edgecolor को हरा करना
- Linewidth को 2 करना
- Line style को “–” करना
import pandas as pd
import matplotlib.pyplot as plt
df= pd.read_csv(‘MelaSales.csv’)
# plots a bar chart with the column “Days” as x axis
df.plot(kind=‘bar’,x=‘Day’,title=‘Mela Sales Report’,color=[‘red’,
‘yellow’,‘purple’],edgecolor=‘Green’,linewidth=2,linestyle=’–’)
#set title and set ylabel
plt.ylabel(‘Sales in Rs’)
plt.show()
मेला सेल्स रिपोर्ट
Figure 4.8: प्रोग्राम 4-7 के आउटपुट के रूप में एक बार चार्ट
यदि हम Bins निर्दिष्ट नहीं करते हैं, तो वे अंतरालों की संख्या होती हैं जिनमें आप अपने सभी डेटा को विभाजित करना चाहते हैं, ताकि उसे हिस्टोग्राम पर बारों के रूप में प्रदर्शित किया जा सके।
4.4.3 हिस्टोग्राम प्लॉटिंग
हिस्टोग्राम कॉलम-चार्ट होते हैं, जहाँ प्रत्येक कॉलम मानों की एक रेंज को दर्शाता है, और कॉलम की ऊँचाई उस रेंज में कितने मान हैं, इसे दर्शाती है।
हिस्टोग्राम बनाने के लिए, डेटा को “बिन्स” में छाँटा जाता है और प्रत्येक बिन में मौजूद डेटा बिंदुओं की संख्या गिनी जाती है। हिस्टोग्राम में प्रत्येक स्तंभ की ऊँचाई तब उस बिन में मौजूद डेटा बिंदुओं की संख्या के अनुपात में होती है।
df.plot(kind=‘hist’) फ़ंक्शन डेटा में मानों के फैलाव के आधार पर बिन्स का आकार स्वचालित रूप से चुनता है।
प्रोग्राम 4-8
import pandas as pd
import matplotlib.pyplot as plt
data = {‘Name’:[‘Arnav’, ‘Sheela’, ‘Azhar’, ‘Bincy’, ‘Yash’,
‘Nazar’],
‘Height’ : [60,61,63,65,61,60],
‘Weight’ : [47,89,52,58,50,47]}
}
df=pd.DataFrame(data)
df.plot(kind=‘hist’)
plt.show()
सोचिए और विचार कीजिए
हम चित्र 4.8 की बार चार्ट को क्षैतिज कैसे बना सकते हैं?
प्रोग्राम 4-9 सभी गुणों के लिए हिस्टोग्राम प्रदर्शित करता है जिनमें संख्यात्मक मान हैं, अर्थात् ‘Height’ और ‘Weight’ गुण जैसा कि चित्र 4.9 में दिखाया गया है। DataFrame में दिए गए ऊँचाई और वजन के मानों के आधार पर, plot() ने बिन मानों की गणना की।
चित्र 4.9: प्रोग्राम 4-8 के आउटपुट के रूप में एक हिस्टोग्राम
प्रोग्राम 4-9
यह भी संभव है कि bins पैरामीटर के लिए मान सेट किया जाए, उदाहरण के लिए,
df.plot(kind=’hist’,bins=20)
df.plot(kind=‘hist’,bins=[18,19,20,21,22])
df.plot(kind=‘hist’,bins=range(18,25))
हिस्टोग्राम को अनुकूलित करना
ऊपर दिए गए समान डेटा को लेते हुए, अब देखते हैं कि हिस्टोग्राम को कैसे अनुकूलित किया जा सकता है। आइए edgecolor बदलें, जो कि प्रत्येक हिस्ट की सीमा रेखा है, को हरे रंग में। साथ ही, आइए लाइन स्टाइल को “:” और लाइन चौड़ाई को 2 पर सेट करें। आइए एक और प्रॉपर्टी fill आज़माते हैं, जो बूलियन मान लेती है। डिफ़ॉल्ट True का अर्थ है कि प्रत्येक हिस्ट रंग से भरा होगा और False का अर्थ है कि प्रत्येक हिस्ट खाली रहेगा। एक और प्रॉपर्टी hatch का उपयोग प्रत्येक हिस्ट को पैटर्न (’-’, ‘+’, ‘x’, ‘’, ‘*’, ‘o’, ‘O’, ‘.’) से भरने के लिए किया जा सकता है। प्रोग्राम 4-10 में, हमने hatch का मान “o” उपयोग किया है।
प्रोग्राम 4-9
import pandas as pd
import matplotlib.pyplot as plt
data = {‘Name’:[‘Arnav’, ‘Sheela’, ‘Azhar’,‘Bincy’,‘Yash’,‘Nazar’],
‘Height’ : [60,61,63,65,61,60],
‘Weight’ : [47,89,52,58,50,47]}
df=pd.DataFrame(data)
df.plot(kind=‘hist’,edgecolor=‘Green’,linewidth=2,linestyle=’:’,fill=False,hatch=‘o’)
plt.show()
चित्र 4.10: प्रोग्राम 4-9 के आउटपुट के रूप में अनुकूलित हिस्टोग्राम
ओपन डेटा का उपयोग
बहुत-सी वेबसाइटें ऐसी हैं जो शिक्षा के उद्देश्य से हर किसी के लिए मुफ्त में डेटा डाउनलोड और विश्लेषण करने की सुविधा देती हैं। इन्हें ओपन डेटा कहा जाता है क्योंकि डेटा स्रोत जनता के लिए खुला होता है। डेटा की उपलब्धता पहुंच और उपयोग को बढ़ावा देती है, जिससे और विश्लेषण तथा नवाचार होते हैं। पारदर्शिता, पहुंच और नवाचार सुनिश्चित करने के लिए ओपन डेटा पर बहुत ज़ोर दिया जा रहा है। “ओपन गवर्नमेंट डेटा (OGD) प्लेटफ़ॉर्म इंडिया” (data.gov.in) भारत सरकार की ओपन डेटा पहल को समर्थन देने के लिए एक मंच है। इस प्लेटफ़ॉर्म पर विभिन्न परियोजनाओं और मापदंडों के बड़े डेटासेट उपलब्ध हैं।
आइए एक डेटासेट पर विचार करें जिसे “Seasonal and Annual Min/Max Temp Series - India from 1901 to 2017” कहा जाता है, यूआरएल https://data.gov.in/resources/seasonal-andannual-minmax-temp-series-india-1901-2017 से।
हमारा उद्देश्य न्यूनतम और अधिकतम तापमान को प्लॉट करना है और यह देखना है कि किसी विशेष तापमान की घटना कितनी बार (बारंबारता) हुई है। हमें केवल फ़ाइल से ‘ANNUAL - MIN’ और ‘ANNUAL - MAX’ कॉलम निकालने हैं। साथ ही, आइए दो हिस्टोग्राम प्लॉट दिखाने का लक्ष्य रखें:
i) केवल ‘ANNUAL - MIN’ के लिए
ii) ‘ANNUAL - MIN’ और ‘ANNUAL - MAX’ दोनों के लिए
प्रोग्राम 4-10
import pandas as pd
import matplotlib.pyplot as plt
#read the CSV file with specified columns
#usecols parameter to extract only two required columns
data=pd.read_csv("Min_Max_Seasonal_IMD_2017.csv",usecols=['ANNUAL - MIN','ANNUAL - MAX'])
df=pd.DataFrame(data)
#plot histogram for 'ANNUAL - MIN'
df.plot(kind='hist',y='ANNUAL - MIN',title='Annual Minimum Temperature (1901-2017)')
plt.xlabel('Temperature')
plt.ylabel('Number of times')
#plot histogram for both 'ANNUAL - MIN' and 'ANNUAL - MAX'
df.plot(kind='hist',title='Annual Min and Max Temperature (1901-2017)',color=['blue','red'])
plt.xlabel('Temperature')
plt.ylabel('Number of times')
plt.show()
चित्र 4.11 और 4.12 प्रोग्राम 4-10 के आउटपुट के रूप में उत्पन्न होते हैं।
चित्र 4.11: ‘ANNUAL - MIN’ और ‘ANNUAL - MAX’ के लिए हिस्टोग्राम
चित्र 4.12: ‘ANNUAL - MIN’ के लिए हिस्टोग्राम
प्रोग्राम 4-11 “Min/Max Temp” डेटा के ‘ANNUAL MIN’ कॉलम के लिए हिस्टोग्राम के ऊपर एक फ्रीक्वेंसी पॉलिगॉन प्लॉट करें।
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data=pd.read_csv("Min_Max_Seasonal_IMD_2017.csv",usecols=['ANNUAL - MIN'])
df=pd.DataFrame(data)
#convert the 'ANNUAL - MIN' column into a numpy 1D array
minarray=np.array([df['ANNUAL - MIN']])
# Extract y (frequency) and edges (bins)
y,edges = np.histogram(minarray)
#calculate the midpoint for each bar on the histogram
mid = 0.5*(edges[1:]+ edges[:-1])
df.plot(kind='hist',y='ANNUAL - MIN')
plt.plot(mid,y,'-^')
plt.title('Annual Min Temperature plot(1901 - 2017)')
plt.xlabel('Temperature')
plt.show()
आकृति 4.13: प्रोग्राम 4-11 का आउटपुट
4.4.4 स्कैटर चार्ट प्लॉट करना
एक स्कैटर चार्ट दो-आयामी डेटा विज़ुअलाइज़ेशन की एक विधि है जो दो भिन्न चरों के लिए प्राप्त मानों को प्रस्तुत करने के लिए बिंदुओं का उपयोग करती है - एक को x-अक्ष के साथ और दूसरे को y-अक्ष के साथ प्लॉट किया जाता है।
स्कैटर प्लॉट का उपयोग तब किया जाता है जब आप दो चरों के बीच संबंध दिखाना चाहते हैं। स्कैटर प्लॉट को कभी-कभी सहसंबंध प्लॉट कहा जाता है क्योंकि वे यह दिखाते हैं कि दो चर कैसे सहसंबंधित हैं। इसके अतिरिक्त, बिंदु का आकार, आकृति या रंग एक तीसरे (या यहां तक कि चौथे) चर को दर्शा सकते हैं।
प्रोग्राम 4-12 प्रयत्न डिज़ाइनर बैग और बटुए बेचता है। सेल के मौसम में उसने 5 सप्ताहों तक 10% से 50% तक की छूट दी। उसने प्रत्येक प्रकार की छूट पर हुई बिक्री को एक array में रिकॉर्ड किया। छूट और बिक्री के बीच संबंध दिखाने के लिए एक scatter plot बनाएँ।
import numpy as np
import matplotlib.pyplot as plt
discount= np.array([10,20,30,40,50])
saleInRs=np.array([40000,45000,48000,50000,100000])
plt.scatter(x=discount,y=saleInRs)
plt.title(‘Sales Vs Discount’)
plt.xlabel(‘Discount offered’)
plt.ylabel(‘Sales in Rs’)
plt.show()
गतिविधि 4.2
चित्र 4.14 में प्रत्येक बुलबुला किस मान को दर्शाता है?
Sales Vs Discount
चित्र 4.14: प्रोग्राम 4-12 का आउटपुट
Scatter chart को अनुकूलित करना
बुलबुले का आकार भी एक मान को दर्शाने के लिए इस्तेमाल किया जा सकता है। उदाहरण के लिए, प्रोग्राम 4-14 में हमने बुलबुले का आकार छूट के 10 गुना के रूप में दिखाने का विकल्प चुना है, जैसा कि चित्र 4.15 में दिखाया गया है। रंग और मार्करों को भी निम्न कथनों को जोड़कर बदला जा सकता है:
प्रोग्राम 4-13
import numpy as np
import matplotlib.pyplot as plt
discount= np.array([10,20,30,40,50])
saleInRs=np.array([40000,45000,48000,50000,100000])
size=discount10
plt.scatter(x=discount,y=saleInRs,s=size,color=‘red’,linewidth=3,marker=’’,edgecolor=‘blue’)
plt.title(‘Sales Vs Discount’)
plt.xlabel(‘छूट की पेशकश’)
plt.ylabel(‘बिक्री रुपयों में’)
plt.show()
सोचिए और विचार कीजिए
क्या होगा यदि हम प्रोग्राम 4-13 में plt.scatter() के बजाय df.plot(kind=‘scatter’) का उपयोग करें?
आकृति 4.15: संशोधित प्रोग्राम 4-13 पर आधारित स्कैटर प्लॉट
4.4.5 क्वार्टाइल और बॉक्स प्लॉट बनाना
मान लीजिए 200 अंकों की एक प्रवेश परीक्षा राष्ट्रीय स्तर पर आयोजित की जाती है, और माही ने 120 अंक प्राप्त कर परीक्षा में शीर्ष स्थान प्राप्त किया है। परिणाम में माही के नाम के सामने 100 प्रतिशताइल दर्शाया गया है, जिसका अर्थ है कि माही को छोड़कर सभी उम्मीदवारों ने माही से कम अंक प्राप्त किए हैं। इस प्रकार के डेटा को दृश्य बनाने के लिए हम क्वार्टाइल का उपयोग करते हैं।
क्वार्टाइल वे माप हैं जो डेटा को चार बराबर भागों में विभाजित करते हैं, और प्रत्येक भाग में समान संख्या में प्रेक्षण होते हैं। क्वार्टाइल की गणना करने के लिए माध्यक की गणना आवश्यक होती है। क्वार्टाइल का उपयोग अक्सर शैक्षिक उपलब्धि डेटा, बिक्री और सर्वेक्षण डेटा में जनसंख्या को समूहों में विभाजित करने के लिए किया जाता है। उदाहरण के लिए, आप क्वार्टाइल का उपयोग उस परीक्षा में शीर्ष 25 प्रतिशत छात्रों को खोजने के लिए कर सकते हैं।
एक बॉक्स प्लॉट किसी दिए गए डेटा सेट के सांख्यिकीय सारांश का दृश्य प्रतिनिधित्व है। इस सारांश में न्यूनतम मान, क्वार्टाइल 1, क्वार्टाइल 2, माध्यक, क्वार्टाइल 3 और अधिकतम मान शामिल होते हैं। व्हिस्कर्स बॉक्स के बाहर दो रेखाएँ होती हैं जो उच्चतम और न्यूनतम मानों तक फैली होती हैं। यह आउटलायर की पहचान करने में भी मदद करता है। एक आउटलायर ऐसा अवलोकन है जो संख्यात्मक रूप से शेष डेटा से दूर होता है, जैसा कि चित्र 4.16 में दिखाया गया है:
चित्र 4.16: एक बॉक्स प्लॉट
प्रोग्राम 4-14 वार्षिक परीक्षा में किसी कक्षा के विद्यार्थियों के प्रदर्शन का आकलन करने के लिए, कक्षा शिक्षक ने सभी 5 विषयों में विद्यार्थियों के अंक एक CSV “Marks.csv” फ़ाइल में संग्रहित किए हैं, जैसा कि तालिका 4.8 में दिखाया गया है। डेटा को बॉक्सप्लॉट का उपयोग करके प्लॉट करें और प्रत्येक विषय में प्रदर्शन की तुलनात्मक विश्लेषण करें।
तालिका 4.8 विद्यार्थियों द्वारा पाँच विषयों में प्राप्त किए गए अंक
| नाम | अंग्रेज़ी | गणित | हिंदी | विज्ञान | सामाजिक अध्ययन |
|---|---|---|---|---|---|
| ऋषिका बत्रा | 95 | 95 | 90 | 94 | 95 |
| वसीम अली | 95 | 76 | 79 | 77 | 89 |
| कुलप्रीत सिंह | 78 | 81 | 75 | 76 | 88 |
| ऐनी मैथ्यू | 88 | 63 | 67 | 77 | 80 |
| शिक्षा | 95 | 55 | 51 | 59 | 80 |
| नवीन गुप्ता | 82 | 55 | 63 | 56 | 74 |
| तालीम अहमद | 73 | 49 | 54 | 60 | 77 |
| प्रगति निगम | 80 | 50 | 51 | 54 | 76 |
| उस्मान अब्बास | 92 | 43 | 51 | 48 | 69 |
| गुरप्रीत कौर | 60 | 43 | 55 | 52 | 71 |
| समीर मूर्ति | 60 | 43 | 55 | 52 | 71 |
| एंजेलिना | 78 | 33 | 39 | 48 | 68 |
| अंगद बेदी | 62 | 43 | 51 | 48 | 54 |
प्रोग्राम 4-14
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data= pd.read_csv(‘Marks.csv’)
df= pd.DataFrame(data)
df.plot(kind=‘box’)
#set title,xlabel,ylabel
plt.title(‘Performance Analysis’)
plt.xlabel(‘Subjects’)
plt.ylabel(‘Marks’)
plt.show()
सोचिए और विचार कीजिए
यदि DataFrame में दिया गया लेबल या पंक्ति सूचकांक मौजूद न हो तो क्या होगा?
आकृति 4.17: “Marks.csv” का बॉक्सप्लॉट
कुछ बॉक्सप्लॉट्स में बॉक्स और निचले या ऊपरी व्हिस्करों के बीच की दूरी अधिक है और कुछ में कम। छोटी दूरी डेटा में कम विचरण को दर्शाती है और लंबी दूरी डेटा में अधिक विचरण को दर्शाती है।
प्रोग्राम 4-15 अपनी सेवाओं को बेहतर बनाते रहने के लिए XYZ समूह के होटलों ने तीनों होटलों को चेकआउट के समय ग्राहकों से फीडबैक फॉर्म भरवाने को कहा है। भोजन, सेवा, वातावरण, गतिविधियाँ, पर्यटन स्थलों से दूरी जैसे पहलुओं पर 1-5 के पैमाने पर रेटिंग मिलने के बाद वे औसत रेटिंग निकालते हैं और उसे एक CSV फ़ाइल में संग्रहित करते हैं। आँकड़े तालिका 4.9 में दिए गए हैं।
तालिका 4.9 पाँच मापदंडों पर वर्षवार औसत रेटिंग
| वर्ष | सनी बनी रिसॉर्ट | हैप्पी लकी रिसॉर्ट | ब्रीज़ी विन्डी रिसॉर्ट |
|---|---|---|---|
| 2014 | 4.75 | 3 | 4.5 |
| 2015 | 2.5 | 4 | 2 |
| 2016 | 3.5 | 2.5 | 3 |
| 2017 | 4 | 2 | 3.5 |
| 2018 | 1.5 | 4.5 | 1 |
इस वर्ष सर्वश्रेष्ठ होटल को पुरस्कृत करने के लिए उन्होंने प्रत्येक होटल की पिछले 5 वर्षों की रेटिंग का विश्लेषण करने का निर्णय लिया है। डेटा को बॉक्सप्लॉट द्वारा आलेखित कीजिए।
प्रोग्राम 4-15
import pandas as pd
import matplotlib.pyplot as plt
#read the CSV file in ‘data’
data= pd.read_csv(‘compareresort.csv’)
#convert ‘data’ into a DataFrame ‘df’
df= pd.DataFrame(data)
#plot a box plot for the DataFrame ‘df’with a title
df.plot(kind=‘box’,title=‘Compare Resorts’)
#set xlabel,ylabel
plt.xlabel(‘Resorts’)
plt.ylabel(‘Rating (5 years)’)
#display the plot
plt.show()
सोचिए और विचार कीजिए
तीनों रिसॉर्ट्स में से किसे पुरस्कृत किया जाना चाहिए? कारण दीजिए।
Compare Resorts
आकृति 4.18: प्रोग्राम 4.15 के आउटपुट के रूप में एक बॉक्सप्लॉट।
गतिविधि 4.3
ग्रहों की त्रिज्या को प्रदर्शित करने के लिए एक पाई प्लॉट बनाएँ और प्लॉट को एक उपयुक्त शीर्षक भी दें।
बॉक्स प्लॉट को अनुकूलित करना
हम प्रोग्राम 4-15 में vert=False पैरामीटर जोड़कर व्हिस्कर को क्षैतिज दिशा में प्रदर्शित कर सकते हैं, जैसा कि निम्न कोड लाइन में दिखाया गया है। हम व्हिस्कर का रंग भी बदल सकते हैं। संशोधित प्रोग्राम का आउटपुट आकृति 4.19 में दिखाया गया है।
df.plot(kind=‘box’,title=‘Compare Resorts’, color=‘red’, vert=False)
आकृति 4.19: प्रोग्राम 4.15 को संशोधित करने के बाद क्षैतिज बॉक्सप्लॉट।
4.4.6 पाई चार्ट का प्लॉटिंग
पाई एक प्रकार का ग्राफ है जिसमें एक वृत्त को विभिन्न सैक्टरों में विभाजित किया जाता है और प्रत्येक सैक्टर पूरे का एक भाग दर्शाता है। पाई प्लॉट अनुपातिक रूप से संख्यात्मक डेटा को दर्शाने के लिए उपयोग किया जाता है। पाई चार्ट प्लॉट करने के लिए, df.plot(kind=‘pie’) का उपयोग करते समय या तो कॉलम लेबल y सेट करना चाहिए या ‘subplots=True’ सेट करना चाहिए। यदि कोई कॉलम संदर्भ पास नहीं किया जाता है और subplots=True है, तो प्रत्येक संख्यात्मक कॉलम के लिए स्वतंत्र रूप से एक ‘pie’ प्लॉट खींचा जाता है।
प्रोग्राम 4.16 में, हमारे पास ग्रहों के द्रव्यमान और त्रिज्या की जानकारी वाला एक डेटाफ्रेम है। ‘mass’ कॉलम को plot() फंक्शन में पास किया जाता है ताकि आकृति 4.20 में दिखाए अनुसार एक पाई प्लॉट प्राप्त हो सके।
प्रोग्राम 4-16
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'mass': [0.330, 4.87 , 5.97],
'radius': [2439.7, 6051.8, 6378.1]},
index=['Mercury', 'Venus', 'Earth'])
df.plot(kind='pie',y='mass')
plt.show()
आकृति 4.20: प्रोग्राम 4-16 के आउटपुट के रूप में पाई चार्ट।
यह ध्यान देना महत्वपूर्ण है कि डिफ़ॉल्ट लेबल नाम डेटाफ्रेम के इंडेक्स मान होते हैं। आकृति 4.20 में दिखाए गए लेबल ग्रहों के नाम हैं जो प्रोग्राम 4.16 में दिखाए गए इंडेक्स मान हैं।
प्रोग्राम 4-17 आइए हम तालिका 4.10 को देखें जो उत्तर पूर्वी राज्यों के वन आवरण को दर्शाती है जिसमें भौगोलिक क्षेत्र और संगत वर्ग किलोमीटर में वन आवरण के साथ-साथ संगत राज्यों के नाम शामिल हैं।
तालिका 4.10 उत्तर पूर्वी राज्यों का वन आवरण
| राज्य | भू-क्षेत्र | वन आवरण |
|---|---|---|
| अरुणाचल प्रदेश | 83743 | 67353 |
| असम | 78438 | 27692 |
| मणिपुर | 22327 | 17280 |
| मेघालय | 22429 | 17321 |
| मिजोरम | 21081 | 19240 |
| नागालैंड | 16579 | 13464 |
| त्रिपुरा | 10486 | 8073 |
प्रोग्राम 4-17
import pandas as pd
import matplotlib.pyplot as plt
df=pd.DataFrame({'GeoArea':[83743,78438,22327,22429,21081,16579,10486],'ForestCover':[67353,27692,17280,17321,19240,13464,8073]},
index=['अरुणाचल प्रदेश','असम','मणिपुर','मेघालय','मिज़ोरम','नागालैंड','त्रिपुरा'])
df.plot(kind='pie',y='ForestCover',title='Forest cover of North Eastern states',legend=False)
plt.show()
सोचिए और विचार कीजिए
प्रोग्राम 4.17 में ’legend = False’ का आउटपुट पर क्या प्रभाव पड़ा?
आकृति 4.21: प्रोग्राम 4.17 का आउटपुट पाई चार्ट
पाई चार्ट का अनुकूलन
आकृति 4.21 के पाई प्लॉट को अनुकूलित करने के लिए, हमने प्रोग्राम 4-18 में पाई चार्ट के निम्नलिखित दो गुण जोड़े हैं:
- Explode-यह प्रत्येक स्लॉट को फोड़ने या विस्तारित करने के लिए त्रिज्या का अंश निर्दिष्ट करता है।
- Autopct-किसी भाग के प्रतिशत को लेबल के रूप में प्रदर्शित करने के लिए।
प्रोग्राम 4-18
import pandas as pd
import matplotlib.pyplot as plt
df=pd.DataFrame({'GeoArea':[83743,78438,22327,22429,21081,16579,10486],'ForestCover':[67353,27692,17280,17321,19240,13464,8073]},
index=['Arunachal Pradesh','Assam','Manipur','Meghalaya', 'Mizoram','Nagaland','Tripura'])
exp=[0.1,0,0,0,0.2,0,0]
#पहले वेज को .1 स्तर और पाँचवें को स्तर 2 पर विस्फोटित करें।
c=['r','g','m','c','brown','pink','purple']
#प्रत्येक वेज का रंग बदलें
df.plot(kind='pie',y='ForestCover',title='Forest cover of North Eastern states', legend=False, explode=exp, autopct="%.2f",
colors=c)
plt.show()
आकृति 4.22: कार्यक्रम 4.18 का आउटपुट पाई चार्ट
सारांश
- एक प्लॉट डेटा सेट का एक ग्राफ़िकल प्रतिनिधित्व है जिसे आमतौर पर ग्राफ या चार्ट के नाम से भी जाना जाता है। इसका उपयोग दो या अधिक वेरिएबल्स के बीच संबंध दिखाने के लिए किया जाता है।
- Python के डेटा विज़ुअलाइज़ेशन लाइब्रेरी का उपयोग करने के लिए, हमें Matplotlib लाइब्रेरी से pyplot मॉड्यूल को निम्नलिखित स्टेटमेंट का उपयोग करके इम्पोर्ट करना होगा: import matplotlib.pyplot as plt, जहाँ plt matplotlib.pyplot का एक उपनाम या वैकल्पिक नाम है। आप अपनी पसंद का कोई भी उपनाम रख सकते हैं।
- pyplot मॉड्यूल में फंक्शन्स होते हैं जो एक फ़िगर (प्लॉट) बनाने, फ़िगर में एक प्लॉटिंग एरिया बनाने, प्लॉटिंग एरिया में लाइन्स, बार, hist आदि प्लॉट करने, लेबल्स आदि के साथ प्लॉट को सजाने के लिए होते हैं।
- प्लॉट के विभिन्न घटक हैं: Title, Legend, Ticks, x label, ylabel
- plt.plot() का उपयोग एक प्लॉट बनाने के लिए किया जाता है, जहाँ plt एक उपनाम है।
- plt.show() का उपयोग फ़िगर को डिस्प्ले करने के लिए किया जाता है, जहाँ plt एक उपनाम है।
- plt.xlabel() और plt.ylabel() का उपयोग प्लॉट के $x$ और y लेबल सेट करने के लिए किया जाता है।
- plt.title() का उपयोग प्लॉट का टाइटल डिस्प्ले करने के लिए किया जा सकता है।
- यह संभव है कि डेटा को सीधे DataFrame से प्लॉट किया जाए।
- Pandas में DataFrame क्लास का हिस्सा के रूप में एक बिल्ट-इन .plot() फंक्शन होता है।
- DataFrame को प्लॉट करने का सामान्य प्रारूप df.plot(kind = ’ ‘) है जहाँ df DataFrame का नाम है और kind line, bar, hist, scatter, box हो सकता है, यह इस बात पर निर्भर करता है कि किस प्रकार का प्लॉट डिस्प्ले किया जाना है।
व्यायाम
1. Matplotlib लाइब्रेरी का उद्देश्य क्या है?
2. किसी भी ग्राफ़ या प्लॉट के प्रमुख घटक क्या हैं?
3. प्लॉट को सेव करने के लिए किस फ़ंक्शन का प्रयोग किया जाता है?
4. किसी भी प्लॉट के साथ उपलब्ध विभिन्न कस्टमाइज़ेशन विकल्पों पर संक्षिप्त टिप्पणी लिखें।
5. लेजेंड का उद्देश्य क्या है?
6. Pandas विज़ुअलाइज़ेशन को परिभाषित करें।
7. ओपन डेटा क्या है? किन्हीं दो वेबसाइटों के नाम बताएं जहाँ से हम ओपन डेटा डाउनलोड कर सकते हैं।
8. डेटा तुलना का एक उदाहरण दें जहाँ हम स्कैटर प्लॉट का उपयोग कर सकते हैं।
9. वह प्लॉट नाम बताएं जो सांख्यिकीय सारांश प्रदर्शित करता है।
नोट: निम्नलिखित प्रश्नों का प्रयास करते समय उपयुक्त शीर्षक, xlabel और ylabel सेट करें।
10. निम्नलिखित डेटा को लाइन प्लॉट का उपयोग करके प्लॉट करें:
| दिन | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| टिकट बिके | 2000 | 2800 | 3000 | 2500 | 2300 | 2500 | 1000 |
- प्लॉट प्रदर्शित करने से पहले दिन 1, 2, 3, 4, 5, 6, 7 के स्थान पर “सोमवार, मंगलवार, बुधवार, गुरुवार, शुक्रवार, शनिवार, रविवार” प्रदर्शित करें
- लाइन का रंग ‘Magenta’ बदलें।
11. दिल्ली विश्वविद्यालय या अपनी पसंद के किसी अन्य विश्वविद्यालय के कॉलेजों के बारे में डेटा एकत्र करें और उनके द्वारा चलाए जाने वाले विज्ञान, वाणिज्य और मानविकी कोर्सों की संख्या को एक CSV फ़ाइल में संग्रहित करें और उसे बार प्लॉट का उपयोग करके प्रस्तुत करें।
12. अपनी कक्षा के छात्रों की स्क्रीन टाइम से संबंधित डेटा लड़कों और लड़कियों के लिए अलग-अलग एकत्र करें और संग्रहित करें और उसे बॉक्सप्लॉट का उपयोग करके प्रस्तुत करें।
13. आकृति 4.18 के बॉक्सप्लॉट के निष्कर्षों को निम्न रिक्त स्थानों को भरकर समझाएं:
a) पाँच विषयों की माध्यिका _________ , _________ , _________ , _________ है
b) पाँच विषयों के लिए उच्चतम मान : _________ , _________ _________ _________ _________ है
c) पाँच विषयों के लिए न्यूनतम मान : _________ , _________ , $\quad $
d) _________ विषय में दो आउटलायर हैं जिनके मान _________ और _________ हैं
e) _________ विषय में न्यूनतम विचरण दिखाई देता है
14. अपने शहर के एक महीने के न्यूनतम और अधिकतम तापमान को एकत्र करें और उसे हिस्टोग्राम प्लॉट का उपयोग करके प्रस्तुत करें।
15. एक प्रश्नावली तैयार करके कक्षा की जनगणना करें। प्रश्नावली में न्यूनतम पाँच प्रश्न होने चाहिए। प्रश्न छात्रों, उनके परिवार के सदस्यों, उनकी कक्षा में प्रदर्शन, उनके स्वास्थ्य आदि से संबंधित होने चाहिए। प्रत्येक छात्र को प्रश्नावली भरनी आवश्यक है। जानकारी को संख्यात्मक रूप में (प्रतिशत के रूप में) संकलित करें। जानकारी को बार, स्कैटर-आरेख के माध्यम से प्रस्तुत करें। (NCERT भूगोल कक्षा IX, पृष्ठ 60)
16. data.gov.in पर जाएं, वेबसाइट के “catalogs” विकल्प में निम्नलिखित खोजें:
- Final population Totals, India and states
- State Wise literacy rate
इन्हें डाउनलोड करें और एक CSV फ़ाइल बनाएं जिसमें संबंधित राज्य की जनसंख्या डेटा और साक्षरता दर हो। CSV फ़ाइल में एक कॉलम Region भी जोड़ें जिसमें East, West, North और South मान हों। प्रत्येक क्षेत्र के लिए एक स्कैटर प्लॉट बनाएं जहाँ $\mathrm{X}$ अक्ष जनसंख्या हो और $\mathrm{Y}$ अक्ष साक्षरता दर हो। मार्कर को हीरे के आकार का करें और आकार को साक्षरता दर के वर्गमूल के बराबर करें।
कॉलम region पर डेटा को समूहित करें और एक बार चार्ट प्रदर्शित करें जो प्रत्येक क्षेत्र की औसत साक्षरता दर दिखाए।