मुख्य सामग्री पर जाएँ

readxl के साथ Excel फ़ाइलों को R में पढ़ना और इम्पोर्ट करना

इस लेख में, readxl लाइब्रेरी के साथ Excel फ़ाइलों को R में इम्पोर्ट करना सीखें।
· 5 मि॰ पढ़ें

AI के साथ खोजें

जहाँ कई संगठन डेटा को डेटाबेस और 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” शीट से है।

Screenshot 2023-03-08 at 9.05.49 PM.png

दूसरी शीट Iris डेटासेट है जिसमें 150 पंक्तियाँ और 6 कॉलम हैं और इसमें Iris फूलों के प्रकारों से संबंधित जानकारी है, जैसे उनके sepal और petal की लंबाई और चौड़ाई। नीचे दिया गया स्क्रीनशॉट उसी Excel फ़ाइल “sample.xlsx” और शीट नाम “iris” से है। 

Screenshot 2023-03-08 at 9.08.53 PM.png

पैकेज का अवलोकन

यह ट्यूटोरियल readxl पैकेज का उपयोग करता है। openxlsx पैकेज भी एक अच्छा विकल्प है जिसमें XLSX फ़ाइलों में लिखने की क्षमता भी शामिल है, लेकिन dplyr और tidyr जैसे tidyverse पैकेजों के साथ इसका एकीकरण अपेक्षाकृत कम मजबूत है।

readxl पैकेज के साथ Excel फ़ाइलें पढ़ने के लिए, हमें पहले पैकेज इंस्टॉल करना होगा और फिर उसे “library” फ़ंक्शन का उपयोग करके इम्पोर्ट करना होगा।

install.packages("readxl")

कंसोल में आपको नीचे जैसा आउटपुट दिखाई देगा, जो सफल इंस्टॉलेशन का संकेत है।

trying URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.2/readxl_1.4.2.tgz'
Content type 'application/x-gzip' length 1545782 bytes (1.5 MB)
==================================================
downloaded 1.5 MB


The downloaded binary packages are in
/var/folders/mq/46mc_8tj06n0wh2xjkk08r140000gn/T//RtmpHIGYqM/downloaded_packages

“readxl” की विधियों का उपयोग करने के लिए, R-कंसोल में नीचे दिया गया कमांड चलाएँ।

library(readxl)

ध्यान दें कि openxlsx पैकेज XLSX फ़ाइलों में लिखने के लिए एक और अच्छा विकल्प है।

पहला वर्कबुक पढ़ना

आइए read_xlsx() और केवल path आर्ग्युमेंट के साथ पहली वर्कशीट “bank-full” का सारा डेटा पढ़ते हैं।

bank_df <- read_xlsx(path = "sample.xlsx")

परिणामी डेटा एक tibble होता है।

Screenshot 2023-03-09 at 7.40.15 AM.png

आप read_xlsx() की तरह ही read_excel() का भी उपयोग कर सकते हैं, और आगामी अनुभागों में आप जो भी आर्ग्युमेंट्स देखेंगे वे इस फ़ंक्शन के साथ भी समान रूप से काम करते हैं। read_excel() यह अनुमान लगाने की कोशिश करेगा कि आपके पास XLSX स्प्रेडशीट है या पुराना XLS स्प्रेडशीट प्रकार।

bank_df <- read_excel(path = "sample.xlsx")

Screenshot 2023-03-09 at 7.40.15 AM (1).png

अन्य वर्कबुक पढ़ना

अब read_xlsx() फ़ंक्शन और sheet आर्ग्युमेंट के साथ दूसरे वर्कबुक, अर्थात् “iris” का सारा डेटा पढ़ते हैं।

iris <- read_xlsx("sample.xlsx", sheet = "iris")

Screenshot 2023-03-09 at 7.12.08 AM.png

आप sheet आर्ग्युमेंट में शीट के नाम के बजाय उसका क्रमांक भी दे सकते हैं।

iris2 <- read_xlsx("sample.xlsx", sheet = 1)

Screenshot 2023-03-09 at 7.12.21 AM.png

विशिष्ट पंक्तियाँ पढ़ना

skip और n_max आर्ग्युमेंट सेट करके किसी वर्कबुक से विशिष्ट पंक्तियाँ पढ़ते हैं। शुरुआती कुछ पंक्तियाँ छोड़ने के लिए, skip आर्ग्युमेंट में उन पंक्तियों की संख्या दें जिन्हें आप छोड़ना चाहते हैं।

bank_df_s2 <- read_excel("sample.xlsx", sheet = "bank-full", skip = 2)

कृपया ध्यान दें कि उपरोक्त कोड हेडर भी स्किप कर देता है। आप अगले अनुभागों में read_xlsx() फ़ंक्शन में हेडर को स्पष्ट रूप से निर्दिष्ट करना सीखेंगे।

Screenshot 2023-03-09 at 7.17.01 AM.png

इसी प्रकार, पहली n पंक्तियाँ पढ़ने के लिए read_xlsx() फ़ंक्शन में n_max आर्ग्युमेंट निर्दिष्ट करें। नीचे दिया गया कोड “bank-full” शीट की पहली 1000 पंक्तियाँ पढ़ता है।

