R में डेटा.टेबल बनाम डेटा फ़्रेम: तीन प्रमुख अंतर


आर प्रोग्रामिंग भाषा में, डेटा.फ़्रेम आर डेटाबेस का हिस्सा है।

किसी भी डेटा.फ़्रेम को डेटा.टेबल पैकेज के सेटडीएफ फ़ंक्शन का उपयोग करके डेटा.टेबल में परिवर्तित किया जा सकता है।

एक data.table R में data.frame की तुलना में निम्नलिखित लाभ प्रदान करता है:

1. आप किसी फ़ाइल को डेटा.टेबल में पढ़ने के लिए डेटा.टेबल पैकेज से फ़्रेड फ़ंक्शन का उपयोग कर सकते हैं, जो रीड.सीएसवी जैसे बुनियादी आर फ़ंक्शंस की तुलना में बहुत तेज़ है, जो फ़ाइलों को डेटा.फ़्रेम में पढ़ता है।

2. आप डेटा.फ्रेम की तुलना में डेटा.टेबल पर ऑपरेशन (जैसे समूहीकरण और एकत्रीकरण) बहुत तेजी से कर सकते हैं।

3. डेटा.फ़्रेम को कंसोल पर प्रिंट करते समय, R डेटा.फ़्रेम में प्रत्येक पंक्ति को प्रिंट करने का प्रयास करेगा। हालाँकि, एक data.table केवल पहली 100 पंक्तियों को प्रदर्शित करेगा, जो आपके सत्र को लटकने या क्रैश होने से रोक सकता है यदि आप बड़े डेटासेट के साथ काम कर रहे हैं।

निम्नलिखित उदाहरण व्यवहार में डेटा.फ़्रेम और डेटा.टेबल के बीच इन अंतरों को दर्शाते हैं।

अंतर #1: फ़्रेड के साथ तेज़ आयात

निम्नलिखित कोड दिखाता है कि data.table पैकेज से फ़्रेड फ़ंक्शन और R डेटाबेस से read.csv फ़ंक्शन का उपयोग करके 10,000 पंक्तियों और 100 कॉलमों का डेटा फ़्रेम कैसे आयात किया जाए:

 library (microbenchmark)
library (data.table)

#make this example reproducible
set. seeds (1)

#create data frame with 10,000 rows and 100 columns
df <- as. data . frame (matrix(runif(10^4 * 100), nrow = 10^4))

#export CSV to current working directory
write.write. csv (df, " test.csv ", quote = FALSE )

#import CSV file using fread and read.csv and time how long it takes
results <- microbenchmark(
  read.csv = read. csv (" test.csv ", header = TRUE , stringsAsFactors = FALSE ),
  fread = fread(" test.csv ", sep = ",", stringsAsFactors = FALSE ),
  times = 10)

#view results
results

Unit: milliseconds
     expr min lq mean median uq max neval cld
 read.csv 817.1867 892.8748 1026.7071 899.5755 926.9120 1964.0540 10 b
    fread 113.5889 116.2735 136.4079 124.3816 136.0534 211.7484 10 a

परिणामों से, हम देख सकते हैं कि read.csv फ़ंक्शन की तुलना में फ़्रेड इस CSV फ़ाइल को आयात करने में लगभग 10 गुना तेज़ है।

ध्यान दें कि बड़े डेटासेट के लिए यह अंतर और भी अधिक होगा।

अंतर #2: data.table के साथ तेज़ डेटा हेरफेर

सामान्य तौर पर, data.table किसी भी डेटा हेरफेर कार्य को data.frame की तुलना में बहुत तेजी से निष्पादित कर सकता है।

उदाहरण के लिए, निम्नलिखित कोड दिखाता है कि डेटा.टेबल और डेटा.फ़्रेम दोनों में किसी अन्य वेरिएबल द्वारा समूहीकृत एक वेरिएबल के औसत की गणना कैसे करें:

 library (microbenchmark)
library (data.table)

#make this example reproducible
set.seed(1)

#create data frame with 10,000 rows and 100 columns
d_frame <- data. frame (team=rep(c(' A ', ' B '), each=5000),
                      points=c(rnorm(10000, mean=20, sd=3)))

