हालांकि डेटाबेस डेटा को स्टोर करने और उन्हें क्वेरी लैंग्वेज का उपयोग करके क्वेरी करने के लिए बहुत प्रभावी तरीके प्रदान करते हैं, डेटा प्रोसेसिंग का सबसे लचीला तरीका अपना प्रोग्राम लिखना है। कई मामलों में, डेटाबेस क्वेरी करना अधिक प्रभावी हो सकता है। लेकिन कुछ मामलों में जब अधिक जटिल डेटा प्रोसेसिंग की आवश्यकता होती है, तो इसे SQL का उपयोग करके आसानी से नहीं किया जा सकता।
डेटा प्रोसेसिंग किसी भी प्रोग्रामिंग भाषा में की जा सकती है, लेकिन कुछ भाषाएँ डेटा के साथ काम करने के लिए उच्च स्तर की होती हैं। डेटा वैज्ञानिक आमतौर पर निम्नलिखित भाषाओं में से एक को प्राथमिकता देते हैं:
जबकि डेटाबेस डेटा संग्रहित करने और उन्हें क्वेरी भाषाओं के जरिए क्वेरी करने के लिए बहुत कुशल तरीके प्रदान करते हैं, डेटा प्रसंस्करण का सबसे लचीला तरीका अपना स्वयं का प्रोग्राम लिखना है। कई मामलों में, डेटाबेस क्वेरी करना अधिक प्रभावी तरीका होगा। हालांकि कुछ मामलों में जब अधिक जटिल डेटा प्रसंस्करण की आवश्यकता होती है, तो इसे आसानी से SQL के साथ नहीं किया जा सकता।
डेटा प्रसंस्करण किसी भी प्रोग्रामिंग भाषा में प्रोग्राम किया जा सकता है, लेकिन कुछ भाषाएँ डेटा के साथ काम करने के संदर्भ में उच्च स्तरीय हैं। डेटा वैज्ञानिक आमतौर पर निम्नलिखित भाषाओं में से किसी एक को पसंद करते हैं:
* **[Python](https://www.python.org/)**, एक सामान्य-उद्देश्य प्रोग्रामिंग भाषा, जिसे इसकी सरलता के कारण अक्सर शुरुआती लोगों के लिए सबसे अच्छा विकल्प माना जाता है। Python में कई अतिरिक्त लाइब्रेरी हैं जो आपको कई व्यावहारिक समस्याओं को हल करने में मदद कर सकती हैं, जैसे ZIP आर्काइव से डेटा निकालना या तस्वीर को ग्रेस्केल में बदलना। डेटा साइंस के अलावा, Python का उपयोग वेब डेवलपमेंट के लिए भी किया जाता है।
* **[R](https://www.r-project.org/)** एक पारंपरिक टूलबॉक्स है जिसे सांख्यिकीय डेटा प्रोसेसिंग के लिए विकसित किया गया है। इसमें लाइब्रेरी का बड़ा संग्रह (CRAN) है, जो इसे डेटा प्रोसेसिंग के लिए एक अच्छा विकल्प बनाता है। हालांकि, R एक सामान्य-उद्देश्य प्रोग्रामिंग भाषा नहीं है और इसे डेटा साइंस के क्षेत्र के बाहर शायद ही कभी उपयोग किया जाता है।
* **[Julia](https://julialang.org/)** एक अन्य भाषा है जो विशेष रूप से डेटा साइंस के लिए विकसित की गई है। इसे Python की तुलना में बेहतर प्रदर्शन देने के लिए डिज़ाइन किया गया है, जिससे यह वैज्ञानिक प्रयोगों के लिए एक बेहतरीन टूल बनता है।
* **[Python](https://www.python.org/)**, एक सर्व-उद्देश्यीय प्रोग्रामिंग भाषा, जिसे इसकी सरलता के कारण शुरुआती लोगों के लिए सर्वश्रेष्ठ विकल्पों में से एक माना जाता है। पायथन में कई अतिरिक्त लाइब्रेरीज़ हैं जो आपको कई व्यावहारिक समस्याओं को हल करने में मदद कर सकती हैं, जैसे ZIP आर्काइव से अपना डेटा निकालना, या चित्र को ग्रेस्केल में परिवर्तित करना। डेटा साइंस के अलावा, पायथन वेब विकास के लिए भी अक्सर उपयोग किया जाता है।
* **[R](https://www.r-project.org/)** एक पारंपरिक टूलबॉक्स है जो सांख्यिकीय डेटा प्रसंस्करण को ध्यान में रखकर विकसित किया गया है। इसमें बड़ी लाइब्रेरी रिपोजिटरी (CRAN) भी शामिल है, जो इसे डेटा प्रसंस्करण के लिए अच्छा विकल्प बनाती है। हालांकि, R एक सर्व-उद्देश्यीय प्रोग्रामिंग भाषा नहीं है और डेटा साइंस डोमेन के बाहर शायद ही कभी इस्तेमाल की जाती है।
* **[Julia](https://julialang.org/)** एक और भाषा है जो विशेष रूप से डेटा साइंस के लिए विकसित की गई है। इसका उद्देश्य पायथन की तुलना में बेहतर प्रदर्शन देना है, जिससे यह वैज्ञानिक प्रयोगों के लिए एक महान उपकरण है।
इस पाठ में, हम सरल डेटा प्रोसेसिंग के लिए Python का उपयोग करने पर ध्यान केंद्रित करेंगे। हम भाषा की बुनियादी जानकारी मानकर चलेंगे। यदि आप Python का गहन परिचय चाहते हैं, तो आप निम्नलिखित संसाधनों का उपयोग कर सकते हैं:
इस पाठ में, हम सरल डेटा प्रसंस्करण के लिए पायथन के उपयोग पर ध्यान केंद्रित करेंगे। हम भाषा की मूल परिचितता मानेंगे। यदि आप पायथन के गहरे परिचय चाहते हैं, तो आप निम्नलिखित संसाधनों में से किसी एक का संदर्भ ले सकते हैं:
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - Python प्रोग्रामिंग का GitHub-आधारित त्वरित परिचय कोर्स
* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn पर लर्निंग पाथ
* [कछुए ग्राफिक्स और फ्रैक्टल के साथ मजेदार तरीके से पायथन सीखें](https://github.com/shwars/pycourse) - पायथन प्रोग्रामिंग में जल्दी परिचय वाला GitHub आधारित कोर्स
* [पायथन के साथ अपने पहले कदम उठाएँ](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) पर लर्निंग पाथ
डेटा कई रूपों में आ सकता है। इस पाठ में, हम डेटा के तीन रूपों पर विचार करेंगे - **तालिका डेटा**, **पाठ** और **छवियाँ**।
डेटा कई रूपों में आ सकता है। इस पाठ में, हम तीन प्रकार के डेटा पर विचार करेंगे - **तालिकात्मक डेटा**, **पाठ्य** और **छवियाँ**।
हम संबंधित लाइब्रेरी का पूरा अवलोकन देने के बजाय डेटा प्रोसेसिंग के कुछ उदाहरणों पर ध्यान केंद्रित करेंगे। यह आपको यह समझने की अनुमति देगा कि क्या संभव है और जब आपको इसकी आवश्यकता हो तो अपनी समस्याओं के समाधान कहां से प्राप्त करें।
हम डेटा प्रसंस्करण के कुछ उदाहरणों पर ध्यान केंद्रित करेंगे, बजाय सभी संबंधित लाइब्रेरीज़ का पूरा अवलोकन देने के। इससे आपको संभव चीजों का मुख्य विचार मिलेगा, और जब आपको जरूरत होगी, तब आप अपने समस्याओं के समाधान कहाँ खोजने हैं यह समझ पाएंगे।
> **सबसे उपयोगी सलाह**। जब आपको डेटा पर कोई विशेष ऑपरेशन करने की आवश्यकता हो और आप नहीं जानते कि इसे कैसे करना है, तो इंटरनेट पर खोजने का प्रयास करें। [Stackoverflow](https://stackoverflow.com/) में अक्सर Python में कई सामान्य कार्यों के लिए उपयोगी कोड नमूने होते हैं।
> **सबसे उपयोगी सलाह**। जब आपको डेटा पर कोई विशिष्ट ऑपरेशन करना हो और आप न जानें कि कैसे करना है, तो इंटरनेट पर खोज करने की कोशिश करें। [Stackoverflow](https://stackoverflow.com/) आमतौर पर कई सामान्य कार्यों के लिए पायथन में उपयोगी कोड नमूने रखता है।
आप पहले ही तालिका डेटा से परिचित हो चुके हैं जब हमने रिलेशनल डेटाबेस के बारे में बात की थी। जब आपके पास बहुत सारा डेटा होता है और यह कई अलग-अलग लिंक्ड टेबल्स में होता है, तो SQL का उपयोग करना निश्चित रूप से समझ में आता है। हालांकि, कई मामलों में हमारे पास डेटा की एक तालिका होती है और हमें इस डेटा के बारे में कुछ **समझ** या **अवलोकन** प्राप्त करने की आवश्यकता होती है, जैसे वितरण, मानों के बीच सहसंबंध आदि। डेटा साइंस में, कई बार हमें मूल डेटा के कुछ रूपांतरण करने की आवश्यकता होती है, उसके बाद विज़ुअलाइज़ेशन। ये दोनों चरण Python का उपयोग करके आसानी से किए जा सकते हैं।
Python में तालिका डेटा से निपटने में मदद करने के लिए दो सबसे उपयोगी लाइब्रेरी हैं:
* **[Pandas](https://pandas.pydata.org/)** आपको तथाकथित **Dataframes** को हेरफेर करने की अनुमति देता है, जो रिलेशनल टेबल्स के समान होते हैं। आप नामित कॉलम रख सकते हैं और पंक्तियों, कॉलम और डेटा फ्रेम्स पर विभिन्न ऑपरेशन कर सकते हैं।
* **[Numpy](https://numpy.org/)** **टेंसर**, यानी बहु-आयामी **arrays** के साथ काम करने के लिए एक लाइब्रेरी है। Array में समान प्रकार के मान होते हैं और यह डेटा फ्रेम की तुलना में सरल होता है, लेकिन यह अधिक गणितीय ऑपरेशन प्रदान करता है और कम ओवरहेड बनाता है।
## तालिकात्मक डेटा और डाटाफ्रेम
कुछ अन्य लाइब्रेरी भी हैं जिन्हें आपको जानना चाहिए:
* **[Matplotlib](https://matplotlib.org/)** डेटा विज़ुअलाइज़ेशन और ग्राफ़ प्लॉटिंग के लिए उपयोग की जाने वाली लाइब्रेरी
* **[SciPy](https://www.scipy.org/)** कुछ अतिरिक्त वैज्ञानिक कार्यों वाली लाइब्रेरी। हमने पहले ही इस लाइब्रेरी का सामना किया है जब हमने संभावना और सांख्यिकी के बारे में बात की थी।
आपने तालिकात्मक डेटा से पहले ही परिचय लिया है जब हमने रिलेशनल डेटाबेस के बारे में बात की थी। जब आपके पास बहुत सारा डेटा होता है, और वह कई अलग-अलग जुड़े हुए टेबल्स में होता है, तो इसके साथ काम करने के लिए SQL का उपयोग करना निश्चित रूप से तर्कसंगत होता है। हालांकि, कई मामले ऐसे हैं जब हमारे पास केवल एक तालिका का डेटा होता है, और हमें इस डेटा के बारे में कुछ **समझ** या **जानकारी** प्राप्त करनी होती है, जैसे वितरण, मानों के बीच सहसंबंध आदि। डेटा साइंस में ऐसे कई मामले हैं जब हमें मूल डेटा का कुछ रूपांतरण करना होता है, उसके बाद विज़ुअलाइज़ेशन करना होता है। ये दोनों चरण पायथन का उपयोग करके आसानी से किए जा सकते हैं।
यहां एक कोड का टुकड़ा है जिसे आप आमतौर पर अपने Python प्रोग्राम की शुरुआत में इन लाइब्रेरी को आयात करने के लिए उपयोग करेंगे:
पायथन में दो सबसे उपयोगी लाइब्रेरीज़ हैं जो आपको तालिकात्मक डेटा से निपटने में मदद कर सकती हैं:
* **[Pandas](https://pandas.pydata.org/)** आपको तथाकथित **डाटाफ्रेम** को संभालने की अनुमति देती है, जो रिलेशनल टेबल्स के सामान होती हैं। आपके पास नामित कॉलम हो सकते हैं, और आप पंक्ति, कॉलम और डाटाफ्रेम के सामान्य रूप से विभिन्न ऑपरेशन कर सकते हैं।
* **[Numpy](https://numpy.org/)** एक लाइब्रेरी है **टेन्सर**, अर्थात् बहुआयामी **ऐरे** के साथ काम करने के लिए। ऐरे में समान मूल प्रकार के मान होते हैं, और यह डाटाफ्रेम की तुलना में सरल होता है, लेकिन यह अधिक गणितीय ऑपरेशन प्रदान करता है, और कम ओवरहेड बनाता है।
कुछ अन्य लाइब्रेरीज़ भी हैं जिनके बारे में आपको जानकारी होनी चाहिए:
* **[Matplotlib](https://matplotlib.org/)** डेटा विज़ुअलाइज़ेशन और ग्राफ़ बनाने के लिए इस्तेमाल की जाने वाली लाइब्रेरी है
* **[SciPy](https://www.scipy.org/)** कुछ अतिरिक्त वैज्ञानिक फ़ंक्शन वाली लाइब्रेरी है। हम इस लाइब्रेरी से पहले ही संभाव्यता और सांख्यिकी पर चर्चा करते हुए परिचित हो चुके हैं
यहाँ कोड का एक हिस्सा है जिसे आप आमतौर पर अपने पायथन प्रोग्राम की शुरुआत में इन लाइब्रेरीज़ को आयात करने के लिए उपयोग करेंगे:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
from scipy import ... # आपको सही उप-पैकेज निर्दिष्ट करने होंगे जिनकी आपको आवश्यकता है
```
Pandas कुछ बुनियादी अवधारणाओं के इर्द-गिर्द केंद्रित है।
पांडा कुछ मूलभूत अवधारणाओं के चारों ओर केंद्रित है।
### सीरीज़
**सीरीज़** मानों का एक अनुक्रम है, जो सूची या numpy array के समान है। मुख्य अंतर यह है कि सीरीज़ में एक **इंडेक्स** भी होता है, और जब हम सीरीज़ पर ऑपरेशन करते हैं (जैसे, उन्हें जोड़ते हैं), तो इंडेक्स को ध्यान में रखा जाता है। इंडेक्स उतना ही सरल हो सकता है जितना कि पूर्णांक पंक्ति संख्या (यह वह इंडेक्स है जिसका उपयोग सूची या array से सीरीज़ बनाते समय डिफ़ॉल्ट रूप से किया जाता है), या इसमें जटिल संरचना हो सकती है, जैसे कि तारीख अंतराल।
**सीरीज़** मानों का एक अनुक्रम है, जो सूची या numpy ऐरे के समान है। मुख्य अंतर यह है कि सीरीज़ के साथ एक **इंडेक्स** भी होता है, और जब हम सीरीज़ पर ऑपरेशन करते हैं (जैसे, उन्हें जोड़ना), तो इंडेक्स को ध्यान में रखा जाता है। इंडेक्स उतना ही सरल हो सकता है जितना पूर्णांक पंक्ति संख्या (यह डिफ़ॉल्ट इंडेक्स होता है जब सूची या ऐरे से सीरीज़ बनाते हैं), या यह जटिल संरचना हो सकती है, जैसे तारीख अंतराल।
> **ध्यान दें**: साथ में दिए गए नोटबुक [`notebook.ipynb`](notebook.ipynb) में कुछ प्रारंभिक Pandas कोड हैं। हम यहां केवल कुछ उदाहरणों को रेखांकित करते हैं, और आप निश्चित रूप से पूरे नोटबुक को देख सकते हैं।
> **नोट**: सहायक नोटबुक [`notebook.ipynb`](notebook.ipynb) में कुछ प्रारंभिक पांडा कोड दिया गया है। हम केवल कुछ उदाहरण यहाँ रेखांकित करते हैं, और आप निश्चित रूप से पूरी नोटबुक देख सकते हैं।
एक उदाहरण पर विचार करें: हम अपनी आइसक्रीम दुकान की बिक्री का विश्लेषण करना चाहते हैं। आइए कुछ समय अवधि के लिए बिक्री संख्या (प्रत्येक दिन बेची गई वस्तुओं की संख्या) की एक सीरीज़ बनाएं:
एक उदाहरण पर विचार करें: हम अपने आइस-क्रीम के स्थान की बिक्री का विश्लेषण करना चाहते हैं। आइए किसी समय अवधि के लिए बिक्री की संख्या (हर दिन बेचे गए आइटम की संख्या) की एक सीरीज़ बनाएं:
अब मान लें कि हर सप्ताह हम दोस्तों के लिए एक पार्टी आयोजित कर रहे हैं और पार्टी के लिए अतिरिक्त 10 पैक आइसक्रीम लेते हैं। हम इसे दिखाने के लिए सप्ताह द्वारा इंडेक्स की गई एक और सीरीज़ बना सकते हैं:
अब मान लीजिए कि हर सप्ताह हम दोस्तों के लिए एक पार्टी का आयोजन करते हैं, और पार्टी के लिए अतिरिक्त 10 पैक आइस-क्रीम लेते हैं। हम एक और सीरीज बना सकते हैं, जो सप्ताह द्वारा अनुक्रमित है, ताकि इसे दर्शाया जा सके:
> **ध्यान दें** कि हम साधारण सिंटैक्स `total_items+additional_items` का उपयोग नहीं कर रहे हैं। यदि हमने ऐसा किया होता, तो हमें परिणामी सीरीज़ में कई `NaN` (*Not a Number*) मान प्राप्त होते। ऐसा इसलिए है क्योंकि `additional_items` सीरीज़ में कुछ इंडेक्स पॉइंट्स के लिए मान गायब हैं, और किसी भी चीज़ में `NaN` जोड़ने से `NaN` मिलता है। इसलिए हमें जोड़ने के दौरान `fill_value` पैरामीटर निर्दिष्ट करने की आवश्यकता होती है।
> **ध्यान दें** कि हम सरल सिंटैक्स `total_items+additional_items` का उपयोग नहीं कर रहे हैं। यदि हम ऐसा करते, तो हमें परिणामी सीरीज में कई `NaN` (*नॉट अ नंबर*) मान मिलते। इसका कारण यह है कि `additional_items` सीरीज़ में कुछ इंडेक्स बिंदुओं के लिए मान गायब हैं, और `NaN` में कुछ जोड़ने पर परिणाम `NaN` होता है। इसलिए हमें जोड़ते समय `fill_value` पैरामीटर निर्दिष्ट करना होगा।
टाइम सीरीज़ के साथ, हम विभिन्न समय अंतरालों के साथ सीरीज़ को **पुन: नमूना** कर सकते हैं। उदाहरण के लिए, मान लें कि हम मासिक औसत बिक्री मात्रा की गणना करना चाहते हैं। हम निम्नलिखित कोड का उपयोग कर सकते हैं:
समय श्रृंखला के साथ, हम श्रृंखला को विभिन्न समय अंतरालों से भी **पुनः नमूने** कर सकते हैं। उदाहरण के लिए, मान लीजिए कि हम मासिक औसत बिक्री मात्रा की गणना करना चाहते हैं। हम निम्नलिखित कोड का उपयोग कर सकते हैं:
यहां `.T` डेटा फ्रेम को ट्रांसपोज़ करने का ऑपरेशन है, यानी पंक्तियों और कॉलम को बदलना, और `rename` ऑपरेशन हमें कॉलम को पिछले उदाहरण से मेल खाने के लिए नाम बदलने की अनुमति देता है।
यहाँ `.T` डाटाफ्रेम को ट्रांसपोज़ करने का ऑपरेशन है, अर्थात् पंक्तियों और कॉलमों को बदलना, और `rename` ऑपरेशन हमें कॉलम का नाम पिछली उदाहरण के समान करने की अनुमति देता है।
यहां कुछ सबसे महत्वपूर्ण ऑपरेशन हैं जिन्हें हम डेटा फ्रेम्स पर कर सकते हैं:
यहां कुछ सबसे महत्वपूर्ण ऑपरेशन हैं जो हम डाटाफ्रेम पर कर सकते हैं:
**कॉलम चयन**। हम व्यक्तिगत कॉलम का चयन `df['A']` लिखकर कर सकते हैं - यह ऑपरेशन एक सीरीज़ लौटाता है। हम कॉलम के एक उपसमुच्चय को दूसरे डेटा फ्रेम में `df[['B','A']]` लिखकर भी चुन सकते हैं - यह एक और डेटा फ्रेम लौटाता है।
**कॉलम चयन**। हम `df['A']` लिखकर व्यक्तिगत कॉलम चुन सकते हैं - यह ऑपरेशन एक सीरीज़ लौटाता है। हम कॉलम के उपसमूह को दूसरे डाटाफ्रेम में भी चुन सकते हैं, जैसे `df[['B','A']]` लिखकर - यह दूसरा डाटाफ्रेम लौटाता है।
**केवल कुछ पंक्तियों को फ़िल्टर करना**। उदाहरण के लिए, कॉलम `A` के साथ केवल उन पंक्तियों को छोड़ने के लिए जो 5 से अधिक हैं, हम लिख सकते हैं `df[df['A']>5]`।
केवल कुछ पंक्तियों को चुनना फ़िल्टरिंग है। उदाहरण के लिए, कॉलम `A` जहाँ मान 5 से बड़े हों, केवल वे पंक्तियां रखने के लिए हम लिख सकते हैं `df[df['A']>5]`।
> **ध्यान दें**: फ़िल्टरिंग इस प्रकार काम करती है। अभिव्यक्ति `df['A']<5` एक बूलियन सीरीज़ लौटाती है, जो इंगित करती है कि मूल सीरीज़ `df['A']` के प्रत्येक तत्व के लिए अभिव्यक्ति `True` या `False` है। जब बूलियन सीरीज़ को इंडेक्स के रूप में उपयोग किया जाता है, तो यह डेटा फ्रेम में पंक्तियों का उपसमुच्चय लौटाती है। इसलिए किसी भी मनमाने Python बूलियन अभिव्यक्ति का उपयोग करना संभव नहीं है, उदाहरण के लिए, लिखना`df[df['A']>5 and df['A']<7]` गलत होगा। इसके बजाय, आपको बूलियन सीरीज़ पर विशेष `&` ऑपरेशन का उपयोग करना चाहिए, जैसे लिखना `df[(df['A']>5) & (df['A']<7)]` (*ब्रैकेट्स यहां महत्वपूर्ण हैं*)।
> **नोट**: फिल्टरिंग का तरीका यह है। अभिव्यक्ति `df['A']<5` एक बूलियन सीरीज़ लौटाती है, जो दिखाती है कि प्रत्येक तत्व के लिए यह अभिव्यक्ति `True`है या `False`। जब बूलियन सीरीज़ को इंडेक्स के रूप में उपयोग किया जाता है, तो यह डाटाफ्रेम में पंक्तियों का उपसमूह लौटाता है। इसलिए मनमाना पायथन बूलियन अभिव्यक्ति उपयोग करना संभव नहीं है, उदाहरण के लिए, `df[df['A']>5 and df['A']<7]` गलत होगा। इसके बजाय, आपको विशेष `&` ऑपरेशन का उपयोग करना चाहिए, जैसे `df[(df['A']>5) & (df['A']<7)]` (*कोष्ठक महत्वपूर्ण हैं*).
**नए गणनीय कॉलम बनाना**। हम अपने डेटा फ्रेम के लिए नए गणनीय कॉलम आसानी से बना सकते हैं, जैसे:
**नए गणनात्मक कॉलम बनाना**। हम सहज अभिव्यक्तियों का उपयोग करके अपने डाटाफ्रेम के लिए नए गणनात्मक कॉलम आसानी से बना सकते हैं:
```python
df['DivA'] = df['A']-df['A'].mean()
```
यह उदाहरण A के उसके औसत मान से विचलन की गणना करता है। यहां वास्तव में होता यह है कि हम एक सीरीज़ की गणना कर रहे हैं और फिर इस सीरीज़ को बाईं ओर असाइन कर रहे हैं, एक नया कॉलम बना रहे हैं। इसलिए, हम किसी भी ऑपरेशन का उपयोग नहीं कर सकते जो सीरीज़ के साथ संगत नहीं है, उदाहरण के लिए, नीचे दिया गया कोड गलत है:
```
यह उदाहरण A के मध्य मान से विचलन की गणना करता है। वास्तव में यहां जो हो रहा है वह यह है कि हम एक सीरीज़ की गणना कर रहे हैं, और फिर इस सीरीज़ को बाएं तरफ असाइन कर रहे हैं, एक नया कॉलम बना रहे हैं। इसलिए, हम ऐसे ऑपरेशन का उपयोग नहीं कर सकते जो सीरीज़ के साथ संगत नहीं हों, उदाहरण के लिए, नीचे दिया गया कोड गलत है:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Wrongresult
```
हालांकि यह उदाहरण सिंटैक्टिक रूप से सही है, यह हमें गलत परिणाम देता है क्योंकि यह कॉलम में सभी मानों को सीरीज़`B` की लंबाई असाइन करता है, न कि व्यक्तिगत तत्वों की लंबाई जैसा कि हमने इरादा किया था।
# गलत कोड -> df['ADescr'] = "Low" यदि df['A'] <5तोअन्यथा"Hi"
df['LenB'] = len(df['B']) # <-गलतपरिणाम
```
बाद वाला उदाहरण, यद्यपि सिन्टैक्टिक रूप से सही है, गलत परिणाम देता है, क्योंकि यह कॉलम में सभी मानों को सीरीज `B` की लंबाई असाइन करता है, न कि व्यक्तिगत तत्वों की लंबाई जैसा हमने सोचा था।
यदि हमें इस तरह के जटिल अभिव्यक्तियों की गणना करने की आवश्यकता है, तो हम `apply` फ़ंक्शन का उपयोग कर सकते हैं। अंतिम उदाहरण को निम्नलिखित रूप में लिखा जा सकता है:
यदि हमें इस तरह की जटिल अभिव्यक्तियाँ गणना करनी हों, तो हम `apply` फ़ंक्शन का उपयोग कर सकते हैं। अंतिम उदाहरण को इस प्रकार लिखा जा सकता है:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# या
df['LenB'] = df['B'].apply(len)
```
```
ऊपर दिए गए ऑपरेशन के बाद, हमारे पास निम्नलिखित डेटा फ्रेम होगा:
उपरोक्त ऑपरेशनों के बाद, हमारे पास निम्नलिखित डाटाफ्रेम होगा:
**संख्या के आधार पर पंक्तियों का चयन करना** `iloc` निर्माण का उपयोग करके किया जा सकता है। उदाहरण के लिए, डेटा फ्रेम से पहली 5 पंक्तियों का चयन करने के लिए:
**संख्याओं के आधार पर पंक्तियाँ चुनना** `iloc` संरचना के उपयोग से किया जा सकता है। उदाहरण के लिए, डाटाफ्रेम से पहली 5 पंक्तियाँ चुनने के लिए:
```python
df.iloc[:5]
```
```
**समूह बनाना** अक्सर Excel में *पिवट टेबल्स* के समान परिणाम प्राप्त करने के लिए उपयोग किया जाता है। मान लें कि हम `LenB` की प्रत्येक संख्या के लिए कॉलम `A` का औसत मान गणना करना चाहते हैं। फिर हम अपने डेटा फ्रेम को `LenB` द्वारा समूहित कर सकते हैं और `mean` कॉल कर सकते हैं:
**ग्रुपिंग** अक्सर *पिवट टेबल* जैसा परिणाम प्राप्त करने के लिए की जाती है। मान लीजिए कि हम प्रत्येक `LenB` मान के लिए कॉलम `A` का औसत मान निकालना चाहते हैं। तब हम अपने डाटाफ्रेम को `LenB` के आधार पर समूहित कर सकते हैं, और `mean` कॉल कर सकते हैं:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
यदि हमें समूह में औसत और तत्वों की संख्या की गणना करनी है, तो हम अधिक जटिल `aggregate` फ़ंक्शन का उपयोग कर सकते हैं:
```
यदि हमें समूह में औसत और तत्वों की संख्या दोनों निकालनी हों, तो हम अधिक जटिल `aggregate` फ़ंक्शन का उपयोग कर सकते हैं:
हमने देखा कि Python ऑब्जेक्ट्स से Series और DataFrames बनाना कितना आसान है। हालांकि, डेटा आमतौर पर टेक्स्ट फाइल या Excel टेबल के रूप में आता है। सौभाग्य से, Pandas हमें डिस्क से डेटा लोड करने का एक सरल तरीका प्रदान करता है। उदाहरण के लिए, CSV फाइल पढ़ना इतना आसान है:
हमने देखा है कि Python ऑब्जेक्ट्स से Series और DataFrames बनाना कितना आसान है। हालांकि, डेटा सामान्यतः एक टेक्स्ट फ़ाइल या Excel तालिका के रूप में आता है। सौभाग्य से, Pandas हमें डिस्क से डेटा लोड करने का एक सरल तरीका प्रदान करता है। उदाहरण के लिए, CSV फ़ाइल पढ़ना इस तरह सरल है:
```python
df = pd.read_csv('file.csv')
```
हम "Challenge" सेक्शन में डेटा लोड करने के और उदाहरण देखेंगे, जिसमें बाहरी वेबसाइटों से डेटा प्राप्त करना भी शामिल है।
हम "Challenge" सेक्शन में बाहरी वेब साइटों से डेटा प्राप्त करने सहित डेटा लोड करने के और उदाहरण देखेंगे
### प्रिंटिंग और प्लॉटिंग
एक डेटा वैज्ञानिक को अक्सर डेटा का विश्लेषण करना होता है, इसलिए इसे विज़ुअलाइज़ करने में सक्षम होना महत्वपूर्ण है। जब DataFrame बड़ा होता है, तो कई बार हम केवल यह सुनिश्चित करना चाहते हैं कि हम सब कुछ सही तरीके से कर रहे हैं, इसके लिए पहले कुछ पंक्तियों को प्रिंट करना उपयोगी होता है। इसे `df.head()` कॉल करके किया जा सकता है। यदि आप इसे Jupyter Notebook से चला रहे हैं, तो यह DataFrame को एक सुंदर टेबल के रूप में प्रिंट करेगा।
एक डेटा वैज्ञानिक को अक्सर डेटा का अन्वेषण करना होता है, इसलिए इसे विज़ुअलाइज़ करने में सक्षम होना महत्वपूर्ण है। जब DataFrame बड़ा होता है, तो कई बार हम केवल यह सुनिश्चित करना चाहते हैं कि हम सब कुछ सही कर रहे हैं, इसे पहली कुछ पंक्तियाँ प्रिंट करके। यह `df.head()` को कॉल करके किया जा सकता है। यदि आप इसे Jupyter Notebook से चला रहे हैं, तो यह DataFrame को एक सुंदर सारणीबद्ध रूप में प्रिंट करेगा।
हमने कुछ कॉलम को विज़ुअलाइज़ करने के लिए `plot` फ़ंक्शन का उपयोग भी देखा है। जबकि `plot` कई कार्यों के लिए बहुत उपयोगी है और `kind=` पैरामीटर के माध्यम से कई प्रकार के ग्राफ़ को सपोर्ट करता है, आप हमेशा कुछ अधिक जटिल प्लॉट करने के लिए raw`matplotlib` लाइब्रेरी का उपयोग कर सकते हैं। हम डेटा विज़ुअलाइज़ेशन को अलग पाठों में विस्तार से कवर करेंगे।
हमने कुछ स्तंभों को विज़ुअलाइज़ करने के लिए `plot` फ़ंक्शन का उपयोग भी देखा है। जबकि `plot` कई कार्यों के लिए बहुत उपयोगी है, और `kind=` पैरामीटर के माध्यम से कई ग्राफ़ प्रकारों का समर्थन करता है, आप हमेशा कुछ अधिक जटिल प्लॉट करने के लिए कच्ची`matplotlib` लाइब्रेरी का उपयोग कर सकते हैं। हम डेटा विज़ुअलाइज़ेशन को अलग कोर्स के अध्ययनों में विस्तार से कवर करेंगे।
यह अवलोकन Pandas के सबसे महत्वपूर्ण अवधारणाओं को कवर करता है, हालांकि, यह लाइब्रेरी बहुत समृद्ध है, और इसके साथ आप जो कर सकते हैं उसकी कोई सीमा नहीं है! अब चलिए इस ज्ञान का उपयोग करके एक विशिष्ट समस्या को हल करते हैं।
यह अवलोकन Pandas के सबसे महत्वपूर्ण अवधारणाओं को कवर करता है, हालांकि, यह लाइब्रेरी बहुत समृद्ध है, और आप इसके साथ जो कुछ भी कर सकते हैं उसकी कोई सीमा नहीं है! आइए अब इस ज्ञान को किसी विशिष्ट समस्या को हल करने के लिए लागू करें।
## 🚀 चैलेंज 1: COVID फैलाव का विश्लेषण
## 🚀 चुनौती 1: COVID फैलाव का विश्लेषण
पहली समस्या जिस पर हम ध्यान केंद्रित करेंगे वह है COVID-19 महामारी के फैलाव का मॉडलिंग। ऐसा करने के लिए, हम विभिन्न देशों में संक्रमित व्यक्तियों की संख्या पर डेटा का उपयोग करेंगे, जिसे [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) द्वारा [Johns Hopkins University](https://jhu.edu/) में प्रदान किया गया है। यह डेटा [इस GitHub Repository](https://github.com/CSSEGISandData/COVID-19) में उपलब्ध है।
पहली समस्या जिस पर हम ध्यान केंद्रित करेंगे वह COVID-19 के महामारी फैलाव का मॉडलिंग है। ऐसा करने के लिए, हम अलग-अलग देशों में संक्रमित व्यक्तियों की संख्या पर डेटा का उपयोग करेंगे, जो [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) द्वारा [Johns Hopkins University](https://jhu.edu/) में प्रदान किया गया है। डेटा सेट [इस GitHub रिपॉजिटरी](https://github.com/CSSEGISandData/COVID-19) में उपलब्ध है।
चूंकि हम दिखाना चाहते हैं कि डेटा के साथ कैसे काम किया जाए, हम आपको [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) खोलने और इसे ऊपर से नीचे तक पढ़ने के लिए आमंत्रित करते हैं। आप सेल्स को भी चला सकते हैं और अंत में छोड़े गए कुछ चैलेंज को हल कर सकते हैं।
चूंकि हम डेटा के साथ काम करने का तरीका दिखाना चाहते हैं, इसलिए हम आपको [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) खोलने और इसे ऊपर से नीचे तक पढ़ने के लिए आमंत्रित करते हैं। आप सेल भी निष्पादित कर सकते हैं, और कुछ चुनौतियां कर सकते हैं जो हमने अंत में आपके लिए छोड़ी हैं।
> यदि आपको Jupyter Notebook में कोड चलाने का तरीका नहीं पता है, तो [इस लेख](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) को देखें।
> यदि आप नहीं जानते कि Jupyter Notebook में कोड कैसे चलाएं, तो [इस लेख](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) को देखें।
## असंरचित डेटा के साथ काम करना
हालांकि डेटा अक्सर टेबल के रूप में आता है, कुछ मामलों में हमें कम संरचित डेटा के साथ काम करना पड़ता है, जैसे टेक्स्ट या इमेज। इस स्थिति में, ऊपर देखी गई डेटा प्रोसेसिंग तकनीकों को लागू करने के लिए, हमें किसी तरह **संरचित** डेटा निकालना होता है। यहां कुछ उदाहरण दिए गए हैं:
जबकि डेटा अक्सर सारणीबद्ध रूप में आता है, कुछ मामलों में हमें कम संरचित डेटा से निपटने की आवश्यकता होती है, जैसे टेक्स्ट या चित्र। इस मामले में, डेटा प्रोसेसिंग तकनीकों को लागू करने के लिए हमें कुछ तरह से संरचित डेटा **निकालना** होगा। यहाँ कुछ उदाहरण हैं:
* टेक्स्ट से कीवर्ड निकालना और यह देखना कि वे कितनी बार दिखाई देते हैं
* तस्वीर में वस्तुओं के बारे में जानकारी निकालने के लिए न्यूरल नेटवर्क का उपयोग करना
* वीडियो कैमरा फीड पर लोगों की भावनाओं की जानकारी प्राप्त करना
* टेक्स्ट से कीवर्ड निकालना, और देखना कि वे कीवर्ड कितनी बार प्रकट होते हैं
* चित्र पर वस्तुओं के बारे में जानकारी निकालने के लिए न्यूरल नेटवर्क्स का उपयोग करना
* वीडियो कैमरा फ़ीड पर लोगों के भावनाओं की जानकारी प्राप्त करना
## 🚀 चैलेंज 2: COVID पेपर्स का विश्लेषण
## 🚀 चुनौती 2: COVID पेपर्स का विश्लेषण
इस चैलेंज में, हम COVID महामारी के विषय को जारी रखेंगे और इस विषय पर वैज्ञानिक पेपर्स को प्रोसेस करने पर ध्यान केंद्रित करेंगे। [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) में 7000 से अधिक (लेखन के समय) COVID पर पेपर्स उपलब्ध हैं, जिनमें मेटाडेटा और एब्स्ट्रैक्ट्स शामिल हैं (और लगभग आधे के लिए पूरा टेक्स्ट भी उपलब्ध है)।
इस चुनौती में, हम COVID महामारी के विषय पर वैज्ञानिक पेपर्स के प्रसंस्करण पर केंद्रित रहेंगे। वहाँ [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) है जिसमें COVID पर 7000 से अधिक पेपर्स (लेखन के समय) उपलब्ध हैं, मेटाडेटा और सारांश के साथ (और उनके आधे के लिए पूरी पाठ सामग्री भी प्रदान की गई है)।
इस डेटासेट का विश्लेषण करने का एक पूरा उदाहरण [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) कॉग्निटिव सर्विस का उपयोग करके [इस ब्लॉग पोस्ट](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) में वर्णित है। हम इस विश्लेषण का एक सरल संस्करण चर्चा करेंगे।
इस डेटासेट का विश्लेषण करने का एक पूर्ण उदाहरण [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) संज्ञानात्मक सेवा का उपयोग कर [इस ब्लॉग पोस्ट में वर्णित](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) है। हम इस विश्लेषण के सरल संस्करण पर चर्चा करेंगे।
> **NOTE**: हम इस रिपॉजिटरी के हिस्से के रूप में डेटा सेट की एक प्रति प्रदान नहीं करते हैं। आपको पहले [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) फाइल को [इस Kaggle डेटा सेट](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) से डाउनलोड करना पड़ सकता है। Kaggle पर पंजीकरण आवश्यक हो सकता है। आप बिना पंजीकरण के [यहां से](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) डेटा सेट डाउनलोड कर सकते हैं, लेकिन इसमें मेटाडेटा फाइल के अलावा सभी पूर्ण टेक्स्ट शामिल होंगे।
> **NOTE**: हम इस रिपॉजिटरी का हिस्सा के रूप में डेटासेट की प्रति प्रदान नहीं करते हैं। आपको पहले [इस Kaggle डेटासेट](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) से [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) फ़ाइल डाउनलोड करनी पड़ सकती है। Kaggle पर पंजीकरण आवश्यक हो सकता है। आप बिना पंजीकरण के भी डेटासेट [यहाँ से](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) डाउनलोड कर सकते हैं, लेकिन यह मेटाडेटा फ़ाइल के अलावा सभी पूरी पाठ सामग्री भी शामिल होगी।
[`notebook-papers.ipynb`](notebook-papers.ipynb) खोलें और इसे ऊपर से नीचे तक पढ़ें। आप सेल्स को भी चला सकते हैं और अंत में छोड़े गए कुछ चैलेंज को हल कर सकते हैं।
[`notebook-papers.ipynb`](notebook-papers.ipynb) खोलें और इसे ऊपर से नीचे तक पढ़ें। आप सेल निष्पादित भी कर सकते हैं, और कुछ चुनौतियां कर सकते हैं जो हमने अंत में आपके लिए छोड़ी हैं।

## इमेज डेटा प्रोसेसिंग
## इमेज डेटा का प्रसंस्करण
हाल ही में, बहुत शक्तिशाली AI मॉडल विकसित किए गए हैं जो हमें इमेज को समझने की अनुमति देते हैं। कई कार्य हैं जिन्हें प्री-ट्रेंड न्यूरल नेटवर्क या क्लाउड सर्विसेज का उपयोग करके हल किया जा सकता है। कुछ उदाहरण शामिल हैं:
हाल ही में, बहुत शक्तिशाली AI मॉडल विकसित किए गए हैं जो हमें छवियों को समझने की अनुमति देते हैं। कई कार्य हैं जिन्हें प्री-ट्रेंड न्यूरल नेटवर्क या क्लाउड सेवाओं का उपयोग करके हल किया जा सकता है। कुछ उदाहरण निम्नलिखित हैं:
* **इमेज क्लासिफिकेशन**, जो आपको इमेज को प्री-डिफाइंड क्लासेस में वर्गीकृत करने में मदद कर सकता है। आप [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) जैसी सेवाओं का उपयोग करके आसानी से अपना इमेज क्लासिफायर ट्रेन कर सकते हैं।
* **ऑब्जेक्ट डिटेक्शन** इमेज में विभिन्न वस्तुओं का पता लगाने के लिए। [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) जैसी सेवाएं कई सामान्य वस्तुओं का पता लगा सकती हैं, और आप [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) मॉडल को कुछ विशिष्ट वस्तुओं का पता लगाने के लिए ट्रेन कर सकते हैं।
* **फेस डिटेक्शन**, जिसमें उम्र, लिंग और भावनाओं का पता लगाना शामिल है। इसे [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) के माध्यम से किया जा सकता है।
* **इमेज वर्गीकरण**, जो आपको छवि को पूर्व-परिभाषित वर्गों में से एक में वर्गीकृत करने में मदद कर सकता है। आप [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) जैसी सेवाओं का उपयोग करके आसानी से अपनी स्वयं की इमेज क्लासीफायर ट्रेन कर सकते हैं।
* **ऑब्जेक्ट डिटेक्शन** छवि में विभिन्न वस्तुओं का पता लगाने के लिए। [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) जैसी सेवाएं कई सामान्य वस्तुओं का पता लगा सकती हैं, और आप कुछ विशिष्ट इच्छित वस्तुओं का पता लगाने के लिए [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) मॉडल को प्रशिक्षित कर सकते हैं।
* **चेहरे का पता लगाना**, जिसमें आयु, लिंग और भावनाओं का पता लगाना शामिल है। यह [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) के माध्यम से किया जा सकता है।
इन सभी क्लाउड सेवाओं को [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) का उपयोग करके कॉल किया जा सकता है, और इस प्रकार इन्हें आपके डेटा एक्सप्लोरेशन वर्कफ़्लो में आसानी से शामिल किया जा सकता है।
ये सभी क्लाउड सेवाएं [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) का उपयोग करके बुलाई जा सकती हैं, और इसलिए इन्हें आपके डेटा अन्वेषण वर्कफ़्लो में आसानी से शामिल किया जा सकता है।
यहां इमेज डेटा स्रोतों से डेटा एक्सप्लोर करने के कुछ उदाहरण दिए गए हैं:
* ब्लॉग पोस्ट [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) में हम Instagram तस्वीरों का विश्लेषण करते हैं, यह समझने की कोशिश करते हैं कि कौन सी चीज़ें लोगों को तस्वीर पर अधिक लाइक्स देने के लिए प्रेरित करती हैं। हम पहले [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) का उपयोग करके तस्वीरों से अधिकतम जानकारी निकालते हैं, और फिर [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) का उपयोग करके एक व्याख्यात्मक मॉडल बनाते हैं।
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) में हम [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) का उपयोग करते हैं ताकि इवेंट्स की तस्वीरों में लोगों की भावनाओं को निकाला जा सके, यह समझने के लिए कि कौन सी चीज़ें लोगों को खुश करती हैं।
इमेज डेटा स्रोतों से डेटा अन्वेषण के कुछ उदाहरण यहाँ दिए गए हैं:
* ब्लॉग पोस्ट [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) में हम इंस्टाग्राम फ़ोटो का विश्लेषण करते हैं, यह समझने की कोशिश करते हैं कि लोग किन कारणों से किसी फ़ोटो को अधिक लाइक देते हैं। हम पहले [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) का उपयोग करके तस्वीरों से अधिकतम जानकारी निकालते हैं, और फिर [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) का उपयोग करके व्याख्यात्मक मॉडल बनाते हैं।
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) में हम [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) का उपयोग करके घटनाओं से लोगों की तस्वीरों में भावनाओं को निकालते हैं, ताकि यह समझा जा सके कि क्या लोगों को खुश करता है।
## निष्कर्ष
चाहे आपके पास संरचित या असंरचित डेटा हो, Python का उपयोग करके आप डेटा प्रोसेसिंग और समझने से संबंधित सभी चरणों को कर सकते हैं। यह डेटा प्रोसेसिंग का सबसे लचीला तरीका है, और यही कारण है कि अधिकांश डेटा वैज्ञानिक Python को अपना प्राथमिक उपकरण मानते हैं। यदि आप अपने डेटा साइंस यात्रा को गंभीरता से लेना चाहते हैं, तो Python को गहराई से सीखना एक अच्छा विचार हो सकता है!
चाहे आपके पास पहले से संरचित हो या असंरचित डेटा हो, Python का उपयोग करके आप डेटा प्रोसेसिंग और समझ से संबंधित सभी चरणों को कर सकते हैं। यह शायद डेटा प्रोसेसिंग का सबसे लचीला तरीका है, और यही कारण है कि अधिकांश डेटा वैज्ञानिक Python को अपना प्राथमिक उपकरण मानते हैं। यदि आप अपनी डेटा साइंस यात्रा के प्रति गंभीर हैं, तो Python को गहराई से सीखना शायद अच्छा विचार है!
## [पाठ के बाद क्विज़](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## समीक्षा और स्व-अध्ययन
## समीक्षा एवं स्व-अध्ययन
**पुस्तकें**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**ऑनलाइन संसाधन**
* आधिकारिक [10 मिनट में Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) ट्यूटोरियल
* [Pandas विज़ुअलाइज़ेशन पर दस्तावेज़](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* आधिकारिक [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) ट्यूटोरियल
* [Pandas विज़ुअलाइज़ेशन के लिए डॉक्युमेंटेशन](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Python सीखना**
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
* [Python के साथ अपने पहले कदम उठाएं](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn पर लर्निंग पाथ
* [Turtle Graphics और Fractals के साथ मज़ेदार तरीके से Python सीखें](https://github.com/shwars/pycourse)
* [Python के साथ अपनी पहली कदम उठाएं](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) पर सीखने का मार्ग
## असाइनमेंट
[ऊपर दिए गए चैलेंज के लिए अधिक विस्तृत डेटा अध्ययन करें](assignment.md)
[ऊपर दी गई चुनौतियों के लिए और विस्तार से डेटा अध्ययन करें](assignment.md)
## क्रेडिट्स
## क्रेडिट
यह पाठ [Dmitry Soshnikov](http://soshnikov.com) द्वारा ♥️ के साथ लिखा गया है।
इस पाठ को ♥️ के साथ [Dmitry Soshnikov](http://soshnikov.com) द्वारा लिखा गया है
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**अस्वीकरण**:
इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - PythonプログラミングのGitHubベースの簡易入門コース
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - GitHub上のPythonプログラミングのクイックイントロコース
* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) の学習パス
このデータセットを分析する完全な例は、[Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum)コグニティブサービスを使用して[このブログ記事](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)で説明されています。ここでは、この分析の簡略版を議論します。
[Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum)認知サービスを使ったこのデータセットの分析例は[こちらのブログ記事](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)で詳述されています。ここではこの分析の簡略版を扱います。
* [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/)というブログ記事では、Instagramの写真を探索し、人々が写真に多くの「いいね」を付ける理由を理解しようとしています。まず[Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum)を使用して写真から可能な限り多くの情報を抽出し、その後[Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum)を使用して解釈可能なモデルを構築します。
* ブログ記事[How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/)ではインスタグラムの写真を解析し、人々がどの写真に多くのいいねを付けるかを理解しようとしています。まず[computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum)を用いて写真からできるだけ多くの情報を抽出し、次に[Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum)を使って解釈可能なモデルを構築します。
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
* [Take your First Steps with Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learnの学習パス
데이터베이스는 데이터를 저장하고 쿼리 언어를 사용하여 데이터를 조회하는 데 매우 효율적인 방법을 제공하지만, 데이터 처리를 가장 유연하게 수행하는 방법은 직접 프로그램을 작성하여 데이터를 조작하는 것입니다. 많은 경우 데이터베이스 쿼리가 더 효과적인 방법일 수 있습니다. 하지만 더 복잡한 데이터 처리가 필요한 경우 SQL로 쉽게 처리할 수 없는 경우도 있습니다.
데이터 처리는 어떤 프로그래밍 언어로도 작성할 수 있지만, 데이터 작업에 있어 더 높은 수준의 언어들이 있습니다. 데이터 과학자들은 일반적으로 다음 언어들 중 하나를 선호합니다:
데이터베이스는 데이터를 저장하고 쿼리 언어로 조회하는 매우 효율적인 방법을 제공하지만, 가장 유연한 데이터 처리 방법은 데이터를 조작하는 자신만의 프로그램을 작성하는 것입니다. 많은 경우 데이터베이스 쿼리를 사용하는 것이 더 효과적일 수 있습니다. 하지만 더 복잡한 데이터 처리가 필요할 때는 SQL로 쉽게 처리할 수 없는 경우도 있습니다.
데이터 처리는 어떤 프로그래밍 언어로도 할 수 있지만, 데이터 작업에 관해 더 높은 수준의 언어들이 있습니다. 데이터 과학자들은 일반적으로 다음 언어들 중 하나를 선호합니다:
* **[Python](https://www.python.org/)**: 범용 프로그래밍 언어로, 그 간단함 때문에 초보자에게 가장 적합한 옵션 중 하나로 간주됩니다. Python은 ZIP 아카이브에서 데이터를 추출하거나 이미지를 그레이스케일로 변환하는 등 많은 실용적인 문제를 해결할 수 있는 추가 라이브러리를 많이 제공합니다. 데이터 과학 외에도 Python은 웹 개발에도 자주 사용됩니다.
* **[R](https://www.r-project.org/)**: 통계 데이터 처리를 염두에 두고 개발된 전통적인 도구입니다. R은 대규모 라이브러리 저장소(CRAN)를 포함하고 있어 데이터 처리에 적합한 선택입니다. 하지만 R은 범용 프로그래밍 언어가 아니며 데이터 과학 도메인 외에서는 거의 사용되지 않습니다.
* **[Julia](https://julialang.org/)**: 데이터 과학을 위해 특별히 개발된 또 다른 언어입니다. Python보다 더 나은 성능을 제공하도록 설계되어 과학적 실험에 적합한 도구입니다.
* **[Python](https://www.python.org/)**, 범용 프로그래밍 언어로, 단순성 때문에 초보자에게 가장 좋은 선택 중 하나로 여겨집니다. Python은 ZIP 아카이브에서 데이터를 추출하거나 이미지를 그레이스케일로 변환하는 등 많은 실용적인 문제를 해결하는 데 도움이 되는 추가 라이브러리가 많습니다. 데이터 과학뿐 아니라 웹 개발에도 자주 사용됩니다.
* <strong>[R](https://www.r-project.org/)</strong>는 통계 데이터 처리에 중점을 두고 개발된 전통적인 도구 상자입니다. 라이브러리 저장소(CRAN)가 잘 갖춰져 있어 데이터 처리에 좋은 선택입니다. 그러나 R은 범용 프로그래밍 언어가 아니며, 데이터 과학 영역 밖에서는 거의 사용되지 않습니다.
* <strong>[Julia](https://julialang.org/)</strong>는 데이터 과학을 위해 특별히 개발된 또 다른 언어입니다. Python보다 더 나은 성능을 제공하도록 설계되어 과학 실험에 탁월한 도구입니다.
이번 강의에서는 Python을 사용한 간단한 데이터 처리에 초점을 맞출 것입니다. Python 언어에 대한 기본적인 친숙함을 가정합니다. Python에 대한 더 깊은 학습을 원한다면 다음 리소스를 참조할 수 있습니다:
이 강의에서는 간단한 데이터 처리를 위해 Python 사용에 초점을 맞춥니다. 기본적인 언어 익숙도를 가정합니다. 파이썬을 더 깊이 배우고 싶다면 다음 리소스 중 하나를 참고할 수 있습니다:
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - Python 프로그래밍에 대한 GitHub 기반의 빠른 입문 과정
* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)에서 제공하는 학습 경로
* [Turtle 그래픽과 프랙탈로 즐겁게 배우는 파이썬](https://github.com/shwars/pycourse) - GitHub 기반 파이썬 프로그래밍 빠른 입문 코스
* [파이썬 첫걸음 배우기](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn의 러닝 경로
데이터는 다양한 형태로 제공될 수 있습니다. 이번 강의에서는 **표 형식 데이터**, **텍스트**, **이미지**의 세 가지 형태의 데이터를 고려할 것입니다.
데이터는 다양한 형태로 올 수 있습니다. 이 강의에서는 **표형 데이터**, <strong>텍스트</strong>, <strong>이미지</strong> 세 가지 형태의 데이터를 살펴봅니다.
관련된 모든 라이브러리를 완벽히 다루기보다는 몇 가지 데이터 처리 예제에 집중할 것입니다. 이는 무엇이 가능한지에 대한 기본 아이디어를 얻고, 문제 발생 시 해결책을 찾는 방법을 이해하는 데 도움이 됩니다.
> **가장 유용한 조언**. 특정 데이터 연산을 수행할 줄 모를 때, 인터넷에서 검색해 보세요. [Stackoverflow](https://stackoverflow.com/)는 많은 전형적인 작업에 대해 유용한 파이썬 코드 샘플이 풍부합니다.
우리는 관련 라이브러리 전체를 다루는 대신 몇 가지 데이터 처리 예제에 집중할 것입니다. 이를 통해 가능한 작업의 주요 아이디어를 얻고, 필요할 때 문제 해결 방법을 찾을 수 있는 이해를 제공할 것입니다.
> **가장 유용한 조언**: 데이터를 처리하는 특정 작업을 수행해야 하지만 방법을 모를 경우 인터넷에서 검색해 보세요. [Stackoverflow](https://stackoverflow.com/)에는 많은 일반적인 작업에 대한 유용한 Python 코드 샘플이 포함되어 있습니다.
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## 표형식 데이터와 데이터프레임
## 표형 데이터와 데이터프레임
관계형 데이터베이스를 논의할 때 이미 표 형식 데이터를 접한 적이 있습니다. 많은 데이터가 있고 여러 개의 연결된 테이블에 포함되어 있다면 SQL을 사용하는 것이 확실히 합리적입니다. 하지만 데이터 과학에서는 데이터의 분포, 값 간의 상관관계 등 데이터를 이해하거나 통찰력을 얻어야 하는 경우가 많습니다. 또한 원본 데이터를 변환한 후 시각화를 수행해야 하는 경우도 많습니다. 이러한 단계는 Python을 사용하여 쉽게 수행할 수 있습니다.
관계형 데이터베이스에 대해 배울 때 이미 표형 데이터를 접했습니다. 데이터가 많고 여러 관련 테이블에 분산되어 있으면 SQL을 사용하는 것이 당연히 합리적입니다. 하지만 데이터가 하나의 테이블에 있고 분포, 값 간 상관관계 등 데이터를 <strong>이해</strong>하거나 <strong>통찰</strong>할 필요가 있는 경우가 많습니다. 데이터 과학에서는 원본 데이터를 변환하고 시각화하는 경우가 많으며, 이 두 단계 모두 파이썬으로 쉽게 수행할 수 있습니다.
Python에서 표 형식 데이터를 처리하는 데 유용한 두 가지 주요 라이브러리가 있습니다:
* **[Pandas](https://pandas.pydata.org/)**: **데이터프레임**을 조작할 수 있게 해주는 라이브러리로, 관계형 테이블과 유사합니다. 이름이 지정된 열을 가질 수 있으며, 행, 열 및 데이터프레임 전체에 대해 다양한 작업을 수행할 수 있습니다.
* **[Numpy](https://numpy.org/)**: **텐서**, 즉 다차원 **배열**을 처리하는 라이브러리입니다. 배열은 동일한 기본 유형의 값을 가지며 데이터프레임보다 간단하지만 더 많은 수학적 작업을 제공하며 오버헤드가 적습니다.
파이썬에서 표형 데이터를 다루는 데 가장 유용한 라이브러리 두 가지가 있습니다:
* <strong>[Pandas](https://pandas.pydata.org/)</strong>는 관계형 테이블에 해당하는 <strong>데이터프레임</strong>을 조작할 수 있게 해줍니다. 이름 있는 열이 있고, 행, 열, 전체 데이터프레임에 대해 다양한 작업을 수행할 수 있습니다.
* <strong>[Numpy](https://numpy.org/)</strong>는 다차원 <strong>텐서</strong> 즉, 다차원 <strong>배열</strong>을 다루는 라이브러리입니다. 배열은 동일한 타입 값을 가지며, 데이터프레임보다 간단하지만 더 많은 수학 연산을 지원하고 오버헤드가 적습니다.
또한 알아두면 좋은 몇 가지 다른 라이브러리가 있습니다:
* **[Matplotlib](https://matplotlib.org/)**: 데이터 시각화 및 그래프 그리기에 사용되는 라이브러리
* **[SciPy](https://www.scipy.org/)**: 추가적인 과학적 기능을 제공하는 라이브러리. 확률 및 통계에 대해 논의할 때 이미 이 라이브러리를 접한 적이 있습니다.
또한 알아두어야 할 몇 가지 라이브러리가 있습니다:
* <strong>[Matplotlib](https://matplotlib.org/)</strong>는 데이터 시각화 및 그래프 그리기에 쓰이는 라이브러리입니다.
* <strong>[SciPy](https://www.scipy.org/)</strong>는 추가 과학 함수들을 포함한 라이브러리로, 확률 및 통계에서 이미 소개한 바 있습니다.
다음은 Python 프로그램의 시작 부분에서 이러한 라이브러리를 가져오는 데 일반적으로 사용하는 코드입니다:
파이썬 프로그램 초반에 보통 아래 코드를 사용해 이들 라이브러리를 임포트합니다:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
from scipy import ... # 필요한 정확한 하위 패키지를 지정해야 합니다
```
Pandas는 몇 가지 기본 개념을 중심으로 구성됩니다.
Pandas는 몇 가지 기본 개념을 중심으로 설계되었습니다.
### 시리즈 (Series)
### 시리즈
**시리즈**는 리스트나 numpy 배열과 유사한 값의 시퀀스입니다. 주요 차이점은 시리즈에는 **인덱스**가 있다는 점이며, 시리즈를 조작할 때(예: 더하기) 인덱스가 고려됩니다. 인덱스는 리스트나 배열에서 기본적으로 사용되는 정수 행 번호처럼 간단할 수도 있고, 날짜 간격과 같은 복잡한 구조를 가질 수도 있습니다.
<strong>시리즈(Series)</strong>는 리스트나 numpy 배열과 비슷한 값들의 순차형입니다. 주된 차이점은 시리즈에는 <strong>인덱스</strong>가 있고, 시리즈끼리 연산을 할 때(예: 덧셈) 인덱스가 고려된다는 점입니다. 인덱스는 정수 행 번호일 수 있으며(리스트나 배열에서 기본 생성되는 인덱스), 날짜 구간과 같은 복잡한 구조일 수도 있습니다.
> **참고**: 동반된 노트북 [`notebook.ipynb`](notebook.ipynb)에 Pandas의 소개 코드가 포함되어 있습니다. 여기에서는 몇 가지 예제를 간략히 설명하며, 전체 노트북을 확인해보는 것을 권장합니다.
> <strong>참고</strong>: 동봉된 노트북 [`notebook.ipynb`](notebook.ipynb)에는 기본적인 Pandas 코드가 있습니다. 여기서는 일부 예시만 제시하므로 전체 노트북을 확인해 보시길 권합니다.
예를 들어, 아이스크림 가게의 판매 데이터를 분석하고 싶다고 가정해 봅시다. 특정 기간 동안 판매량(매일 판매된 아이템 수)의 시리즈를 생성해 보겠습니다:
예를 들어 우리의 아이스크림 가게 매출을 분석하고자 할 때, 일정 기간 동안 일별 판매량 시리즈를 생성해 보겠습니다:
```python
start_date = "Jan 1, 2020"
@ -64,47 +66,47 @@ print(f"Length of index is {len(idx)}")
> **참고**: 단순한 문법 `total_items+additional_items`을 사용하지 않았습니다. 그렇게 하면 결과 시리즈에 많은 `NaN`(*Not a Number*) 값이 생깁니다. 이는 `additional_items` 시리즈의 일부 인덱스 포인트에 값이 없기 때문이며, `NaN`을 다른 값에 더하면 결과는 `NaN`이 됩니다. 따라서 덧셈 중에 `fill_value` 매개변수를 지정해야 합니다.
> <strong>참고</strong>: 간단한 문법인 `total_items+additional_items`를 사용하지 않는 이유는 결과 시리즈에 많은 `NaN` (*숫자가 아님*) 값이 발생하기 때문입니다. `additional_items` 시리즈에는 일부 인덱스에 값이 없고, `NaN`과의 덧셈이 `NaN`을 만드는 특성 때문입니다. 그래서 덧셈 시에 `fill_value` 파라미터를 지정해야 합니다.
시계열 데이터를 사용하면 다른 시간 간격으로 시리즈를 **재샘플링**할 수도 있습니다. 예를 들어, 월별 평균 판매량을 계산하고 싶다면 다음 코드를 사용할 수 있습니다:
시계열 데이터는 다른 시간 간격으로 <strong>재샘플링(resample)</strong>할 수도 있습니다. 예를 들어 월별 평균 판매량을 계산하고 싶으면 다음 코드를 사용합니다:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```

여기서 `.T`는 데이터프레임을 전치하는 작업을 의미하며, `rename` 작업을 통해 이전 예제와 일치하도록 열 이름을 변경할 수 있습니다.
여기서 `.T`는 데이터프레임의 행과 열을 바꾸는 전치 연산이고, `rename`은 열 이름을 이전 예와 맞게 바꾸는 작업입니다.
데이터프레임에서 수행할 수 있는 몇 가지 중요한 작업은 다음과 같습니다:
**열 선택**. `df['A']`를 작성하여 개별 열을 선택할 수 있습니다. 이 작업은 시리즈를 반환합니다. `df[['B','A']]`를 작성하여 열의 하위 집합을 다른 데이터프레임으로 선택할 수도 있습니다. 이 작업은 또 다른 데이터프레임을 반환합니다.
**열 선택**. 개별 열은 `df['A']`라고 쓰면 선택할 수 있으며, 이 작업은 시리즈를 반환합니다. `df[['B','A']]`처럼 여러 열을 선택하면 다른 데이터프레임이 됩니다.
**특정 행 필터링**. 예를 들어, 열 `A`가 5보다 큰 행만 남기려면 `df[df['A']>5]`를 작성할 수 있습니다.
**특정 조건으로 행 필터링**. 예를 들어 `A` 열이 5 초과인 행만 남기려면 `df[df['A']>5]`라고 씁니다.
> **참고**: 필터링이 작동하는 방식은 다음과 같습니다. 표현식 `df['A']<5`는 부울 시리즈를 반환하며, 이는 원래 시리즈 `df['A']`의 각 요소에 대해 표현식이 `True`인지 `False`인지 나타냅니다. 부울 시리즈가 인덱스로 사용되면 데이터프레임의 행 하위 집합을 반환합니다. 따라서 임의의 Python 부울 표현식을 사용할 수 없습니다. 예를 들어,`df[df['A']>5 and df['A']<7]`를 작성하는 것은 잘못된 방식입니다. 대신 부울 시리즈에 대한 특별한 `&` 연산을 사용하여 `df[(df['A']>5) & (df['A']<7)]`를 작성해야 합니다(*괄호가 중요합니다*).
> <strong>참고</strong>: 필터링 방식은 다음과 같습니다. `df['A']<5`는 불리언 시리즈를 반환하며, 각 원소가 참인지 거짓인지 표시합니다. 불리언 시리즈는 인덱스로 사용되면 데이터프레임의 행 하위 집합을 반환합니다. 따라서 임의의 파이썬 불리언 표현식을 사용할 수 없습니다. 예를 들어 `df[df['A']>5 and df['A']<7]`은 잘못된 표현입니다. 대신 불리언 시리즈에 특수 연산자인 `&`를 사용해 `df[(df['A']>5) & (df['A']<7)]`라고 써야 합니다 (*괄호 필수*).
**새로운 계산 가능한 열 생성**. 직관적인 표현식을 사용하여 데이터프레임에 새로운 계산 가능한 열을 쉽게 생성할 수 있습니다:
**새 컴퓨팅 열 만들기**. 직관적 표현을 사용해 데이터프레임에 새 계산 열을 쉽게 추가할 수 있습니다:
```python
df['DivA'] = df['A']-df['A'].mean()
```
이 예제는 A의 평균값에서의 편차를 계산합니다. 여기서 실제로 발생하는 것은 시리즈를 계산한 다음 왼쪽에 할당하여 새 열을 생성하는 것입니다. 따라서 시리즈와 호환되지 않는 작업은 사용할 수 없습니다. 예를 들어, 아래 코드는 잘못된 방식입니다:
이 예제는 `A`의 평균값과 편차를 계산합니다. 실제로는 시리즈를 계산한 후 좌변에 할당해 새 열을 만들기 때문에 시리즈와 호환되지 않는 연산은 사용할 수 없습니다. 아래 코드는 잘못된 예입니다:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Wrongresult
# 잘못된 코드 -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-잘못된결과
```
후자의 예제는 문법적으로는 올바르지만 잘못된 결과를 제공합니다. 이는 시리즈 `B`의 길이를 열의 모든 값에 할당하기 때문이며, 우리가 의도한 개별 요소의 길이가 아닙니다.
문법적으로는 맞지만 잘못된 결과를 냅니다. 모든 열 값에 시리즈 `B` 길이가 할당되며, 개별 원소 길이가 아닙니다.
이와 같은 복잡한 표현식을 계산해야 하는 경우`apply` 함수를 사용할 수 있습니다. 마지막 예제는 다음과 같이 작성할 수 있습니다:
복잡한 표현식을 계산해야 할 때`apply` 함수를 사용할 수 있습니다. 마지막 예는 다음과 같이 작성할 수 있습니다:
우리는 Python 객체로부터 Series와 DataFrame을 생성하는 것이 얼마나 쉬운지 살펴보았습니다. 하지만 데이터는 보통 텍스트 파일이나 Excel 테이블 형태로 제공됩니다. 다행히도 Pandas는 디스크에서 데이터를 로드하는 간단한 방법을 제공합니다. 예를 들어, CSV 파일을 읽는 것은 다음과 같이 간단합니다:
Python 객체로부터 Series와 DataFrame을 쉽게 구성할 수 있는 방법을 살펴보았습니다. 그러나 데이터는 보통 텍스트 파일이나 Excel 표의 형태로 제공됩니다. 다행히도, Pandas는 디스크에서 데이터를 불러오는 간단한 방법을 제공합니다. 예를 들어, CSV 파일을 읽는 것은 다음과 같이 간단합니다:
```python
df = pd.read_csv('file.csv')
```
"Challenge" 섹션에서 외부 웹사이트에서 데이터를 가져오는 것을 포함한 더 많은 데이터 로드 예제를 살펴볼 것입니다.
"도전" 섹션에서 외부 웹사이트에서 데이터를 가져오는 것을 포함하여 더 많은 데이터 로드 예제를 볼 것입니다.
### 출력 및 시각화
데이터 과학자는 데이터를 탐색해야 하는 경우가 많으므로 데이터를 시각화할 수 있는 것이 중요합니다. DataFrame이 클 경우, 우리가 모든 것을 올바르게 수행하고 있는지 확인하기 위해 처음 몇 줄만 출력하고 싶을 때가 많습니다. 이는 `df.head()`를 호출하여 수행할 수 있습니다. Jupyter Notebook에서 실행하면 DataFrame이 보기 좋은 표 형태로 출력됩니다.
데이터 과학자는 종종 데이터를 탐색해야 하므로 데이터를 시각화할 수 있는 것이 중요합니다. DataFrame이 클 때는 보통 `df.head()`를 호출하여 처음 몇 행만 출력함으로써 모든 것이 올바르게 처리되고 있는지 확인하고자 합니다. Jupyter Notebook에서 실행하면, DataFrame을 깔끔한 표 형식으로 출력합니다.
우리는 또한 몇몇 열을 시각화하기 위해 `plot` 함수의 사용법을 살펴보았습니다. `plot`은 많은 작업에 매우 유용하며 `kind=` 매개변수를 통해 다양한 그래프 유형을 지원하지만, 더 복잡한 것을 그리기 위해 항상 기본`matplotlib` 라이브러리를 사용할 수 있습니다. 데이터 시각화는 별도의 강의에서 자세히 다룰 것입니다.
일부 열을 시각화하기 위해 `plot` 함수의 사용법도 살펴보았습니다. `plot`은 많은 작업에 매우 유용하며 `kind=` 매개변수를 통해 여러 그래프 유형을 지원하지만, 더 복잡한 것을 그려야 할 때는 언제든지 순수한`matplotlib` 라이브러리를 사용할 수 있습니다. 데이터 시각화는 별도의 강의에서 자세히 다룰 예정입니다.
이 개요는 Pandas의 가장 중요한 개념을 다루지만, 이 라이브러리는 매우 풍부하며 할 수 있는 일에는 한계가 없습니다! 이제 이 지식을 특정 문제를 해결하는 데 적용해 봅시다.
이번 개요에서는 Pandas의 가장 중요한 개념을 다루었으나, 이 라이브러리는 매우 풍부하며 할 수 있는 것에 제한이 없습니다! 이제 이 지식을 특정 문제 해결에 적용해 봅시다.
## 🚀 Challenge 1: COVID 확산 분석
## 🚀 도전 1: COVID 확산 분석
우리가 집중할 첫 번째 문제는 COVID-19의 전염병 확산 모델링입니다. 이를 위해 [Johns Hopkins University](https://jhu.edu/)의 [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE)에서 제공하는 다양한 국가의 감염자 수 데이터를 사용할 것입니다. 데이터셋은 [이 GitHub 저장소](https://github.com/CSSEGISandData/COVID-19)에서 이용할 수 있습니다.
첫 번째 문제는 COVID-19의 전염병 확산 모델링에 집중합니다. 이를 위해 [Johns Hopkins University](https://jhu.edu/)의 [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE)이 제공하는 여러 국가별 감염자 수 데이터를 사용할 예정입니다. 데이터셋은 [이 GitHub 저장소](https://github.com/CSSEGISandData/COVID-19)에서 제공됩니다.
데이터를 다루는 방법을 보여주기 위해 [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb)를 열어 처음부터 끝까지 읽어보시길 권장합니다. 셀을 실행하고, 마지막에 남겨둔 몇 가지 도전을 수행할 수도 있습니다.
데이터 처리를 어떻게 다루는지 보여주기 위해 [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) 파일을 열어 처음부터 끝까지 읽어보세요. 또한 셀을 실행하거나 마지막에 남겨둔 도전 문제들을 풀어볼 수도 있습니다.
> Jupyter Notebook에서 코드를 실행하는 방법을 모른다면 [이 기사](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)를 참고하세요.
> Jupyter Notebook에서 코드를 실행하는 방법을 모른다면, [이 글](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)을 참고하세요.
## 비정형 데이터 작업
## 비정형 데이터 다루기
데이터는 매우 자주 표 형식으로 제공되지만, 경우에 따라 텍스트나 이미지와 같은 덜 구조화된 데이터를 다뤄야 할 때도 있습니다. 이 경우, 위에서 본 데이터 처리 기술을 적용하려면 구조화된 데이터를 **추출**해야 합니다. 몇 가지 예는 다음과 같습니다:
데이터는 대부분 표 형식으로 제공되지만, 경우에 따라 텍스트나 이미지 같은 덜 구조화된 데이터를 다뤄야 할 때가 있습니다. 이 경우 위에서 살펴본 데이터 처리 기법을 적용하려면 구조화된 데이터를 <strong>추출</strong>해야 합니다. 몇 가지 예시는 다음과 같습니다:
* 텍스트에서 키워드를 추출하고 해당 키워드가 얼마나 자주 나타나는지 확인
* 신경망을 사용하여 사진 속 객체에 대한 정보 추출
* 비디오 카메라 피드에서 사람들의 감정 정보 얻기
* 텍스트에서 키워드를 추출하고, 이 키워드가 얼마나 자주 나타나는지 확인
* 신경망을 사용하여 이미지 내 객체에 대한 정보 추출
* 비디오 카메라 피드 속 인물의 감정 정보 추출
## 🚀 Challenge 2: COVID 논문 분석
## 🚀 도전 2: COVID 논문 분석
이 도전에서는 COVID 팬데믹 주제를 계속 다루며, 관련 과학 논문을 처리하는 데 초점을 맞춥니다. [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge)에는 COVID에 관한 7000개 이상의 논문(작성 당시 기준)이 메타데이터와 초록과 함께 제공됩니다(약 절반은 전체 텍스트도 제공됨).
이번 도전에서는 COVID 팬데믹 주제를 이어가며, 관련 과학 논문 처리에 집중합니다. 7000편 이상의 COVID 관련 논문이 포함된 [CORD-19 데이터셋](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge)이 있으며, 메타데이터와 초록이 제공됩니다(절반가량의 논문에는 전체 텍스트도 제공).
이 데이터셋을 [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) 인지 서비스를 사용하여 분석하는 전체 예제는 [이 블로그 글](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)에 설명되어 있습니다. 우리는 이 분석의 간소화된 버전을 논의할 것입니다.
[Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) 인지 서비스를 사용한 이 데이터셋 분석의 전체 예시는 [이 블로그 게시물](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)에 설명되어 있습니다. 우리는 이 분석의 단순화된 버전을 다룰 것입니다.
> **NOTE**: 이 저장소의 일부로 데이터셋 복사본을 제공하지 않습니다. 먼저 [이 데이터셋의 Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv)에서 [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) 파일을 다운로드해야 할 수도 있습니다. Kaggle 등록이 필요할 수 있습니다. 등록 없이 [여기](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html)에서 데이터셋을 다운로드할 수도 있지만, 메타데이터 파일 외에도 모든 전체 텍스트가 포함됩니다.
> <strong>참고</strong>: 본 저장소에는 데이터셋 사본이 포함되어 있지 않습니다. 먼저 [이 Kaggle 데이터셋](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge)에서 [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) 파일을 다운로드해야 할 수 있습니다. Kaggle 회원가입이 필요할 수 있습니다. 등록 없이 [여기](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html)에서 데이터셋을 다운로드할 수도 있지만, 메타데이터 파일뿐만 아니라 전체 텍스트도 포함됩니다.
[`notebook-papers.ipynb`](notebook-papers.ipynb)를 열어 처음부터 끝까지 읽어보세요. 셀을 실행하고, 마지막에 남겨둔 몇 가지 도전을 수행할 수도 있습니다.
[`notebook-papers.ipynb`](notebook-papers.ipynb)를 열어 처음부터 끝까지 읽어보세요. 셀을 실행하거나 마지막에 남겨둔 도전을 풀어볼 수도 있습니다.


## 이미지 데이터 처리
최근에는 이미지를 이해할 수 있는 매우 강력한 AI 모델이 개발되었습니다. 사전 학습된 신경망이나 클라우드 서비스를 사용하여 해결할 수 있는 많은 작업이 있습니다. 몇 가지 예는 다음과 같습니다:
최근 매우 강력한 AI 모델이 개발되어 이미지를 이해할 수 있게 되었습니다. 사전 학습된 신경망이나 클라우드 서비스를 사용하여 해결할 수 있는 작업은 많습니다. 몇 가지 예시는 다음과 같습니다:
* **이미지 분류**: 이미지를 미리 정의된 클래스 중 하나로 분류하는 데 도움을 줄 수 있습니다. [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)과 같은 서비스를 사용하여 쉽게 자신만의 이미지 분류기를 훈련할 수 있습니다.
* **객체 감지**: 이미지에서 다양한 객체를 감지합니다. [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum)과 같은 서비스는 여러 일반적인 객체를 감지할 수 있으며, [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) 모델을 훈련하여 특정 관심 객체를 감지할 수 있습니다.
* **얼굴 감지**: 나이, 성별 및 감정 감지를 포함합니다. 이는 [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum)를 통해 수행할 수 있습니다.
* **이미지 분류**, 이미지를 미리 정의된 클래스 중 하나로 분류하는 데 도움이 됩니다. [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) 등의 서비스를 사용해 손쉽게 자신만의 이미지 분류기를 훈련할 수 있습니다.
* **객체 감지**, 이미지 내 여러 객체를 감지합니다. [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum)과 같은 서비스는 여러 일반 객체를 감지하며, [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) 모델을 훈련해 특정 관심 객체를 감지할 수도 있습니다.
* **얼굴 감지**, 연령, 성별 및 감정 감지도 가능합니다. 이는 [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum)로 수행할 수 있습니다.
이 모든 클라우드 서비스는 [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum)를 사용하여 호출할 수 있으며, 따라서 데이터 탐색 워크플로에 쉽게 통합할 수 있습니다.
이러한 모든 클라우드 서비스는 [Python SDK](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum)를 통해 호출할 수 있어 데이터 탐색 작업에 쉽게 통합됩니다.
다음은 이미지 데이터 소스를 탐색하는 몇 가지 예입니다:
* 블로그 글 [코딩 없이 데이터 과학 배우기](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/)에서는 Instagram 사진을 탐색하며 사람들이 사진에 더 많은 좋아요를 주는 이유를 이해하려고 합니다. 먼저 [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum)을 사용하여 사진에서 가능한 한 많은 정보를 추출한 다음 [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum)을 사용하여 해석 가능한 모델을 구축합니다.
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies)에서는 [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum)를 사용하여 이벤트 사진 속 사람들의 감정을 추출하여 사람들을 행복하게 만드는 요인을 이해하려고 합니다.
이미지 데이터 소스 탐색 예시는 다음과 같습니다:
* 블로그 글 [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/)에서는 Instagram 사진을 탐색하며, 사람들이 어떤 사진에 더 많은 좋아요를 주는지 이해하려고 합니다. 먼저 [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum)를 사용해 사진에서 가능한 많은 정보를 추출한 다음, [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum)로 해석 가능한 모델을 구축합니다.
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies)에서는 [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum)를 사용해 이벤트에서 찍힌 사진 속 인물의 감정을 추출하여 사람들이 무엇에 행복을 느끼는지 이해하려고 합니다.
## 결론
구조화된 데이터든 비정형 데이터든, Python을 사용하면 데이터 처리 및 이해와 관련된 모든 단계를 수행할 수 있습니다. 이는 아마도 데이터 처리의 가장 유연한 방법이며, 대부분의 데이터 과학자가 Python을 주요 도구로 사용하는 이유입니다. 데이터 과학 여정에 진지하다면 Python을 깊이 배우는 것이 아마도 좋은 선택일 것입니다!
구조화된 데이터든 비정형 데이터든, Python을 사용하면 데이터 처리와 이해에 필요한 모든 단계를 수행할 수 있습니다. Python은 아마도 가장 유연한 데이터 처리 방법이며, 이것이 대부분의 데이터 과학자가 Python을 주력 도구로 사용하는 이유입니다. 데이터 과학에 진지하다면 Python을 깊이 배우는 것이 좋은 생각일 것입니다!
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## 복습 및 자기학습
## 복습 및 자기학습
**책**
<strong>도서</strong>
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**온라인 자료**
* 공식 [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) 튜토리얼
* [Pandas 시각화에 대한 문서](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* [Pandas 시각화에 관한 문서](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* [Python 첫걸음 떼기](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn의 학습 경로
**Python 학습**
* [거북이 그래픽과 프랙탈로 재미있게 배우는 Python](https://github.com/shwars/pycourse)
* [Python 기초 배우기](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)의 학습 경로
## 과제
[위 도전 과제에 대한 더 자세한 데이터 연구 수행](assignment.md)
[위 도전 과제에 대한 더 상세한 데이터 분석 수행](assignment.md)
## 크레딧
## 감사의 글
이 강의는 [Dmitry Soshnikov](http://soshnikov.com)가 ♥️를 담아 작성했습니다.
이 강의는 [Dmitry Soshnikov](http://soshnikov.com)의 ♥️로 제작되었습니다.
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 기하기 위해 노력하고 있으나, 자동 번역은 오류나 부정확한 부분이 있을 수 있음을 유의하시기 바랍니다. 원본 문서의 원어본이 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우, 전문가의 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.