bank_df_n1k <- read_excel("sample.xlsx", sheet = "bank-full", n_max = 1000)

Screenshot 2023-03-09 at 7.18.41 AM.png

आप दोनों आर्ग्युमेंट्स को मिलाकर कुछ पंक्तियाँ छोड़कर शेष डेटासेट से एक निश्चित संख्या में पंक्तियाँ भी पढ़ सकते हैं।

विशिष्ट सेल्स पढ़ना

जहाँ “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 आर्ग्युमेंट का उपयोग करके हेडर रो हटा रहे हैं।

columns <- c("ID", "Sepal Length", "Sepal Width", "Petal Length", "Petal Width", "Species Name")

iris3 <- read_excel("sample.xlsx", sheet = 2, skip = 1, col_names = columns)

Screenshot 2023-03-09 at 7.19.30 AM.png

हेडर नामों की मरम्मत

पिछले अनुभाग में, जिन हेडरों को हमने निर्दिष्ट किया था वे स्पेस से अलग थे। आप .name_repair = "universal" आर्ग्युमेंट के साथ हेडर नामों को सिंटैक्टिक R वेरिएबल्स में बदल सकते हैं।

iris4 <- read_excel("sample.xlsx", sheet = 2, skip = 1,
                  col_names = columns, .name_repair = "universal")

Screenshot 2023-03-09 at 7.19.56 AM.png

कॉलम प्रकार निर्दिष्ट करना

डिफ़ॉल्ट रूप से, जब आप कोई Excel फ़ाइल पढ़ते हैं, तो R प्रत्येक वेरिएबल के डेटा प्रकार का अनुमान लगाता है। आइए डिफ़ॉल्ट आर्ग्युमेंट्स के साथ पढ़े गए iris डेटासेट के कॉलम प्रकारों को देखें।

sapply(iris, class)
  Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

कॉलम प्रकारों के अनुमान को ओवरराइड करने के लिए, आप col_types आर्ग्युमेंट का उपयोग कर सकते हैं।

iris5 <- read_excel("sample.xlsx", sheet = 2,
      col_types = c("numeric", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris5, class)
    Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Screenshot 2023-03-09 at 7.20.14 AM.png

आप किसी विशेष कॉलम के लिए col_types मान को “guess” देकर चयनित वेरिएबल्स के कॉलम प्रकारों का अनुमान R से करवा सकते हैं।

iris6 <- read_excel("sample.xlsx", sheet = 2,
        col_types = c("guess", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris6, class)
Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Screenshot 2023-03-09 at 7.20.27 AM.png

कॉलम स्किप करना

अक्सर कहा जाता है कि जितना अधिक डेटा, उतना बेहतर। लेकिन कई मामलों में आप पाते हैं कि कुछ वेरिएबल्स/कॉलम कोई उपयोगी संकेत नहीं रखते, इसके निम्नलिखित कारणों में से कोई भी हो सकता है। 

  • उच्च कार्डिनेलिटी: लगभग हर मान अलग है
  • शून्य कार्डिनेलिटी: हर मान समान है
  • व्यावसायिक उपयोग-केस से असंबंधित
  • बहुत अधिक missing मान
  • बहुत अधिक जंक मान

आप नीचे दिखाए अनुसार col_types को "skip" पर सेट करके कुछ कॉलमों को पढ़ने से छोड़ सकते हैं।

iris7 <- read_excel("sample.xlsx", sheet = 2,
            col_types = c("numeric", "skip", "skip", "numeric", "numeric", "text"))

sapply(iris7, class)

Screenshot 2023-03-09 at 7.20.36 AM.pngअगले स्तर पर ले जाएँ

जहाँ डेटा बहुत तेज़ी से और विविध रूपों में उत्पन्न हो रहा है, वहाँ आपकी प्रोग्रामिंग भाषा को इन डेटा प्रकारों को पढ़ने का समर्थन करना चाहिए। R उन शक्तिशाली भाषाओं में से एक है जो इस प्रयास का समर्थन करती है। अलग-अलग डेटासेट्स को इम्पोर्ट करने के लिए R कौन से पैकेज प्रदान करता है, यह सीखने हेतु “Introduction to Importing Data in R” कोर्स में नामांकन करें। यह कोर्स R में डेटा इम्पोर्ट करने की समझ को मजबूत करने के लिए ट्यूटोरियल्स और क्विज़ प्रदान करता है।

अक्सर पूछे जाने वाले प्रश्न

क्या R प्रोजेक्ट्स के लिए CSV और Excel दोनों डेटा इम्पोर्ट कर सकता है?

हाँ, R प्रोजेक्ट्स के लिए CSV और Excel दोनों डेटा इम्पोर्ट कर सकता है, और R दोनों फ़ॉर्मैट्स को संभालने के लिए सुदृढ़ पैकेज और फ़ंक्शन्स प्रदान करता है। CSV बनाम Excel पर हमारे गाइड को पढ़ें ताकि विस्तृत तुलना और अपने डेटा प्रोजेक्ट्स के लिए सही विकल्प चुनने में मार्गदर्शन मिल सके।

विषय