#create data.table from data.frame
d_table <- setDT(d_frame)

#calculate mean of points grouped by team in data.frame and data.table
results <- microbenchmark(
  mean_d_frame = aggregate(d_frame$points, list(d_frame$team), FUN=mean),
  mean_d_table = d_table[ ,list(mean=mean(points)), by=team],
  times = 10)

#view results
results

Unit: milliseconds
         expr min lq mean median uq max neval cld
 mean_d_frame 2.9045 3.0077 3.11683 3.1074 3.1654 3.4824 10 b
 mean_d_table 1.0539 1.1140 1.52002 1.2075 1.2786 3.6084 10 a

परिणामों से, हम देख सकते हैं कि data.table data.frame से लगभग तीन गुना तेज़ है।

बड़े डेटासेट के लिए, यह अंतर और भी अधिक होगा।

अंतर #3: डेटा.टेबल के साथ कम पंक्तियाँ मुद्रित होती हैं

डेटा.फ़्रेम को कंसोल पर प्रिंट करते समय, R डेटा.फ़्रेम में प्रत्येक पंक्ति को प्रिंट करने का प्रयास करेगा।

हालाँकि, एक data.table केवल पहली 100 पंक्तियों को प्रदर्शित करेगा, जो आपके सत्र को लटकने या क्रैश होने से रोक सकता है यदि आप बड़े डेटासेट के साथ काम कर रहे हैं।

उदाहरण के लिए, निम्नलिखित कोड में, हम 200 पंक्तियों का एक डेटा फ़्रेम और एक डेटा.टेबल दोनों बनाते हैं।

डेटा.फ़्रेम को प्रिंट करते समय, R डेटा.टेबल को प्रिंट करते समय प्रत्येक पंक्ति को प्रिंट करने का प्रयास करेगा, केवल पहली पाँच पंक्तियाँ और अंतिम पाँच पंक्तियाँ प्रदर्शित करेगा:

 library (data.table)

#make this example reproducible
set. seeds (1)

#create data frame
d_frame <- data. frame (x=rnorm(200),
                      y=rnorm(200),
                      z=rnorm(200))
#view data frame
d_frame

               X Y Z
1 -0.055303118 1.54858564 -2.065337e-02
2 0.354143920 0.36706204 -3.743962e-01
3 -0.999823809 -1.57842544 4.392027e-01
4 2.586214840 0.17383147 -2.081125e+00
5 -1.917692199 -2.11487401 4.073522e-01
6 0.039614766 2.21644236 1.869164e+00
7 -1.942259548 0.81566443 4.740712e-01
8 -0.424913746 1.01081030 4.996065e-01
9 -1.753210825 -0.98893038 -6.290307e-01
10 0.232382655 -1.25229873 -1.324883e+00
11 0.027278832 0.44209325 -3.221920e-01
...
#create data table
d_table <- setDT(d_frame)

#view data table
d_table

               X Y Z
  1: -0.05530312 1.54858564 -0.02065337
  2: 0.35414392 0.36706204 -0.37439617
  3: -0.99982381 -1.57842544 0.43920275
  4: 2.58621484 0.17383147 -2.08112491
  5: -1.91769220 -2.11487401 0.40735218
 ---                                    
196: -0.06196178 1.08164065 0.58609090
197: 0.34160667 -0.01886703 1.61296255
198: -0.38361957 -0.03890329 0.71377217
199: -0.80719743 -0.89674205 -0.49615702
200: -0.26502679 -0.15887435 -1.73781026

यह एक फायदा है जो data.table data.frame की तुलना में प्रदान करता है, खासकर जब बड़े डेटा सेट के साथ काम करते हैं जिन्हें आप गलती से कंसोल पर प्रिंट नहीं करना चाहते हैं।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य कार्य कैसे करें:

R में डेटा फ़्रेम में पंक्तियाँ कैसे जोड़ें
आर में कुछ कॉलम कैसे सुरक्षित रखें?
आर में केवल संख्यात्मक कॉलम का चयन कैसे करें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *