जहाँ कई संगठन डेटा को डेटाबेस और AWS, Azure, और GCP जैसी स्टोरेज सेवाओं में रखते हैं, वहीं छोटे डेटासेट संग्रहीत करने के लिए Microsoft Excel स्प्रेडशीट्स अब भी व्यापक रूप से उपयोग की जाती हैं।
डेटा साइंस की दृष्टि से Excel की क्षमताएँ R से सीमित हैं, इसलिए स्प्रेडशीट्स से डेटा को R में इम्पोर्ट करने में सक्षम होना उपयोगी है।
इस ट्यूटोरियल में हम readxl पैकेज का उपयोग करके Excel वर्कशीट्स (साथ ही विशिष्ट पंक्तियाँ और कॉलम) को R में पढ़ना कवर करेंगे।
इसे समझने के लिए आपको R का बुनियादी कार्य-ज्ञान होना चाहिए।
जिस डेटासेट को हम R में पढ़ेंगे, वह छोटा है और केवल दो शीट्स हैं ताकि यह दिखाया जा सके कि किस शीट को पढ़ना है। यह यहाँ उपलब्ध है।
पहली शीट एक बैंक मार्केटिंग डेटासेट है जिसमें 45,211 पंक्तियाँ और 17 कॉलम हैं। नीचे दिया गया स्क्रीनशॉट “sample.xlsx” नामक Excel फ़ाइल और “bank-full” शीट से है।
दूसरी शीट Iris डेटासेट है जिसमें 150 पंक्तियाँ और 6 कॉलम हैं और इसमें Iris फूलों के प्रकारों से संबंधित जानकारी है, जैसे उनके sepal और petal की लंबाई और चौड़ाई। नीचे दिया गया स्क्रीनशॉट उसी Excel फ़ाइल “sample.xlsx” और शीट नाम “iris” से है।
पैकेज का अवलोकन
यह ट्यूटोरियल readxl पैकेज का उपयोग करता है। openxlsx पैकेज भी एक अच्छा विकल्प है जिसमें XLSX फ़ाइलों में लिखने की क्षमता भी शामिल है, लेकिन dplyr और tidyr जैसे tidyverse पैकेजों के साथ इसका एकीकरण अपेक्षाकृत कम मजबूत है।
readxl पैकेज के साथ Excel फ़ाइलें पढ़ने के लिए, हमें पहले पैकेज इंस्टॉल करना होगा और फिर उसे “library” फ़ंक्शन का उपयोग करके इम्पोर्ट करना होगा।
आप read_xlsx() की तरह ही read_excel() का भी उपयोग कर सकते हैं, और आगामी अनुभागों में आप जो भी आर्ग्युमेंट्स देखेंगे वे इस फ़ंक्शन के साथ भी समान रूप से काम करते हैं। read_excel() यह अनुमान लगाने की कोशिश करेगा कि आपके पास XLSX स्प्रेडशीट है या पुराना XLS स्प्रेडशीट प्रकार।
bank_df <- read_excel(path ="sample.xlsx")संचालित द्वारा
अन्य वर्कबुक पढ़ना
अब read_xlsx() फ़ंक्शन और sheet आर्ग्युमेंट के साथ दूसरे वर्कबुक, अर्थात् “iris” का सारा डेटा पढ़ते हैं।
iris <- read_xlsx("sample.xlsx", sheet ="iris")संचालित द्वारा
आप sheet आर्ग्युमेंट में शीट के नाम के बजाय उसका क्रमांक भी दे सकते हैं।
iris2 <- read_xlsx("sample.xlsx", sheet =1)संचालित द्वारा
विशिष्ट पंक्तियाँ पढ़ना
skip और n_max आर्ग्युमेंट सेट करके किसी वर्कबुक से विशिष्ट पंक्तियाँ पढ़ते हैं। शुरुआती कुछ पंक्तियाँ छोड़ने के लिए, skip आर्ग्युमेंट में उन पंक्तियों की संख्या दें जिन्हें आप छोड़ना चाहते हैं।
bank_df_s2 <- read_excel("sample.xlsx", sheet ="bank-full", skip =2)संचालित द्वारा
कृपया ध्यान दें कि उपरोक्त कोड हेडर भी स्किप कर देता है। आप अगले अनुभागों में read_xlsx() फ़ंक्शन में हेडर को स्पष्ट रूप से निर्दिष्ट करना सीखेंगे।
इसी प्रकार, पहली n पंक्तियाँ पढ़ने के लिए read_xlsx() फ़ंक्शन में n_max आर्ग्युमेंट निर्दिष्ट करें। नीचे दिया गया कोड “bank-full” शीट की पहली 1000 पंक्तियाँ पढ़ता है।
bank_df_n1k <- read_excel("sample.xlsx", sheet ="bank-full", n_max =1000)संचालित द्वारा
आप दोनों आर्ग्युमेंट्स को मिलाकर कुछ पंक्तियाँ छोड़कर शेष डेटासेट से एक निश्चित संख्या में पंक्तियाँ भी पढ़ सकते हैं।
विशिष्ट सेल्स पढ़ना
जहाँ “skip” और “n_max” आर्ग्युमेंट्स आपको डेटा की कुछ पंक्तियाँ पढ़ने की सुविधा देते हैं, वहीं आप range आर्ग्युमेंट सेट करके वर्कबुक से विशिष्ट सेल्स पढ़ सकते हैं।
डेटासेट का सबसेट निर्दिष्ट करने के दो नोटेशन हैं:
A1 (E4:G8) नोटेशन - A कॉलम को दर्शाता है, और 1 पंक्ति संख्या को।
R1C1 (R4C5:R8C7) नोटेशन - पंक्ति संख्या और कॉलम संख्या स्पष्ट रूप से परिभाषित होती हैं
विचार यह है कि आप उस आयत के निर्देशांक निर्दिष्ट करें जिसे आप डेटासेट से काटना चाहते हैं।
नोटेशन 1:
bank_df_range1 <- read_excel("sample.xlsx", sheet ="bank-full", range ="A3:E10")संचालित द्वारा
नोटेशन 2:
bank_df_range2 <- read_excel("sample.xlsx", sheet ="bank-full",
range ="R3C1:R10C5")संचालित द्वारा
Range आपको आर्ग्युमेंट में शीट का नाम शामिल करने की भी अनुमति देता है (उदाहरण: wbook!E4:G8)।
bank_df_range3 <- read_excel("sample.xlsx", range ="bank-full!R3C1:R10C5")संचालित द्वारा
बिना हेडर रो के डेटा पढ़ना
आइए col_names आर्ग्युमेंट को कैरेक्टर वेक्टर पर सेट करके ऐसा डेटा पढ़ें जिसमें हेडर रो न हो।
PS: हम पहले skip आर्ग्युमेंट का उपयोग करके हेडर रो हटा रहे हैं।
पिछले अनुभाग में, जिन हेडरों को हमने निर्दिष्ट किया था वे स्पेस से अलग थे। आप .name_repair = "universal" आर्ग्युमेंट के साथ हेडर नामों को सिंटैक्टिक R वेरिएबल्स में बदल सकते हैं।
डिफ़ॉल्ट रूप से, जब आप कोई Excel फ़ाइल पढ़ते हैं, तो R प्रत्येक वेरिएबल के डेटा प्रकार का अनुमान लगाता है। आइए डिफ़ॉल्ट आर्ग्युमेंट्स के साथ पढ़े गए iris डेटासेट के कॉलम प्रकारों को देखें।
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
"numeric" "numeric" "numeric" "numeric" "numeric" "character" संचालित द्वारा
कॉलम स्किप करना
अक्सर कहा जाता है कि जितना अधिक डेटा, उतना बेहतर। लेकिन कई मामलों में आप पाते हैं कि कुछ वेरिएबल्स/कॉलम कोई उपयोगी संकेत नहीं रखते, इसके निम्नलिखित कारणों में से कोई भी हो सकता है।
उच्च कार्डिनेलिटी: लगभग हर मान अलग है
शून्य कार्डिनेलिटी: हर मान समान है
व्यावसायिक उपयोग-केस से असंबंधित
बहुत अधिक missing मान
बहुत अधिक जंक मान
आप नीचे दिखाए अनुसार col_types को "skip" पर सेट करके कुछ कॉलमों को पढ़ने से छोड़ सकते हैं।
जहाँ डेटा बहुत तेज़ी से और विविध रूपों में उत्पन्न हो रहा है, वहाँ आपकी प्रोग्रामिंग भाषा को इन डेटा प्रकारों को पढ़ने का समर्थन करना चाहिए। R उन शक्तिशाली भाषाओं में से एक है जो इस प्रयास का समर्थन करती है। अलग-अलग डेटासेट्स को इम्पोर्ट करने के लिए R कौन से पैकेज प्रदान करता है, यह सीखने हेतु “Introduction to Importing Data in R” कोर्स में नामांकन करें। यह कोर्स R में डेटा इम्पोर्ट करने की समझ को मजबूत करने के लिए ट्यूटोरियल्स और क्विज़ प्रदान करता है।
अक्सर पूछे जाने वाले प्रश्न
क्या R प्रोजेक्ट्स के लिए CSV और Excel दोनों डेटा इम्पोर्ट कर सकता है?⌄
हाँ, R प्रोजेक्ट्स के लिए CSV और Excel दोनों डेटा इम्पोर्ट कर सकता है, और R दोनों फ़ॉर्मैट्स को संभालने के लिए सुदृढ़ पैकेज और फ़ंक्शन्स प्रदान करता है। CSV बनाम Excel पर हमारे गाइड को पढ़ें ताकि विस्तृत तुलना और अपने डेटा प्रोजेक्ट्स के लिए सही विकल्प चुनने में मार्गदर्शन मिल सके।
जहाँ कई संगठन डेटा को डेटाबेस और AWS, Azure, और GCP जैसी स्टोरेज सेवाओं में रखते हैं, वहीं छोटे डेटासेट संग्रहीत करने के लिए Microsoft Excel स्प्रेडशीट्स अब भी व्यापक रूप से उपयोग की जाती हैं।
डेटा साइंस की दृष्टि से Excel की क्षमताएँ R से सीमित हैं, इसलिए स्प्रेडशीट्स से डेटा को R में इम्पोर्ट करने में सक्षम होना उपयोगी है।
इस ट्यूटोरियल में हम readxl पैकेज का उपयोग करके Excel वर्कशीट्स (साथ ही विशिष्ट पंक्तियाँ और कॉलम) को R में पढ़ना कवर करेंगे।
इसे समझने के लिए आपको R का बुनियादी कार्य-ज्ञान होना चाहिए।
R में कई अलग-अलग फ़ाइल प्रकारों को इम्पोर्ट करने के लिए अधिक सामान्य मार्गदर्शिका के लिए यह पढ़ें: How to Import Data Into R: A Tutorial।
Excel फ़ाइल
जिस डेटासेट को हम R में पढ़ेंगे, वह छोटा है और केवल दो शीट्स हैं ताकि यह दिखाया जा सके कि किस शीट को पढ़ना है। यह यहाँ उपलब्ध है।
पहली शीट एक बैंक मार्केटिंग डेटासेट है जिसमें 45,211 पंक्तियाँ और 17 कॉलम हैं। नीचे दिया गया स्क्रीनशॉट “sample.xlsx” नामक Excel फ़ाइल और “bank-full” शीट से है।
दूसरी शीट Iris डेटासेट है जिसमें 150 पंक्तियाँ और 6 कॉलम हैं और इसमें Iris फूलों के प्रकारों से संबंधित जानकारी है, जैसे उनके sepal और petal की लंबाई और चौड़ाई। नीचे दिया गया स्क्रीनशॉट उसी Excel फ़ाइल “sample.xlsx” और शीट नाम “iris” से है।
पैकेज का अवलोकन
यह ट्यूटोरियल readxl पैकेज का उपयोग करता है। openxlsx पैकेज भी एक अच्छा विकल्प है जिसमें XLSX फ़ाइलों में लिखने की क्षमता भी शामिल है, लेकिन dplyr और tidyr जैसे tidyverse पैकेजों के साथ इसका एकीकरण अपेक्षाकृत कम मजबूत है।
readxl पैकेज के साथ Excel फ़ाइलें पढ़ने के लिए, हमें पहले पैकेज इंस्टॉल करना होगा और फिर उसे “library” फ़ंक्शन का उपयोग करके इम्पोर्ट करना होगा।
कंसोल में आपको नीचे जैसा आउटपुट दिखाई देगा, जो सफल इंस्टॉलेशन का संकेत है।
“readxl” की विधियों का उपयोग करने के लिए, R-कंसोल में नीचे दिया गया कमांड चलाएँ।
ध्यान दें कि openxlsx पैकेज XLSX फ़ाइलों में लिखने के लिए एक और अच्छा विकल्प है।
पहला वर्कबुक पढ़ना
आइए read_xlsx() और केवल path आर्ग्युमेंट के साथ पहली वर्कशीट “bank-full” का सारा डेटा पढ़ते हैं।
परिणामी डेटा एक tibble होता है।
आप read_xlsx() की तरह ही read_excel() का भी उपयोग कर सकते हैं, और आगामी अनुभागों में आप जो भी आर्ग्युमेंट्स देखेंगे वे इस फ़ंक्शन के साथ भी समान रूप से काम करते हैं। read_excel() यह अनुमान लगाने की कोशिश करेगा कि आपके पास XLSX स्प्रेडशीट है या पुराना XLS स्प्रेडशीट प्रकार।
अन्य वर्कबुक पढ़ना
अब read_xlsx() फ़ंक्शन और sheet आर्ग्युमेंट के साथ दूसरे वर्कबुक, अर्थात् “iris” का सारा डेटा पढ़ते हैं।
आप sheet आर्ग्युमेंट में शीट के नाम के बजाय उसका क्रमांक भी दे सकते हैं।
विशिष्ट पंक्तियाँ पढ़ना
skip और n_max आर्ग्युमेंट सेट करके किसी वर्कबुक से विशिष्ट पंक्तियाँ पढ़ते हैं। शुरुआती कुछ पंक्तियाँ छोड़ने के लिए, skip आर्ग्युमेंट में उन पंक्तियों की संख्या दें जिन्हें आप छोड़ना चाहते हैं।
कृपया ध्यान दें कि उपरोक्त कोड हेडर भी स्किप कर देता है। आप अगले अनुभागों में read_xlsx() फ़ंक्शन में हेडर को स्पष्ट रूप से निर्दिष्ट करना सीखेंगे।
इसी प्रकार, पहली n पंक्तियाँ पढ़ने के लिए read_xlsx() फ़ंक्शन में n_max आर्ग्युमेंट निर्दिष्ट करें। नीचे दिया गया कोड “bank-full” शीट की पहली 1000 पंक्तियाँ पढ़ता है।
आप दोनों आर्ग्युमेंट्स को मिलाकर कुछ पंक्तियाँ छोड़कर शेष डेटासेट से एक निश्चित संख्या में पंक्तियाँ भी पढ़ सकते हैं।
विशिष्ट सेल्स पढ़ना
जहाँ “skip” और “n_max” आर्ग्युमेंट्स आपको डेटा की कुछ पंक्तियाँ पढ़ने की सुविधा देते हैं, वहीं आप range आर्ग्युमेंट सेट करके वर्कबुक से विशिष्ट सेल्स पढ़ सकते हैं।
डेटासेट का सबसेट निर्दिष्ट करने के दो नोटेशन हैं:
विचार यह है कि आप उस आयत के निर्देशांक निर्दिष्ट करें जिसे आप डेटासेट से काटना चाहते हैं।
नोटेशन 1:
नोटेशन 2:
Range आपको आर्ग्युमेंट में शीट का नाम शामिल करने की भी अनुमति देता है (उदाहरण: wbook!E4:G8)।
बिना हेडर रो के डेटा पढ़ना
आइए col_names आर्ग्युमेंट को कैरेक्टर वेक्टर पर सेट करके ऐसा डेटा पढ़ें जिसमें हेडर रो न हो।
PS: हम पहले skip आर्ग्युमेंट का उपयोग करके हेडर रो हटा रहे हैं।
हेडर नामों की मरम्मत
पिछले अनुभाग में, जिन हेडरों को हमने निर्दिष्ट किया था वे स्पेस से अलग थे। आप .name_repair = "universal" आर्ग्युमेंट के साथ हेडर नामों को सिंटैक्टिक R वेरिएबल्स में बदल सकते हैं।
कॉलम प्रकार निर्दिष्ट करना
डिफ़ॉल्ट रूप से, जब आप कोई Excel फ़ाइल पढ़ते हैं, तो R प्रत्येक वेरिएबल के डेटा प्रकार का अनुमान लगाता है। आइए डिफ़ॉल्ट आर्ग्युमेंट्स के साथ पढ़े गए iris डेटासेट के कॉलम प्रकारों को देखें।
कॉलम प्रकारों के अनुमान को ओवरराइड करने के लिए, आप col_types आर्ग्युमेंट का उपयोग कर सकते हैं।
आप किसी विशेष कॉलम के लिए col_types मान को “guess” देकर चयनित वेरिएबल्स के कॉलम प्रकारों का अनुमान R से करवा सकते हैं।
कॉलम स्किप करना
अक्सर कहा जाता है कि जितना अधिक डेटा, उतना बेहतर। लेकिन कई मामलों में आप पाते हैं कि कुछ वेरिएबल्स/कॉलम कोई उपयोगी संकेत नहीं रखते, इसके निम्नलिखित कारणों में से कोई भी हो सकता है।
आप नीचे दिखाए अनुसार col_types को "skip" पर सेट करके कुछ कॉलमों को पढ़ने से छोड़ सकते हैं।
जहाँ डेटा बहुत तेज़ी से और विविध रूपों में उत्पन्न हो रहा है, वहाँ आपकी प्रोग्रामिंग भाषा को इन डेटा प्रकारों को पढ़ने का समर्थन करना चाहिए। R उन शक्तिशाली भाषाओं में से एक है जो इस प्रयास का समर्थन करती है। अलग-अलग डेटासेट्स को इम्पोर्ट करने के लिए R कौन से पैकेज प्रदान करता है, यह सीखने हेतु “Introduction to Importing Data in R” कोर्स में नामांकन करें। यह कोर्स R में डेटा इम्पोर्ट करने की समझ को मजबूत करने के लिए ट्यूटोरियल्स और क्विज़ प्रदान करता है।