अध्याय 04 मैटप्लॉटलिब का उपयोग करके डेटा प्लॉट करना

“मानव दृश्य धारणा कंप्यूटरों और मनुष्यों के बीच डेटा इंटरफेस का “सबसे शक्तिशाली माध्यम” है”

— एम. मैकइंटायर

4.1 परिचय

हमने सीखा है कि डेटा को कैसे संगठित और विश्लेषित किया जाता है और Pandas DataFrames पर विभिन्न सांख्यिकीय संचालन कैसे किए जाते हैं। इसी प्रकार, कक्षा ग्यारह में हमने 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
#list storing date in string format
date=[“25/12”,“26/12”,“27/12”]
#list storing temperature values
temp=[8.5,10.5,6.8]
#create a figure plotting temp versus date
plt.plot(date, temp)
#show the figure
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-axis पर लेबल जोड़ें
#y-axis पर लेबल जोड़ें
#चार्ट को शीर्षक दें
#पृष्ठभूमि में ग्रिडलाइनें जोड़ें

सोचिए और विचार कीजिए

क्या plot() फ़ंक्शन को एकल सूची या array देने पर 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 लाइनचौड़ाई और लाइन शैली

लाइनचौड़ाई और linestyle गुण का उपयोग लाइन चार्ट की चौड़ाई और शैली को बदलने के लिए किया जा सकता है। लाइनचौड़ाई को पिक्सेल में निर्दिष्ट किया जाता है। डिफ़ॉल्ट लाइन चौड़ाई 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. लाइनचौड़ाई 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 कॉलम पास किए हैं। आउटपुट चित्र 4.4 में दिखाया गया है।

चित्र 4.4: औसत ऊँचाई के विरुद्ध औसत वज़न दिखाता रेखा चार्ट

4.4 पांडास प्लॉट फ़ंक्शन (Pandas Visualisation)

प्रोग्राम 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 का उपयोग करके दो-आयामी प्रारूप में संग्रहीत करना सीखा है। आगामी खंडों में हम DataFrames में संग्रहीत डेटा के टाइप के अनुरूप विभिन्न प्रकार के चार्ट बनाने के लिए plot) फ़ंक्शन का उपयोग करना सीखेंगे।

4.4.1 लाइन चार्ट प्लॉट करना

लाइन प्लॉट एक ऐसा ग्राफ होता है जो डेटा की आवृत्ति को एक संख्या रेखा के साथ दिखाता है। इसका उपयोग निरंतर डेटासेट को दिखाने के लिए किया जाता है। लाइन प्लॉट का उपयोग किसी समय अंतराल में डेटा की वृद्धि या गिरावट को दर्शाने के लिए किया जाता है। हमने पहले ही प्रोग्राम 4-1 और 4-2 के माध्यम से लाइन चार्ट प्लॉट किए हैं। इस खंड में, हम डेटाफ्रेम में संग्रहीत डेटा के लिए लाइन चार्ट प्लॉट करना सीखेंगे।

प्रोग्राम 4-4 स्माइल एनजीओ ने तीन सप्ताह के सांस्कृतिक मेले में भाग लिया है। पांडास का उपयोग करके, उन्होंने हर सप्ताह के दिनवार बिक्री (रुपये में) को “MelaSales.csv” नामक एक CSV फ़ाइल में संग्रहीत किया है, जैसा कि तालिका 4.6 में दिखाया गया है।

गतिविधि 4.1

तालिका 4.6 में दिखाए गए डेटा के साथ Python Pandas का उपयोग करके MelaSale.csv बनाएं।

तालिका 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$ अक्ष पर प्रदर्शित करने के लिए एक संख्यात्मक मान लेता है और इसलिए उपरोक्त उदाहरण में डेटा-फ्रेम के सूचकांक (पंक्ति लेबल) का उपयोग करता है। इस प्रकार, $x$ टिक मान डेटा-फ्रेम df के सूचकांक हैं जिसमें MelaSales.CSV में संग्रहीत डेटा है।

रेखा-प्लॉट को अनुकूलित करना

हम plt.xticks(ticks,label) का उपयोग करके $\mathrm{x}$ अक्ष पर टिक्स को अपनी पसंद के मानों की सूची से बदल सकते हैं, जहाँ ticks $\mathrm{x}$ अक्ष पर स्थानों (locs) की सूची है जहाँ टिक्स रखे जाने चाहिए, label दिए गए टिक्स पर रखने के लिए आइटमों की सूची है।

प्रोग्राम 4-5 उसी CSV फ़ाइल, अर्थात् MelaSales.CSV, को मानते हुए, निम्नलिखित अनुकूलनों के साथ रेखा चार्ट प्लॉट करें:

Marker=""
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 नाम हैं।

चित्र 4.6: Mela sales figures with day names

4.4.2 बार चार्ट प्लॉट करना

चित्र 4.6 में रेखा प्लॉट दिखाता है कि सभी सप्ताहों की बिक्री सप्ताहांत के दौरान बढ़ी। सप्ताहांत के अलावा, यह यह भी दिखाता है कि सप्ताह 1 में बुधवार, सप्ताह 2 में गुरुवार और सप्ताह 3 में मंगलवार को बिक्री बढ़ी।

लेकिन, रेखाएँ उन सप्ताहों के बीच तुलना को प्रभावी ढंग से दर्शाने में असमर्थ हैं जिनके लिए बिक्री आँकड़े दिखाए गए हैं। तुलना दिखाने के लिए हम बार चार्ट पसंद करते हैं। लाइन प्लॉट के विपरीत, बार चार्ट $\mathrm{x}$ अक्ष पर स्ट्रिंग्स प्लॉट कर सकते हैं। बार चार्ट बनाने के लिए हम kind=‘bar’ निर्दिष्ट करेंगे। हम यह भी निर्दिष्ट कर सकते हैं कि DataFrame के कौन-से कॉलम को $\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-axis मानकर एक बार चार्ट प्लॉट करता है
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 को नियंत्रित कर सकते हैं। हम लाइनों के रंग को भी नियंत्रित कर सकते हैं। निम्नलिखित उदाहरण आकृति 4.8 के बार चार्ट पर विभिन्न अनुकूलन दिखाता है

प्रोग्राम 4-7 आइए एक Python स्क्रिप्ट लिखें जो “MelaSales.csv” फ़ाइल के लिए बार प्लॉट प्रदर्शित करे, जिसमें $\mathrm{x}$-axis पर Day कॉलम हो और निम्नलिखित अनुकूलन हों:

  • प्रत्येक बार का रंग लाल, पीला और बैंगनी करना।
  • Edgecolor को हरा करना
  • Linewidth को 2 करना
  • Line style को “–” करना

import pandas as pd
import matplotlib.pyplot as plt
df= pd.read_csv(‘MelaSales.csv’)
# “Days” कॉलम को x-axis मानकर एक बार चार्ट प्लॉट करता है
df.plot(kind=‘bar’,x=‘Day’,title=‘Mela Sales Report’,color=[‘red’,
‘yellow’,‘purple’],edgecolor=‘Green’,linewidth=2,linestyle=’–’)
# शीर्षक सेट करें और ylabel सेट करें
plt.ylabel(‘Sales in Rs’)
plt.show()

Mela Sales Report

आकृति 4.8: प्रोग्राम 4-7 का आउटपुट एक बार चार्ट

यदि हम बिन निर्दिष्ट नहीं करते हैं, तो बिन वह संख्या होती है जिसमें आप अपने सभी डेटा को अंतरालों में विभाजित करना चाहते हैं, ताकि उसे हिस्टोग्राम पर बार के रूप में प्रदर्शित किया जा सके।

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() ने bin मानों की गणना की।

