एक दक्ष डेटा वैज्ञानिक बनने के लिए, आपको कई अलग-अलग प्रकार के डेटा से निपटना आना चाहिए। pandas का उपयोग करके JSON और HTML जैसे विभिन्न डेटा फ़ॉर्मैट्स पढ़ना सीखें।
किसी भी डेटा-संबंधित समस्या में डेटा आयात करना सबसे ज़रूरी और शुरुआती चरणों में से एक है। डेटा को सही तरीके से आयात करने की क्षमता हर उभरते डेटा वैज्ञानिक के लिए अनिवार्य कौशल है।
डेटा कई अलग-अलग रूपों में होता है, और आपको न केवल विभिन्न डेटा फ़ॉर्मैट आयात करना आना चाहिए बल्कि उपयोगी जानकारियाँ हासिल करने के लिए डेटा का विश्लेषण और हेरफेर करना भी आना चाहिए।
pandas एक ओपन सोर्स Python लाइब्रेरी है जो उपयोग में आसान, उच्च-प्रदर्शन वाली है, और विभिन्न डेटा फ़ॉर्मैट्स के लिए डेटा विश्लेषण का उपकरण प्रदान करती है।
यह आपको CSV, JSON, Excel, Pickle आदि जैसे विभिन्न डेटा फ़ॉर्मैट्स को पढ़ने की क्षमता देता है। यह आपके डेटा को पंक्ति और स्तंभों के सारणीबद्ध रूप में दर्शाने की सुविधा देता है, जिससे डेटा पढ़ने और प्रस्तुत करने योग्य हो जाता है।
pandas डेटा को DataFrame रूप में दर्शाता है और आपको डेटा विश्लेषण तथा डेटा हेरफेर के लिए व्यापक उपयोगिता प्रदान करता है। एक बार जब आप pandas की विभिन्न कार्यक्षमताओं का उपयोग करके डेटा समझना शुरू करते हैं, तब आप इस डेटा का विश्लेषण, पूर्वानुमान, वर्गीकरण और बहुत कुछ करने में उपयोग कर सकते हैं!
pandas में इनपुट और आउटपुट API है जिसमें टॉप-लेवल reader और writer फ़ंक्शंस का सेट होता है। रीडर फ़ंक्शन pandas.read_json() से एक्सेस किया जाता है जो एक pandas ऑब्जेक्ट लौटाता है, और राइटर फ़ंक्शन pandas.to_json() से एक्सेस होता है जो एक ऑब्जेक्ट मेथड है।
DataFrame में एक Reader और एक Writer फ़ंक्शन होता है। Reader फ़ंक्शन आपको अलग-अलग डेटा फ़ॉर्मैट्स को पढ़ने देता है, जबकि Writer फ़ंक्शन आपको डेटा को किसी विशिष्ट फ़ॉर्मैट में सहेजने में सक्षम बनाता है।
नीचे वे डेटा फ़ॉर्मैट दिए गए हैं जिन्हें DataFrame समर्थन करता है, यानी यदि आपका डेटा इनमें से किसी भी रूप में है, तो आप pandas का उपयोग करके उस डेटा फ़ॉर्मैट को लोड कर सकते हैं और किसी विशेष फ़ॉर्मैट में लिख भी सकते हैं।
आज के ट्यूटोरियल में, आप ऊपर दिए गए कुछ फ़ॉर्मैट प्रकारों जैसे JSON, HTML, और Pickle पर काम करेंगे।
JSON, जिसे JavaScript Object Notation भी कहा जाता है, एक डेटा-इंटरचेंज टेक्स्ट-सीरियलाइज़ेशन फ़ॉर्मैट है। JSON पढ़ना और लिखना आसान है। यह JavaScript प्रोग्रामिंग भाषा के सब-सेट पर आधारित है, लेकिन Python और Python के बाहर कई अन्य भाषाओं की परंपराएँ उपयोग करता है।
JSON का उपयोग अधिकतर असंरचित डेटा संग्रहीत करने के लिए किया जाता है, और SQL डेटाबेस के लिए इसे सहेजना कठिन होता है। JSON डेटा को मशीनों के लिए पठनीय बनाता है।
JSON मुख्यतः दो संरचनाओं पर आधारित है:
कुंजी/मान (key/value) युग्मों का संग्रह। Python में, कुंजी/मान युग्म को Dictionary कहा जाता है, और key एक विशिष्ट विशेषता होती है, जबकि मान (values) अनन्य नहीं होते।
मानों की क्रमबद्ध सूची। क्रमबद्ध सूची कभी-कभी सूचियों की सूची भी हो सकती है। Python में सूचियाँ मानों का एक सेट होती हैं जो स्ट्रिंग, इंटीजर आदि हो सकते हैं।
तो अब देखते हैं कि आप JSON डेटा को कई तरीकों से कैसे लोड कर सकते हैं।
पहला JSON डेटासेट इस लिंक से है। डेटा key-value डिक्शनरी फ़ॉर्मैट में है। कुल तीन कुंजियाँ हैं: क्रमशः integer, datetime, और category।
सबसे पहले आप pandas लाइब्रेरी आयात करेंगे और फिर URL को pd.read_json() में पास करेंगे जो एक डेटाफ़्रेम लौटाएगा। डेटाफ़्रेम के कॉलम कुंजियों का प्रतिनिधित्व करते हैं, और पंक्तियाँ JSON के मान होते हैं।
import pandas as pd
json = pd.read_json('https://raw.githubusercontent.com/chrisalbon/simulated_datasets/master/data.json')संचालित द्वारा
आइए .tail() फ़ंक्शन का उपयोग करके आपने जो JSON पढ़ा है, उसकी अंतिम कुछ पंक्तियाँ जल्दी से प्रिंट करें।
ऊपर के आउटपुट से आप देख सकते हैं कि कुल तीन कॉलम हैं: integer, datetime, और category। साथ ही, डेटासेट में 100 सैंपल हैं जैसा कि .shape मेथड से सत्यापित होता है, जिसने 100 x 3 आउटपुट लौटाया।
JSON लिखना
JSON डेटा लिखना उतना ही सरल है जितना पढ़ना और यह एक पंक्ति का कोड है। read_json() की बजाय आप to_json() का उपयोग फ़ाइल नाम के साथ करेंगे और बस!
अब आप JSON डेटासेट के एक और प्रकार का उपयोग करेंगे, जो इतना सरल नहीं है। यह एक nested JSON संरचना है। Nested JSON संरचना का मतलब है कि प्रत्येक key के साथ और भी keys जुड़ी हो सकती हैं।
ऊपर दिए गए डेटासेट में आप देख सकते हैं कि article और blog दो प्राथमिक कुंजियाँ हैं जिनके अंतर्गत इन कुंजियों के values हैं। इन मानों के अपने key-value युग्म संयोजन हैं।
ध्यान दें कि ऊपर का डेटासेट double-quotes में घिरा हुआ है और एक स्ट्रिंग के रूप में है।
Nested JSON को कई तरीकों से पढ़ा जा सकता है।
पहले, आप json.loads फ़ंक्शन का उपयोग करेंगे ताकि डेटा वेरिएबल को पैरामीटर के रूप में पास करके JSON स्ट्रिंग पढ़ी जा सके। फिर, आप json_normalize फ़ंक्शन का उपयोग करेंगे ताकि nested JSON डेटा को एक टेबल में समतल (flatten) किया जा सके।
आप pandas.io.json लाइब्रेरी से json_normalize फ़ंक्शन आयात करेंगे।
import json
from pandas.io.json import json_normalize
nested = json.loads(nested_json)संचालित द्वारा
{'article':[{'id':'01','language':'JSON','edition':'first','author':'Allen'},{'id':'02','language':'Python','edition':'second','author':'Aditya Sharma'}],'blog':[{'name':'Datacamp','URL':'datacamp.com'}]}संचालित द्वारा
अगला, आप normalize फ़ंक्शन का उपयोग करके JSON को flatten करेंगे। फिलहाल आप पूरे डेटा को पास करेंगे और देखेंगे यह कैसा दिखता है।
ऊपर के आउटपुट से आप देख सकते हैं कि प्राथमिक कुंजियाँ अब दो अलग-अलग डेटाफ़्रेम में विभाजित हो गई हैं जहाँ कॉलम नाम अब वे कुंजियाँ बन गए हैं जो प्राथमिक कुंजियों के अंदर key-value युग्म के रूप में nested थीं। कमाल है, है न?
अंत में, JSON डेटा लोडिंग को समेटते हुए, जल्दी से देखते हैं कि आप JSON को एक फ़ाइल के रूप में और न कि स्ट्रिंग के रूप में कैसे पढ़ सकते हैं।
फ़ाइल के रूप में JSON पढ़ना
nested_json ={"article":[{"id":"01","language":"JSON","edition":"first","author":"Allen"},{"id":"02","language":"Python","edition":"second","author":"Aditya Sharma"}],"blog":[{"name":"Datacamp","URL":"datacamp.com"}]}संचालित द्वारा
यदि आप ऊपर की सेल में ध्यान दें, तो डेटा की शुरुआत और अंत में डबल-कोट्स नहीं हैं, जिसका अर्थ है कि आप इस डेटा को एक फ़ाइल की तरह मानेंगे और इसे पढ़ेंगे।
आप इसे केवल एक पंक्ति के कोड से हासिल कर सकते हैं। आइए देखें कैसे!
json_file = pd.DataFrame.from_dict(json_normalize(nested_json))संचालित द्वारा
ऊपर के आउटपुट से आप देख सकते हैं कि आउटपुट वैसा ही है जैसा आपने JSON को स्ट्रिंग के रूप में पढ़ा था। यहाँ केवल इतना अंतर है कि आप JSON को पार्स और flatten करने के लिए pandas का उपयोग करते हैं। चूँकि JSON एक डिक्शनरी है, आप .from_dict() फ़ंक्शन का उपयोग करते हैं।
HTML डेटा लोड करना
HTML एक हाइपरटेक्स्ट मार्कअप लैंग्वेज है जिसका मुख्य रूप से वेब अनुप्रयोगों और पेजों को बनाने में उपयोग किया जाता है। यह वेब पेज की संरचना का अर्थपूर्ण ढंग से वर्णन करने की कोशिश करता है। वेब ब्राउज़र वेब सर्वर से HTML दस्तावेज़ प्राप्त करता है और उसे मल्टीमीडिया वेब पेज के रूप में रेंडर करता है।
वेब अनुप्रयोगों के लिए, सर्वर साइड पर HTML का उपयोग cascading style sheets (CSS) के साथ किया जाता है और यह Flask, Django आदि जैसे विभिन्न वेब सर्वर फ़्रेमवर्क्स के साथ मिलकर काम करता है।
HTML tags का उपयोग कोड के प्रत्येक ब्लॉक को परिभाषित करने के लिए करता है, जैसे पैराग्राफ की शुरुआत और अंत के लिए <p></p> टैग, वेब पेज में छवि के रूप में सामग्री जोड़ने के लिए <image></image> टैग, और इसी तरह कई टैग मिलकर एक HTML वेब पेज बनाते हैं।
एक HTML फ़ाइल पढ़ने के लिए, pandas डेटाफ़्रेम एक tag ढूँढता है। उस टैग को <td></td> टैग कहा जाता है। यह टैग HTML में तालिका (table) परिभाषित करने के लिए उपयोग होता है।
pandas HTML दस्तावेज़ पढ़ने के लिए read_html() का उपयोग करता है।
तो, जब भी आप pandas को HTML पास करें और एक अच्छा-सा डेटाफ़्रेम आउटपुट की उम्मीद करें, सुनिश्चित करें कि HTML पेज में एक तालिका मौजूद हो!
डेटा के बारे में: आप एक Cryptocurrency वेबसाइट को HTML डेटासेट के रूप में उपयोग करेंगे जिसमें विभिन्न क्रिप्टो कॉइंस हैं और प्रत्येक कॉइन के बारे में कई विवरण हैं, जैसे:
कॉइन का अंतिम मूल्य (Last price)
कॉइन का मूल्य बढ़ा है या घटा है (प्रतिशत में %)
24 घंटे का वॉल्यूम (कितने कॉइन ट्रेड हुए 24 volume)
कुल कॉइंस की संख्या (# Coins)
तो, चलिए शुरू करते हैं!
आप पहले requests लाइब्रेरी आयात करेंगे जो आपको उस URL पर अनुरोध भेजने में मदद करेगी जहाँ से आप HTML सामग्री प्राप्त करना चाहते हैं।
अब तक, आपने URL परिभाषित किया और फिर requests.get() का उपयोग करके उस URL पर अनुरोध भेजा और acknowledgement [200] OK के रूप में प्रतिक्रिया प्राप्त की, जिसका अर्थ है कि आप उस web server से कनेक्ट करने में सक्षम थे।
अब, HTML वेब पेज की सामग्री पढ़ने के लिए, आपको बस crypto_url.text कॉल करना है जो आपको उस cryptocurrency वेब पेज का HTML कोड देगा।
आउटपुट देखने के लिए crypto_url.text कमांड चलाने में संकोच न करें।
अंततः, आप crypto_url.text को pd.read_html() फ़ंक्शन में पास करेंगे जो आपको डेटाफ़्रेम्स की सूची लौटाएगा, जहाँ उस सूची का प्रत्येक तत्व उस cryptocurrency वेबपेज में मौजूद एक तालिका (डेटाफ़्रेम) होगा।
crypto_data = pd.read_html(crypto_url.text)संचालित द्वारा
आइए डेटाफ़्रेम की length और type प्रिंट करें। type एक list होना चाहिए।
क्रिप्टो कॉइंस (Ticker) बनाम मूल्य में प्रतिशत वृद्धि/कमी (%) का विज़ुअलाइज़ेशन
ग्राफ़ प्लॉट करने के लिए पहले matplotlib आयात करें।
import matplotlib.pyplot as plt
%matplotlib inline
संचालित द्वारा
% कॉलम का प्रकार string है, और आपको string प्रकार को float में परिवर्तित करना होगा। पहले आप कॉलम से % का चिन्ह हटाएँगे और फिर % कॉलम के प्रकार को float में बदलेंगे।
crypto_final['%']= crypto_final['%'].apply(lambda x: x.strip('%'))संचालित द्वारा
crypto_final['%']= crypto_final['%'].astype('float')संचालित द्वारा
अब डेटा प्लॉट करते हैं।
plt.figure()
plt.figure(figsize=(16,10))
x = crypto_final.iloc[:20]['Ticker']
y = crypto_final.iloc[:20]['%']
plt.xticks(fontsize=12)
plt.yticks(fontsize=14)
plt.xlabel('Percentage Increase/Decrease in Price',fontsize=20)
plt.ylabel('Ticker',fontsize=20)
plt.plot(x,y,label='% Increase/Decrease in Price')
plt.legend(loc='lower left',prop={'size':15})संचालित द्वारा
<matplotlib.legend.Legend at 0x1298a9630><Figure size 432x288 with0 Axes>संचालित द्वारा
ऊपर दिए गए ग्राफ़ से आप देख सकते हैं कि Litecoin (LTC) और Huobitoken (HT) में मूल्य में अधिकतम वृद्धि हुई है और दूसरी ओर, Maticnetwork (MATIC) और Waves में क्रिप्टो कॉइंस के मूल्य में अधिकतम कमी आई है।
Pickle डेटा लोड करना
Pickle एक Python-विशिष्ट बाइनरी सीरियलाइज़ेशन फ़ॉर्मैट है जो JSON के विपरीत मानव-पठनीय नहीं है। इसका उपयोग Python की ऑब्जेक्ट संरचना को सीरियलाइज़ और डी-सीरियलाइज़ करने के लिए किया जाता है। यह ऑब्जेक्ट को सीरियलाइज़ करता है और उसे डिस्क पर सहेजने के लिए Pickle करता है। यह DataFrame, list, dictionary आदि जैसे ऑब्जेक्ट को एक कैरेक्टर स्ट्रीम में बदल देता है।
Pickle की सबसे अच्छी बात यह है कि यह Python के विभिन्न प्रकार के डेटा प्रकारों को संग्रहीत कर सकता है।
Pickle का व्यापक उपयोग प्रशिक्षित मशीन लर्निंग एल्गोरिदम इंस्टैंसेज़ को संग्रहीत करने के लिए होता है। JSON की तरह, Pickle में भी pickle.load() जैसे सुविधाजनक फ़ंक्शंस होते हैं जो Pickle फ़ॉर्मैट फ़ाइल लोड करने के लिए हैं, और pickle.dump() जो Pickle या किसी अन्य फ़ॉर्मैट को Pickle फ़ॉर्मैट में सहेजने के लिए है।
Pickle का एक और महत्वपूर्ण लाभ यह है कि डेटाफ़्रेम को Pickle फ़ाइल के रूप में सहेजना डिस्क पर कम स्थान लेता है और रीलोड करने पर डेटा के type को यथावत रखता है।
तो, आइए जल्दी से आपने पहले जो cryptocurrency डेटाफ़्रेम बनाया था उसे pickle करें, और फिर आप उस pickled ऑब्जेक्ट को pandas का उपयोग करके पढ़ेंगे।
आप pickle.dump का उपयोग डेटाफ़्रेम को Pickle ऑब्जेक्ट के रूप में सहेजने के लिए करेंगे और protocol को HIGHEST_PROTOCOL रखेंगे, जो Python 2 के साथ भी बैकवर्ड संगत है।
withopen('crypto_final.pickle','wb')as sub_data:
pickle.dump(crypto_final, sub_data, protocol=pickle.HIGHEST_PROTOCOL)संचालित द्वारा
अंत में, आप pandas के read_pickle फ़ंक्शन का उपयोग करके pickle ऑब्जेक्ट को एक डेटाफ़्रेम में बदलेंगे।
crypto_final = pd.read_pickle('crypto_final.pickle')संचालित द्वारा
वाह! क्या यह अद्भुत नहीं है? यह कितना सरल था। और, Pickle के साथ, आपको डेटा टाइप कन्वर्ज़न एरर्स की चिंता नहीं करनी पड़ती क्योंकि pickle सीरियलाइज़ेशन इसे आपके लिए संभाल सकता है!
और आगे बढ़ें
ट्यूटोरियल पूरा करने पर बधाई।
यह ट्यूटोरियल एक अच्छा शुरुआती बिंदु था कि आप pandas की मदद से Python में अलग-अलग डेटा फ़ॉर्मैट्स कैसे लोड कर सकते हैं।
अब भी कई डेटा फ़ॉर्मैट्स हैं जैसे Excel, SQL, HDF5 आदि, जो pandas डेटा आयात के दायरे में आते हैं। आपको इन डेटा फ़ॉर्मैट्स में कुछ रोचक सार्वजनिक डेटासेट ढूँढकर उनके साथ प्रयोग करके हाथ गंदे करने चाहिए।
परिचय
किसी भी डेटा-संबंधित समस्या में डेटा आयात करना सबसे ज़रूरी और शुरुआती चरणों में से एक है। डेटा को सही तरीके से आयात करने की क्षमता हर उभरते डेटा वैज्ञानिक के लिए अनिवार्य कौशल है।
डेटा कई अलग-अलग रूपों में होता है, और आपको न केवल विभिन्न डेटा फ़ॉर्मैट आयात करना आना चाहिए बल्कि उपयोगी जानकारियाँ हासिल करने के लिए डेटा का विश्लेषण और हेरफेर करना भी आना चाहिए।
pandasएक ओपन सोर्स Python लाइब्रेरी है जो उपयोग में आसान, उच्च-प्रदर्शन वाली है, और विभिन्न डेटा फ़ॉर्मैट्स के लिए डेटा विश्लेषण का उपकरण प्रदान करती है।यह आपको CSV, JSON, Excel, Pickle आदि जैसे विभिन्न डेटा फ़ॉर्मैट्स को पढ़ने की क्षमता देता है। यह आपके डेटा को पंक्ति और स्तंभों के सारणीबद्ध रूप में दर्शाने की सुविधा देता है, जिससे डेटा पढ़ने और प्रस्तुत करने योग्य हो जाता है।
pandasडेटा को DataFrame रूप में दर्शाता है और आपको डेटा विश्लेषण तथा डेटा हेरफेर के लिए व्यापक उपयोगिता प्रदान करता है। एक बार जब आप pandas की विभिन्न कार्यक्षमताओं का उपयोग करके डेटा समझना शुरू करते हैं, तब आप इस डेटा का विश्लेषण, पूर्वानुमान, वर्गीकरण और बहुत कुछ करने में उपयोग कर सकते हैं!pandasमें इनपुट और आउटपुट API है जिसमें टॉप-लेवलreaderऔरwriterफ़ंक्शंस का सेट होता है। रीडर फ़ंक्शनpandas.read_json()से एक्सेस किया जाता है जो एक pandas ऑब्जेक्ट लौटाता है, और राइटर फ़ंक्शनpandas.to_json()से एक्सेस होता है जो एक ऑब्जेक्ट मेथड है।DataFrame में एक
Readerऔर एकWriterफ़ंक्शन होता है।Readerफ़ंक्शन आपको अलग-अलग डेटा फ़ॉर्मैट्स को पढ़ने देता है, जबकिWriterफ़ंक्शन आपको डेटा को किसी विशिष्ट फ़ॉर्मैट में सहेजने में सक्षम बनाता है।नीचे वे डेटा फ़ॉर्मैट दिए गए हैं जिन्हें DataFrame समर्थन करता है, यानी यदि आपका डेटा इनमें से किसी भी रूप में है, तो आप pandas का उपयोग करके उस डेटा फ़ॉर्मैट को लोड कर सकते हैं और किसी विशेष फ़ॉर्मैट में लिख भी सकते हैं।
आज के ट्यूटोरियल में, आप ऊपर दिए गए कुछ फ़ॉर्मैट प्रकारों जैसे
JSON,HTML, औरPickleपर काम करेंगे।नोट: pandas का उपयोग करके
CSVफ़ाइलें कैसे पढ़ें, यह सीखने के लिए यह ट्यूटोरियल देखें।JSON डेटा लोड करना
JSON, जिसे JavaScript Object Notation भी कहा जाता है, एक डेटा-इंटरचेंज टेक्स्ट-सीरियलाइज़ेशन फ़ॉर्मैट है। JSON पढ़ना और लिखना आसान है। यह JavaScript प्रोग्रामिंग भाषा के सब-सेट पर आधारित है, लेकिन Python और Python के बाहर कई अन्य भाषाओं की परंपराएँ उपयोग करता है।
JSON का उपयोग अधिकतर असंरचित डेटा संग्रहीत करने के लिए किया जाता है, और SQL डेटाबेस के लिए इसे सहेजना कठिन होता है। JSON डेटा को मशीनों के लिए पठनीय बनाता है।
JSON मुख्यतः दो संरचनाओं पर आधारित है:
कुंजी/मान (key/value) युग्मों का संग्रह। Python में, कुंजी/मान युग्म को
Dictionaryकहा जाता है, औरkeyएक विशिष्ट विशेषता होती है, जबकि मान (values) अनन्य नहीं होते।मानों की क्रमबद्ध सूची। क्रमबद्ध सूची कभी-कभी सूचियों की सूची भी हो सकती है। Python में सूचियाँ मानों का एक सेट होती हैं जो स्ट्रिंग, इंटीजर आदि हो सकते हैं।
तो अब देखते हैं कि आप
JSONडेटा को कई तरीकों से कैसे लोड कर सकते हैं।पहला
JSONडेटासेट इस लिंक से है। डेटा key-value डिक्शनरी फ़ॉर्मैट में है। कुल तीन कुंजियाँ हैं: क्रमशः integer, datetime, और category।pandasलाइब्रेरी आयात करेंगे और फिरURLकोpd.read_json()में पास करेंगे जो एक डेटाफ़्रेम लौटाएगा। डेटाफ़्रेम के कॉलम कुंजियों का प्रतिनिधित्व करते हैं, और पंक्तियाँ JSON के मान होते हैं।आइए
.tail()फ़ंक्शन का उपयोग करके आपने जो JSON पढ़ा है, उसकी अंतिम कुछ पंक्तियाँ जल्दी से प्रिंट करें।ऊपर के आउटपुट से आप देख सकते हैं कि कुल तीन कॉलम हैं:
integer,datetime, औरcategory। साथ ही, डेटासेट में 100 सैंपल हैं जैसा कि.shapeमेथड से सत्यापित होता है, जिसने 100 x 3 आउटपुट लौटाया।JSONडेटा लिखना उतना ही सरल है जितना पढ़ना और यह एक पंक्ति का कोड है।read_json()की बजाय आपto_json()का उपयोग फ़ाइल नाम के साथ करेंगे और बस!अब आप
JSONडेटासेट के एक और प्रकार का उपयोग करेंगे, जो इतना सरल नहीं है। यह एकnested JSONसंरचना है। Nested JSON संरचना का मतलब है कि प्रत्येकkeyके साथ और भीkeysजुड़ी हो सकती हैं।इसे बेहतर समझने के लिए उदाहरण डेटासेट देखते हैं।
ऊपर दिए गए डेटासेट में आप देख सकते हैं कि
articleऔरblogदो प्राथमिक कुंजियाँ हैं जिनके अंतर्गत इन कुंजियों केvaluesहैं। इन मानों के अपनेkey-valueयुग्म संयोजन हैं।ध्यान दें कि ऊपर का डेटासेट
double-quotesमें घिरा हुआ है और एक स्ट्रिंग के रूप में है।Nested JSON को कई तरीकों से पढ़ा जा सकता है।
पहले, आप
json.loadsफ़ंक्शन का उपयोग करेंगे ताकि डेटा वेरिएबल को पैरामीटर के रूप में पास करके JSON स्ट्रिंग पढ़ी जा सके। फिर, आपjson_normalizeफ़ंक्शन का उपयोग करेंगे ताकि nested JSON डेटा को एक टेबल में समतल (flatten) किया जा सके।आप
pandas.io.jsonलाइब्रेरी सेjson_normalizeफ़ंक्शन आयात करेंगे।अगला, आप normalize फ़ंक्शन का उपयोग करके JSON को flatten करेंगे। फिलहाल आप पूरे डेटा को पास करेंगे और देखेंगे यह कैसा दिखता है।
बहुत बढ़िया! तो जैसा कि आप ऊपर के आउटपुट से देख सकते हैं, प्राथमिक कुंजियाँ डेटाफ़्रेम के कॉलम हैं जबकि कुंजियाँ पंक्ति का प्रतिनिधित्व करती हैं।
हालाँकि, आउटपुट थोड़ा अस्त-व्यस्त दिख रहा है, है न? देखते हैं कि आप इसे और कैसे कई डेटाफ़्रेम में विभाजित कर सकते हैं।
आप दोबारा
json.loadsके आउटपुट कोjson_normalizeमें पास करेंगे, लेकिन इस बार आपrecord_pathनाम का एक अतिरिक्त तत्व निर्दिष्ट करेंगे।ऊपर के आउटपुट से आप देख सकते हैं कि प्राथमिक कुंजियाँ अब दो अलग-अलग डेटाफ़्रेम में विभाजित हो गई हैं जहाँ कॉलम नाम अब वे कुंजियाँ बन गए हैं जो प्राथमिक कुंजियों के अंदर key-value युग्म के रूप में nested थीं। कमाल है, है न?
अंत में, JSON डेटा लोडिंग को समेटते हुए, जल्दी से देखते हैं कि आप JSON को एक फ़ाइल के रूप में और न कि स्ट्रिंग के रूप में कैसे पढ़ सकते हैं।
यदि आप ऊपर की सेल में ध्यान दें, तो डेटा की शुरुआत और अंत में डबल-कोट्स नहीं हैं, जिसका अर्थ है कि आप इस डेटा को एक फ़ाइल की तरह मानेंगे और इसे पढ़ेंगे।
आप इसे केवल एक पंक्ति के कोड से हासिल कर सकते हैं। आइए देखें कैसे!
ऊपर के आउटपुट से आप देख सकते हैं कि आउटपुट वैसा ही है जैसा आपने JSON को स्ट्रिंग के रूप में पढ़ा था। यहाँ केवल इतना अंतर है कि आप JSON को पार्स और flatten करने के लिए
pandasका उपयोग करते हैं। चूँकि JSON एक डिक्शनरी है, आप.from_dict()फ़ंक्शन का उपयोग करते हैं।HTML डेटा लोड करना
HTML एक हाइपरटेक्स्ट मार्कअप लैंग्वेज है जिसका मुख्य रूप से वेब अनुप्रयोगों और पेजों को बनाने में उपयोग किया जाता है। यह वेब पेज की संरचना का अर्थपूर्ण ढंग से वर्णन करने की कोशिश करता है। वेब ब्राउज़र वेब सर्वर से HTML दस्तावेज़ प्राप्त करता है और उसे मल्टीमीडिया वेब पेज के रूप में रेंडर करता है।
वेब अनुप्रयोगों के लिए, सर्वर साइड पर HTML का उपयोग cascading style sheets (CSS) के साथ किया जाता है और यह Flask, Django आदि जैसे विभिन्न वेब सर्वर फ़्रेमवर्क्स के साथ मिलकर काम करता है।
HTML
tagsका उपयोग कोड के प्रत्येक ब्लॉक को परिभाषित करने के लिए करता है, जैसे पैराग्राफ की शुरुआत और अंत के लिए<p></p>टैग, वेब पेज में छवि के रूप में सामग्री जोड़ने के लिए<image></image>टैग, और इसी तरह कई टैग मिलकर एक HTML वेब पेज बनाते हैं।एक HTML फ़ाइल पढ़ने के लिए,
pandasडेटाफ़्रेम एकtagढूँढता है। उस टैग को<td></td>टैग कहा जाता है। यह टैग HTML में तालिका (table) परिभाषित करने के लिए उपयोग होता है।pandasHTML दस्तावेज़ पढ़ने के लिएread_html()का उपयोग करता है।तो, जब भी आप pandas को HTML पास करें और एक अच्छा-सा डेटाफ़्रेम आउटपुट की उम्मीद करें, सुनिश्चित करें कि HTML पेज में एक तालिका मौजूद हो!
Cryptocurrencyवेबसाइट को HTML डेटासेट के रूप में उपयोग करेंगे जिसमें विभिन्न क्रिप्टो कॉइंस हैं और प्रत्येक कॉइन के बारे में कई विवरण हैं, जैसे:Last price)%)24 volume)# Coins)तो, चलिए शुरू करते हैं!
आप पहले
requestsलाइब्रेरी आयात करेंगे जो आपको उसURLपर अनुरोध भेजने में मदद करेगी जहाँ से आप HTML सामग्री प्राप्त करना चाहते हैं।अब तक, आपने
URLपरिभाषित किया और फिरrequests.get()का उपयोग करके उस URL पर अनुरोध भेजा औरacknowledgement [200] OKके रूप में प्रतिक्रिया प्राप्त की, जिसका अर्थ है कि आप उसweb serverसे कनेक्ट करने में सक्षम थे।अब, HTML वेब पेज की सामग्री पढ़ने के लिए, आपको बस
crypto_url.textकॉल करना है जो आपको उसcryptocurrencyवेब पेज का HTML कोड देगा।आउटपुट देखने के लिए
crypto_url.textकमांड चलाने में संकोच न करें।अंततः, आप
crypto_url.textकोpd.read_html()फ़ंक्शन में पास करेंगे जो आपको डेटाफ़्रेम्स की सूची लौटाएगा, जहाँ उस सूची का प्रत्येक तत्व उसcryptocurrencyवेबपेज में मौजूद एक तालिका (डेटाफ़्रेम) होगा।आइए डेटाफ़्रेम की
lengthऔरtypeप्रिंट करें।typeएक list होना चाहिए।ऊपर के आउटपुट से स्पष्ट है कि केवल 1 तालिका है और उसका प्रकार list है।
आइए पहली और दूसरी कॉलम हटा दें क्योंकि उनमें कोई उपयोगी जानकारी नहीं है और सभी पंक्तियाँ रखी जाएँ।
आखिरकार,
cryptocurrencyडेटाफ़्रेम प्रिंट करने का समय आ गया है!ऊपर दी गई तालिका से आप देख सकते हैं कि
BitcoinकाMarket Capसबसे अधिक है।NaN (Not a Number) हटाना
डेटाफ़्रेम में कुछ मान वास्तविक नहीं हैं, तो आइए उन्हें तालिका से जल्दी हटा दें।
हालाँकि, पहले
Price Charts 7dकॉलम को पूरी तरह हटा दें क्योंकि यह पूरी तरहNaNहै और इसमें शून्य जानकारी है।अब
NaN'sहटाते हैं।क्रिप्टो कॉइंस (Ticker) बनाम मूल्य में प्रतिशत वृद्धि/कमी (%) का विज़ुअलाइज़ेशन
ग्राफ़ प्लॉट करने के लिए पहले
matplotlibआयात करें।%कॉलम का प्रकारstringहै, और आपकोstringप्रकार कोfloatमें परिवर्तित करना होगा। पहले आप कॉलम से%का चिन्ह हटाएँगे और फिर%कॉलम के प्रकार को float में बदलेंगे।अब डेटा प्लॉट करते हैं।
ऊपर दिए गए ग्राफ़ से आप देख सकते हैं कि
Litecoin (LTC)औरHuobitoken (HT)में मूल्य में अधिकतम वृद्धि हुई है और दूसरी ओर,Maticnetwork (MATIC)औरWavesमें क्रिप्टो कॉइंस के मूल्य में अधिकतम कमी आई है।Pickle डेटा लोड करना
Pickle एक Python-विशिष्ट बाइनरी सीरियलाइज़ेशन फ़ॉर्मैट है जो JSON के विपरीत मानव-पठनीय नहीं है। इसका उपयोग Python की ऑब्जेक्ट संरचना को सीरियलाइज़ और डी-सीरियलाइज़ करने के लिए किया जाता है। यह ऑब्जेक्ट को सीरियलाइज़ करता है और उसे डिस्क पर सहेजने के लिए Pickle करता है। यह DataFrame, list, dictionary आदि जैसे ऑब्जेक्ट को एक कैरेक्टर स्ट्रीम में बदल देता है।
Pickle की सबसे अच्छी बात यह है कि यह Python के विभिन्न प्रकार के डेटा प्रकारों को संग्रहीत कर सकता है।
Pickle का व्यापक उपयोग प्रशिक्षित मशीन लर्निंग एल्गोरिदम इंस्टैंसेज़ को संग्रहीत करने के लिए होता है। JSON की तरह, Pickle में भी
pickle.load()जैसे सुविधाजनक फ़ंक्शंस होते हैं जो Pickle फ़ॉर्मैट फ़ाइल लोड करने के लिए हैं, औरpickle.dump()जो Pickle या किसी अन्य फ़ॉर्मैट को Pickle फ़ॉर्मैट में सहेजने के लिए है।Pickle का एक और महत्वपूर्ण लाभ यह है कि डेटाफ़्रेम को Pickle फ़ाइल के रूप में सहेजना डिस्क पर कम स्थान लेता है और रीलोड करने पर डेटा के type को यथावत रखता है।
तो, आइए जल्दी से आपने पहले जो cryptocurrency डेटाफ़्रेम बनाया था उसे
pickleकरें, और फिर आप उसpickledऑब्जेक्ट कोpandasका उपयोग करके पढ़ेंगे।आप
pickle.dumpका उपयोग डेटाफ़्रेम को Pickle ऑब्जेक्ट के रूप में सहेजने के लिए करेंगे औरprotocolकोHIGHEST_PROTOCOLरखेंगे, जो Python 2 के साथ भी बैकवर्ड संगत है।अंत में, आप
pandasकेread_pickleफ़ंक्शन का उपयोग करकेpickleऑब्जेक्ट को एक डेटाफ़्रेम में बदलेंगे।वाह! क्या यह अद्भुत नहीं है? यह कितना सरल था। और, Pickle के साथ, आपको डेटा टाइप कन्वर्ज़न एरर्स की चिंता नहीं करनी पड़ती क्योंकि
pickleसीरियलाइज़ेशन इसे आपके लिए संभाल सकता है!और आगे बढ़ें
ट्यूटोरियल पूरा करने पर बधाई।
यह ट्यूटोरियल एक अच्छा शुरुआती बिंदु था कि आप pandas की मदद से Python में अलग-अलग डेटा फ़ॉर्मैट्स कैसे लोड कर सकते हैं।
अब भी कई डेटा फ़ॉर्मैट्स हैं जैसे Excel, SQL, HDF5 आदि, जो pandas डेटा आयात के दायरे में आते हैं। आपको इन डेटा फ़ॉर्मैट्स में कुछ रोचक सार्वजनिक डेटासेट ढूँढकर उनके साथ प्रयोग करके हाथ गंदे करने चाहिए।
यदि आप pandas में DataFrames के बारे में और सीखना चाहते हैं, तो DataCamp का data manipulation with pandas इंटरैक्टिव कोर्स लें। DataCamp में कई अन्य उपयोगी pandas ट्यूटोरियल भी हैं जो dataframes को जोड़ना, moving averages लागू करना और apply मेथड का उपयोग कवर करते हैं। या, यदि आप pandas में बिल्कुल नए हैं, तो इस शुरुआती गाइड वाले pandas ट्यूटोरियल से शुरू करें।
संदर्भ:
कृपया नीचे टिप्पणियों में इस ट्यूटोरियल से संबंधित कोई भी प्रश्न बेझिझक पूछें।