"सभ्यता के जन्म के क्षण से 2003 तक मानवता द्वारा पांच सूचनाएँ बनाई गईं, लेकिन अब हर दो दिनों में एक ही राशि बनाई जा रही है।" एरिक श्मिटडाटाटेबल कुशल बहु-थ्रेडेड डेटा प्रोसेसिंग करने के लिए एक पायथन लाइब्रेरी है। डेटा योग्य डेटासेट्स का समर्थन करता है जो मेमोरी में फिट नहीं होते हैं।
यदि आप R में लिखते हैं, तो आप संभवतः पहले से
data.table
पैकेज का उपयोग कर रहे हैं।
Data.table डेटा का एक एक्सटेंशन है। R R पैकेज। इसके अलावा, जो लोग बड़े डेटा सेट को जल्दी से उपयोग करने के लिए आर का उपयोग करते हैं, वे इस पैकेज के बिना नहीं कर सकते हैं (हम बात कर रहे हैं, विशेष रूप से, रैम में लगभग 100 जीबी डेटा)।
R के लिए
data.table
पैकेज बहुत लचीला और शक्तिशाली है। इसका उपयोग करना आसान और सुविधाजनक है, जिन कार्यक्रमों में इसका उपयोग किया जाता है वे बहुत जल्दी लिखे जाते हैं। यह पैकेज व्यापक रूप से आर-प्रोग्रामर्स के बीच जाना जाता है। इसे महीने में 400 हजार से अधिक बार डाउनलोड किया जाता है, इसका उपयोग लगभग 650 CRAN और BioconSTR पैकेज (
स्रोत ) में किया जाता है।
पायथन के लिए डेटा माइनिंग का उपयोग क्या है? बात यह है कि एक पायथन
data.table
पैकेज है जो कि दुनिया के आर से
data.table
का एक एनालॉग है। डेटा योग्य पैकेज स्पष्ट रूप से बड़े डेटा सेट को संसाधित करने पर केंद्रित है। यह उच्च प्रदर्शन की विशेषता है - दोनों जब पूरी तरह से रैम में रखे गए डेटा के साथ काम करते हैं, और जब डेटा के साथ काम करते हैं, जिसका आकार उपलब्ध रैम की मात्रा से अधिक है। यह मल्टी-थ्रेडेड डेटा प्रोसेसिंग का समर्थन करता है। सामान्य तौर पर,
डेटाटेबल पैकेज को
data.table का छोटा भाई कहा जा सकता है।
datatable
आधुनिक मशीन लर्निंग सिस्टम को डेटा की राक्षसी मात्रा को संसाधित करने और कई विशेषताओं को उत्पन्न करने की आवश्यकता है। यह यथासंभव सटीक मॉडल बनाने के लिए आवश्यक है। इस समस्या को हल करने के लिए
datatable
पायथन मॉड्यूल बनाया गया था। यह उच्चतम कंप्यूटर पर उच्चतम संभव गति से बड़े कंप्यूटर पर (100 जीबी तक) डेटा वॉल्यूम के साथ संचालन करने के लिए उपकरणों का एक सेट है।
डेटा योग्य विकास का प्रायोजक
H2O.ai है , और पैकेज का पहला उपयोगकर्ता
Driverless.ai है ।
यह टूलकिट
पांडा के समान है, लेकिन यह उच्च गति डेटा प्रसंस्करण प्रदान करने और बड़े डेटा सेटों का समर्थन करने पर अधिक केंद्रित है।
datatable
पैकेज के डेवलपर्स, इसके अलावा, उपयोगकर्ताओं को इसके साथ काम करने के लिए सुविधाजनक बनाने का प्रयास करते हैं। यह विशेष रूप से, एक शक्तिशाली एपीआई और सुविचारित त्रुटि संदेश है। इस लेख में, हम
datatable
का उपयोग करने के तरीके के बारे में बात करेंगे, और बड़े डेटा सेटों को संसाधित करते समय
pandas
की तुलना में यह कैसा दिखता है।
स्थापना
MacOS पर,
pip
का उपयोग करके आसानी से स्थापित किया जा सकता है:
pip install datatable
लिनक्स पर, बाइनरी वितरण से इंस्टॉलेशन किया जाता है:
वर्तमान में, विंडोज के तहत
datatable
काम नहीं करता है, लेकिन इस दिशा में काम चल रहा है, इसलिए विंडोज का समर्थन बस समय की बात है।
datatable
स्थापित करने पर विवरण
यहां पाया जा सकता
है ।
इस लेख में उपयोग किया जाने वाला कोड
इस GitHub रिपॉजिटरी में या mybinder.org पर
यहां देखा जा सकता है।
डेटा पढ़ना
डेटा सेट जिसके साथ हम यहां प्रयोग करेंगे, कागले (
लेंडिंग क्लब लोन डेटा डेटासेट ) से लिया गया है। इस सेट में 2007-2015 में जारी किए गए सभी ऋणों पर संपूर्ण डेटा शामिल है, जिसमें ऋण की वर्तमान स्थिति (वर्तमान, देर, पूरी तरह से भुगतान, आदि) और नवीनतम भुगतान जानकारी शामिल है। फ़ाइल में 2.26 मिलियन पंक्तियाँ और 145 कॉलम हैं।
datatable
लाइब्रेरी की क्षमताओं को प्रदर्शित करने के लिए इस डेटासेट का आकार आदर्श है।
आइए डेटा को
Frame
ऑब्जेक्ट में लोड करते हैं। एक
datatable
में विश्लेषण की मूल इकाई
Frame
। यह
pandas
या SQL टेबल से
DataFrame
के समान है। अर्थात्, हम एक दो-आयामी सरणी के रूप में संगठित डेटा के बारे में बात कर रहे हैं जिसमें पंक्तियों और स्तंभों को प्रतिष्ठित किया जा सकता है।
Atable डेटा लोड करने योग्य का उपयोग करके डेटा लोड करना
%%time datatable_df = dt.fread("data.csv") ____________________________________________________________________ CPU times: user 30 s, sys: 3.39 s, total: 33.4 s Wall time: 23.6 s
उपरोक्त
fread()
फ़ंक्शन एक शक्तिशाली और बहुत तेज़ तंत्र है। यह स्वचालित रूप से पाठ फ़ाइलों के विशाल बहुमत के लिए मापदंडों का पता लगा सकता है और प्रक्रिया कर सकता है, .ZIP अभिलेखागार और एक्सेल फ़ाइलों से डेटा डाउनलोड कर सकता है, URL द्वारा डेटा पुनर्प्राप्त कर सकता है, और बहुत कुछ।
इसके अतिरिक्त,
datatable
पार्सर में निम्नलिखित विशेषताएं हैं:
- यह स्वचालित रूप से सीमांकक, शीर्षासन, स्तंभ प्रकार, चरित्र से बचने के नियम और इसी तरह का पता लगा सकता है।
- वह विभिन्न स्रोतों से डेटा पढ़ सकता है। इनमें फाइल सिस्टम, URL, कमांड शेल, रॉ टेक्स्ट, आर्काइव्स शामिल हैं।
- वह अधिकतम प्रदर्शन के लिए मल्टीथ्रेड डेटा रीडिंग करने में सक्षम है।
- यह बड़ी फ़ाइलों को पढ़ते समय एक प्रगति संकेतक प्रदर्शित करता है।
- यह उन फ़ाइलों को पढ़ सकता है जो आरएफसी 4180 के अनुरूप हैं और अनुपालन नहीं हैं।
पंडों का उपयोग कर डेटा डाउनलोड करना
अब देखते हैं कि एक ही फाइल को पढ़ने के लिए कितने लंबे
pandas
जरूरत होती है।
%%time pandas_df= pd.read_csv("data.csv") ___________________________________________________________ CPU times: user 47.5 s, sys: 12.1 s, total: 59.6 s Wall time: 1min 4s
आप देख सकते हैं कि बड़े डेटासेट पढ़ते समय
pandas
तुलना
datatable
स्पष्ट रूप से तेज़ है। हमारे प्रयोग में
Pandas
को एक मिनट से अधिक समय लगता है, और
datatable
द्वारा आवश्यक समय सेकंड में मापा जाता है।
फ़्रेम ऑब्जेक्ट रूपांतरण
एक मौजूदा
numpy
पैकेज
Frame
ऑब्जेक्ट को एक
numpy
या
pandas
DataFrame
ऑब्जेक्ट में बदला जा सकता है। यह इस तरह किया जाता है:
numpy_df = datatable_df.to_numpy() pandas_df = datatable_df.to_pandas()
आइए एक मौजूदा
Frame
DataFrame
को
DataFrame
pandas
बदलने की कोशिश करें और देखें कि इसमें कितना समय लगता है।
%%time datatable_pandas = datatable_df.to_pandas() ___________________________________________________________________ CPU times: user 17.1 s, sys: 4 s, total: 21.1 s Wall time: 21.4 s
ऐसा लगता है कि किसी फाइल को एक
Frame
DataFrame
में पढ़ना और फिर इसे एक
pandas
डेटा में
DataFrame
ऑब्जेक्ट को डेटा को लोड करने की तुलना में डेटा लोड करने में कम समय लगता है। इसलिए, शायद, यदि आप
pandas
का उपयोग करके बड़ी मात्रा में डेटा को संसाधित करने की योजना बनाते हैं, तो उन्हें
DataFrame
का उपयोग करके लोड करना बेहतर होगा, और फिर इसे
DataFrame
परिवर्तित करें।
type(datatable_pandas) ___________________________________________________________________ pandas.core.frame.DataFrame
फ़्रेम ऑब्जेक्ट के मूल गुण
datatable
से
Frame
ऑब्जेक्ट के मूल गुणों पर विचार करें। वे
pandas
से
DataFrame
ऑब्जेक्ट के समान गुणों के समान हैं:
print(datatable_df.shape)
यहां हम
head()
विधि का उपयोग कर सकते हैं, जो
n
पहली पंक्तियों को प्रदर्शित करता है:
datatable_df.head(10)
डिटैचेबल से फ़्रेम ऑब्जेक्ट की पहली 10 पंक्तियाँहेडर रंग डेटा प्रकार को इंगित करते हैं। लाल रेखाओं को इंगित करता है, हरा पूर्णांक इंगित करता है, नीला फ्लोटिंग-पॉइंट संख्या को इंगित करता है।
सारांश सांख्यिकी
pandas
में सारांश आँकड़ों की गणना एक ऑपरेशन है जिसे पूरा करने के लिए बहुत सारी मेमोरी लगती है।
datatable
के मामले में ऐसा नहीं है। यहां वे कमांड हैं जिनका उपयोग आप विभिन्न मेट्रिक्स की गणना करने के लिए डेटाटेबल में कर सकते हैं:
datatable_df.sum() datatable_df.nunique() datatable_df.sd() datatable_df.max() datatable_df.mode() datatable_df.min() datatable_df.nmodal() datatable_df.mean()
हम
datatable
और
pandas
का उपयोग कर स्तंभों पर औसत मूल्य की गणना करते हैं और इस ऑपरेशन को पूरा करने के लिए आवश्यक समय का विश्लेषण करते हैं।
। डेटाटेबल का उपयोग करके औसत ढूँढना
%%time datatable_df.mean() _______________________________________________________________ CPU times: user 5.11 s, sys: 51.8 ms, total: 5.16 s Wall time: 1.43 s
As पांडा का उपयोग करके औसत ढूँढना
pandas_df.mean() __________________________________________________________________ Throws memory error.
जैसा कि आप देख सकते हैं,
pandas
हम परिणाम प्राप्त करने में असमर्थ थे - स्मृति से संबंधित एक त्रुटि जारी की गई थी।
डेटा हेरफेर
Frame
और
DataFrame
डेटा संरचनाएं हैं जो टेबल हैं।
datatable
, डेटा को हेरफेर करने के लिए स्क्वायर ब्रैकेट का उपयोग किया जाता है। यह पारंपरिक मैट्रेस के साथ काम करने के तरीके के समान है, लेकिन यहां, वर्ग कोष्ठक का उपयोग करते समय, आप अतिरिक्त सुविधाओं का उपयोग कर सकते हैं।
वर्गाकार कोष्ठकों का उपयोग करके डेटा डेटा के साथ कार्य करनागणित में, मेट्रिसेस के साथ काम करते समय, फॉर्म
DT[i, j]
निर्माण का भी उपयोग किया जाता है। इसी तरह की संरचनाएं सी, सी ++ और आर में पाई जा सकती हैं,
pandas
और
numpy
पैकेजों में, साथ ही साथ कई अन्य प्रौद्योगिकियों में भी। एक
datatable
में आम डेटा जोड़तोड़ करने पर विचार करें।
▍ रो या कॉलम नमूने बनाना
निम्नलिखित कोड
funded_amnt
कॉलम से सभी पंक्तियों का चयन करता है:
datatable_df[:,'funded_amnt']
वित्त पोषित_मांट कॉलम की सभी पंक्तियों का चयन करेंयहां पहले 5 पंक्तियों और 3 कॉलमों का चयन करना है:
datatable_df[:5,:3]
पहले 5 पंक्तियों और 3 कॉलम का चयनडेटासेट करने के लिए डेटा का उपयोग करना
चयनित कॉलम द्वारा सेट किए गए डेटा को क्रमबद्ध करें:
%%time datatable_df.sort('funded_amnt_inv') _________________________________________________________________ CPU times: user 534 ms, sys: 67.9 ms, total: 602 ms Wall time: 179 ms
As पंडों का उपयोग कर डेटा को परिवर्तित करना
%%time pandas_df.sort_values(by = 'funded_amnt_inv') ___________________________________________________________________ CPU times: user 8.76 s, sys: 2.87 s, total: 11.6 s Wall time: 12.4 s
ध्यान देने योग्य और
pandas
को छांटने के लिए आवश्यक समय में महत्वपूर्ण अंतर पर ध्यान दें।
EDelete पंक्तियों और स्तंभों
यहां बताया गया है कि
member_id
नामक कॉलम को कैसे हटाया
member_id
:
del datatable_df[:, 'member_id']
समूह
pandas
तरह डेटा योग्य, डेटा ग्रुपिंग क्षमताओं का समर्थन करता है। आइए देखें कि
funded_amound
कॉलम का औसत कैसे प्राप्त किया
funded_amound
, जिसमें डेटा
grade
कॉलम द्वारा समूहीकृत किया जाता है।
डेटा योग्य का उपयोग करके डेटा का समूह बनाना
%%time for i in range(100): datatable_df[:, dt.sum(dt.f.funded_amnt), dt.by(dt.f.grade)] ____________________________________________________________________ CPU times: user 6.41 s, sys: 1.34 s, total: 7.76 s Wall time: 2.42 s
यहां आप
.f
निर्माण का उपयोग देख सकते हैं। यह तथाकथित फ्रेम प्रॉक्सी है - एक सरल तंत्र जो आपको
Frame
ऑब्जेक्ट को संदर्भित करने की अनुमति देता है जिसके साथ वर्तमान में कुछ क्रियाएं की जा रही हैं। हमारे मामले में,
dt.f
,
datatable_df
के समान है।
पंडों का उपयोग करते हुए डेटा एकत्र करना
%%time for i in range(100): pandas_df.groupby("grade")["funded_amnt"].sum() ____________________________________________________________________ CPU times: user 12.9 s, sys: 859 ms, total: 13.7 s Wall time: 13.9 s
लाइन छानने का काम
फ़िल्टरिंग सिंटैक्स समूहीकरण सिंटैक्स के समान है।
loan_amnt
उन
loan_amnt
लाइनों को
loan_amnt
करते हैं, जिनके लिए
loan_amnt
मान,
loan_amnt
अधिक है।
datatable_df[dt.f.loan_amnt>dt.f.funded_amnt,"loan_amnt"]
फ़्रेम ऑब्जेक्ट सहेजना
Frame
ऑब्जेक्ट की सामग्री को CSV फ़ाइल में लिखा जा सकता है, जो भविष्य में डेटा के उपयोग की अनुमति देता है। यह इस तरह किया जाता है:
datatable_df.to_csv('output.csv')
आप
यहां डेटा के साथ काम करने के लिए अन्य डेटा योग्य तरीकों के बारे में पढ़ सकते हैं।
परिणाम
datatable
पायथन मॉड्यूल सामान्य
pandas
तुलना में निश्चित रूप से तेज है। यह उन लोगों के लिए भी एक वरदान है जिन्हें बहुत बड़े डेटा सेट को संसाधित करने की आवश्यकता है। अब तक,
pandas
तुलना में एकमात्र माइनस
datatable
कार्यक्षमता की मात्रा है। हालाँकि,
datatable
पर सक्रिय काम
datatable
, इसलिए यह बहुत संभव है कि भविष्य में,
datatable
सभी दिशाओं में
pandas
से आगे
datatable
जाएगा।
प्रिय पाठकों! क्या आप अपनी परियोजनाओं में
datatable
पैकेज का उपयोग करने की योजना बना रहे हैं?