चित्र 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’:[‘अर्नव’, ‘शीला’, ‘अज़हर’,‘बिंसी’,‘यश’,‘नज़र’],
‘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” कहा जाता है, URL 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
#निर्दिष्ट कॉलमों के साथ CSV फ़ाइल पढ़ें
#केवल दो आवश्यक कॉलम निकालने के लिए usecols पैरामीटर का उपयोग करें
data=pd.read_csv(“Min_Max_Seasonal_IMD_2017.csv”,usecols=[‘ANNUAL - MIN’,‘ANNUAL - MAX’])
df=pd.DataFrame(data)
#‘ANNUAL - MIN’ के लिए हिस्टोग्राम प्लॉट करें
df.plot(kind=‘hist’,y=‘ANNUAL - MIN’,title=‘Annual Minimum Temperature (1901-2017)’)
plt.xlabel(‘Temperature’)
plt.ylabel(‘Number of times’)
#‘ANNUAL - MIN’ और ‘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’ स्तंभ के लिए एक बारंबरता बहुभुज (frequency polygon) उस हिस्टोग्राम के ऊपर बनाइए जो इसे दर्शाता है।

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)
# ‘ANNUAL - MIN’ स्तंभ को numpy 1D array में बदलना
minarray=np.array([df[‘ANNUAL - MIN’]])
# y (बारंबरता) और edges (बिन) निकालना
y,edges = np.histogram(minarray)
# हिस्टोग्राम के प्रत्येक बार के लिए मध्यबिंदु की गणना
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 स्कैटर चार्ट (Scatter Chart) बनाना

स्कैटर चार्ट दो-आयामी डेटा दृश्यावली की एक विधि है जो बिंदुओं का उपयोग करती है—दो भिन्न चरों के लिए प्राप्त मानों को दर्शाने के लिए, एक को $\mathrm{x}$-अक्ष के साथ और दूसरे को y-अक्ष के साथ प्लॉट किया जाता है।

स्कैटर प्लॉट्स का उपयोग तब किया जाता है जब आप दो चरों के बीच संबंध दिखाना चाहते हैं। स्कैटर प्लॉट्स को कभी-कभी सहसंबंध प्लॉट्स भी कहा जाता है क्योंकि वे दिखाते हैं कि दो चर किस प्रकार सहसंबंधित हैं। इसके अतिरिक्त, बिंदु का आकार, आकृति या रंग एक तीसरे (या यहां तक कि चौथे) चर को दर्शा सकते हैं।

प्रोग्राम 4-12 प्रयत्न डिज़ाइनर बैग और बटुए बेचता है। सेल सीज़न के दौरान, उसने 5 सप्ताह की अवधि में 10% से 50% तक की छूट दी। उसने प्रत्येक प्रकार की छूट के लिए अपनी बिक्री को एक सरणी में दर्ज किया। छूट और की गई बिक्री के बीच संबंध दिखाने के लिए एक स्कैटर प्लॉट बनाएं।

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 का आउटपुट

स्कैटर चार्ट को अनुकूलित करना

बुलबुले का आकार भी किसी मान को दर्शाने के लिए प्रयोग किया जा सकता है। उदाहरण के लिए, प्रोग्राम 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(‘Discount offered’)
plt.ylabel(‘Sales in Rs’)
plt.show()

सोचिए और विचार कीजिए

क्या होगा यदि हम प्रोग्राम 4-13 में plt.scatter() के स्थान पर df.plot(kind=‘scatter’) का प्रयोग करें?

चित्र 4.15: संशोधित प्रोग्राम 4-13 पर आधारित स्कैटर प्लॉट

4.4.5 चतुर्थांश और बॉक्स प्लॉट बनाना

मान लीजिए 200 अंकों की एक प्रवेश परीक्षा राष्ट्रीय स्तर पर आयोजित की जाती है, और माही ने 120 अंक प्राप्त कर परीक्षा में शीर्ष स्थान प्राप्त किया। परिणाम में माही के नाम के सामने 100 प्रतिशताइल दर्शाया गया है, जिसका अर्थ है कि माही को छोड़कर सभी अभ्यर्थियों ने माही से कम अंक प्राप्त किए हैं। इस प्रकार के डेटा को दृश्यमान बनाने के लिए हम चतुर्थांश का प्रयोग करते हैं।

चतुर्थक (Quartiles) वे माप हैं जो डेटा को चार बराबर भागों में विभाजित करते हैं, और प्रत्येक भाग में समान संख्या में प्रेक्षण होते हैं। चतुर्थक की गणना के लिए माध्यिका (median) की गणना आवश्यक होती है। चतुर्थक का उपयोग अक्सर शैक्षिक उपलब्धि डेटा, बिक्री और सर्वेक्षण डेटा में जनसंख्या को समूहों में विभाजित करने के लिए किया जाता है। उदाहरण के लिए, आप किसी परीक्षा में शीर्ष 25 प्रतिशत छात्रों को खोजने के लिए चतुर्थक का उपयोग कर सकते हैं।

बॉक्स प्लॉट (Box Plot) किसी दिए गए डेटा सेट के सांख्यिकीय सारांश का दृश्य प्रतिनिधित्व है। इस सारांश में न्यूनतम मान, चतुर्थक 1, चतुर्थक 2, माध्यिका, चतुर्थक 3 और अधिकतम मान शामिल होते हैं। व्हिस्कर (whiskers) बॉक्स के बाहर दो रेखाएँ होती हैं जो उच्चतम और न्यूनतम मानों तक फैली होती हैं। यह आउटलायर (outliers) की पहचान करने में भी मदद करता है। एक आउटलायर एक ऐसा प्रेक्षण होता है जो संख्यात्मक रूप से शेष डेटा से दूर होता है, जैसा कि चित्र 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 में, हमारे पास ग्रहों के द्रव्यमान और त्रिज्या की जानकारी वाला एक DataFrame है। ‘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],
$\quad$ ‘radius’: [2439.7, 6051.8, 6378.1]},
$\quad$ index=[‘Mercury’, ‘Venus’, ‘Earth’])
df.plot(kind=‘pie’,y=‘mass’)
plt.show()

चित्र 4.20: प्रोग्राम 4-16 के आउटपुट के रूप में पाई चार्ट।

यह ध्यान देना महत्वपूर्ण है कि डिफ़ॉल्ट लेबल नाम DataFrame के इंडेक्स मान होते हैं। चित्र 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=[‘Arunachal Pradesh’,‘Assam’,‘Manipur’,‘Meghalaya’,‘Mizoram’,‘Nagaland’,‘Tripura’])
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-it प्रत्येक स्लॉट को फोड़ने या विस्तारित करने के लिए त्रिज्या के अंश को निर्दिष्ट करता है।
  • Autopct-उस भाग का प्रतिशत लेबल के रूप में प्रदर्शित करने के लिए।

प्रोग्राम 4-18

import pandas as pd
import matplotlib.pyplot as plt
df=pd.DataFrame({‘GeoArea’:[83743,78438,22327,22429,21081,16579,1
0486],‘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 के आउटपुट के रूप में पाई चार्ट

सारांश

  • एक प्लॉट डेटा सेट का ग्राफ़िकल प्रतिनिधित्व है जिसे ग्राफ़ या चार्ट के नाम से भी interchangeably जाना जाता है। यह दो या अधिक चरों के बीच संबंध दिखाने के लिए प्रयोग किया जाता है।
  • 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 हो सकता है, प्रदर्शित किए जाने वाले प्लॉट के प्रकार के अनुसार।

Exercise

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 के स्थान पर “सोमवार, मंगलवार, बुधवार, गुरुवार, शुक्रवार, शनिवार, रविवार” प्रदर्शित करें
  • लाइन का रंग ‘मैजेंटा’ में बदलें।

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 पर डेटा को समूहित करें और प्रत्येक क्षेत्र की औसत साक्षरता दर दर्शाने वाला एक बार चार्ट प्रदर्शित करें।