Merge pull request #665 from microsoft/update-translations

🌐 Update translations via Co-op Translator
pull/667/head
Lee Stott 23 hours ago committed by GitHub
commit 2b5b3aaf85
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T06:22:40+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:23:39+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "ar"
}
@ -13,39 +13,39 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| العمل مع بايثون - _رسم توضيحي بواسطة [@nitya](https://twitter.com/nitya)_ |
[![فيديو مقدمة](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![فيديو مقدمة](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ar.png)](https://youtu.be/dZjWOGbsN4Y)
بينما توفر قواعد البيانات طرقًا فعالة جدًا لتخزين البيانات واستعلامها باستخدام لغات الاستعلام، فإن الطريقة الأكثر مرونة لمعالجة البيانات هي كتابة برنامج خاص بك لمعالجتها. في كثير من الحالات، قد يكون استخدام استعلام قاعدة البيانات أكثر فعالية. ومع ذلك، في بعض الحالات التي تتطلب معالجة بيانات أكثر تعقيدًا، قد لا يكون من السهل تنفيذها باستخدام SQL.
بينما توفر قواعد البيانات طرقًا فعالة جدًا لتخزين البيانات واستعلامها باستخدام لغات الاستعلام، فإن الطريقة الأكثر مرونة لمعالجة البيانات هي كتابة برنامج خاص بك لمعالجتها. في كثير من الحالات، يكون إجراء استعلام قاعدة بيانات أكثر فعالية. ومع ذلك، في بعض الحالات التي تتطلب معالجة بيانات أكثر تعقيدًا، لا يمكن القيام بذلك بسهولة باستخدام SQL.
يمكن برمجة معالجة البيانات بأي لغة برمجة، ولكن هناك لغات معينة تعتبر عالية المستوى فيما يتعلق بالعمل مع البيانات. يفضل علماء البيانات عادةً إحدى اللغات التالية:
* **[Python](https://www.python.org/)**، وهي لغة برمجة متعددة الأغراض، وغالبًا ما تعتبر واحدة من أفضل الخيارات للمبتدئين بسبب بساطتها. تحتوي بايثون على العديد من المكتبات الإضافية التي يمكن أن تساعدك في حل العديد من المشكلات العملية، مثل استخراج البيانات من أرشيف ZIP أو تحويل الصور إلى درجات الرمادي. بالإضافة إلى علم البيانات، تُستخدم بايثون أيضًا بشكل شائع في تطوير الويب.
* **[Python](https://www.python.org/)**، وهي لغة برمجة متعددة الأغراض، وغالبًا ما تعتبر واحدة من أفضل الخيارات للمبتدئين بسبب بساطتها. تحتوي بايثون على العديد من المكتبات الإضافية التي يمكن أن تساعدك في حل العديد من المشكلات العملية، مثل استخراج البيانات من أرشيف ZIP، أو تحويل الصور إلى درجات الرمادي. بالإضافة إلى علم البيانات، تُستخدم بايثون أيضًا بشكل شائع في تطوير الويب.
* **[R](https://www.r-project.org/)** هي أداة تقليدية تم تطويرها مع معالجة البيانات الإحصائية في الاعتبار. تحتوي أيضًا على مستودع كبير من المكتبات (CRAN)، مما يجعلها خيارًا جيدًا لمعالجة البيانات. ومع ذلك، فإن R ليست لغة برمجة متعددة الأغراض، ونادرًا ما تُستخدم خارج نطاق علم البيانات.
* **[Julia](https://julialang.org/)** هي لغة أخرى تم تطويرها خصيصًا لعلم البيانات. تهدف إلى تقديم أداء أفضل من بايثون، مما يجعلها أداة رائعة للتجارب العلمية.
في هذه الدرس، سنركز على استخدام بايثون لمعالجة البيانات البسيطة. سنفترض أنك على دراية أساسية باللغة. إذا كنت ترغب في استكشاف أعمق لبايثون، يمكنك الرجوع إلى أحد الموارد التالية:
في هذه الدرس، سنركز على استخدام بايثون لمعالجة البيانات البسيطة. سنفترض معرفة أساسية باللغة. إذا كنت ترغب في جولة أعمق في بايثون، يمكنك الرجوع إلى أحد الموارد التالية:
* [تعلم بايثون بطريقة ممتعة باستخدام الرسومات الفركتالية](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/) يحتوي عادةً على العديد من عينات الأكواد المفيدة في بايثون للعديد من المهام النموذجية.
> **النصيحة الأكثر فائدة**. عندما تحتاج إلى تنفيذ عملية معينة على البيانات ولا تعرف كيفية القيام بها، حاول البحث عنها على الإنترنت. [Stackoverflow](https://stackoverflow.com/) يحتوي عادةً على الكثير من عينات الكود المفيدة في بايثون للعديد من المهام النموذجية.
## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## البيانات الجدولية وإطارات البيانات
لقد تعرفت بالفعل على البيانات الجدولية عندما تحدثنا عن قواعد البيانات العلائقية. عندما يكون لديك الكثير من البيانات، وهي موجودة في العديد من الجداول المرتبطة، فمن المنطقي بالتأكيد استخدام SQL للعمل معها. ومع ذلك، هناك العديد من الحالات التي يكون لدينا فيها جدول بيانات، ونحتاج إلى الحصول على بعض **الفهم** أو **الرؤى** حول هذه البيانات، مثل التوزيع، العلاقة بين القيم، إلخ. في علم البيانات، هناك العديد من الحالات التي نحتاج فيها إلى إجراء بعض التحويلات على البيانات الأصلية، يليها التصور. يمكن تنفيذ كلا الخطوتين بسهولة باستخدام بايثون.
لقد تعرفت بالفعل على البيانات الجدولية عندما تحدثنا عن قواعد البيانات العلائقية. عندما يكون لديك الكثير من البيانات، وهي موجودة في العديد من الجداول المرتبطة المختلفة، فمن المنطقي بالتأكيد استخدام SQL للعمل معها. ومع ذلك، هناك العديد من الحالات التي لدينا فيها جدول بيانات، ونحتاج إلى الحصول على بعض **الفهم** أو **الرؤى** حول هذه البيانات، مثل التوزيع، العلاقة بين القيم، إلخ. في علم البيانات، هناك العديد من الحالات التي نحتاج فيها إلى إجراء بعض التحويلات على البيانات الأصلية، متبوعة بالتصور. يمكن تنفيذ كلا الخطوتين بسهولة باستخدام بايثون.
هناك مكتبتان الأكثر فائدة في بايثون يمكن أن تساعدك في التعامل مع البيانات الجدولية:
* **[Pandas](https://pandas.pydata.org/)** تتيح لك التعامل مع ما يسمى بـ **إطارات البيانات**، وهي مشابهة للجداول العلائقية. يمكنك الحصول على أعمدة مسماة، وتنفيذ عمليات مختلفة على الصفوف، الأعمدة، وإطارات البيانات بشكل عام.
* **[Numpy](https://numpy.org/)** هي مكتبة للعمل مع **التنسورات**، أي **المصفوفات** متعددة الأبعاد. تحتوي المصفوفة على قيم من نفس النوع الأساسي، وهي أبسط من إطار البيانات، لكنها تقدم المزيد من العمليات الرياضية، وتخلق عبئًا أقل.
* **[Numpy](https://numpy.org/)** هي مكتبة للعمل مع **المصفوفات** متعددة الأبعاد. المصفوفة تحتوي على قيم من نفس النوع الأساسي، وهي أبسط من إطار البيانات، لكنها تقدم المزيد من العمليات الرياضية، وتخلق أقل عبء.
هناك أيضًا بعض المكتبات الأخرى التي يجب أن تعرف عنها:
* **[Matplotlib](https://matplotlib.org/)** هي مكتبة تُستخدم لتصور البيانات ورسم الرسوم البيانية
* **[SciPy](https://www.scipy.org/)** هي مكتبة تحتوي على بعض الوظائف العلمية الإضافية. لقد واجهنا هذه المكتبة بالفعل عند الحديث عن الاحتمالات والإحصائيات
* **[SciPy](https://www.scipy.org/)** هي مكتبة تحتوي على بعض الوظائف العلمية الإضافية. لقد واجهنا بالفعل هذه المكتبة عند الحديث عن الاحتمالات والإحصائيات
إليك قطعة من الكود التي ستستخدمها عادةً لاستيراد هذه المكتبات في بداية برنامج بايثون:
```python
@ -61,9 +61,9 @@ Pandas تركز على بعض المفاهيم الأساسية.
**السلاسل** هي تسلسل من القيم، مشابهة للقائمة أو مصفوفة numpy. الفرق الرئيسي هو أن السلاسل تحتوي أيضًا على **فهرس**، وعندما نعمل على السلاسل (مثل الجمع)، يتم أخذ الفهرس في الاعتبار. يمكن أن يكون الفهرس بسيطًا مثل رقم الصف الصحيح (وهو الفهرس المستخدم افتراضيًا عند إنشاء سلسلة من قائمة أو مصفوفة)، أو يمكن أن يكون له هيكل معقد، مثل فترة تاريخية.
> **ملاحظة**: هناك بعض أكواد Pandas التمهيدية في الدفتر المرفق [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). نحن فقط نوضح بعض الأمثلة هنا، وأنت مرحب بك بالتأكيد للتحقق من الدفتر الكامل.
> **ملاحظة**: هناك بعض الكود التمهيدي لـ Pandas في الدفتر المرفق [`notebook.ipynb`](notebook.ipynb). نحن فقط نوضح بعض الأمثلة هنا، وأنت مرحب بك بالتأكيد للتحقق من الدفتر الكامل.
لنأخذ مثالًا: نريد تحليل مبيعات متجر الآيس كريم الخاص بنا. لنقم بإنشاء سلسلة من أرقام المبيعات (عدد العناصر المباعة يوميًا) لفترة زمنية معينة:
فكر في مثال: نريد تحليل مبيعات متجر الآيس كريم الخاص بنا. لنقم بإنشاء سلسلة من أرقام المبيعات (عدد العناصر المباعة كل يوم) لفترة زمنية معينة:
```python
start_date = "Jan 1, 2020"
@ -73,9 +73,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![رسم بياني للسلاسل الزمنية](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![رسم بياني للسلاسل الزمنية](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ar.png)
الآن لنفترض أنه كل أسبوع نقوم بتنظيم حفلة للأصدقاء، ونأخذ 10 عبوات إضافية من الآيس كريم للحفلة. يمكننا إنشاء سلسلة أخرى، مفهرسة حسب الأسبوع، لتوضيح ذلك:
الآن افترض أننا ننظم حفلة للأصدقاء كل أسبوع، ونأخذ 10 عبوات إضافية من الآيس كريم للحفلة. يمكننا إنشاء سلسلة أخرى، مفهرسة حسب الأسبوع، لتوضيح ذلك:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -84,16 +84,16 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![رسم بياني للسلاسل الزمنية](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![رسم بياني للسلاسل الزمنية](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ar.png)
> **ملاحظة** أننا لا نستخدم الصيغة البسيطة `total_items+additional_items`. إذا فعلنا ذلك، فسنحصل على العديد من القيم `NaN` (*ليس رقمًا*) في السلسلة الناتجة. هذا لأن هناك قيمًا مفقودة لبعض نقاط الفهرس في سلسلة `additional_items`، وإضافة `NaN` إلى أي شيء يؤدي إلى `NaN`. لذلك نحتاج إلى تحديد معلمة `fill_value` أثناء الجمع.
> **ملاحظة** أننا لا نستخدم الصيغة البسيطة `total_items+additional_items`. إذا فعلنا ذلك، فسنحصل على الكثير من القيم `NaN` (*ليس رقمًا*) في السلسلة الناتجة. هذا لأن هناك قيم مفقودة لبعض نقاط الفهرس في سلسلة `additional_items`، وإضافة `NaN` إلى أي شيء يؤدي إلى `NaN`. لذلك نحتاج إلى تحديد معلمة `fill_value` أثناء الجمع.
مع السلاسل الزمنية، يمكننا أيضًا **إعادة أخذ العينات** للسلسلة بفواصل زمنية مختلفة. على سبيل المثال، لنفترض أننا نريد حساب متوسط حجم المبيعات شهريًا. يمكننا استخدام الكود التالي:
مع السلاسل الزمنية، يمكننا أيضًا **إعادة أخذ العينات** للسلسلة بفواصل زمنية مختلفة. على سبيل المثال، افترض أننا نريد حساب متوسط حجم المبيعات شهريًا. يمكننا استخدام الكود التالي:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![متوسطات السلاسل الزمنية الشهرية](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![متوسطات السلاسل الزمنية الشهرية](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ar.png)
### إطار البيانات
@ -103,7 +103,7 @@ a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
سيؤدي ذلك إلى إنشاء جدول أفقي مثل هذا:
هذا سيُنشئ جدولًا أفقيًا مثل هذا:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
@ -113,7 +113,7 @@ df = pd.DataFrame([a,b])
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
سيعطينا هذا جدولًا مثل هذا:
هذا سيعطينا جدولًا مثل هذا:
| | A | B |
| --- | --- | ------ |
@ -127,7 +127,7 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**ملاحظة** أنه يمكننا أيضًا الحصول على تخطيط الجدول هذا عن طريق تبديل الجدول السابق، على سبيل المثال، بكتابة
**ملاحظة** أنه يمكننا أيضًا الحصول على هذا التخطيط للجدول عن طريق تبديل الجدول السابق، على سبيل المثال بكتابة
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
@ -135,24 +135,24 @@ df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
إليك بعض العمليات الأكثر أهمية التي يمكننا تنفيذها على إطارات البيانات:
**اختيار الأعمدة**. يمكننا اختيار أعمدة فردية بكتابة `df['A']` - هذه العملية تعيد سلسلة. يمكننا أيضًا اختيار مجموعة فرعية من الأعمدة في إطار بيانات آخر بكتابة `df[['B','A']]` - هذا يعيد إطار بيانات آخر.
**اختيار الأعمدة**. يمكننا اختيار أعمدة فردية بكتابة `df['A']` - هذه العملية تُرجع سلسلة. يمكننا أيضًا اختيار مجموعة فرعية من الأعمدة في إطار بيانات آخر بكتابة `df[['B','A']]` - هذا يُرجع إطار بيانات آخر.
**تصفية** الصفوف بناءً على معايير معينة. على سبيل المثال، لترك الصفوف فقط التي تحتوي على العمود `A` أكبر من 5، يمكننا كتابة `df[df['A']>5]`.
> **ملاحظة**: الطريقة التي تعمل بها التصفية هي كالتالي. التعبير `df['A']<5` يعيد سلسلة منطقية، تشير إلى ما إذا كان التعبير `True` أو `False` لكل عنصر من عناصر السلسلة الأصلية `df['A']`. عندما تُستخدم السلسلة المنطقية كفهرس، فإنها تعيد مجموعة فرعية من الصفوف في إطار البيانات. لذلك، لا يمكن استخدام تعبير منطقي عشوائي في بايثون، على سبيل المثال، كتابة `df[df['A']>5 and df['A']<7]` سيكون خطأ. بدلاً من ذلك، يجب استخدام عملية `&` الخاصة على السلاسل المنطقية، بكتابة `df[(df['A']>5) & (df['A']<7)]` (*الأقواس مهمة هنا*).
> **ملاحظة**: الطريقة التي تعمل بها التصفية هي كالتالي. التعبير `df['A']<5` يُرجع سلسلة من القيم المنطقية، والتي تشير إلى ما إذا كان التعبير `True` أو `False` لكل عنصر من عناصر السلسلة الأصلية `df['A']`. عندما تُستخدم السلسلة المنطقية كفهرس، فإنها تُرجع مجموعة فرعية من الصفوف في إطار البيانات. لذلك، لا يمكن استخدام تعبير منطقي عشوائي في بايثون، على سبيل المثال، كتابة `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'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
المثال الأخير، رغم أنه صحيح نحويًا، يعطي نتيجة خاطئة، لأنه يخصص طول السلسلة `B` لجميع القيم في العمود، وليس طول العناصر الفردية كما قصدنا.
المثال الأخير، رغم أنه صحيح نحويًا، يُعطينا نتيجة خاطئة، لأنه يُعين طول السلسلة `B` لجميع القيم في العمود، وليس طول العناصر الفردية كما قصدنا.
إذا احتجنا إلى حساب تعبيرات معقدة مثل هذه، يمكننا استخدام وظيفة `apply`. يمكن كتابة المثال الأخير كما يلي:
إذا كنا بحاجة إلى حساب تعبيرات معقدة مثل هذه، يمكننا استخدام وظيفة `apply`. يمكن كتابة المثال الأخير كما يلي:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -173,22 +173,22 @@ df['LenB'] = df['B'].apply(len)
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**اختيار الصفوف بناءً على الأرقام** يمكن تنفيذه باستخدام بناء `iloc`. على سبيل المثال، لاختيار أول 5 صفوف من إطار البيانات:
**اختيار الصفوف بناءً على الأرقام** يمكن القيام به باستخدام بناء `iloc`. على سبيل المثال، لاختيار أول 5 صفوف من إطار البيانات:
```python
df.iloc[:5]
```
**التجميع** يُستخدم غالبًا للحصول على نتيجة مشابهة لـ *جداول المحورية* في Excel. لنفترض أننا نريد حساب القيمة المتوسطة للعمود `A` لكل رقم معين من `LenB`. يمكننا تجميع إطار البيانات الخاص بنا بواسطة `LenB`، واستدعاء `mean`:
**التجميع** يُستخدم غالبًا للحصول على نتيجة مشابهة لـ *جداول المحورية* في Excel. افترض أننا نريد حساب القيمة المتوسطة للعمود `A` لكل رقم معين من `LenB`. يمكننا تجميع إطار البيانات الخاص بنا بواسطة `LenB`، واستدعاء `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
إذا احتجنا إلى حساب المتوسط وعدد العناصر في المجموعة، يمكننا استخدام وظيفة `aggregate` الأكثر تعقيدًا:
إذا كنا بحاجة إلى حساب المتوسط وعدد العناصر في المجموعة، يمكننا استخدام وظيفة `aggregate` الأكثر تعقيدًا:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
هذا يعطينا الجدول التالي:
هذا يُعطينا الجدول التالي:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -213,49 +213,49 @@ df = pd.read_csv('file.csv')
يغطي هذا العرض المفاهيم الأكثر أهمية في Pandas، ومع ذلك، فإن المكتبة غنية جدًا، ولا يوجد حد لما يمكنك القيام به بها! دعونا الآن نطبق هذه المعرفة لحل مشكلة محددة.
## 🚀 التحدي الأول: تحليل انتشار COVID
## 🚀 التحدي 1: تحليل انتشار COVID
المشكلة الأولى التي سنركز عليها هي نمذجة انتشار وباء COVID-19. للقيام بذلك، سنستخدم البيانات المتعلقة بعدد الأفراد المصابين في مختلف البلدان، والتي يوفرها [مركز علوم وهندسة الأنظمة](https://systems.jhu.edu/) (CSSE) في [جامعة جونز هوبكنز](https://jhu.edu/). تتوفر مجموعة البيانات في [هذا المستودع على GitHub](https://github.com/CSSEGISandData/COVID-19).
نظرًا لأننا نريد توضيح كيفية التعامل مع البيانات، ندعوك لفتح [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) وقراءته من البداية إلى النهاية. يمكنك أيضًا تنفيذ الخلايا، والقيام ببعض التحديات التي تركناها لك في النهاية.
نظرًا لأننا نريد توضيح كيفية التعامل مع البيانات، ندعوك لفتح [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) وقراءته من البداية إلى النهاية. يمكنك أيضًا تنفيذ الخلايا، والقيام ببعض التحديات التي تركناها لك في النهاية.
![انتشار COVID](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![انتشار COVID](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ar.png)
> إذا كنت لا تعرف كيفية تشغيل الكود في Jupyter Notebook، يمكنك الاطلاع على [هذا المقال](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> إذا كنت لا تعرف كيفية تشغيل الكود في Jupyter Notebook، ألقِ نظرة على [هذه المقالة](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## العمل مع البيانات غير المنظمة
بينما تأتي البيانات غالبًا في شكل جدولي، في بعض الحالات نحتاج إلى التعامل مع بيانات أقل تنظيمًا، مثل النصوص أو الصور. في هذه الحالة، لتطبيق تقنيات معالجة البيانات التي رأيناها أعلاه، نحتاج إلى **استخراج** البيانات المنظمة بطريقة ما. إليك بعض الأمثلة:
بينما تأتي البيانات غالبًا في شكل جدولي، في بعض الحالات نحتاج إلى التعامل مع بيانات أقل تنظيمًا، مثل النصوص أو الصور. في هذه الحالة، لتطبيق تقنيات معالجة البيانات التي رأيناها أعلاه، نحتاج بطريقة ما إلى **استخراج** البيانات المنظمة. إليك بعض الأمثلة:
* استخراج الكلمات المفتاحية من النص، ومعرفة مدى تكرار ظهور هذه الكلمات.
* استخراج الكلمات الرئيسية من النص، ومعرفة مدى تكرار ظهور هذه الكلمات.
* استخدام الشبكات العصبية لاستخراج معلومات حول الكائنات الموجودة في الصورة.
* الحصول على معلومات حول مشاعر الأشخاص من فيديو الكاميرا.
* الحصول على معلومات حول مشاعر الأشخاص من تغذية كاميرا الفيديو.
## 🚀 التحدي الثاني: تحليل أوراق COVID العلمية
## 🚀 التحدي 2: تحليل أوراق COVID
في هذا التحدي، سنواصل موضوع جائحة COVID، ونركز على معالجة الأوراق العلمية المتعلقة بالموضوع. هناك [مجموعة بيانات CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) تحتوي على أكثر من 7000 (في وقت الكتابة) ورقة حول COVID، متوفرة مع البيانات الوصفية والملخصات (ولحوالي نصفها يتوفر النص الكامل أيضًا).
في هذا التحدي، سنواصل موضوع جائحة COVID، ونركز على معالجة الأوراق العلمية حول الموضوع. هناك [مجموعة بيانات CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) تحتوي على أكثر من 7000 (في وقت الكتابة) ورقة حول COVID، متوفرة مع البيانات الوصفية والملخصات (ولحوالي نصفها يتوفر النص الكامل أيضًا).
مثال كامل لتحليل هذه المجموعة باستخدام خدمة [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**: لا نقدم نسخة من مجموعة البيانات كجزء من هذا المستودع. قد تحتاج أولاً إلى تنزيل ملف [`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)، لكنها ستتضمن جميع النصوص الكاملة بالإضافة إلى ملف البيانات الوصفية.
افتح [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) وقراءته من البداية إلى النهاية. يمكنك أيضًا تنفيذ الخلايا، والقيام ببعض التحديات التي تركناها لك في النهاية.
افتح [`notebook-papers.ipynb`](notebook-papers.ipynb) وقراءته من البداية إلى النهاية. يمكنك أيضًا تنفيذ الخلايا، والقيام ببعض التحديات التي تركناها لك في النهاية.
![علاج COVID الطبي](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![علاج COVID الطبي](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ar.png)
## معالجة بيانات الصور
مؤخرًا، تم تطوير نماذج ذكاء اصطناعي قوية جدًا تسمح لنا بفهم الصور. هناك العديد من المهام التي يمكن حلها باستخدام الشبكات العصبية المدربة مسبقًا أو الخدمات السحابية. بعض الأمثلة تشمل:
مؤخرًا، تم تطوير نماذج ذكاء اصطناعي قوية جدًا تسمح لنا بفهم الصور. هناك العديد من المهام التي يمكن حلها باستخدام الشبكات العصبية المدربة مسبقًا أو خدمات السحابة. بعض الأمثلة تشمل:
* **تصنيف الصور**، والذي يمكن أن يساعدك في تصنيف الصورة إلى واحدة من الفئات المحددة مسبقًا. يمكنك بسهولة تدريب مصنفات الصور الخاصة بك باستخدام خدمات مثل [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).
* **اكتشاف الكائنات** لتحديد الكائنات المختلفة في الصورة. يمكن لخدمات مثل [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)، وبالتالي يمكن دمجها بسهولة في سير عمل استكشاف البيانات الخاص بك.
إليك بعض الأمثلة لاستكشاف البيانات من مصادر بيانات الصور:
* في المقالة [كيف تتعلم علم البيانات بدون برمجة](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) لبناء نموذج قابل للتفسير.
* في [ورشة عمل دراسات الوجه](https://github.com/CloudAdvocacy/FaceStudies) نستخدم [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) لاستخراج المشاعر من الأشخاص في الصور من الأحداث، في محاولة لفهم ما يجعل الناس سعداء.
* في [ورشة عمل دراسات الوجه](https://github.com/CloudAdvocacy/FaceStudies) نستخدم [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) لاستخراج المشاعر من الأشخاص في الصور من الأحداث، لمحاولة فهم ما يجعل الناس سعداء.
## الخاتمة
@ -269,12 +269,12 @@ df = pd.read_csv('file.csv')
* [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)
* الدليل الرسمي [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)
**تعلم Python**
* [تعلم Python بطريقة ممتعة باستخدام Turtle Graphics و Fractals](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)
* [ابدأ خطواتك الأولى مع 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)
## الواجب
@ -287,4 +287,4 @@ df = pd.read_csv('file.csv')
---
**إخلاء المسؤولية**:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.
تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T18:39:40+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:59:51+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "bg"
}
@ -13,23 +13,23 @@ CO_OP_TRANSLATOR_METADATA:
| :---------------------------------------------------------------------------------------------------: |
| Работа с Python - _Скетч от [@nitya](https://twitter.com/nitya)_ |
[![Въвеждащо видео](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Въвеждащо видео](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.bg.png)](https://youtu.be/dZjWOGbsN4Y)
Докато базите данни предлагат много ефективни начини за съхранение на данни и тяхното извличане чрез език за заявки, най-гъвкавият начин за обработка на данни е чрез писане на собствена програма за манипулиране на данни. В много случаи използването на заявка към база данни би било по-ефективно. Въпреки това, когато е необходима по-сложна обработка на данни, тя не може лесно да бъде извършена с 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/)**, универсален език за програмиране, който често се счита за един от най-добрите варианти за начинаещи поради своята простота. Python има много допълнителни библиотеки, които могат да ви помогнат да решите много практически проблеми, като например извличане на данни от ZIP архив или конвертиране на изображение в сиво. Освен за обработка на данни, Python често се използва и за уеб разработка.
* **[R](https://www.r-project.org/)** е традиционен инструмент, разработен с цел статистическа обработка на данни. Той също така съдържа голямо хранилище от библиотеки (CRAN), което го прави добър избор за обработка на данни. Въпреки това, R не е универсален език за програмиране и рядко се използва извън домейна на обработката на данни.
* **[Julia](https://julialang.org/)** е друг език, разработен специално за обработка на данни. Той е предназначен да предостави по-добра производителност от Python, което го прави отличен инструмент за научни експерименти.
В този урок ще се съсредоточим върху използването на Python за проста обработка на данни. Ще предположим основни познания за езика. Ако искате по-задълбочен курс по Python, можете да се обърнете към някой от следните ресурси:
В този урок ще се фокусираме върху използването на Python за проста обработка на данни. Ще предположим основно познаване на езика. Ако искате по-задълбочен курс по Python, можете да се обърнете към някой от следните ресурси:
* [Научете Python по забавен начин с графики на костенурки и фрактали](https://github.com/shwars/pycourse) - бърз въведение в програмирането с Python, базиран на GitHub
* [Направете първите си стъпки с 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)
* [Научете Python по забавен начин с графики на костенурки и фрактали](https://github.com/shwars/pycourse) - Бърз въведение в програмирането с Python, базиран на GitHub
* [Направете първите си стъпки с 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)
Данните могат да бъдат представени в много форми. В този урок ще разгледаме три форми на данни - **таблични данни**, **текст** и **изображения**.
Данните могат да бъдат в много форми. В този урок ще разгледаме три форми на данни - **таблични данни**, **текст** и **изображения**.
Ще се съсредоточим върху няколко примера за обработка на данни, вместо да ви предоставим пълен преглед на всички свързани библиотеки. Това ще ви позволи да получите основната идея за възможностите и да разберете къде да намерите решения на вашите проблеми, когато имате нужда.
Ще се фокусираме върху няколко примера за обработка на данни, вместо да ви предоставим пълен преглед на всички свързани библиотеки. Това ще ви позволи да получите основната идея за възможностите и да разберете къде да намерите решения на вашите проблеми, когато имате нужда.
> **Най-полезен съвет**. Когато трябва да извършите определена операция върху данни, която не знаете как да направите, опитайте да я потърсите в интернет. [Stackoverflow](https://stackoverflow.com/) обикновено съдържа много полезни примери за код на Python за много типични задачи.
@ -39,17 +39,17 @@ CO_OP_TRANSLATOR_METADATA:
## Таблични данни и Dataframes
Вече сте се запознали с таблични данни, когато говорихме за релационни бази данни. Когато имате много данни, които са съхранени в различни свързани таблици, определено има смисъл да използвате SQL за работа с тях. Въпреки това, има много случаи, когато имаме таблица с данни и трябва да получим някакво **разбиране** или **информация** за тези данни, като например разпределение, корелация между стойности и т.н. В областта на обработката на данни често се налага да извършваме трансформации на оригиналните данни, последвани от визуализация. И двете стъпки могат лесно да бъдат извършени с Python.
Вече сте се срещали с таблични данни, когато говорихме за релационни бази данни. Когато имате много данни, и те са съдържани в много различни свързани таблици, определено има смисъл да използвате SQL за работа с тях. Въпреки това, има много случаи, когато имаме таблица с данни и трябва да получим някакво **разбиране** или **информация** за тези данни, като например разпределение, корелация между стойности и т.н. В обработката на данни има много случаи, когато трябва да извършим някои трансформации на оригиналните данни, последвани от визуализация. И двете стъпки могат лесно да се направят с Python.
Има две най-полезни библиотеки в Python, които могат да ви помогнат да работите с таблични данни:
* **[Pandas](https://pandas.pydata.org/)** - позволява ви да манипулирате така наречените **Dataframes**, които са аналогични на релационни таблици. Можете да имате именувани колони и да извършвате различни операции върху редове, колони и Dataframes като цяло.
* **[Numpy](https://numpy.org/)** - библиотека за работа с **тензори**, т.е. многомерни **масиви**. Масивът има стойности от един и същ основен тип и е по-прост от Dataframe, но предлага повече математически операции и създава по-малко натоварване.
* **[Pandas](https://pandas.pydata.org/)** ви позволява да манипулирате така наречените **Dataframes**, които са аналогични на релационни таблици. Можете да имате именувани колони и да извършвате различни операции върху редове, колони и Dataframes като цяло.
* **[Numpy](https://numpy.org/)** е библиотека за работа с **тензори**, т.е. многомерни **масиви**. Масивът има стойности от един и същ основен тип и е по-прост от Dataframe, но предлага повече математически операции и създава по-малко натоварване.
Има и няколко други библиотеки, които трябва да знаете:
* **[Matplotlib](https://matplotlib.org/)** - библиотека за визуализация на данни и създаване на графики
* **[SciPy](https://www.scipy.org/)** - библиотека с допълнителни научни функции. Вече сме се срещали с тази библиотека, когато говорихме за вероятности и статистика
* **[Matplotlib](https://matplotlib.org/)** е библиотека, използвана за визуализация на данни и чертане на графики
* **[SciPy](https://www.scipy.org/)** е библиотека с някои допълнителни научни функции. Вече сме се срещали с тази библиотека, когато говорихме за вероятности и статистика
Ето примерен код, който обикновено се използва за импортиране на тези библиотеки в началото на вашата Python програма:
Ето парче код, което обикновено бихте използвали, за да импортирате тези библиотеки в началото на вашата Python програма:
```python
import numpy as np
import pandas as pd
@ -63,7 +63,7 @@ Pandas се основава на няколко основни концепци
**Series** е последователност от стойности, подобна на списък или numpy масив. Основната разлика е, че Series също има **индекс**, и когато работим със Series (например, ги събираме), индексът се взема предвид. Индексът може да бъде толкова прост, колкото цяло число за номер на ред (това е индексът, използван по подразбиране при създаване на Series от списък или масив), или може да има сложна структура, като например интервал от дати.
> **Забележка**: В придружаващия notebook [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) има въведение в Pandas. Тук ще разгледаме само някои примери, но определено можете да проверите пълния notebook.
> **Забележка**: В придружаващия notebook [`notebook.ipynb`](notebook.ipynb) има въведение в кода на Pandas. Тук само очертаваме някои примери, но определено можете да разгледате пълния notebook.
Да разгледаме пример: искаме да анализираме продажбите на нашия магазин за сладолед. Нека генерираме серия от числа за продажби (брой продадени артикули всеки ден) за определен период от време:
@ -75,7 +75,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Графика на времеви серии](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Графика на времеви серии](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.bg.png)
Сега да предположим, че всяка седмица организираме парти за приятели и вземаме допълнителни 10 опаковки сладолед за партито. Можем да създадем друга серия, индексирана по седмици, за да демонстрираме това:
```python
@ -86,16 +86,16 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Графика на времеви серии](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Графика на времеви серии](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.bg.png)
> **Забележка**: Не използваме простия синтаксис `total_items+additional_items`. Ако го направим, ще получим много стойности `NaN` (*Not a Number*) в резултатната серия. Това е така, защото липсват стойности за някои точки от индекса в серията `additional_items`, и добавянето на `NaN` към каквото и да е води до `NaN`. Затова трябва да зададем параметъра `fill_value` по време на събирането.
> **Забележка**: Не използваме простия синтаксис `total_items+additional_items`. Ако го направим, ще получим много стойности `NaN` (*Not a Number*) в резултатната серия. Това е така, защото липсват стойности за някои точки от индекса в серията `additional_items`, и добавянето на `NaN` към нещо води до `NaN`. Затова трябва да зададем параметъра `fill_value` по време на събирането.
С времеви серии можем също да **преизчислим** серията с различни времеви интервали. Например, ако искаме да изчислим средния обем на продажбите месечно, можем да използваме следния код:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Месечни средни стойности на времеви серии](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Месечни средни стойности на времеви серии](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.bg.png)
### DataFrame
@ -111,7 +111,7 @@ df = pd.DataFrame([a,b])
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Можем също да използваме Series като колони и да зададем имена на колоните чрез речник:
Можем също да използваме Series като колони и да зададем имена на колони чрез речник:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -129,13 +129,13 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**Забележка**: Можем също да получим този изглед на таблицата чрез транспониране на предишната таблица, например чрез написване
**Забележка**: Можем също да получим този изглед на таблицата, като транспонираме предишната таблица, например, като напишем
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Тук `.T` означава операцията на транспониране на DataFrame, т.е. размяна на редове и колони, а операцията `rename` ни позволява да преименуваме колоните, за да съответстват на предишния пример.
Ето някои от най-важните операции, които можем да извършваме върху DataFrames:
Ето някои от най-важните операции, които можем да извършим върху DataFrames:
**Избор на колони**. Можем да изберем отделни колони, като напишем `df['A']` - тази операция връща Series. Можем също да изберем подмножество от колони в друг DataFrame, като напишем `df[['B','A']]` - това връща друг DataFrame.
@ -147,12 +147,12 @@ df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```python
df['DivA'] = df['A']-df['A'].mean()
```
Този пример изчислява отклонението на A от неговата средна стойност. Това, което всъщност се случва тук, е, че изчисляваме серия и след това я присвояваме на лявата страна, създавайки нова колона. Следователно не можем да използваме операции, които не са съвместими със серии, например, следният код е грешен:
Този пример изчислява отклонението на A от неговата средна стойност. Това, което всъщност се случва тук, е, че изчисляваме серия и след това я присвояваме на лявата страна, създавайки друга колона. Следователно, не можем да използваме никакви операции, които не са съвместими със серии, например, следният код е грешен:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Последният пример, въпреки че е синтактично правилен, дава грешен резултат, защото присвоява дължината на серията `B` на всички стойности в колоната, а не дължината на отделните елементи, както сме възнамерявали.
Последният пример, макар и синтактично правилен, ни дава грешен резултат, защото присвоява дължината на серията `B` на всички стойности в колоната, а не дължината на отделните елементи, както сме възнамерявали.
Ако трябва да изчислим сложни изрази като този, можем да използваме функцията `apply`. Последният пример може да бъде написан по следния начин:
```python
@ -175,14 +175,14 @@ df['LenB'] = df['B'].apply(len)
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Избор на редове по номера** може да бъде направен с конструкцията `iloc`. Например, за да изберем първите 5 реда от DataFrame:
**Избор на редове по номера** може да се направи с конструкцията `iloc`. Например, за да изберем първите 5 реда от DataFrame:
```python
df.iloc[:5]
```
**Групиране** често се използва за получаване на резултат, подобен на *сводни таблици* в Excel. Да предположим, че искаме да изчислим средната стойност на колоната `A` за всяка дадена стойност на `LenB`. Тогава можем да групираме нашия DataFrame по `LenB` и да извикаме `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ако трябва да изчислим средната стойност и броя на елементите в групата, тогава можем да използваме по-сложната функция `aggregate`:
```python
@ -217,51 +217,51 @@ df = pd.read_csv('file.csv')
## 🚀 Предизвикателство 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`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) и да го прочетете от началото до края. Можете също да изпълните клетките и да направите някои предизвикателства, които сме оставили за вас в края.
Тъй като искаме да демонстрираме как да работим с данни, ви каним да отворите [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) и да го прочетете от началото до края. Можете също така да изпълните клетките и да решите някои предизвикателства, които сме оставили за вас в края.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.bg.png)
> Ако не знаете как да изпълнявате код в Jupyter Notebook, разгледайте [тази статия](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Работа с неструктурирани данни
Докато данните често идват в таблична форма, в някои случаи трябва да работим с по-малко структурирани данни, например текст или изображения. В този случай, за да приложим техниките за обработка на данни, които видяхме по-горе, трябва по някакъв начин **да извлечем** структурирани данни. Ето няколко примера:
Докато данните много често идват в таблична форма, в някои случаи трябва да работим с по-малко структурирани данни, например текст или изображения. В този случай, за да приложим техниките за обработка на данни, които видяхме по-горе, трябва по някакъв начин да **извлечем** структурирани данни. Ето няколко примера:
* Извличане на ключови думи от текст и анализ на честотата на появата им
* Използване на невронни мрежи за извличане на информация за обекти на изображението
* Получаване на информация за емоциите на хората от видео камера
* Получаване на информация за емоциите на хората от видео поток
## 🚀 Предизвикателство 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) с повече от 7000 (към момента на писане) статии за COVID, достъпни с метаданни и резюмета (а за около половината от тях има и пълни текстове).
Пълен пример за анализ на този комплект данни с помощта на [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**: Не предоставяме копие на набора от данни като част от този репозиторий. Може първо да се наложи да изтеглите файла [`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), но той ще включва всички пълни текстове в допълнение към файла с метаданни.
Отворете [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) и го прочетете от началото до края. Можете също да изпълните клетките и да направите някои предизвикателства, които сме оставили за вас в края.
Отворете [`notebook-papers.ipynb`](notebook-papers.ipynb) и го прочетете от началото до края. Можете също така да изпълните клетките и да решите някои предизвикателства, които сме оставили за вас в края.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.bg.png)
## Обработка на данни от изображения
Напоследък са разработени много мощни 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) модел за откриване на специфични обекти от интерес.
* **Откриване на обекти**, за да откриете различни обекти на изображението. Услуги като [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) и следователно могат лесно да бъдат включени във вашия работен процес за изследване на данни.
Ето някои примери за изследване на данни от източници на изображения:
* В блог поста [Как да учим Data Science без програмиране](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), за да извлечем емоции на хората на снимки от събития, за да се опитаме да разберем какво прави хората щастливи.
* В блог поста [Как да учим Data Science без програмиране](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 в дълбочина вероятно е добра идея, ако сте сериозни за вашето пътуване в света на Data Science!
Независимо дали вече имате структурирани или неструктурирани данни, с помощта на Python можете да изпълните всички стъпки, свързани с обработката и разбирането на данни. Това вероятно е най-гъвкавият начин за обработка на данни и затова мнозинството от специалистите по данни използват Python като основен инструмент. Да изучите Python в дълбочина вероятно е добра идея, ако сте сериозни за вашето пътуване в света на Data Science!
## [Тест след лекцията](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -278,15 +278,15 @@ df = pd.read_csv('file.csv')
* [Научете Python по забавен начин с Turtle Graphics и фрактали](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)
## Благодарности
## Кредити
Този урок е създаден с ♥️ от [Dmitry Soshnikov](http://soshnikov.com)
---
**Отказ от отговорност**:
Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.
Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.

@ -1,69 +1,69 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T07:08:29+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:33:03+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "bn"
}
-->
# ডেটা নিয়ে কাজ করা: পাইথন এবং প্যান্ডাস লাইব্রেরি
# ডেটার সাথে কাজ করা: পাইথন এবং প্যান্ডাস লাইব্রেরি
| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| ![ [(@sketchthedocs)](https://sketchthedocs.dev) এর স্কেচনোট ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| পাইথন নিয়ে কাজ করা - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
| পাইথনের সাথে কাজ করা - _[@nitya](https://twitter.com/nitya) এর স্কেচনোট_ |
[![Intro Video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![পরিচিতি ভিডিও](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.bn.png)](https://youtu.be/dZjWOGbsN4Y)
যদিও ডেটাবেস ডেটা সংরক্ষণ এবং কুয়েরি করার জন্য খুবই কার্যকর পদ্ধতি প্রদান করে, ডেটা প্রক্রিয়াকরণের সবচেয়ে নমনীয় উপায় হল নিজের প্রোগ্রাম লিখে ডেটা ম্যানিপুলেট করা। অনেক ক্ষেত্রে, ডেটাবেস কুয়েরি করা আরও কার্যকর হতে পারে। তবে, কিছু ক্ষেত্রে যখন আরও জটিল ডেটা প্রক্রিয়াকরণের প্রয়োজন হয়, এটি সহজে SQL ব্যবহার করে করা সম্ভব নয়।
ডেটা প্রক্রিয়াকরণ যেকোনো প্রোগ্রামিং ভাষায় করা যেতে পারে, তবে কিছু ভাষা ডেটা নিয়ে কাজ করার ক্ষেত্রে উচ্চতর স্তরের। ডেটা বিজ্ঞানীরা সাধারণত নিম্নলিখিত ভাষাগুলোর একটি পছন্দ করেন:
ডেটাবেস ডেটা সংরক্ষণ এবং কুেরি করার জন্য খুবই কার্যকর পদ্ধতি প্রদান করে, তবে ডেটা প্রক্রিয়াকরণের সবচেয়ে নমনীয় উপায় হল আপনার নিজের প্রোগ্রাম লিখে ডেটা ম্যানিপুলেট করা। অনেক ক্ষেত্রে, ডেটাবেস কুেরি করা আরও কার্যকর হতে পারে। তবে, কিছু ক্ষেত্রে যখন আরও জটিল ডেটা প্রক্রিয়াকরণের প্রয়োজন হয়, তখন এটি সহজে SQL ব্যবহার করে করা সম্ভব হয় না।
ডেটা প্রক্রিয়াকরণ যেকোনো প্রোগ্রামিং ভাষায় করা যেতে পারে, তবে কিছু ভাষা ডেটার সাথে কাজ করার জন্য উচ্চতর স্তরের সুবিধা প্রদান করে। ডেটা বিজ্ঞানীরা সাধারণত নিম্নলিখিত ভাষাগুলোর একটি পছন্দ করেন:
* **[Python](https://www.python.org/)**, একটি সাধারণ উদ্দেশ্য প্রোগ্রামিং ভাষা, যা এর সরলতার কারণে শিক্ষার্থীদের জন্য সেরা বিকল্প হিসবে বিবেচিত হয়। পাইথনের অনেক অতিরিক্ত লাইব্রেরি রয়েছে যা আপনাকে অনেক বাস্তব সমস্যার সমাধান করতে সাহায্য করতে পারে, যেমন ZIP আর্কাইভ থেকে ডেটা বের করা বা ছবি গ্রেস্কেলে রূপান্তর করা। ডেটা বিজ্ঞান ছাড়াও, পাইথন ওয়েব ডেভেলপমেন্টের জন্যও প্রায়ই ব্যবহৃত হয়।
* **[R](https://www.r-project.org/)** একটি ঐতিহ্যবাহী টুলবক্স যা পরিসংখ্যানগত ডেটা প্রক্রিয়াকরণের জন্য তৈরি হয়েছে। এটি বড় লাইব্রেরি সংগ্রহ (CRAN) ধারণ করে, যা ডেটা প্রক্রিয়াকরণের জন্য একটি ভালো পছন্দ। তবে, R একটি সাধারণ উদ্দেশ্য প্রোগ্রামিং ভাষা নয় এবং ডেটা বিজ্ঞান ক্ষেত্রের বাইরে খুব কমই ব্যবহৃত হয়।
* **[Julia](https://julialang.org/)** আরেকটি ভাষা যা বিশেষভাবে ডেটা বিজ্ঞান জন্য তৈরি হয়েছে। এটি পাইথনের তুলনায় আরও ভালো পারফরম্যান্স দেওয়ার উদ্দেশ্যে তৈরি, যা বৈজ্ঞানিক পরীক্ষার জন্য একটি চমৎকার টুল।
* **[Python](https://www.python.org/)**: এটি একটি সাধারণ উদ্দেশ্য প্রোগ্রামিং ভাষা, যা এর সরলতার কারণে প্রায়শই শিক্ষার্থীদের জন্য সেরা বিকল্প হিসবে বিবেচিত হয়। পাইথনের অনেক অতিরিক্ত লাইব্রেরি রয়েছে যা আপনাকে অনেক বাস্তব সমস্যার সমাধান করতে সাহায্য করতে পারে, যেমন ZIP আর্কাইভ থেকে ডেটা বের করা বা ছবি গ্রেস্কেলে রূপান্তর করা। ডেটা বিজ্ঞানের পাশাপাশি, পাইথন ওয়েব ডেভেলপমেন্টেও প্রায়ই ব্যবহৃত হয়।
* **[R](https://www.r-project.org/)**: এটি একটি ঐতিহ্যবাহী টুলবক্স যা পরিসংখ্যানগত ডেটা প্রক্রিয়াকরণের জন্য তৈরি। এটি একটি বড় লাইব্রেরি সংগ্রহ (CRAN) ধারণ করে, যা এটিকে ডেটা প্রক্রিয়াকরণের জন্য একটি ভালো পছন্দ করে তোলে। তবে, R একটি সাধারণ উদ্দেশ্য প্রোগ্রামিং ভাষা নয় এবং এটি ডেটা বিজ্ঞানের বাইরে খুব কমই ব্যবহৃত হয়।
* **[Julia](https://julialang.org/)**: এটি ডেটা বিজ্ঞানের জন্য বিশেষভাবে তৈরি একটি ভাষা। এটি পাইথনের চেয়ে ভালো পারফরম্যান্স দেওয়ার জন্য ডিজাইন করা হয়েছে, যা এটিকে বৈজ্ঞানিক পরীক্ষার জন্য একটি চমৎকার টুল করে তোলে
এই পাঠে, আমরা সহজ ডেটা প্রক্রিয়াকরণের জন্য পাইথন ব্যবহার করার উপর মনোযোগ দেব। আমরা ভাষার মৌলিক পরিচিতি ধরে নেব। যদি আপনি পাইথনের আরও গভীর পরিচিতি চান, তাহলে নিম্নলিখিত উৎসগুলোর দিকে যেতে পারেন:
এই পাঠে, আমরা সহজ ডেটা প্রক্রিয়াকরণের জন্য পাইথন ব্যবহার করার উপর ফোকাস করব। আমরা ভাষার মৌলিক পরিচিতি ধরে নেব। যদি আপনি পাইথন সম্পর্কে আরও গভীরভাবে জানতে চান, তাহলে নিম্নলিখিত রিসোর্সগুলো দেখতে পারেন:
* [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/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 Graphics এবং Fractals দিয়ে মজার উপায়ে পাইথন শিখুন](https://github.com/shwars/pycourse) - পাইথন প্রোগ্রামিংয়ের জন্য একটি গিটহাব-ভিত্তিক দ্রুত পরিচিতি কোর্স
* [পাইথনের সাথে আপনার প্রথম পদক্ষেপ নিন](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/) সাধারণত অনেক সাধারণ কাজের জন্য পাইথনে অনেক দরকারী কোড নমুনা ধারণ করে।
> **সবচেয়ে কার্যকর পরামর্শ**: যখন আপনাকে ডেটার উপর একটি নির্দিষ্ট অপারেশন করতে হবে এবং আপনি জানেন না কীভাবে করবেন, তখন ইন্টারনেটে এটি খুঁজে দেখুন। [Stackoverflow](https://stackoverflow.com/) প্রায়শই অনেক সাধারণ কাজের জন্য পাইথনে দরকারী কোড নমুনা সরবরাহ করে।
## [পাঠের পূর্ববর্তী কুইজ](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [পাঠ-পূর্ব কুইজ](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## ট্যাবুলার ডেটা এবং ডেটাফ্রেম
## টবুলার ডেটা এবং ডেটাফ্রেম
আপনি ইতিমধ্যে ট্যাবুলার ডেটার সাথে পরিচিত হয়েছেন যখন আমরা রিলেশনাল ডেটাবেস নিয়ে আলোচনা করেছি। যখন আপনার কাছে অনেক ডেটা থাকে এবং এটি অনেক ভিন্ন সংযুক্ত টেবিলে থাকে, তখন এটি নিয়ে কাজ করার জন্য SQL ব্যবহার করা অবশ্যই অর্থবহ। তবে, অনেক ক্ষেত্রে আমাদের একটি ডেটার টেবিল থাকে এবং আমরা এই ডেটা সম্পর্কে কিছু **বোঝাপড়া** বা **অন্তর্দৃষ্টি** পেতে চাই, যেমন ডিস্ট্রিবিউশন, মানগুলোর মধ্যে সম্পর্ক ইত্যাদি। ডেটা বিজ্ঞানে, অনেক ক্ষেত্রে আমাদের মূল ডেটার কিছু রূপান্তর করতে হয়, তারপর ভিজ্যুয়ালাইজেশন। এই দুটি ধাপই পাইথন ব্যবহার করে সহজে করা যায়।
আপনি ইতিমধ্যে টবুলার ডেটার সাথে পরিচিত হয়েছেন যখন আমরা রিলেশনাল ডেটাবেস নিয়ে আলোচনা করেছি। যখন আপনার কাছে অনেক ডেটা থাকে এবং এটি বিভিন্ন সংযুক্ত টেবিলে থাকে, তখন এটি পরিচালনার জন্য SQL ব্যবহার করা অবশ্যই যৌক্তিক। তবে, অনেক ক্ষেত্রে আমাদের একটি ডেটার টেবিল থাকে এবং আমরা এই ডেটা সম্পর্কে কিছু **বোঝাপড়া** বা **অন্তর্দৃষ্টি** পেতে চাই, যেমন ডিস্ট্রিবিউশন, মানগুলোর মধ্যে সম্পর্ক ইত্যাদি। ডেটা বিজ্ঞানে, অনেক সময় আমাদের মূল ডেটার কিছু রূপান্তর করতে হয়, তারপর ভিজ্যুয়ালাইজেশন করতে হয়। এই দুটি ধাপই পাইথন ব্যবহার করে সহজে করা যায়।
পাইথনে ট্যাবুলার ডেটার সাথে কাজ করার জন্য দুটি সবচেয়ে দরকারী লাইব্রেরি রয়েছে:
* **[Pandas](https://pandas.pydata.org/)** আপনাকে তথাকথিত **ডেটাফ্রেম** ম্যানিপুলেট করতে দেয়, যা রিলেশনাল টেবিলের অনুরূপ। আপনি নামযুক্ত কলাম রাখতে পারেন এবং সারি, কলাম এবং ডেটাফ্রেমের উপর বিভিন্ন অপারেশন করতে পারেন।
* **[Numpy](https://numpy.org/)** এটি লাইব্রেরি যা **টেনসর**, অর্থাৎ বহু-মাত্রিক **অ্যারে** নিয়ে কাজ করে। অ্যারে একই ধরনের মান ধারণ করে এবং এটি ডেটাফ্রেমের চেয়ে সহজ, তবে এটি আরও বেশি গাণিতিক অপারেশন প্রদান করে এবং কম ওভারহেড তৈরি করে।
পাইথনে টবুলার ডেটার সাথে কাজ করার জন্য দুটি সবচেয়ে দরকারী লাইব্রেরি হল:
* **[Pandas](https://pandas.pydata.org/)**: এটি আপনাকে **ডেটাফ্রেম** ম্যানিপুলেট করতে দেয়, যা রিলেশনাল টেবিলের অনুরূপ। আপনি নামকৃত কলাম পেতে পারেন এবং সারি, কলাম এবং ডেটাফ্রেমের উপর বিভিন্ন অপারেশন করতে পারেন।
* **[Numpy](https://numpy.org/)**: এটি **টেনসর**, অর্থাৎ বহু-মাত্রিক **অ্যারে** নিয়ে কাজ করার জন্য একটি লাইব্রেরি। অ্যারেতে একই ধরনের মান থাকে এবং এটি ডেটাফ্রেমের চেয়ে সহজ, তবে এটি আরও গাণিতিক অপারেশন প্রদান করে এবং কম ওভারহেড তৈরি করে।
এছাড়াও কয়েকটি অন্যান্য লাইব্রেরি রয়েছে যা আপনার জানা উচিত:
* **[Matplotlib](https://matplotlib.org/)** এটি লাইব্রেরি যা ডেটা ভিজ্যুয়ালাইজেশন এবং গ্রাফ আঁকার জন্য ব্যবহৃত হয়
* **[SciPy](https://www.scipy.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
```
```
প্যান্ডাস কয়েকটি মৌলিক ধারণার উপর ভিত্তি করে তৈরি।
Pandas কয়েকটি মৌলিক ধারণার উপর ভিত্তি করে কাজ করে।
### সিরিজ
### সিরিজ (Series)
**সিরিজ** হল মানগুলোর একটি ক্রম, যা তালিকা বা numpy অ্যারের মতো। প্রধান পার্থক্য হল সিরিজের একটি **ইনডেক্স** থাকে, এবং যখন আমরা সিরিজের উপর অপারেশন করি (যেমন, যোগ করি), তখন ইন্ডেক্সটি বিবেচনা করা হয়। ইন্ডেক্সটি সাধারণ পূর্ণসংখ্যা সারি নম্বর হতে পারে (যখন তালিকা বা অ্যারে থেকে সিরিজ তৈরি করা হয় তখন এটি ডিফল্ট ইন্ডেক্স), অথবা এটি একটি জটিল কাঠামো, যেমন তারিখের সময়কাল হতে পারে।
**সিরিজ** হল মানগুলোর একটি ক্রম, যা একটি তালিকা বা numpy অ্যারের মতো। প্রধান পার্থক্য হল সিরিজের একটি **ইনডেক্স** থাকে, এবং যখন আমরা সিরিজের উপর অপারেশন করি (যেমন, যোগ করি), তখন ইনডেক্সটি বিবেচনায় নেওয়া হয়। ইনডেক্সটি একটি সাধারণ পূর্ণসংখ্যা সারি নম্বর হতে পারে (যখন তালিকা বা অ্যারে থেকে সিরিজ তৈরি করা হয়, এটি ডিফল্ট ইনডেক্স), অথবা এটি একটি জটিল কাঠামো, যেমন তারিখের সময়কাল হতে পারে।
> **নোট**: সংযুক্ত নোটবুকে [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) কিছু প্রাথমিক প্যান্ডাস কোড রয়েছে। আমরা এখানে কিছু উদাহরণ তুলে ধরেছি, এবং আপনি অবশ্যই পুরো নোটবুকটি দেখতে পারেন।
> **নোট**: সহগামী নোটবুক [`notebook.ipynb`](notebook.ipynb)-এ কিছু প্রাথমিক Pandas কোড রয়েছে। আমরা এখানে কিছু উদাহরণ উল্লেখ করেছি, এবং আপনি অবশ্যই পুরো নোটবুকটি দেখতে পারেন।
একটি উদাহরণ বিবেচনা করুন: আমরা আমাদের আইসক্রিম স্পটের বিক্রয় বিশ্লেষণ করতে চাই। আসুন কিছু সময়ের জন্য বিক্রয়ের সংখ্যা (প্রতিদিন বিক্রি হওয়া আইটেমের সংখ্যা) একটি সিরিজ তৈরি করি:
উদাহরণস্বরূপ, আমরা আমাদের আইসক্রিম দোকানের বিক্রয় বিশ্লেষণ করতে চাই। চলুন একটি নির্দিষ্ট সময়ের জন্য বিক্রয়ের সংখ্যা (প্রতিদিন বিক্রি হওয়া আইটেমের সংখ্যা) তৈরি করি:
```python
start_date = "Jan 1, 2020"
@ -72,48 +72,48 @@ idx = pd.date_range(start_date,end_date)
print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
```
![টাইম সিরিজ প্লট](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.bn.png)
এখন ধরুন প্রতি সপ্তাহে আমরা বন্ধুদের জন্য একটি পার্টি আয়োজন করি এবং পার্টির জন্য অতিরিক্ত ১০ প্যাক আইসক্রিম নিয়ে যাই। আমরা এটি প্রদর্শনের জন্য একটি সিরিজ তৈরি করতে পারি:
এখন ধরুন প্রতি সপ্তাহে আমরা বন্ধুদের জন্য একটি পার্টি আয়োজন করি এবং পার্টির জন্য অতিরিক্ত ১০ প্যাক আইসক্রিম নিই। আমরা এটি দেখানোর জন্য সপ্তাহ অনুযায়ী ইনডেক্স করা আরেকটি সিরিজ তৈরি করতে পারি:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
যখন আমরা দুটি সিরিজ যোগ করি, তখন আমরা মোট সংখ্যা পাই:
```
যখন আমরা দুটি সিরিজ যোগ করি, তখন আমরা মোট সংখ্যা পাই:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
```
![টাইম সিরিজ প্লট](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.bn.png)
> **নোট** যে আমরা সাধারণ সিনট্যাক্স `total_items+additional_items` ব্যবহার করছি না। যদি আমরা করতাম, তাহলে আমরা অনেক `NaN` (*Not a Number*) মান পেতাম ফলাফলের সিরিজে। এর কারণ হল `additional_items` সিরিজের কিছু ইনডেক্স পয়েন্টে মান অনুপস্থিত, এবং `NaN` যোগ করলে ফলাফল `NaN` হয়। তাই যোগ করার সময় আমাদের `fill_value` প্যারামিটার নির্দিষ্ট করতে হবে।
> **নোট** যে আমরা সাধারণ সিনট্যাক্স `total_items+additional_items` ব্যবহার করছি না। যদি করতাম, তাহলে আমরা অনেক `NaN` (*Not a Number*) মান পেতাম। এর কারণ হল `additional_items` সিরিজের কিছু ইনডেক্স পয়েন্টে মান অনুপস্থিত, এবং `NaN`-এর সাথে কিছু যোগ করলে ফলাফল `NaN` হয়। তাই যোগ করার সময় আমাদের `fill_value` প্যারামিটার নির্দিষ্ট করতে হয়।
টাইম সিরিজের সাথে, আমরা বিভিন্ন সময়ের ব্যবধানে সিরিজ **রিস্যাম্পল** করতে পারি। উদাহরণস্বরূপ, ধরুন আমরা মাসিক গড় বিক্রয় পরিমাণ গণনা করতে চাই। আমরা নিম্নলিখিত কোড ব্যবহার করতে পারি:
টাইম সিরিজের সাথে, আমরা বিভিন্ন সময়ের ব্যবধানে সিরিজ **পুনঃনমুনা** করতে পারি। উদাহরণস্বরূপ, ধরুন আমরা মাসিক গড় বিক্রয় পরিমাণ গণনা করতে চাই। আমরা নিম্নলিখিত কোড ব্যবহার করতে পারি:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Monthly Time Series Averages](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
```
![মাসিক টাইম সিরিজ গড়](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.bn.png)
### ডেটাফ্রেম
### ডেটাফ্রেম (DataFrame)
ডেটাফ্রেম মূলত একই ইনডেক্স সহ সিরিজের একটি সংগ্রহ। আমরা একাধিক সিরিজ একসাথে ডেটাফ্রেমে সংযুক্ত করতে পারি:
ডেটাফ্রেম মূলত একই ইনডেক্স সহ সিরিজের একটি সংগ্রহ। আমরা একাধিক সিরিজ একত্রিত করে একটি ডেটাফ্রেম তৈরি করতে পারি:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
এটি একটি অনুভূমিক টেবিল তৈরি করবে:
```
এটি একটি অনুভূমিক টেবিল তৈরি করবে:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
আমরা সিরিজকে কলাম হিসেবে ব্যবহার করতে পারি এবং ডিকশনারি ব্যবহার করে কলামের নাম নির্দিষ্ট করতে পারি:
আমরা সিরিজগুলো কলাম হিসেবে ব্যবহার করতে পারি এবং ডিকশনারি ব্যবহার করে কলামের নাম নির্দিষ্ট করতে পারি:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
এটি আমাদের একটি টেবিল দেবে:
```
এটি আমাদের একটি টেবিল দেবে:
| | A | B |
| --- | --- | ------ |
@ -125,41 +125,41 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 5 | 6 | and |
| 6 | 7 | Pandas |
| 7 | 8 | very |
| 8 | 9 | much |
| 8 | 9 | much |
**নোট** যে আমরা আগের টেবিলটি ট্রান্সপোজ করে এই টেবিল লেআউটও পেতে পারি, যেমন লিখে
**নোট** যে আমরা আগের টেবিলটি ট্রান্সপোজ করে এই টেবিল লেআউটও পেতে পারি, যেমন লিখে:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
এখানে `.T` ডেটাফ্রেম ট্রান্সপোজ করার অপারেশন নির্দেশ করে, অর্থাৎ সারি এবং কলাম পরিবর্তন করা, এবং `rename` অপারেশন আমাদের কলামগুলোর নাম পরিবর্তন করতে দেয় যাতে এটি আগের উদাহরণের সাথে মিলে যায়।
```
এখানে `.T` ডেটাফ্রেম ট্রান্সপোজ করার অপারেশন নির্দেশ করে, অর্থাৎ সারি এবং কলাম পরিবর্তন করা, এবং `rename` অপারেশন আমাদের কলামগুলোর নাম পরিবর্তন করতে দেয় যাতে এটি আগের উদাহরণের সাথে মেলে।
ডেটাফ্রেমে আমরা কয়েকটি গুরুত্বপূর্ণ অপারেশন করতে পারি:
ডেটাফ্রেমে আমরা যে কয়েকটি গুরুত্বপূর্ণ অপারেশন করতে পারি তা হলো:
**কলাম নির্বাচন**। আমরা `df['A']` লিখে পৃথক কলাম নির্বাচন করতে পারি - এই অপারেশন একটি সিরিজ প্রদান করে। আমরা `df[['B','A']]` লিখে কলামের একটি সাবসেট অন্য ডেটাফ্রেমে নির্বাচন করতে পারি - এটি আরেকটি ডেটাফ্রেম প্রদান করে।
**কলাম নির্বাচন**। আমরা `df['A']` লিখে পৃথক কলাম নির্বাচন করতে পারি - এই অপারেশন একটি সিরিজ প্রদান করে। আমরা `df[['B','A']]` লিখে কলামের একটি সাবসেট অন্য ডেটাফ্রেমে নির্বাচন করতে পারি - এটি আরেকটি ডেটাফ্রেম প্রদান করে।
**নির্দিষ্ট মানদণ্ড অনুযায়ী সারি ফিল্টার করা**। উদাহরণস্বরূপ, কলাম `A` এর মান ৫ এর বেশি রেখে শুধুমাত্র সারি রাখতে আমরা লিখতে পারি `df[df['A']>5]`
**নির্দিষ্ট ক্রাইটেরিয়ার উপর ভিত্তি করে সারি ফিল্টার করা**। উদাহরণস্বরূপ, শুধুমাত্র সেই সারিগুলো রাখতে যেখানে কলাম `A` ৫-এর চেয়ে বড়, আমরা লিখতে পারি `df[df['A']>5]`
> **নোট**: ফিল্টারিং যেভাবে কাজ করে তা হলো নিম্নরূপ। `df['A']<5` এক্সপ্রেশন একটি বুলিয়ান সিরিজ প্রদান করে, যা মূল সিরিজ `df['A']` এর প্রতিটি উপাদানের জন্য এক্সপ্রেশনটি `True` বা `False` কিনা তা নির্দেশ করে। যখন বুলিয়ান সিরিজটি একটি ইনডেক্স হিসেবে ব্যবহৃত হয়, এটি ডেটাফ্রেমে সারিগুলোর একটি সাবসেট প্রদান করে। তাই এটি সম্ভব নয় যে যেকোনো পাইটন বুলিয়ান এক্সপ্রেশন ব্যবহার করা যাবে, উদাহরণস্বরূপ, `df[df['A']>5 and df['A']<7]` লেখা ভুল হবে। পরিবর্তে, আপনাকে বুলিয়ান সিরিজে বিশেষ `&` অপারেশন ব্যবহার করতে হবে, যেমন লিখতে হবে `df[(df['A']>5) & (df['A']<7)]` (*এখানে বন্ধনীগুলো গুরুত্বপূর্ণ*).
> **নোট**: ফিল্টারিং যেভাবে কাজ করে তা হলো নিম্নরূপ। `df['A']<5` এক্সপ্রেশন একটি বুলিয়ান সিরিজ প্রদান করে, যা নির্দেশ করে যে মূল সিরিজ `df['A']`-এর প্রতিটি উপাদানের জন্য এক্সপ্রেশনটি `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'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
শেষ উদাহরণটি, যদিও সিনট্যাকটিক্যালি সঠিক, আমাদের ভুল ফলাফল দেয়, কারণ এটি সিরিজ `B` এর দৈর্ঘ্যকে কলামের সমস্ত মানে বরাদ্দ করে, এবং আমরা যা চেয়েছিলাম তা নয়।
```
শেষ উদাহরণটি, যদিও সিনট্যাক্সগতভাবে সঠিক, আমাদের ভুল ফলাফল দেয়, কারণ এটি সিরিজ `B`-এর দৈর্ঘ্য কলামের সমস্ত মানে অ্যাসাইন করে, এবং আমরা যা চেয়েছিলাম তা নয়।
যদি আমাদের এই ধরনের জটিল এক্সপ্রেশন গণনা করতে হয়, তাহলে আমরা `apply` ফাংশন ব্যবহার করতে পারি। শেষ উদাহরণটি নিম্নরূপ লেখা যেতে পারে:
যদি আমাদের এই ধরনের জটিল এক্সপ্রেশন গণনা করতে হয়, তে আমরা `apply` ফাংশন ব্যবহার করতে পারি। শেষ উদাহরণটি নিম্নরূপ লেখা যেতে পারে:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
df['LenB'] = df['B'].apply(len)
```
```
উপরের অপারেশনগুলোর পরে, আমরা নিম্নলিখিত ডেটাফ্রেম পাব:
উপরের অপারেশনগুলোর পরে, আমরা নিম্নলিখিত ডেটাফ্রেম পাব:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -171,24 +171,24 @@ df['LenB'] = df['B'].apply(len)
| 5 | 6 | and | 1.0 | 3 |
| 6 | 7 | Pandas | 2.0 | 6 |
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**সংখ্যার উপর ভিত্তি করে সারি নির্বাচন** `iloc` কন্ট্রাক্ট ব্যবহার করে করা যেতে পারে। উদাহরণস্বরূপ, ডেটাফ্রেম থেকে প্রথম ৫টি সারি নির্বাচন করতে:
**সংখ্যার উপর ভিত্তি করে সারি নির্বাচন** `iloc` কন্ট্রাক্ট ব্যবহার করে করা যেতে পারে। উদাহরণস্বরূপ, ডেটাফ্রেম থেকে প্রথম ৫টি সারি নির্বাচন করতে:
```python
df.iloc[:5]
```
```
**গ্রুপিং** প্রায়ই *পিভট টেবিল* এর মতো ফলাফল পেতে ব্যবহৃত হয়। ধরুন আমরা `LenB` এর প্রতিটি নির্দিষ্ট সংখ্যার জন্য কলাম `A` এর গড় মান গণনা করতে চাই। তখন আমরা আমাদের ডেটাফ্রেমকে `LenB` দ্বারা গ্রুপ করতে পারি এবং `mean` কল করতে পারি:
**গ্রুপিং** প্রায়এক্সেলে *পিভট টেবিল* এর মতো ফলাফল পেতে ব্যবহৃত হয়। ধরুন আমরা `LenB`-এর প্রতিটি নির্দিষ্ট সংখ্যার জন্য কলাম `A`-এর গড় মান গণনা করতে চাই। তখন আমরা আমাদের ডেটাফ্রেমকে `LenB` দ্বারা গ্রুপ করতে পারি এবং `mean` কল করতে পারি:
```python
df.groupby(by='LenB').mean()
```
যদি আমাদের গড় এবং গ্রুপে উপাদানের সংখ্যা গণনা করতে হয়, তাহলে আমরা আরও জটিল `aggregate` ফাংশন ব্যবহার করতে পারি:
df.groupby(by='LenB')[['A','DivA']].mean()
```
যদি আমাদের গ্রুপে গড় এবং উপাদানের সংখ্যা গণনা করতে হয়, তে আমরা আরও জটিল `aggregate` ফাংশন ব্যবহার করতে পারি:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
এটি আমাদের নিম্নলিখিত টেবিল দেবে:
```
এটি আমাদের নিম্নলিখিত টেবিল দেবে:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -196,30 +196,30 @@ df.groupby(by='LenB') \
| 2 | 1 | 3.000000 |
| 3 | 2 | 5.000000 |
| 4 | 3 | 6.333333 |
| 6 | 2 | 6.000000 |
| 6 | 2 | 6.000000 |
### ডেটা সংগ্রহ করা
আমরা দেখেছি কীভাবে Python অবজেক্ট থেকে সহজেই Series এবং DataFrames তৈরি করা যায়। তবে, সাধারণত ডেটা একটি টেক্সট ফাইল বা Excel টেবিল আকারে আসে। সৌভাগ্যক্রমে, Pandas আমাদের ডিস্ক থেকে ডেটা লোড করার একটি সহজ উপায় প্রদান করে। উদাহরণস্বরূপ, CSV ফাইল পড়া এতটাই সহজ:
### ডেটা সংগ্রহ করা
আমরা দেখেছি কীভাবে Python অবজেক্ট থেকে সহজেই Series এবং DataFrames তৈরি করা যায়। তবে, ডেটা সাধারণত টেক্সট ফাইল বা Excel টেবিলের আকারে আসে। সৌভাগ্যক্রমে, Pandas আমাদের ডিস্ক থেকে ডেটা লোড করার একটি সহজ উপায় প্রদান করে। উদাহরণস্বরূপ, CSV ফাইল পড়া এতটাই সহজ:
```python
df = pd.read_csv('file.csv')
```
আমরা "Challenge" সেকশনে আরও উদাহরণ দেখব, যেখানে বাইরের ওয়েবসাইট থেকে ডেটা আনার বিষয় থাকবে।
আমরা "Challenge" সেকশনে আরও উদাহরণ দেখব, যেখানে বাইরের ওয়েবসাইট থেকে ডেটা আনার বিষয়টি অন্তর্ভুক্ত থাকবে।
### প্রিন্টিং এবং প্লটিং
একজন Data Scientist প্রায়ই ডেটা অন্বেষণ করতে হয়, তাই এটি ভিজ্যুয়ালাইজ করার ক্ষমতা থাকা গুরুত্বপূর্ণ। যখন DataFrame বড় হয়, তখন অনেক সময় আমরা নিশ্চিত হতে চাই যে আমরা সবকিছু সঠিকভাবে করছি, এবং এর জন্য প্রথম কয়েকটি সারি প্রিন্ট করা দরকার। এটি `df.head()` কল করে করা যায়। যদি আপনি এটি Jupyter Notebook থেকে চালান, এটি DataFrame-কে সুন্দর টেবিল আকারে প্রিন্ট করবে।
একজন Data Scientist প্রায়ই ডেটা অন্বেষণ করতে হয়, তাই এটি ভিজ্যুয়ালাইজ করার ক্ষমতা থাকা গুরুত্বপূর্ণ। যখন DataFrame বড় হয়, তখন অনেক সময় আমরা নিশ্চিত হতে চাই যে আমরা সবকিছু সঠিকভাবে করছি, এবং এর জন্য প্রথম কয়েকটি সারি প্রিন্ট করা দরকার। এটি `df.head()` কল করে করা যায়। যদি আপনি Jupyter Notebook থেকে এটি চালান, এটি DataFrame-কে সুন্দর টেবিল আকারে প্রিন্ট করবে।
আমরা `plot` ফাংশনের ব্যবহারও দেখেছি কিছু কলাম ভিজ্যুয়ালাইজ করার জন্য। যদিও `plot` অনেক কাজের জন্য খুবই উপযোগী এবং `kind=` প্যারামিটারের মাধ্যমে বিভিন্ন গ্রাফ টাইপ সমর্থন করে, আপনি সবসময় raw `matplotlib` লাইব্রেরি ব্যবহার করে আরও জটিল কিছু প্লট করতে পারেন। আমরা আলাদা কোর্স লেসনে ডেটা ভিজ্যুয়ালাইজেশন বিস্তারিতভাবে আলোচনা করব।
আমরা `plot` ফাংশনের ব্যবহারও দেখেছি কিছু কলাম ভিজ্যুয়ালাইজ করার জন্য। যদিও `plot` অনেক কাজের জন্য খুবই উপযোগী এবং `kind=` প্যারামিটারের মাধ্যমে বিভিন্ন গ্রাফ টাইপ সমর্থন করে, আপনি সবসময় কাঁচা `matplotlib` লাইব্রেরি ব্যবহার করে আরও জটিল কিছু প্লট করতে পারেন। আমরা আলাদা কোর্স লেসনে ডেটা ভিজ্যুয়ালাইজেশন বিস্তারিতভাবে আলোচনা করব।
এই ওভারভিউটি Pandas-এর সবচেয়ে গুরুত্বপূর্ণ ধারণাগুলো কভার করে, তবে লাইব্রেরিটি খুবই সমৃদ্ধ এবং এর মাধ্যমে আপনি যা করতে পারেন তার কোনো সীমা নেই! এখন চলুন এই জ্ঞান ব্যবহার করে একটি নির্দিষ্ট সমস্যার সমাধান করি।
এই ওভারভিউ Pandas-এর সবচেয়ে গুরুত্বপূর্ণ ধারণাগুলো কভার করে, তবে লাইব্রেরিটি খুবই সমৃদ্ধ এবং এর মাধ্যমে আপনি অসীম কাজ করতে পারেন! এখন চলুন এই জ্ঞান ব্যবহার করে একটি নির্দিষ্ট সমস্যার সমাধান করি।
## 🚀 চ্যালেঞ্জ ১: 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 Repository](https://github.com/CSSEGISandData/COVID-19)-এ উপলব্ধ
যেহেতু আমরা ডেটা নিয়ে কাজ করার পদ্ধতি প্রদর্শন করতে চাই, আমরা আপনাকে [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) খুলে শুরু থেকে শেষ পর্যন্ত পড়ার আমন্ত্রণ জানাই। আপনি সেলগুলো চালাতে পারেন এবং শেষে আমাদের দেওয়া কিছু চ্যালেঞ্জ করতে পারেন।
যেহেতু আমরা ডেটা নিয়ে কাজ করার পদ্ধতি প্রদর্শন করতে চাই, আমরা আপনাকে [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) খুলে শুরু থেকে শেষ পর্যন্ত পড়ার আমন্ত্রণ জানাই। আপনি সেলগুলো চালাতে পারেন এবং শেষে আমাদের দেওয়া কিছু চ্যালেঞ্জ সম্পন্ন করতে পারেন।
![COVID ছড়ানো](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID ছড়ানো](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.bn.png)
> যদি আপনি Jupyter Notebook-এ কোড চালানোর পদ্ধতি না জানেন, [এই আর্টিকেলটি](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) দেখুন।
@ -227,58 +227,58 @@ df = pd.read_csv('file.csv')
যদিও ডেটা প্রায়ই টেবুলার আকারে আসে, কিছু ক্ষেত্রে আমাদের কম সংগঠিত ডেটার সাথে কাজ করতে হয়, যেমন টেক্সট বা ছবি। এই ক্ষেত্রে, উপরে দেখা ডেটা প্রসেসিং কৌশল প্রয়োগ করতে, আমাদের **সংগঠিত** ডেটা বের করতে হয়। এখানে কিছু উদাহরণ দেওয়া হলো:
* টেক্সট থেকে কীওয়ার্ড বের করা এবং সেগুলো কতবার উপস্থিত হয়েছে তা দেখা
* ছবিতে থাকা অবজেক্ট সম্পর্কে তথ্য বের করতে নিউরাল নেটওয়ার্ক ব্যবহার করা
* টেক্সট থেকে কীওয়ার্ড বের করা এবং কীভাবে সেগুলো কতবার উপস্থিত হয় তা দেখা
* ছবিতে অবজেক্ট সম্পর্কে তথ্য বের করতে নিউরাল নেটওয়ার্ক ব্যবহার করা
* ভিডিও ক্যামেরা ফিডে মানুষের আবেগ সম্পর্কে তথ্য পাওয়া
## 🚀 চ্যালেঞ্জ ২: COVID সম্পর্কিত গবেষণাপত্র বিশ্লেষণ
## 🚀 চ্যালেঞ্জ ২: COVID পেপার বিশ্লেষণ
এই চ্যালেঞ্জে, আমরা COVID মহামারীর বিষয়টি চালিয়ে যাব এবং এই বিষয়ে বৈজ্ঞানিক গবেষণাপত্র প্রসেসিংয়ে ফোকাস করব। [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge)-এ -এর বেশি (লেখার সময়) COVID সম্পর্কিত গবেষণাপত্র রয়েছে, যা মেটাডেটা এবং অ্যাবস্ট্রাক্টসহ পাওয়া যায় (এবং এর মধ্যে প্রায় অর্ধেকের পূর্ণ টেক্সটও সরবরাহ করা হয়েছে)।
এই চ্যালেঞ্জে, আমরা COVID মহামারীর বিষয়টি নিয়ে আলোচনা চালিয়ে যাব এবং এই বিষয়ে বৈজ্ঞানিক পেপার প্রসেসিংয়ে ফোকাস করব। [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge)-এ -এর বেশি (লেখার সময়) COVID সম্পর্কিত পেপার রয়েছে, যা মেটাডেটা এবং অ্যাবস্ট্রাক্টসহ উপলব্ধ (এবং এর মধ্যে প্রায় অর্ধেকের জন্য পূর্ণ টেক্সটও সরবরাহ করা হয়েছে)।
এই ডেটাসেট বিশ্লেষণের একটি পূর্ণ উদাহরণ [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) ডেটাসেট ডাউনলোড করতে পারেন, তবে এটি মেটাডেটা ফাইলের পাশাপাশি সমস্ত পূর্ণ টেক্সট অন্তর্ভুক্ত করবে।
> **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) ডেটাসেট ডাউনলোড করতে পারেন, তবে এটি মেটাডেটা ফাইলের পাশাপাশি সমস্ত পূর্ণ টেক্সট অন্তর্ভুক্ত করবে।
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) খুলুন এবং শুরু থেকে শেষ পর্যন্ত পড়ুন। আপনি সেলগুলো চালাতে পারেন এবং শেষে আমাদের দেওয়া কিছু চ্যালেঞ্জ করতে পারেন।
[`notebook-papers.ipynb`](notebook-papers.ipynb) খুলুন এবং শুরু থেকে শেষ পর্যন্ত পড়ুন। আপনি সেলগুলো চালাতে পারেন এবং শেষে আমাদের দেওয়া কিছু চ্যালেঞ্জ সম্পন্ন করতে পারেন।
![Covid চিকিৎসা](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid মেডিকেল ট্রিটমেন্ট](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.bn.png)
## ইমেজ ডেটা প্রসেসিং
সম্প্রতি, খুব শক্তিশালী AI মডেল তৈরি করা হয়েছে যা আমাদের ছবি বুঝতে সাহায্য করে। অনেক কাজ প্রি-ট্রেইনড নিউরাল নেটওয়ার্ক বা ক্লাউড সার্ভিস ব্যবহার করে সমাধান করা যায়। কিছু উদাহরণ হলো:
* **ইমেজ ক্লাসিফিকেশন**, যা আপনাকে ছবিকে পূর্বনির্ধারিত ক্লাসগুলোর মধ্যে একটিতে শ্রেণীবদ্ধ করতে সাহায্য করে। আপনি [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?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)-এর মাধ্যমে করা যায়।
* **ফেস ডিটেকশন**, যার মধ্যে বয়স, লিঙ্গ এবং আবেগ সনাক্তকরণ অন্তর্ভুক্ত। এটি [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) ব্যবহার করে কল করা যায় এবং সহজেই আপনার ডেটা এক্সপ্লোরেশন ওয়ার্কফ্লোতে অন্তর্ভুক্ত করা যায়।
এখানে ইমেজ ডেটা সোর্স থেকে ডেটা এক্সপ্লোর করার কিছু উদাহরণ দেওয়া হলো:
* ব্লগ পোস্ট [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) ব্যবহার করে ইভেন্টের ছবিতে থাকা মানুষের আবেগ বের করি, চেষ্টা করি বুঝতে কী মানুষকে খুশি করে
* ব্লগ পোস্ট [কোডিং ছাড়াই ডেটা সায়েন্স শেখার উপায়](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 ব্যবহার করে আপনি ডেটা প্রসেসিং এবং বোঝার সাথে সম্পর্কিত সমস্ত ধাপ সম্পন্ন করতে পারেন। এটি সম্ভবত ডেটা প্রসেসিংয়ের সবচেয়ে নমনীয় উপায়, এবং এ কারণেই বেশিরভাগ Data Scientist 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 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) টিউটোরিয়াল
* [Pandas Visualization](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)-এর ডকুমেন্টেশন
* অফিসিয়াল [10 মিনিটে Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) টিউটোরিয়াল
* [Pandas Visualization](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)
* [Take your First Steps with 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)-এ লার্নিং পাথ
* [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)
## ক্রেডিট

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T08:28:21+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:39:49+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "br"
}
@ -11,9 +11,9 @@ CO_OP_TRANSLATOR_METADATA:
| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Trabalhando com Python - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
| Trabalhando com Python - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
[![Vídeo de Introdução](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Vídeo de Introdução](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.br.png)](https://youtu.be/dZjWOGbsN4Y)
Embora bancos de dados ofereçam maneiras muito eficientes de armazenar dados e consultá-los usando linguagens de consulta, a forma mais flexível de processar dados é escrever seu próprio programa para manipulá-los. Em muitos casos, realizar uma consulta em um banco de dados seria uma maneira mais eficaz. No entanto, em alguns casos, quando é necessário um processamento de dados mais complexo, isso não pode ser feito facilmente usando SQL.
O processamento de dados pode ser programado em qualquer linguagem de programação, mas existem certas linguagens que são mais adequadas para trabalhar com dados. Cientistas de dados geralmente preferem uma das seguintes linguagens:
@ -22,28 +22,28 @@ O processamento de dados pode ser programado em qualquer linguagem de programaç
* **[R](https://www.r-project.org/)** é uma ferramenta tradicional desenvolvida com foco no processamento estatístico de dados. Ela também contém um grande repositório de bibliotecas (CRAN), tornando-se uma boa escolha para processamento de dados. No entanto, R não é uma linguagem de propósito geral e raramente é usada fora do domínio da ciência de dados.
* **[Julia](https://julialang.org/)** é outra linguagem desenvolvida especificamente para ciência de dados. Ela foi projetada para oferecer melhor desempenho do que Python, tornando-se uma ótima ferramenta para experimentação científica.
Nesta lição, vamos nos concentrar em usar Python para processamento simples de dados. Assumiremos que você já tem uma familiaridade básica com a linguagem. Se quiser um aprendizado mais aprofundado sobre Python, você pode consultar os seguintes recursos:
Nesta lição, vamos nos concentrar em usar Python para processamento simples de dados. Assumiremos que você já tem uma familiaridade básica com a linguagem. Se quiser um aprendizado mais aprofundado sobre Python, pode consultar os seguintes recursos:
* [Aprenda Python de forma divertida com Turtle Graphics e Fractais](https://github.com/shwars/pycourse) - Curso introdutório rápido baseado no GitHub sobre programação em Python
* [Dê seus primeiros passos com Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Caminho de aprendizado no [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Os dados podem vir em várias formas. Nesta lição, consideraremos três formas de dados - **dados tabulares**, **texto** e **imagens**.
Os dados podem vir em muitas formas. Nesta lição, consideraremos três formas de dados - **dados tabulares**, **texto** e **imagens**.
Vamos nos concentrar em alguns exemplos de processamento de dados, em vez de oferecer uma visão geral completa de todas as bibliotecas relacionadas. Isso permitirá que você entenda o conceito principal do que é possível e saiba onde encontrar soluções para seus problemas quando necessário.
Vamos nos concentrar em alguns exemplos de processamento de dados, em vez de oferecer uma visão geral completa de todas as bibliotecas relacionadas. Isso permitirá que você entenda o conceito principal do que é possível e tenha uma ideia de onde encontrar soluções para seus problemas quando necessário.
> **Conselho mais útil**. Quando você precisar realizar uma operação específica em dados e não souber como fazê-lo, tente pesquisar na internet. [Stackoverflow](https://stackoverflow.com/) geralmente contém muitos exemplos úteis de código em Python para diversas tarefas típicas.
> **Conselho mais útil**. Quando precisar realizar uma operação específica em dados e não souber como fazê-lo, tente pesquisar na internet. [Stackoverflow](https://stackoverflow.com/) geralmente contém muitos exemplos úteis de código em Python para diversas tarefas típicas.
## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Dados Tabulares e Dataframes
Você já encontrou dados tabulares quando falamos sobre bancos de dados relacionais. Quando você tem muitos dados contidos em várias tabelas vinculadas, definitivamente faz sentido usar SQL para trabalhar com eles. No entanto, há muitos casos em que temos uma tabela de dados e precisamos obter algum **entendimento** ou **insights** sobre esses dados, como a distribuição, correlação entre valores, etc. Na ciência de dados, há muitos casos em que precisamos realizar algumas transformações nos dados originais, seguidas de visualização. Ambas as etapas podem ser facilmente realizadas usando Python.
Você já encontrou dados tabulares quando falamos sobre bancos de dados relacionais. Quando você tem muitos dados contidos em várias tabelas interligadas, faz sentido usar SQL para trabalhar com eles. No entanto, há muitos casos em que temos uma tabela de dados e precisamos obter algum **entendimento** ou **insights** sobre esses dados, como a distribuição, correlação entre valores, etc. Na ciência de dados, há muitos casos em que precisamos realizar algumas transformações nos dados originais, seguidas de visualização. Ambas as etapas podem ser facilmente realizadas usando Python.
Existem duas bibliotecas mais úteis em Python que podem ajudar você a lidar com dados tabulares:
* **[Pandas](https://pandas.pydata.org/)** permite manipular os chamados **Dataframes**, que são análogos às tabelas relacionais. Você pode ter colunas nomeadas e realizar diferentes operações em linhas, colunas e dataframes em geral.
* **[Numpy](https://numpy.org/)** é uma biblioteca para trabalhar com **tensores**, ou seja, **arrays** multidimensionais. Um array possui valores do mesmo tipo subjacente e é mais simples do que um dataframe, mas oferece mais operações matemáticas e cria menos sobrecarga.
também algumas outras bibliotecas que você deve conhecer:
Existem também algumas outras bibliotecas que você deve conhecer:
* **[Matplotlib](https://matplotlib.org/)** é uma biblioteca usada para visualização de dados e criação de gráficos
* **[SciPy](https://www.scipy.org/)** é uma biblioteca com algumas funções científicas adicionais. Já nos deparamos com essa biblioteca ao falar sobre probabilidade e estatística
@ -61,7 +61,7 @@ Pandas é centrado em alguns conceitos básicos.
**Series** é uma sequência de valores, semelhante a uma lista ou array do numpy. A principal diferença é que uma série também possui um **índice**, e quando operamos em séries (por exemplo, somamos), o índice é levado em consideração. O índice pode ser tão simples quanto o número inteiro da linha (é o índice usado por padrão ao criar uma série a partir de uma lista ou array), ou pode ter uma estrutura complexa, como intervalo de datas.
> **Nota**: Há algum código introdutório de Pandas no notebook associado [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Apenas destacamos alguns exemplos aqui, e você está definitivamente convidado a conferir o notebook completo.
> **Nota**: Há algum código introdutório de Pandas no notebook associado [`notebook.ipynb`](notebook.ipynb). Apenas destacamos alguns exemplos aqui, e você está definitivamente convidado a conferir o notebook completo.
Considere um exemplo: queremos analisar as vendas de nossa sorveteria. Vamos gerar uma série de números de vendas (número de itens vendidos por dia) para um determinado período de tempo:
@ -73,7 +73,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Gráfico de Série Temporal](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Gráfico de Série Temporal](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.br.png)
Agora suponha que, a cada semana, organizamos uma festa para amigos e levamos 10 pacotes adicionais de sorvete para a festa. Podemos criar outra série, indexada por semana, para demonstrar isso:
```python
@ -84,16 +84,16 @@ Quando somamos duas séries, obtemos o número total:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Gráfico de Série Temporal](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Gráfico de Série Temporal](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.br.png)
> **Nota** que não estamos usando a sintaxe simples `total_items+additional_items`. Se fizéssemos isso, receberíamos muitos valores `NaN` (*Not a Number*) na série resultante. Isso ocorre porque há valores ausentes para alguns dos pontos de índice na série `additional_items`, e somar `NaN` a qualquer coisa resulta em `NaN`. Assim, precisamos especificar o parâmetro `fill_value` durante a soma.
> **Nota** que não estamos usando a sintaxe simples `total_items+additional_items`. Se fizéssemos isso, receberíamos muitos valores `NaN` (*Not a Number*) na série resultante. Isso ocorre porque há valores ausentes para alguns pontos do índice na série `additional_items`, e somar `NaN` a qualquer coisa resulta em `NaN`. Assim, precisamos especificar o parâmetro `fill_value` durante a soma.
Com séries temporais, também podemos **re-amostrar** a série com diferentes intervalos de tempo. Por exemplo, suponha que queremos calcular o volume médio de vendas mensalmente. Podemos usar o seguinte código:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Médias Mensais de Série Temporal](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Médias Mensais de Série Temporal](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.br.png)
### DataFrame
@ -173,16 +173,16 @@ Após as operações acima, terminaremos com o seguinte DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Selecionar linhas com base em números** pode ser feito usando o construto `iloc`. Por exemplo, para selecionar as primeiras 5 linhas do DataFrame:
**Selecionando linhas com base em números** pode ser feito usando o construto `iloc`. Por exemplo, para selecionar as primeiras 5 linhas do DataFrame:
```python
df.iloc[:5]
```
**Agrupamento** é frequentemente usado para obter um resultado semelhante a *tabelas dinâmicas* no Excel. Suponha que queremos calcular o valor médio da coluna `A` para cada número dado de `LenB`. Então podemos agrupar nosso DataFrame por `LenB` e chamar `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Se precisarmos calcular a média e o número de elementos no grupo, então podemos usar a função mais complexa `aggregate`:
Se precisarmos calcular a média e o número de elementos no grupo, podemos usar a função mais complexa `aggregate`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -199,69 +199,69 @@ Isso nos dá a seguinte tabela:
| 6 | 2 | 6.000000 |
### Obtendo Dados
Vimos como é fácil construir Series e DataFrames a partir de objetos Python. No entanto, os dados geralmente vêm na forma de um arquivo de texto ou uma tabela do Excel. Felizmente, o Pandas nos oferece uma maneira simples de carregar dados do disco. Por exemplo, ler um arquivo CSV é tão simples quanto isso:
Já vimos como é fácil construir Series e DataFrames a partir de objetos Python. No entanto, os dados geralmente vêm na forma de um arquivo de texto ou uma tabela do Excel. Felizmente, o Pandas nos oferece uma maneira simples de carregar dados do disco. Por exemplo, ler um arquivo CSV é tão simples quanto isso:
```python
df = pd.read_csv('file.csv')
```
Veremos mais exemplos de como carregar dados, incluindo buscá-los de sites externos, na seção "Desafio".
Veremos mais exemplos de carregamento de dados, incluindo como buscá-los de sites externos, na seção "Desafio".
### Imprimindo e Plotando
### Impressão e Visualização
Um Cientista de Dados frequentemente precisa explorar os dados, por isso é importante ser capaz de visualizá-los. Quando o DataFrame é grande, muitas vezes queremos apenas garantir que estamos fazendo tudo corretamente imprimindo as primeiras linhas. Isso pode ser feito chamando `df.head()`. Se você estiver executando isso no Jupyter Notebook, ele imprimirá o DataFrame em uma forma tabular agradável.
Um Cientista de Dados frequentemente precisa explorar os dados, então é importante ser capaz de visualizá-los. Quando o DataFrame é grande, muitas vezes queremos apenas garantir que estamos fazendo tudo corretamente imprimindo as primeiras linhas. Isso pode ser feito chamando `df.head()`. Se você estiver executando isso no Jupyter Notebook, ele imprimirá o DataFrame em uma forma tabular agradável.
Também vimos o uso da função `plot` para visualizar algumas colunas. Embora `plot` seja muito útil para muitas tarefas e suporte vários tipos de gráficos diferentes por meio do parâmetro `kind=`, você sempre pode usar a biblioteca `matplotlib` diretamente para criar algo mais complexo. Vamos abordar a visualização de dados em detalhes em lições separadas do curso.
Também vimos o uso da função `plot` para visualizar algumas colunas. Embora `plot` seja muito útil para muitas tarefas e suporte diferentes tipos de gráficos via o parâmetro `kind=`, você sempre pode usar a biblioteca `matplotlib` diretamente para criar algo mais complexo. Vamos abordar a visualização de dados em detalhes em lições separadas do curso.
Esta visão geral cobre os conceitos mais importantes do Pandas, no entanto, a biblioteca é muito rica e não há limites para o que você pode fazer com ela! Vamos agora aplicar esse conhecimento para resolver um problema específico.
Este panorama cobre os conceitos mais importantes do Pandas, no entanto, a biblioteca é muito rica e não há limites para o que você pode fazer com ela! Agora vamos aplicar esse conhecimento para resolver um problema específico.
## 🚀 Desafio 1: Analisando a Propagação da COVID
O primeiro problema em que vamos nos concentrar é o modelo de propagação epidêmica da COVID-19. Para isso, usaremos os dados sobre o número de indivíduos infectados em diferentes países, fornecidos pelo [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) da [Johns Hopkins University](https://jhu.edu/). O conjunto de dados está disponível neste [repositório do GitHub](https://github.com/CSSEGISandData/COVID-19).
O primeiro problema em que vamos focar é o modelamento da propagação epidêmica da COVID-19. Para isso, usaremos os dados sobre o número de indivíduos infectados em diferentes países, fornecidos pelo [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) da [Johns Hopkins University](https://jhu.edu/). O conjunto de dados está disponível neste [repositório do GitHub](https://github.com/CSSEGISandData/COVID-19).
Como queremos demonstrar como lidar com dados, convidamos você a abrir o arquivo [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) e lê-lo de cima para baixo. Você também pode executar as células e realizar alguns desafios que deixamos para você no final.
Como queremos demonstrar como lidar com dados, convidamos você a abrir [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) e lê-lo de cima a baixo. Você também pode executar as células e realizar alguns desafios que deixamos para você no final.
![Propagação da COVID](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![Propagação da COVID](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.br.png)
> Se você não sabe como executar código no Jupyter Notebook, confira [este artigo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Trabalhando com Dados Não Estruturados
Embora os dados frequentemente venham em formato tabular, em alguns casos precisamos lidar com dados menos estruturados, como texto ou imagens. Nesse caso, para aplicar as técnicas de processamento de dados que vimos acima, precisamos de alguma forma **extrair** dados estruturados. Aqui estão alguns exemplos:
Embora os dados frequentemente venham em forma tabular, em alguns casos precisamos lidar com dados menos estruturados, como texto ou imagens. Nesse caso, para aplicar as técnicas de processamento de dados que vimos acima, precisamos de alguma forma **extrair** dados estruturados. Aqui estão alguns exemplos:
* Extrair palavras-chave de um texto e verificar com que frequência essas palavras aparecem
* Usar redes neurais para extrair informações sobre objetos em uma imagem
* Obter informações sobre as emoções das pessoas em um feed de câmera de vídeo
* Obter informações sobre emoções de pessoas em um feed de câmera de vídeo
## 🚀 Desafio 2: Analisando Artigos sobre COVID
Neste desafio, continuaremos com o tema da pandemia de COVID e nos concentraremos no processamento de artigos científicos sobre o assunto. Existe o [Conjunto de Dados CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) com mais de 7.000 (na época da escrita) artigos sobre COVID, disponível com metadados e resumos (e para cerca de metade deles também há o texto completo fornecido).
Neste desafio, continuaremos com o tema da pandemia de COVID e focaremos no processamento de artigos científicos sobre o assunto. Existe o [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) com mais de 7.000 (na época da escrita) artigos sobre COVID, disponível com metadados e resumos (e para cerca de metade deles também há texto completo disponível).
Um exemplo completo de análise desse conjunto de dados usando o serviço cognitivo [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) é descrito [neste post do blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vamos discutir uma versão simplificada dessa análise.
Um exemplo completo de análise deste conjunto de dados usando o serviço cognitivo [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) é descrito [neste post do blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vamos discutir uma versão simplificada dessa análise.
> **NOTE**: Não fornecemos uma cópia do conjunto de dados como parte deste repositório. Você pode precisar primeiro baixar o arquivo [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) deste [conjunto de dados no Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Pode ser necessário se registrar no Kaggle. Você também pode baixar o conjunto de dados sem registro [aqui](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), mas ele incluirá todos os textos completos além do arquivo de metadados.
Abra o arquivo [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) e leia-o de cima para baixo. Você também pode executar as células e realizar alguns desafios que deixamos para você no final.
Abra [`notebook-papers.ipynb`](notebook-papers.ipynb) e leia-o de cima a baixo. Você também pode executar as células e realizar alguns desafios que deixamos para você no final.
![Tratamento Médico para COVID](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Tratamento Médico para COVID](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.br.png)
## Processando Dados de Imagem
Recentemente, modelos de IA muito poderosos foram desenvolvidos, permitindo-nos entender imagens. Existem muitas tarefas que podem ser resolvidas usando redes neurais pré-treinadas ou serviços em nuvem. Alguns exemplos incluem:
Recentemente, modelos de IA muito poderosos foram desenvolvidos, permitindo-nos entender imagens. muitas tarefas que podem ser resolvidas usando redes neurais pré-treinadas ou serviços em nuvem. Alguns exemplos incluem:
* **Classificação de Imagens**, que pode ajudar a categorizar a imagem em uma das classes predefinidas. Você pode facilmente treinar seus próprios classificadores de imagem usando serviços como o [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detecção de Objetos** para identificar diferentes objetos na imagem. Serviços como o [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) podem detectar vários objetos comuns, e você pode treinar um modelo no [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) para detectar objetos específicos de interesse.
* **Detecção Facial**, incluindo idade, gênero e emoções. Isso pode ser feito por meio do [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Classificação de Imagens**, que pode ajudar a categorizar a imagem em uma das classes pré-definidas. Você pode facilmente treinar seus próprios classificadores de imagem usando serviços como [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detecção de Objetos** para identificar diferentes objetos na imagem. Serviços como [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) podem detectar vários objetos comuns, e você pode treinar um modelo [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) para detectar objetos específicos de interesse.
* **Detecção Facial**, incluindo idade, gênero e emoções. Isso pode ser feito via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Todos esses serviços em nuvem podem ser chamados usando [SDKs do Python](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), e assim podem ser facilmente incorporados ao seu fluxo de trabalho de exploração de dados.
Todos esses serviços em nuvem podem ser chamados usando [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), e assim podem ser facilmente incorporados ao seu fluxo de trabalho de exploração de dados.
Aqui estão alguns exemplos de exploração de dados a partir de fontes de dados de imagem:
* No post do blog [Como Aprender Ciência de Dados sem Programar](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), exploramos fotos do Instagram, tentando entender o que faz as pessoas darem mais curtidas em uma foto. Primeiro extraímos o máximo de informações possíveis das imagens usando o [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), e depois usamos o [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) para construir um modelo interpretável.
* No [Workshop de Estudos Faciais](https://github.com/CloudAdvocacy/FaceStudies), usamos o [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) para extrair emoções de pessoas em fotografias de eventos, a fim de tentar entender o que as faz felizes.
* No post do blog [Como Aprender Ciência de Dados sem Programação](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), exploramos fotos do Instagram, tentando entender o que faz as pessoas darem mais curtidas em uma foto. Primeiro extraímos o máximo de informações das imagens usando [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), e depois usamos [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) para construir um modelo interpretável.
* No [Workshop de Estudos Faciais](https://github.com/CloudAdvocacy/FaceStudies), usamos [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) para extrair emoções de pessoas em fotografias de eventos, a fim de tentar entender o que faz as pessoas felizes.
## Conclusão
Seja com dados estruturados ou não estruturados, usando Python você pode realizar todas as etapas relacionadas ao processamento e compreensão de dados. É provavelmente a maneira mais flexível de processar dados, e é por isso que a maioria dos cientistas de dados usa Python como sua principal ferramenta. Aprender Python a fundo é provavelmente uma boa ideia se você está sério sobre sua jornada em ciência de dados!
Seja com dados estruturados ou não estruturados, usando Python você pode realizar todas as etapas relacionadas ao processamento e compreensão de dados. É provavelmente a maneira mais flexível de processar dados, e é por isso que a maioria dos cientistas de dados usa Python como sua principal ferramenta. Aprender Python em profundidade é provavelmente uma boa ideia se você está sério sobre sua jornada em ciência de dados!
## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Revisão e Autoestudo
@ -270,11 +270,11 @@ Seja com dados estruturados ou não estruturados, usando Python você pode reali
**Recursos Online**
* Tutorial oficial [10 minutos para Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Documentação sobre Visualização no Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* [Documentação sobre Visualização com Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Aprendendo Python**
* [Aprenda Python de Forma Divertida com Turtle Graphics e Fractais](https://github.com/shwars/pycourse)
* [Dê seus Primeiros Passos com Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) no Microsoft Learn
* [Aprenda Python de forma divertida com Turtle Graphics e Fractais](https://github.com/shwars/pycourse)
* [Dê seus primeiros passos com Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) no caminho de aprendizado do [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Tarefa
@ -282,7 +282,7 @@ Seja com dados estruturados ou não estruturados, usando Python você pode reali
## Créditos
Esta lição foi escrita com ♥️ por [Dmitry Soshnikov](http://soshnikov.com)
Esta lição foi criada com ♥️ por [Dmitry Soshnikov](http://soshnikov.com)
---

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T17:45:34+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:56:55+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "cs"
}
@ -13,12 +13,12 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Práce s Pythonem - _Sketchnote od [@nitya](https://twitter.com/nitya)_ |
[![Úvodní video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Úvodní video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.cs.png)](https://youtu.be/dZjWOGbsN4Y)
Databáze nabízejí velmi efektivní způsoby ukládání dat a jejich dotazování pomocí dotazovacích jazyků, ale nejflexibilnějším způsobem zpracování dat je napsání vlastního programu pro manipulaci s daty. V mnoha případech by bylo efektivnější použít dotaz do databáze. Nicméně v některých situacích, kdy je potřeba složitější zpracování dat, to nelze snadno provést pomocí SQL.
Databáze nabízejí velmi efektivní způsoby ukládání dat a jejich dotazování pomocí dotazovacích jazyků, ale nejflexibilnějším způsobem zpracování dat je napsání vlastního programu pro manipulaci s daty. V mnoha případech by bylo efektivnější použít dotaz na databázi. Nicméně v některých situacích, kdy je potřeba složitější zpracování dat, to nelze snadno provést pomocí SQL.
Zpracování dat lze naprogramovat v jakémkoli programovacím jazyce, ale existují určité jazyky, které jsou na vyšší úrovni, pokud jde o práci s daty. Datoví vědci obvykle preferují jeden z následujících jazyků:
* **[Python](https://www.python.org/)**, univerzální programovací jazyk, který je často považován za jednu z nejlepších možností pro začátečníky díky své jednoduchosti. Python má mnoho dalších knihoven, které vám mohou pomoci vyřešit praktické problémy, jako je extrakce dat ze ZIP archivu nebo převod obrázku na odstíny šedi. Kromě datové vědy se Python často používá také pro vývoj webových aplikací.
* **[Python](https://www.python.org/)**, univerzální programovací jazyk, který je často považován za jednu z nejlepších možností pro začátečníky díky své jednoduchosti. Python má mnoho dalších knihoven, které vám mohou pomoci vyřešit praktické problémy, jako je extrakce dat ze ZIP archivu nebo převod obrázku na odstíny šedi. Kromě datové vědy se Python často používá i pro vývoj webových aplikací.
* **[R](https://www.r-project.org/)** je tradiční nástroj vyvinutý s ohledem na statistické zpracování dat. Obsahuje také rozsáhlé úložiště knihoven (CRAN), což z něj činí dobrou volbu pro zpracování dat. Nicméně R není univerzální programovací jazyk a mimo oblast datové vědy se používá jen zřídka.
* **[Julia](https://julialang.org/)** je další jazyk vyvinutý speciálně pro datovou vědu. Je navržen tak, aby poskytoval lepší výkon než Python, což z něj činí skvělý nástroj pro vědecké experimentování.
@ -29,25 +29,25 @@ V této lekci se zaměříme na použití Pythonu pro jednoduché zpracování d
Data mohou mít mnoho podob. V této lekci se zaměříme na tři formy dat - **tabulková data**, **text** a **obrázky**.
Zaměříme se na několik příkladů zpracování dat, místo abychom vám poskytli úplný přehled všech souvisejících knihoven. To vám umožní získat základní představu o tom, co je možné, a zanechá vás s pochopením, kde najít řešení vašich problémů, když je budete potřebovat.
Zaměříme se na několik příkladů zpracování dat, místo abychom vám poskytli kompletní přehled všech souvisejících knihoven. To vám umožní získat hlavní představu o tom, co je možné, a zanechá vás s pochopením, kde najít řešení vašich problémů, když je budete potřebovat.
> **Nejužitečnější rada**. Když potřebujete provést určitou operaci na datech, kterou nevíte, jak udělat, zkuste ji vyhledat na internetu. [Stackoverflow](https://stackoverflow.com/) obvykle obsahuje mnoho užitečných ukázek kódu v Pythonu pro mnoho typických úkolů.
> **Nejužitečnější rada**. Když potřebujete provést určitou operaci na datech, kterou nevíte, jak provést, zkuste ji vyhledat na internetu. [Stackoverflow](https://stackoverflow.com/) obvykle obsahuje mnoho užitečných ukázek kódu v Pythonu pro mnoho typických úkolů.
## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabulková data a DataFrame
S tabulkovými daty jste se již setkali, když jsme mluvili o relačních databázích. Když máte hodně dat, která jsou obsažena v mnoha různých propojených tabulkách, rozhodně má smysl použít SQL pro práci s nimi. Nicméně existuje mnoho případů, kdy máme tabulku dat a potřebujeme získat nějaké **porozumění** nebo **poznatky** o těchto datech, jako je rozložení, korelace mezi hodnotami atd. V datové vědě existuje mnoho situací, kdy potřebujeme provést nějaké transformace původních dat, následované vizualizací. Oba tyto kroky lze snadno provést pomocí Pythonu.
S tabulkovými daty jste se již setkali, když jsme mluvili o relačních databázích. Když máte hodně dat, která jsou obsažena v mnoha různých propojených tabulkách, rozhodně má smysl použít SQL pro práci s nimi. Nicméně existuje mnoho případů, kdy máme tabulku dat a potřebujeme získat nějaké **pochopení** nebo **poznatky** o těchto datech, jako je rozložení, korelace mezi hodnotami atd. V datové vědě existuje mnoho situací, kdy potřebujeme provést nějaké transformace původních dat, následované vizualizací. Oba tyto kroky lze snadno provést pomocí Pythonu.
Existují dvě nejdůležitější knihovny v Pythonu, které vám mohou pomoci pracovat s tabulkovými daty:
* **[Pandas](https://pandas.pydata.org/)** umožňuje manipulovat s tzv. **DataFrame**, což jsou analogie relačních tabulek. Můžete mít pojmenované sloupce a provádět různé operace na řádcích, sloupcích a DataFrame obecně.
* **[Numpy](https://numpy.org/)** je knihovna pro práci s **tensory**, tj. vícerozměrnými **poli**. Pole má hodnoty stejného základního typu a je jednodušší než DataFrame, ale nabízí více matematických operací a vytváří menší režii.
Existují také další knihovny, které byste měli znát:
Existuje také několik dalších knihoven, které byste měli znát:
* **[Matplotlib](https://matplotlib.org/)** je knihovna používaná pro vizualizaci dat a vykreslování grafů
* **[SciPy](https://www.scipy.org/)** je knihovna s některými dalšími vědeckými funkcemi. Již jsme se s touto knihovnou setkali, když jsme mluvili o pravděpodobnosti a statistice
Zde je ukázka kódu, který byste obvykle použili k importu těchto knihoven na začátku vašeho programu v Pythonu:
Zde je kousek kódu, který byste obvykle použili k importu těchto knihoven na začátku svého programu v Pythonu:
```python
import numpy as np
import pandas as pd
@ -55,13 +55,13 @@ import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
Pandas se soustředí na několik základních konceptů.
Pandas je založen na několika základních konceptech.
### Series
**Series** je sekvence hodnot, podobná seznamu nebo numpy poli. Hlavní rozdíl je v tom, že Series má také **index**, a když s nimi pracujeme (např. je sčítáme), index se bere v úvahu. Index může být tak jednoduchý jako číslo řádku (to je výchozí index při vytváření Series ze seznamu nebo pole), nebo může mít složitou strukturu, jako je časový interval.
**Series** je sekvence hodnot, podobná seznamu nebo numpy poli. Hlavní rozdíl je v tom, že Series má také **index**, a když s nimi pracujeme (např. je sčítáme), index se bere v úvahu. Index může být tak jednoduchý jako číslo řádku (je to výchozí index při vytváření Series ze seznamu nebo pole), nebo může mít složitou strukturu, jako je časový interval.
> **Poznámka**: V přiloženém notebooku [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) je úvodní kód pro Pandas. Zde uvádíme pouze některé příklady, ale určitě se podívejte na celý notebook.
> **Poznámka**: V doprovodném notebooku [`notebook.ipynb`](notebook.ipynb) je úvodní kód pro Pandas. Zde uvádíme pouze některé příklady, ale určitě se podívejte na celý notebook.
Představme si příklad: chceme analyzovat prodeje našeho stánku se zmrzlinou. Vygenerujeme sérii čísel prodejů (počet prodaných položek každý den) za určité časové období:
@ -73,7 +73,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Graf časové řady](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Graf časové řady](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.cs.png)
Předpokládejme, že každý týden pořádáme večírek pro přátele a bereme dalších 10 balení zmrzliny na večírek. Můžeme vytvořit další sérii, indexovanou podle týdne, abychom to ukázali:
```python
@ -84,20 +84,20 @@ Když sečteme dvě série dohromady, získáme celkový počet:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Graf časové řady](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Graf časové řady](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.cs.png)
> **Poznámka**: Nepoužíváme jednoduchou syntaxi `total_items+additional_items`. Pokud bychom to udělali, dostali bychom mnoho hodnot `NaN` (*Not a Number*) v výsledné sérii. To je proto, že některé hodnoty indexu v sérii `additional_items` chybí, a při`NaN` k čemukoli vede k `NaN`. Proto musíme při sčítání specifikovat parametr `fill_value`.
> **Poznámka**: Nepoužíváme jednoduchou syntaxi `total_items+additional_items`. Pokud bychom to udělali, dostali bychom mnoho hodnot `NaN` (*Not a Number*) v výsledné sérii. To je proto, že některé hodnoty indexu v sérii `additional_items` chybí, a přičte`NaN` k čemukoli vede k `NaN`. Proto musíme při sčítání specifikovat parametr `fill_value`.
S časovými řadami můžeme také **převzorkovat** sérii na různé časové intervaly. Například pokud chceme vypočítat průměrný objem prodeje měsíčně, můžeme použít následující kód:
U časových řad můžeme také **převzorkovat** sérii na různé časové intervaly. Například pokud chceme vypočítat průměrný objem prodeje měsíčně, můžeme použít následující kód:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Měsíční průměry časové řady](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Měsíční průměry časové řady](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.cs.png)
### DataFrame
DataFrame je v podstatě kolekce sérií se stejným indexem. Můžeme kombinovat několik sérií dohromady do DataFrame:
DataFrame je v podstatě kolekce sérií se stejným indexem. Můžeme spojit několik sérií dohromady do DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -135,24 +135,24 @@ Zde `.T` znamená operaci transpozice DataFrame, tj. změnu řádků a sloupců,
Zde je několik nejdůležitějších operací, které můžeme provádět na DataFrame:
**Výběr sloupců**. Můžeme vybrat jednotlivé sloupce napsáním `df['A']` - tato operace vrací Series. Můžeme také vybrat podmnožinu sloupců do jiného DataFrame napsáním `df[['B','A']]` - to vrací jiný DataFrame.
**Výběr sloupců**. Můžeme vybrat jednotlivé sloupce napsáním `df['A']` - tato operace vrací Series. Můžeme také vybrat podmnožinu sloupců do jiného DataFrame napsáním `df[['B','A']]` - to vrací další DataFrame.
**Filtrování** pouze určitých řádků podle kritérií. Například, abychom ponechali pouze řádky se sloupcem `A` větším než 5, můžeme napsat `df[df['A']>5]`.
> **Poznámka**: Způsob, jakým filtrování funguje, je následující. Výraz `df['A']<5` vrací booleovskou sérii, která označuje, zda je výraz `True` nebo `False` pro každý prvek původní série `df['A']`. Když je booleovská série použita jako index, vrací podmnožinu řádků v DataFrame. Proto není možné použít libovolný booleovský výraz v Pythonu, například napsání `df[df['A']>5 and df['A']<7]` by bylo špatně. Místo toho byste měli použít speciální operaci `&` na booleovské sérii, napsáním `df[(df['A']>5) & (df['A']<7)]` (*závorky jsou zde důležité*).
> **Poznámka**: Způsob, jakým filtrování funguje, je následující. Výraz `df['A']<5` vrací booleovskou sérii, která označuje, zda je výraz `True` nebo `False` pro každý prvek původní série `df['A']`. Když je booleovská série použita jako index, vrací podmnožinu řádků v DataFrame. Proto není možné použít libovolný booleovský výraz v Pythonu, například napsání `df[df['A']>5 and df['A']<7]` by bylo špatné. Místo toho byste měli použít speciální operaci `&` na booleovské sérii, napsáním `df[(df['A']>5) & (df['A']<7)]` (*závorky jsou zde důležité*).
**Vytváření nových vypočítatelných sloupců**. Můžeme snadno vytvořit nové vypočítatelné sloupce pro náš DataFrame pomocí intuitivního výrazu jako tento:
**Vytváření nových vypočitatelných sloupců**. Můžeme snadno vytvořit nové vypočitatelné sloupce pro náš DataFrame pomocí intuitivního výrazu jako tento:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Tento příklad vypočítává odchylku A od její průměrné hodnoty. Co se zde vlastně děje, je to, že vypočítáváme sérii a poté tuto sérii přiřazujeme na levou stranu, čímž vytváříme další sloupec. Proto nemůžeme použít žádné operace, které nejsou kompatibilní se sériemi, například následující kód je špatný:
Tento příklad vypočítává odchylku A od její průměrné hodnoty. Co se zde vlastně děje, je to, že počítáme sérii a poté tuto sérii přiřazujeme na levou stranu, čímž vytváříme další sloupec. Proto nemůžeme použít žádné operace, které nejsou kompatibilní se sériemi, například následující kód je špatný:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Poslední příklad, i když je syntakticky správný, nám dává špatný výsledek, protože přiřazuje délku série `B` ke všem hodnotám ve sloupci, a ne délku jednotlivých prvků, jak jsme zamýšleli.
Poslední příklad, i když je syntakticky správný, nám dává špatný výsledek, protože přiřazuje délku série `B` všem hodnotám ve sloupci, a ne délku jednotlivých prvků, jak jsme zamýšleli.
Pokud potřebujeme vypočítat složité výrazy jako tento, můžeme použít funkci `apply`. Poslední příklad lze napsat následovně:
Pokud potřebujeme vypočítat složité výrazy jako tento, můžeme použít funkci `apply`. Poslední příklad lze napsat takto:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -178,9 +178,9 @@ Po výše uvedených operacích skončíme s následujícím DataFrame:
df.iloc[:5]
```
**Skupinování** se často používá k získání výsledku podobného *kontingenčním tabulkám* v Excelu. Předpokládejme, že chceme vypočítat průměrnou hodnotu sloupce `A` pro každé dané číslo `LenB`. Poté můžeme seskupit náš DataFrame podle `LenB` a zavolat `mean`:
**Seskupování** se často používá k získání výsledku podobného *kontingenčním tabulkám* v Excelu. Předpokládejme, že chceme vypočítat průměrnou hodnotu sloupce `A` pro každé dané číslo `LenB`. Poté můžeme seskupit náš DataFrame podle `LenB` a zavolat `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Pokud potřebujeme vypočítat průměr a počet prvků ve skupině, můžeme použít složitější funkci `aggregate`:
```python
@ -199,71 +199,71 @@ To nám dá následující tabulku:
| 6 | 2 | 6.000000 |
### Získávání dat
Viděli jsme, jak snadné je vytvořit Series a DataFrames z objektů v Pythonu. Data však obvykle přicházejí ve formě textového souboru nebo tabulky v Excelu. Naštěstí nám Pandas nabízí jednoduchý způsob, jak načíst data z disku. Například čtení souboru CSV je tak jednoduché:
Viděli jsme, jak snadné je vytvořit Series a DataFrames z objektů v Pythonu. Nicméně, data obvykle přicházejí ve formě textového souboru nebo tabulky v Excelu. Naštěstí nám Pandas nabízí jednoduchý způsob, jak načíst data z disku. Například čtení CSV souboru je tak jednoduché:
```python
df = pd.read_csv('file.csv')
```
V sekci "Výzva" uvidíme více příkladů načítání dat, včetně jejich získávání z externích webových stránek.
### Tisk a vizualizace
### Tisk a Vizualizace
Datový vědec často musí prozkoumat data, a proto je důležité být schopen je vizualizovat. Když je DataFrame velký, často chceme jen ověřit, že vše děláme správně, tím, že vytiskneme prvních pár řádků. To lze provést voláním `df.head()`. Pokud to spustíte z Jupyter Notebooku, zobrazí se DataFrame v pěkné tabulární podobě.
Datový vědec často musí prozkoumat data, a proto je důležité být schopen je vizualizovat. Když je DataFrame velký, často chceme jen ověřit, že vše děláme správně, tím, že si vytiskneme prvních pár řádků. To lze provést voláním `df.head()`. Pokud to spustíte z Jupyter Notebooku, vytiskne se DataFrame v pěkné tabulkové podobě.
Viděli jsme také použití funkce `plot` k vizualizaci některých sloupců. Zatímco `plot` je velmi užitečný pro mnoho úkolů a podporuje různé typy grafů prostřednictvím parametru `kind=`, vždy můžete použít knihovnu `matplotlib` k vytvoření něčeho složitějšího. Vizualizaci dat se budeme podrobně věnovat v samostatných lekcích kurzu.
Také jsme viděli použití funkce `plot` k vizualizaci některých sloupců. Zatímco `plot` je velmi užitečný pro mnoho úkolů a podporuje různé typy grafů pomocí parametru `kind=`, vždy můžete použít knihovnu `matplotlib` k vytvoření něčeho složitějšího. Vizualizaci dat se budeme podrobně věnovat v samostatných lekcích kurzu.
Tento přehled pokrývá nejdůležitější koncepty Pandas, avšak knihovna je velmi bohatá a možnosti jejího využití jsou téměř neomezené! Nyní použijme tyto znalosti k řešení konkrétního problému.
Tento přehled pokrývá nejdůležitější koncepty Pandas, nicméně knihovna je velmi bohatá a neexistují žádné limity, co s ní můžete dělat! Pojďme nyní aplikovat tyto znalosti na řešení konkrétního problému.
## 🚀 Výzva 1: Analýza šíření COVID
Prvním problémem, na který se zaměříme, je modelování epidemického šíření COVID-19. K tomu použijeme data o počtu nakažených jednotlivců v různých zemích, která poskytuje [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) na [Johns Hopkins University](https://jhu.edu/). Dataset je dostupný v [tomto GitHub repozitáři](https://github.com/CSSEGISandData/COVID-19).
Protože chceme demonstrovat, jak pracovat s daty, zveme vás k otevření [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) a jeho přečtení od začátku do konce. Můžete také spustit buňky a vyzkoušet některé výzvy, které jsme pro vás připravili na konci.
Protože chceme ukázat, jak pracovat s daty, zveme vás k otevření [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) a jeho přečtení od začátku do konce. Můžete také spustit buňky a vyzkoušet některé výzvy, které jsme pro vás nechali na konci.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.cs.png)
> Pokud nevíte, jak spustit kód v Jupyter Notebooku, podívejte se na [tento článek](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Práce s nestrukturovanými daty
I když data často přicházejí v tabulární podobě, v některých případech musíme pracovat s méně strukturovanými daty, například textem nebo obrázky. V takovém případě, abychom mohli použít techniky zpracování dat, které jsme viděli výše, musíme nějakým způsobem **extrahovat** strukturovaná data. Zde je několik příkladů:
Zatímco data často přicházejí v tabulkové podobě, v některých případech musíme pracovat s méně strukturovanými daty, například textem nebo obrázky. V takovém případě, abychom mohli použít techniky zpracování dat, které jsme viděli výše, musíme nějakým způsobem **extrahovat** strukturovaná data. Zde je několik příkladů:
* Extrakce klíčových slov z textu a zjištění, jak často se tato klíčová slova objevují
* Extrakce klíčových slov z textu a sledování, jak často se tato klíčová slova objevují
* Použití neuronových sítí k extrakci informací o objektech na obrázku
* Získání informací o emocích lidí na záznamu z kamery
## 🚀 Výzva 2: Analýza COVID publikací
V této výzvě budeme pokračovat v tématu pandemie COVID a zaměříme se na zpracování vědeckých publikací na toto téma. Existuje [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) s více než 7000 (v době psaní) publikacemi o COVID, dostupný s metadaty a abstrakty (a u přibližně poloviny z nich je k dispozici také plný text).
V této výzvě budeme pokračovat v tématu pandemie COVID a zaměříme se na zpracování vědeckých publikací na toto téma. Existuje [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) s více než 7000 (v době psaní) publikacemi o COVID, dostupný s metadaty a abstrakty (a u přibližně poloviny z nich je k dispozici také celý text).
Kompletní příklad analýzy tohoto datasetu pomocí [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) kognitivní služby je popsán [v tomto blogovém příspěvku](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Probereme zjednodušenou verzi této analýzy.
Kompletní příklad analýzy tohoto datasetu pomocí [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) kognitivní služby je popsán [v tomto blogovém příspěvku](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Budeme diskutovat zjednodušenou verzi této analýzy.
> **NOTE**: Kopii datasetu neposkytujeme jako součást tohoto repozitáře. Možná budete muset nejprve stáhnout soubor [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [tohoto datasetu na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrace na Kaggle může být vyžadována. Dataset můžete také stáhnout bez registrace [zde](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale bude obsahovat všechny plné texty kromě souboru s metadaty.
> **NOTE**: Kopii datasetu neposkytujeme jako součást tohoto repozitáře. Možná budete muset nejprve stáhnout soubor [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [tohoto datasetu na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrace na Kaggle může být vyžadována. Dataset můžete také stáhnout bez registrace [zde](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale bude zahrnovat všechny plné texty kromě souboru s metadaty.
Otevřete [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) a přečtěte si jej od začátku do konce. Můžete také spustit buňky a vyzkoušet některé výzvy, které jsme pro vás připravili na konci.
Otevřete [`notebook-papers.ipynb`](notebook-papers.ipynb) a přečtěte si jej od začátku do konce. Můžete také spustit buňky a vyzkoušet některé výzvy, které jsme pro vás nechali na konci.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.cs.png)
## Zpracování obrazových dat
V poslední době byly vyvinuty velmi výkonné AI modely, které nám umožňují porozumět obrázkům. Existuje mnoho úkolů, které lze řešit pomocí předtrénovaných neuronových sítí nebo cloudových služeb. Některé příklady zahrnují:
* **Klasifikace obrázků**, která vám může pomoci kategorizovat obrázek do jedné z předdefinovaných tříd. Svůj vlastní klasifikátor obrázků můžete snadno vytrénovat pomocí služeb jako [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detekce objektů** k identifikaci různých objektů na obrázku. Služby jako [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) dokážou detekovat řadu běžných objektů a můžete vytrénovat model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) k detekci specifických objektů.
* **Detekce objektů** k identifikaci různých objektů na obrázku. Služby jako [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) mohou detekovat řadu běžných objektů a můžete vytrénovat model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) k detekci specifických objektů.
* **Detekce obličeje**, včetně věku, pohlaví a emocí. To lze provést pomocí [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Všechny tyto cloudové služby lze volat pomocí [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), a tedy je snadno začlenit do vašeho workflow pro zkoumání dat.
Všechny tyto cloudové služby lze volat pomocí [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), a tak je lze snadno začlenit do vašeho workflow pro průzkum dat.
Zde jsou některé příklady zkoumání dat z obrazových zdrojů:
Zde jsou některé příklady průzkumu dat z obrazových zdrojů:
* V blogovém příspěvku [Jak se naučit datovou vědu bez programování](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) zkoumáme fotografie z Instagramu, snažíme se pochopit, co způsobuje, že lidé dávají více lajků na fotografii. Nejprve extrahujeme co nejvíce informací z obrázků pomocí [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a poté použijeme [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) k vytvoření interpretovatelného modelu.
* V [Workshopu o studiu obličejů](https://github.com/CloudAdvocacy/FaceStudies) používáme [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) k extrakci emocí lidí na fotografiích z událostí, abychom se pokusili pochopit, co dělá lidi šťastnými.
## Závěr
Ať už máte strukturovaná nebo nestrukturovaná data, pomocí Pythonu můžete provést všechny kroky související se zpracováním a porozuměním dat. Je to pravděpodobně nejflexibilnější způsob zpracování dat, a to je důvod, proč většina datových vědců používá Python jako svůj primární nástroj. Naučit se Python do hloubky je pravděpodobně dobrý nápad, pokud to s datovou vědou myslíte vážně!
Ať už máte strukturovaná nebo nestrukturovaná data, pomocí Pythonu můžete provést všechny kroky související se zpracováním a porozuměním dat. Je to pravděpodobně nejflexibilnější způsob zpracování dat, a to je důvod, proč většina datových vědců používá Python jako svůj primární nástroj. Naučit se Python do hloubky je pravděpodobně dobrý nápad, pokud to s vaší cestou v datové vědě myslíte vážně!
## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Přehled a samostudium
## Recenze a samostudium
**Knihy**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
@ -274,7 +274,7 @@ Ať už máte strukturovaná nebo nestrukturovaná data, pomocí Pythonu můžet
**Učení Pythonu**
* [Naučte se Python zábavným způsobem s Turtle Graphics a fraktály](https://github.com/shwars/pycourse)
* [Udělejte své první kroky s Pythonem](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Uděláte své první kroky s Pythonem](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Zadání
@ -287,4 +287,4 @@ Tuto lekci vytvořil s ♥️ [Dmitry Soshnikov](http://soshnikov.com)
---
**Prohlášení**:
Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.
Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). I když se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T21:57:59+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:46:35+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "da"
}
@ -13,13 +13,13 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Arbejde med Python - _Sketchnote af [@nitya](https://twitter.com/nitya)_ |
[![Introduktionsvideo](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Introduktionsvideo](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.da.png)](https://youtu.be/dZjWOGbsN4Y)
Selvom databaser tilbyder meget effektive måder at gemme data og forespørge dem ved hjælp af forespørgselssprog, er den mest fleksible måde at bearbejde data på at skrive dit eget program til at manipulere data. I mange tilfælde vil en databaseforespørgsel være en mere effektiv løsning. Men i nogle tilfælde, hvor mere kompleks databehandling er nødvendig, kan det ikke nemt udføres med SQL.
Databehandling kan programmeres i ethvert programmeringssprog, men der er visse sprog, der er mere velegnede til at arbejde med data. Dataforskere foretrækker typisk et af følgende sprog:
Selvom databaser tilbyder meget effektive måder at gemme data og forespørge dem ved hjælp af forespørgselssprog, er den mest fleksible måde at bearbejde data på at skrive dit eget program til at manipulere data. I mange tilfælde vil en databaseforespørgsel være en mere effektiv løsning. Men i nogle tilfælde, hvor mere kompleks databehandling er nødvendig, kan det ikke nemt gøres med SQL.
Databehandling kan programmeres i ethvert programmeringssprog, men der er visse sprog, der er mere avancerede, når det kommer til at arbejde med data. Dataforskere foretrækker typisk et af følgende sprog:
* **[Python](https://www.python.org/)**, et generelt programmeringssprog, som ofte anses for at være en af de bedste muligheder for begyndere på grund af dets enkelhed. Python har mange ekstra biblioteker, der kan hjælpe dig med at løse praktiske problemer, såsom at udtrække data fra en ZIP-fil eller konvertere et billede til gråtoner. Ud over data science bruges Python også ofte til webudvikling.
* **[R](https://www.r-project.org/)** er et traditionelt værktøj udviklet med statistisk databehandling i tankerne. Det indeholder også et stort bibliotek (CRAN), hvilket gør det til et godt valg til databehandling. Dog er R ikke et generelt programmeringssprog og bruges sjældent uden for data science-domænet.
* **[Python](https://www.python.org/)**, et generelt programmeringssprog, som ofte anses for at være en af de bedste muligheder for begyndere på grund af dets enkelhed. Python har mange ekstra biblioteker, der kan hjælpe dig med at løse praktiske problemer, såsom at udtrække data fra en ZIP-arkiv eller konvertere et billede til gråtoner. Ud over data science bruges Python også ofte til webudvikling.
* **[R](https://www.r-project.org/)** er en traditionel værktøjskasse udviklet med statistisk databehandling i tankerne. Det indeholder også et stort bibliotek af pakker (CRAN), hvilket gør det til et godt valg for databehandling. Dog er R ikke et generelt programmeringssprog og bruges sjældent uden for data science-domænet.
* **[Julia](https://julialang.org/)** er et andet sprog udviklet specifikt til data science. Det er designet til at give bedre ydeevne end Python, hvilket gør det til et fremragende værktøj til videnskabelige eksperimenter.
I denne lektion vil vi fokusere på at bruge Python til simpel databehandling. Vi antager grundlæggende kendskab til sproget. Hvis du ønsker en dybere introduktion til Python, kan du henvise til en af følgende ressourcer:
@ -37,9 +37,9 @@ Vi vil fokusere på nogle få eksempler på databehandling i stedet for at give
## [Quiz før lektionen](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabulære data og Dataframes
## Tabulære Data og Dataframes
Du har allerede stiftet bekendtskab med tabulære data, da vi talte om relationelle databaser. Når du har mange data, og de er indeholdt i mange forskellige sammenkædede tabeller, giver det bestemt mening at bruge SQL til at arbejde med dem. Men der er mange tilfælde, hvor vi har en tabel med data, og vi skal opnå en **forståelse** eller **indsigt** om disse data, såsom fordeling, korrelation mellem værdier osv. Inden for data science er der mange tilfælde, hvor vi skal udføre nogle transformationer af de originale data, efterfulgt af visualisering. Begge disse trin kan nemt udføres ved hjælp af Python.
Du har allerede stiftet bekendtskab med tabulære data, da vi talte om relationelle databaser. Når du har mange data, og de er indeholdt i mange forskellige sammenkædede tabeller, giver det bestemt mening at bruge SQL til at arbejde med dem. Men der er mange tilfælde, hvor vi har en tabel med data, og vi skal opnå en **forståelse** eller **indsigt** om disse data, såsom fordeling, korrelation mellem værdier osv. I data science er der mange tilfælde, hvor vi skal udføre nogle transformationer af de oprindelige data, efterfulgt af visualisering. Begge disse trin kan nemt udføres ved hjælp af Python.
Der er to mest nyttige biblioteker i Python, der kan hjælpe dig med at arbejde med tabulære data:
* **[Pandas](https://pandas.pydata.org/)** giver dig mulighed for at manipulere såkaldte **Dataframes**, som er analoge med relationelle tabeller. Du kan have navngivne kolonner og udføre forskellige operationer på rækker, kolonner og dataframes generelt.
@ -63,7 +63,7 @@ Pandas er centreret omkring nogle få grundlæggende begreber.
**Series** er en sekvens af værdier, der ligner en liste eller numpy-array. Den største forskel er, at en series også har en **indeks**, og når vi opererer på series (f.eks. lægger dem sammen), tages indekset i betragtning. Indekset kan være så simpelt som et heltal (det er standardindekset, når man opretter en series fra en liste eller et array), eller det kan have en kompleks struktur, såsom et datointerval.
> **Bemærk**: Der er noget introducerende Pandas-kode i den medfølgende notebook [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Vi skitserer kun nogle af eksemplerne her, og du er bestemt velkommen til at tjekke hele notebooken.
> **Bemærk**: Der er noget introducerende Pandas-kode i den medfølgende notebook [`notebook.ipynb`](notebook.ipynb). Vi skitserer kun nogle af eksemplerne her, og du er bestemt velkommen til at tjekke den fulde notebook.
Lad os tage et eksempel: vi vil analysere salget i vores isbutik. Lad os generere en series af salgsnumre (antal solgte varer hver dag) for en given tidsperiode:
@ -75,27 +75,27 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Tidsserieplot](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Tidsserieplot](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.da.png)
Antag nu, at vi hver uge arrangerer en fest for venner, og vi tager yderligere 10 pakker is til festen. Vi kan oprette en anden series, indekseret efter uge, for at demonstrere det:
Antag nu, at vi hver uge arrangerer en fest for venner, og vi tager yderligere 10 pakker is med til festen. Vi kan oprette en anden series, indekseret efter uge, for at demonstrere det:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Når vi lægger to series sammen, får vi det samlede antal:
Når vi lægger de to series sammen, får vi det samlede antal:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Tidsserieplot](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Tidsserieplot](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.da.png)
> **Bemærk** at vi ikke bruger den simple syntaks `total_items+additional_items`. Hvis vi gjorde det, ville vi få mange `NaN` (*Not a Number*) værdier i den resulterende series. Dette skyldes, at der mangler værdier for nogle af indeksene i `additional_items`-serien, og at lægge `NaN` til noget resulterer i `NaN`. Derfor skal vi angive parameteren `fill_value` under additionen.
> **Bemærk** at vi ikke bruger den simple syntaks `total_items+additional_items`. Hvis vi gjorde det, ville vi få mange `NaN` (*Not a Number*) værdier i den resulterende series. Dette skyldes, at der mangler værdier for nogle af indeksene i `additional_items`-serien, og at lægge `NaN` til noget resulterer i `NaN`. Derfor skal vi angive parameteren `fill_value` under addition.
Med tidsserier kan vi også **resample** serien med forskellige tidsintervaller. For eksempel, hvis vi vil beregne gennemsnitligt salgsvolumen månedligt, kan vi bruge følgende kode:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Månedlige tidsserie-gennemsnit](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Månedlige tidsserie-gennemsnit](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.da.png)
### DataFrame
@ -133,21 +133,21 @@ Dette vil give os en tabel som denne:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Her betyder `.T` operationen at transponere DataFrame, dvs. bytte rækker og kolonner, og `rename`-operationen giver os mulighed for at omdøbe kolonnerne, så de matcher det tidligere eksempel.
Her betyder `.T` operationen at transponere DataFrame, dvs. at bytte rækker og kolonner, og `rename`-operationen giver os mulighed for at omdøbe kolonnerne, så de matcher det tidligere eksempel.
Her er nogle af de vigtigste operationer, vi kan udføre på DataFrames:
**Kolonnevalg**. Vi kan vælge individuelle kolonner ved at skrive `df['A']` - denne operation returnerer en series. Vi kan også vælge et subset af kolonner til en anden DataFrame ved at skrive `df[['B','A']]` - dette returnerer en ny DataFrame.
**Kolonnevalg**. Vi kan vælge individuelle kolonner ved at skrive `df['A']` - denne operation returnerer en Series. Vi kan også vælge et delmængde af kolonner til en anden DataFrame ved at skrive `df[['B','A']]` - dette returnerer en anden DataFrame.
**Filtrering** af kun visse rækker baseret på kriterier. For eksempel, for kun at beholde rækker, hvor kolonnen `A` er større end 5, kan vi skrive `df[df['A']>5]`.
**Filtrering** af kun visse rækker baseret på kriterier. For eksempel, for kun at beholde rækker med kolonnen `A` større end 5, kan vi skrive `df[df['A']>5]`.
> **Bemærk**: Måden filtrering fungerer på er følgende. Udtrykket `df['A']<5` returnerer en boolsk series, som angiver, om udtrykket er `True` eller `False` for hvert element i den originale series `df['A']`. Når en boolsk series bruges som indeks, returnerer den et subset af rækker i DataFrame. Derfor er det ikke muligt at bruge vilkårlige Python-boolske udtryk, f.eks. at skrive `df[df['A']>5 and df['A']<7]` ville være forkert. I stedet skal du bruge den specielle `&`-operation på boolske series, ved at skrive `df[(df['A']>5) & (df['A']<7)]` (*parenteser er vigtige her*).
> **Bemærk**: Måden filtrering fungerer på er følgende. Udtrykket `df['A']<5` returnerer en boolsk series, som angiver, om udtrykket er `True` eller `False` for hvert element i den oprindelige series `df['A']`. Når en boolsk series bruges som indeks, returnerer den en delmængde af rækker i DataFrame. Derfor er det ikke muligt at bruge vilkårlige Python-boolske udtryk, f.eks. at skrive `df[df['A']>5 and df['A']<7]` ville være forkert. I stedet skal du bruge den specielle `&`-operation på boolske series, ved at skrive `df[(df['A']>5) & (df['A']<7)]` (*parenteser er vigtige her*).
**Oprettelse af nye beregnelige kolonner**. Vi kan nemt oprette nye beregnelige kolonner for vores DataFrame ved at bruge intuitive udtryk som dette:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Dette eksempel beregner afvigelsen af A fra dens gennemsnitsværdi. Hvad der faktisk sker her er, at vi beregner en series og derefter tildeler denne series til venstre side, hvilket skaber en ny kolonne. Derfor kan vi ikke bruge operationer, der ikke er kompatible med series, f.eks. er koden nedenfor forkert:
Dette eksempel beregner afvigelsen af A fra dens gennemsnitsværdi. Hvad der faktisk sker her er, at vi beregner en series og derefter tildeler denne series til venstre side, hvilket skaber en ny kolonne. Derfor kan vi ikke bruge operationer, der ikke er kompatible med series, f.eks. nedenstående kode er forkert:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
@ -180,11 +180,11 @@ Efter ovenstående operationer ender vi med følgende DataFrame:
df.iloc[:5]
```
**Gruppering** bruges ofte til at opnå et resultat, der ligner *pivot-tabeller* i Excel. Antag, at vi vil beregne gennemsnitsværdien af kolonnen `A` for hver given værdi af `LenB`. Så kan vi gruppere vores DataFrame efter `LenB` og kalde `mean`:
**Gruppering** bruges ofte til at få et resultat, der ligner *pivot-tabeller* i Excel. Antag, at vi vil beregne gennemsnitsværdien af kolonnen `A` for hver given værdi af `LenB`. Så kan vi gruppere vores DataFrame efter `LenB` og kalde `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Hvis vi skal beregne gennemsnit og antallet af elementer i gruppen, kan vi bruge den mere komplekse `aggregate`-funktion:
Hvis vi skal beregne gennemsnittet og antallet af elementer i gruppen, kan vi bruge den mere komplekse `aggregate`-funktion:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -201,92 +201,92 @@ Dette giver os følgende tabel:
| 6 | 2 | 6.000000 |
### Hentning af Data
Vi har set, hvor nemt det er at oprette Series og DataFrames fra Python-objekter. Dog kommer data som regel i form af en tekstfil eller en Excel-tabel. Heldigvis tilbyder Pandas en enkel måde at indlæse data fra disken. For eksempel er det lige så nemt at læse en CSV-fil som dette:
Vi har set, hvor nemt det er at oprette Series og DataFrames fra Python-objekter. Dog kommer data ofte i form af en tekstfil eller en Excel-tabel. Heldigvis tilbyder Pandas en enkel måde at indlæse data fra disk. For eksempel er det lige så nemt at læse en CSV-fil som dette:
```python
df = pd.read_csv('file.csv')
```
Vi vil se flere eksempler på indlæsning af data, herunder at hente det fra eksterne websteder, i afsnittet "Udfordring".
```
Vi vil se flere eksempler på indlæsning af data, herunder at hente det fra eksterne websteder, i afsnittet "Challenge".
### Udskrivning og Visualisering
En Data Scientist skal ofte udforske data, og derfor er det vigtigt at kunne visualisere dem. Når en DataFrame er stor, vil vi mange gange bare sikre os, at vi gør alting korrekt, ved at udskrive de første par rækker. Dette kan gøres ved at kalde `df.head()`. Hvis du kører det fra Jupyter Notebook, vil det udskrive DataFrame i en pæn tabelform.
En Data Scientist skal ofte udforske data, og derfor er det vigtigt at kunne visualisere dem. Når en DataFrame er stor, vil vi ofte bare sikre os, at vi gør alting korrekt, ved at udskrive de første par rækker. Dette kan gøres ved at kalde `df.head()`. Hvis du kører det fra Jupyter Notebook, vil det udskrive DataFrame i en flot tabelform.
Vi har også set brugen af funktionen `plot` til at visualisere nogle kolonner. Selvom `plot` er meget nyttig til mange opgaver og understøtter mange forskellige graf-typer via parameteren `kind=`, kan du altid bruge det rå `matplotlib`-bibliotek til at lave noget mere komplekst. Vi vil dække datavisualisering i detaljer i separate kursuslektioner.
Denne oversigt dækker de vigtigste koncepter i Pandas, men biblioteket er meget omfattende, og der er ingen grænser for, hvad du kan gøre med det! Lad os nu anvende denne viden til at løse et specifikt problem.
Denne oversigt dækker de vigtigste begreber i Pandas, men biblioteket er meget rigt, og der er ingen grænser for, hvad du kan gøre med det! Lad os nu anvende denne viden til at løse et specifikt problem.
## 🚀 Udfordring 1: Analyse af COVID-spredning
## 🚀 Challenge 1: Analyse af COVID-spredning
Det første problem, vi vil fokusere på, er modellering af den epidemiske spredning af COVID-19. For at gøre det vil vi bruge data om antallet af smittede personer i forskellige lande, leveret af [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) ved [Johns Hopkins University](https://jhu.edu/). Datasættet er tilgængeligt i [dette GitHub-repository](https://github.com/CSSEGISandData/COVID-19).
Det første problem, vi vil fokusere på, er modellering af den epidemiske spredning af COVID-19. For at gøre dette vil vi bruge data om antallet af smittede individer i forskellige lande, leveret af [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) ved [Johns Hopkins University](https://jhu.edu/). Datasættet er tilgængeligt i [denne GitHub-repository](https://github.com/CSSEGISandData/COVID-19).
Da vi ønsker at demonstrere, hvordan man arbejder med data, inviterer vi dig til at åbne [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) og læse det fra top til bund. Du kan også køre cellerne og løse nogle af de udfordringer, vi har efterladt til dig i slutningen.
Da vi ønsker at demonstrere, hvordan man arbejder med data, inviterer vi dig til at åbne [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) og læse det fra top til bund. Du kan også udføre celler og lave nogle udfordringer, som vi har efterladt til dig i slutningen.
![COVID Spredning](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.da.png)
> Hvis du ikke ved, hvordan man kører kode i Jupyter Notebook, kan du læse [denne artikel](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Hvis du ikke ved, hvordan man kører kode i Jupyter Notebook, kan du kigge på [denne artikel](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Arbejde med Ustrukturerede Data
## Arbejde med ustruktureret data
Selvom data ofte kommer i tabelform, skal vi i nogle tilfælde arbejde med mindre strukturerede data, for eksempel tekst eller billeder. I sådanne tilfælde skal vi for at anvende de databehandlingsteknikker, vi har set ovenfor, på en eller anden måde **udtrække** strukturerede data. Her er nogle eksempler:
Selvom data meget ofte kommer i tabelform, skal vi i nogle tilfælde arbejde med mindre struktureret data, for eksempel tekst eller billeder. I dette tilfælde, for at anvende de databehandlingsteknikker, vi har set ovenfor, skal vi på en eller anden måde **udtrække** struktureret data. Her er nogle eksempler:
* Udtrække nøgleord fra tekst og se, hvor ofte disse nøgleord forekommer
* Udtrække nøgleord fra tekst og se, hvor ofte disse nøgleord optræder
* Bruge neurale netværk til at udtrække information om objekter på et billede
* Få information om folks følelser fra et videokamerafeed
* Få information om folks følelser via videokamera-feed
## 🚀 Udfordring 2: Analyse af COVID-artikler
## 🚀 Challenge 2: Analyse af COVID-artikler
I denne udfordring fortsætter vi med emnet COVID-pandemien og fokuserer på behandling af videnskabelige artikler om emnet. Der findes [CORD-19-datasættet](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mere end 7000 (på tidspunktet for skrivningen) artikler om COVID, tilgængeligt med metadata og abstracts (og for omkring halvdelen af dem er der også fuld tekst tilgængelig).
I denne udfordring fortsætter vi med emnet COVID-pandemien og fokuserer på behandling af videnskabelige artikler om emnet. Der findes [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mere end 7000 (på tidspunktet for skrivningen) artikler om COVID, tilgængelige med metadata og abstracts (og for omkring halvdelen af dem er der også fuld tekst tilgængelig).
Et fuldt eksempel på analyse af dette datasæt ved hjælp af [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) kognitive tjeneste er beskrevet [i dette blogindlæg](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vi vil diskutere en forenklet version af denne analyse.
Et fuldt eksempel på analyse af dette datasæt ved hjælp af [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) kognitive tjeneste er beskrevet [i denne blogpost](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vi vil diskutere en forenklet version af denne analyse.
> **NOTE**: Vi leverer ikke en kopi af datasættet som en del af dette repository. Du skal muligvis først downloade [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) fra [dette datasæt på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan være påkrævet. Du kan også downloade datasættet uden registrering [herfra](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det vil inkludere alle fulde tekster ud over metadatafilen.
> **NOTE**: Vi leverer ikke en kopi af datasættet som en del af dette repository. Du skal muligvis først downloade [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) filen fra [dette datasæt på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan være påkrævet. Du kan også downloade datasættet uden registrering [herfra](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det vil inkludere alle fulde tekster ud over metadatafilen.
Åbn [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) og læs det fra top til bund. Du kan også køre cellerne og løse nogle af de udfordringer, vi har efterladt til dig i slutningen.
Åbn [`notebook-papers.ipynb`](notebook-papers.ipynb) og læs det fra top til bund. Du kan også udføre celler og lave nogle udfordringer, som vi har efterladt til dig i slutningen.
![COVID Medicinsk Behandling](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.da.png)
## Behandling af Billeddata
## Behandling af billeddata
For nylig er der udviklet meget kraftfulde AI-modeller, der gør det muligt at forstå billeder. Der er mange opgaver, der kan løses ved hjælp af forudtrænede neurale netværk eller cloud-tjenester. Nogle eksempler inkluderer:
For nylig er der blevet udviklet meget kraftfulde AI-modeller, der gør det muligt for os at forstå billeder. Der er mange opgaver, der kan løses ved hjælp af forudtrænede neurale netværk eller cloud-tjenester. Nogle eksempler inkluderer:
* **Billedklassifikation**, som kan hjælpe dig med at kategorisere billedet i en af de foruddefinerede klasser. Du kan nemt træne dine egne billedklassifikatorer ved hjælp af tjenester som [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Objektdetektion** til at finde forskellige objekter på billedet. Tjenester som [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kan finde en række almindelige objekter, og du kan træne en [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)-model til at finde specifikke objekter af interesse.
* **Ansigtsgenkendelse**, herunder alder, køn og følelsesdetektion. Dette kan gøres via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Billedklassifikation**, som kan hjælpe dig med at kategorisere et billede i en af de foruddefinerede klasser. Du kan nemt træne dine egne billedklassifikatorer ved hjælp af tjenester som [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Objektdetektion** til at finde forskellige objekter på billedet. Tjenester som [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kan finde en række almindelige objekter, og du kan træne [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modellen til at finde specifikke objekter af interesse.
* **Ansigtsdetektion**, inklusive alder, køn og følelsesdetektion. Dette kan gøres via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Alle disse cloud-tjenester kan kaldes ved hjælp af [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), og kan derfor nemt integreres i din dataudforskningsarbejdsgang.
Her er nogle eksempler på udforskning af data fra billedkilder:
* I blogindlægget [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) udforsker vi Instagram-billeder og forsøger at forstå, hvad der får folk til at give flere likes til et billede. Vi udtrækker først så meget information som muligt fra billederne ved hjælp af [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) og bruger derefter [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) til at bygge en fortolkelig model.
* I [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) bruger vi [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) til at udtrække følelser fra mennesker på fotografier fra begivenheder for at forsøge at forstå, hvad der gør folk glade.
Her er nogle eksempler på udforskning af data fra billeddatakilder:
* I blogindlægget [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) udforsker vi Instagram-billeder og forsøger at forstå, hvad der får folk til at give flere likes til et billede. Vi udtrækker først så meget information som muligt fra billederne ved hjælp af [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), og bruger derefter [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) til at bygge en fortolkbar model.
* I [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) bruger vi [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) til at udtrække følelser hos mennesker på fotografier fra begivenheder for at forsøge at forstå, hvad der gør folk glade.
## Konklusion
Uanset om du allerede har strukturerede eller ustrukturerede data, kan du med Python udføre alle trin relateret til databehandling og forståelse. Det er sandsynligvis den mest fleksible måde at behandle data på, og det er grunden til, at størstedelen af dataforskere bruger Python som deres primære værktøj. At lære Python i dybden er sandsynligvis en god idé, hvis du er seriøs omkring din rejse inden for data science!
Uanset om du allerede har struktureret eller ustruktureret data, kan du med Python udføre alle trin relateret til databehandling og forståelse. Det er sandsynligvis den mest fleksible måde at behandle data på, og det er grunden til, at størstedelen af dataforskere bruger Python som deres primære værktøj. At lære Python i dybden er sandsynligvis en god idé, hvis du er seriøs omkring din data science-rejse!
## [Quiz efter lektionen](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Gennemgang & Selvstudie
**Bøger**
**Bøger**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Online Ressourcer**
* Officiel [10 minutter til Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Dokumentation om Pandas-visualisering](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Online Ressourcer**
* Officiel [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Dokumentation om Pandas Visualisering](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Lær Python**
* [Lær Python på en sjov måde med Turtle Graphics og Fractals](https://github.com/shwars/pycourse)
* [Tag dine første skridt med Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) læringssti på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
**Lær Python**
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
* [Tag dine første skridt med Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Opgave
[Udfør en mere detaljeret dataundersøgelse for udfordringerne ovenfor](assignment.md)
[Udfør en mere detaljeret dataundersøgelse for ovenstående udfordringer](assignment.md)
## Kreditering
## Credits
Denne lektion er skrevet med ♥️ af [Dmitry Soshnikov](http://soshnikov.com)
---
**Ansvarsfraskrivelse**:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på at opnå nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T13:52:23+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:21:43+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "de"
}
@ -13,7 +13,7 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Arbeiten mit Python - _Sketchnote von [@nitya](https://twitter.com/nitya)_ |
[![Einführungsvideo](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Einführungsvideo](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.de.png)](https://youtu.be/dZjWOGbsN4Y)
Während Datenbanken sehr effiziente Möglichkeiten bieten, Daten zu speichern und sie mit Abfragesprachen zu durchsuchen, ist die flexibelste Art der Datenverarbeitung das Schreiben eines eigenen Programms, um die Daten zu manipulieren. In vielen Fällen wäre eine Datenbankabfrage effektiver. Es gibt jedoch Situationen, in denen komplexere Datenverarbeitungen erforderlich sind, die sich nicht einfach mit SQL umsetzen lassen.
Datenverarbeitung kann in jeder Programmiersprache programmiert werden, aber es gibt bestimmte Sprachen, die sich besonders gut für die Arbeit mit Daten eignen. Datenwissenschaftler bevorzugen typischerweise eine der folgenden Sprachen:
@ -22,46 +22,46 @@ Datenverarbeitung kann in jeder Programmiersprache programmiert werden, aber es
* **[R](https://www.r-project.org/)** ist ein traditionelles Werkzeug, das speziell für die statistische Datenverarbeitung entwickelt wurde. Es verfügt über ein großes Repository von Bibliotheken (CRAN), was es zu einer guten Wahl für die Datenverarbeitung macht. Allerdings ist R keine universelle Programmiersprache und wird selten außerhalb des Bereichs der Datenwissenschaft eingesetzt.
* **[Julia](https://julialang.org/)** ist eine weitere Sprache, die speziell für die Datenwissenschaft entwickelt wurde. Sie soll eine bessere Leistung als Python bieten und ist daher ein großartiges Werkzeug für wissenschaftliche Experimente.
In dieser Lektion konzentrieren wir uns auf die Verwendung von Python für einfache Datenverarbeitung. Wir setzen grundlegende Kenntnisse der Sprache voraus. Wenn Sie einen tieferen Einblick in Python erhalten möchten, können Sie auf eine der folgenden Ressourcen zurückgreifen:
In dieser Lektion konzentrieren wir uns auf die Verwendung von Python für einfache Datenverarbeitung. Wir setzen grundlegende Kenntnisse der Sprache voraus. Wenn Sie eine tiefere Einführung in Python wünschen, können Sie auf eine der folgenden Ressourcen zurückgreifen:
* [Lernen Sie Python auf unterhaltsame Weise mit Turtle Graphics und Fraktalen](https://github.com/shwars/pycourse) - Ein schneller Einführungskurs in Python-Programmierung auf GitHub
* [Machen Sie Ihre ersten Schritte mit Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - Ein Lernpfad auf [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Lernen Sie Python auf unterhaltsame Weise mit Turtle Graphics und Fraktalen](https://github.com/shwars/pycourse) Ein schneller Einführungskurs in Python-Programmierung auf GitHub
* [Machen Sie Ihre ersten Schritte mit Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Ein Lernpfad auf [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Daten können in vielen Formen vorliegen. In dieser Lektion betrachten wir drei Formen von Daten - **tabellarische Daten**, **Text** und **Bilder**.
Daten können in vielen Formen vorliegen. In dieser Lektion betrachten wir drei Formen von Daten **tabellarische Daten**, **Text** und **Bilder**.
Wir konzentrieren uns auf einige Beispiele für die Datenverarbeitung, anstatt Ihnen einen vollständigen Überblick über alle zugehörigen Bibliotheken zu geben. Dies soll Ihnen die Hauptidee vermitteln, was möglich ist, und Ihnen ein Verständnis dafür geben, wo Sie Lösungen für Ihre Probleme finden können, wenn Sie sie benötigen.
Wir werden uns auf einige Beispiele der Datenverarbeitung konzentrieren, anstatt Ihnen einen vollständigen Überblick über alle zugehörigen Bibliotheken zu geben. Dies ermöglicht es Ihnen, die Hauptidee dessen zu verstehen, was möglich ist, und gibt Ihnen das Wissen, wo Sie Lösungen für Ihre Probleme finden können, wenn Sie sie benötigen.
> **Der nützlichste Ratschlag**: Wenn Sie eine bestimmte Operation mit Daten durchführen müssen, aber nicht wissen, wie, versuchen Sie, im Internet danach zu suchen. [Stackoverflow](https://stackoverflow.com/) enthält oft viele nützliche Codebeispiele in Python für viele typische Aufgaben.
> **Der nützlichste Ratschlag**: Wenn Sie eine bestimmte Operation mit Daten durchführen müssen, aber nicht wissen, wie, suchen Sie im Internet danach. [Stackoverflow](https://stackoverflow.com/) enthält oft viele nützliche Codebeispiele in Python für viele typische Aufgaben.
## [Quiz vor der Lektion](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Quiz vor der Vorlesung](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabellarische Daten und Dataframes
Sie haben tabellarische Daten bereits kennengelernt, als wir über relationale Datenbanken gesprochen haben. Wenn Sie viele Daten haben, die in vielen verschiedenen verknüpften Tabellen enthalten sind, macht es definitiv Sinn, SQL zu verwenden, um damit zu arbeiten. Es gibt jedoch viele Fälle, in denen wir eine Tabelle mit Daten haben und einige **Erkenntnisse** oder **Einsichten** über diese Daten gewinnen möchten, wie z. B. die Verteilung, Korrelation zwischen Werten usw. In der Datenwissenschaft gibt es viele Fälle, in denen wir einige Transformationen der ursprünglichen Daten durchführen müssen, gefolgt von einer Visualisierung. Beide Schritte können leicht mit Python durchgeführt werden.
Sie haben tabellarische Daten bereits kennengelernt, als wir über relationale Datenbanken gesprochen haben. Wenn Sie viele Daten haben, die in verschiedenen verknüpften Tabellen gespeichert sind, macht es definitiv Sinn, SQL zu verwenden, um damit zu arbeiten. Es gibt jedoch viele Fälle, in denen wir eine Tabelle mit Daten haben und einige **Erkenntnisse** oder **Einsichten** über diese Daten gewinnen möchten, wie z. B. die Verteilung, Korrelation zwischen Werten usw. In der Datenwissenschaft gibt es viele Fälle, in denen wir einige Transformationen der ursprünglichen Daten durchführen müssen, gefolgt von einer Visualisierung. Beide Schritte können leicht mit Python durchgeführt werden.
Es gibt zwei äußerst nützliche Bibliotheken in Python, die Ihnen bei der Arbeit mit tabellarischen Daten helfen können:
* **[Pandas](https://pandas.pydata.org/)** ermöglicht es Ihnen, sogenannte **Dataframes** zu manipulieren, die relationalen Tabellen ähneln. Sie können benannte Spalten haben und verschiedene Operationen auf Zeilen, Spalten und Dataframes im Allgemeinen ausführen.
* **[Numpy](https://numpy.org/)** ist eine Bibliothek für die Arbeit mit **Tensors**, d. h. mehrdimensionalen **Arrays**. Ein Array hat Werte desselben zugrunde liegenden Typs und ist einfacher als ein Dataframe, bietet jedoch mehr mathematische Operationen und erzeugt weniger Overhead.
* **[Pandas](https://pandas.pydata.org/)** ermöglicht es Ihnen, sogenannte **Dataframes** zu manipulieren, die relationalen Tabellen ähneln. Sie können benannte Spalten haben und verschiedene Operationen auf Zeilen, Spalten und Dataframes im Allgemeinen durchführen.
* **[Numpy](https://numpy.org/)** ist eine Bibliothek für die Arbeit mit **Tensors**, d. h. mehrdimensionalen **Arrays**. Ein Array hat Werte desselben zugrunde liegenden Typs, ist einfacher als ein Dataframe, bietet jedoch mehr mathematische Operationen und erzeugt weniger Overhead.
Es gibt auch ein paar andere Bibliotheken, die Sie kennen sollten:
* **[Matplotlib](https://matplotlib.org/)** ist eine Bibliothek, die für die Datenvisualisierung und das Erstellen von Diagrammen verwendet wird.
* **[Matplotlib](https://matplotlib.org/)** ist eine Bibliothek für Datenvisualisierung und das Erstellen von Diagrammen
* **[SciPy](https://www.scipy.org/)** ist eine Bibliothek mit zusätzlichen wissenschaftlichen Funktionen. Wir sind bereits auf diese Bibliothek gestoßen, als wir über Wahrscheinlichkeit und Statistik gesprochen haben.
Hier ist ein Codebeispiel, das Sie typischerweise verwenden würden, um diese Bibliotheken am Anfang Ihres Python-Programms zu importieren:
Hier ist ein Codebeispiel, das Sie typischerweise verwenden würden, um diese Bibliotheken am Anfang Ihres Python-Programms zu importieren:
```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
```
```
Pandas basiert auf einigen grundlegenden Konzepten.
### Series
### Series
**Series** ist eine Sequenz von Werten, ähnlich einer Liste oder einem Numpy-Array. Der Hauptunterschied besteht darin, dass Series auch einen **Index** hat, und wenn wir mit Series arbeiten (z. B. sie addieren), wird der Index berücksichtigt. Der Index kann so einfach wie eine ganze Zeilennummer sein (dies ist der Standardindex, wenn eine Series aus einer Liste oder einem Array erstellt wird), oder er kann eine komplexe Struktur wie ein Datumsintervall haben.
**Series** ist eine Sequenz von Werten, ähnlich einer Liste oder einem Numpy-Array. Der Hauptunterschied besteht darin, dass eine Series auch einen **Index** hat, und wenn wir mit Series arbeiten (z. B. sie addieren), wird der Index berücksichtigt. Der Index kann so einfach wie eine ganze Zeilennummer sein (dies ist der Standardindex, wenn eine Series aus einer Liste oder einem Array erstellt wird), oder er kann eine komplexe Struktur wie ein Datumsintervall haben.
> **Hinweis**: Es gibt einige einführende Pandas-Codes im begleitenden Notebook [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Wir skizzieren hier nur einige Beispiele, und Sie sind herzlich eingeladen, das vollständige Notebook anzusehen.
> **Hinweis**: Es gibt einige einführende Pandas-Codes im begleitenden Notebook [`notebook.ipynb`](notebook.ipynb). Wir skizzieren hier nur einige Beispiele, und Sie sind herzlich eingeladen, das vollständige Notebook anzusehen.
Betrachten wir ein Beispiel: Wir möchten die Verkäufe unseres Eisdielen-Standorts analysieren. Lassen Sie uns eine Serie von Verkaufszahlen (Anzahl der täglich verkauften Artikel) für einen bestimmten Zeitraum generieren:
@ -73,46 +73,46 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Zeitreihen-Diagramm](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Zeitreihen-Diagramm](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.de.png)
Angenommen, wir organisieren jede Woche eine Party für Freunde und nehmen zusätzlich 10 Packungen Eis für die Party. Wir können eine weitere Serie erstellen, die nach Wochen indiziert ist, um dies zu demonstrieren:
Angenommen, wir organisieren jede Woche eine Party für Freunde und nehmen zusätzlich 10 Packungen Eis für die Party. Wir können eine weitere Serie erstellen, die nach Wochen indiziert ist, um dies zu demonstrieren:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Wenn wir zwei Serien zusammenaddieren, erhalten wir die Gesamtanzahl:
```
Wenn wir zwei Series zusammenaddieren, erhalten wir die Gesamtanzahl:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Zeitreihen-Diagramm](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
```
![Zeitreihen-Diagramm](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.de.png)
> **Hinweis**: Wir verwenden nicht die einfache Syntax `total_items+additional_items`. Wenn wir dies täten, würden wir viele `NaN` (*Not a Number*)-Werte in der resultierenden Serie erhalten. Dies liegt daran, dass für einige Indexpunkte in der Serie `additional_items` Werte fehlen und das Hinzufügen von `NaN` zu irgendetwas zu `NaN` führt. Daher müssen wir den Parameter `fill_value` während der Addition angeben.
> **Hinweis**: Wir verwenden nicht die einfache Syntax `total_items+additional_items`. Wenn wir dies täten, würden wir viele `NaN` (*Not a Number*)-Werte in der resultierenden Serie erhalten. Dies liegt daran, dass für einige Indexpunkte in der Serie `additional_items` Werte fehlen, und das Addieren von `NaN` zu irgendetwas ergibt `NaN`. Daher müssen wir den Parameter `fill_value` während der Addition angeben.
Mit Zeitreihen können wir die Serie auch mit unterschiedlichen Zeitintervallen **neu abtasten**. Angenommen, wir möchten das durchschnittliche Verkaufsvolumen monatlich berechnen. Wir können den folgenden Code verwenden:
Mit Zeitreihen können wir die Serie auch mit unterschiedlichen Zeitintervallen **neu abtasten**. Zum Beispiel, wenn wir das durchschnittliche Verkaufsvolumen monatlich berechnen möchten, können wir den folgenden Code verwenden:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Monatliche Zeitreihen-Durchschnitte](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
```
![Monatliche Zeitreihen-Durchschnitte](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.de.png)
### DataFrame
Ein DataFrame ist im Wesentlichen eine Sammlung von Series mit demselben Index. Wir können mehrere Series zu einem DataFrame kombinieren:
Ein DataFrame ist im Wesentlichen eine Sammlung von Series mit demselben Index. Wir können mehrere Series zu einem DataFrame kombinieren:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Dies erstellt eine horizontale Tabelle wie diese:
```
Dies erzeugt eine horizontale Tabelle wie diese:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Wir können auch Series als Spalten verwenden und die Spaltennamen mithilfe eines Wörterbuchs angeben:
Wir können auch Series als Spalten verwenden und Spaltennamen mit einem Wörterbuch angeben:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
```
Dies ergibt eine Tabelle wie diese:
| | A | B |
@ -127,37 +127,37 @@ Dies ergibt eine Tabelle wie diese:
| 7 | 8 | very |
| 8 | 9 | much |
**Hinweis**: Wir können dieses Tabellenlayout auch erhalten, indem wir die vorherige Tabelle transponieren, z. B. durch Schreiben von
**Hinweis**: Wir können dieses Tabellenlayout auch durch Transponieren der vorherigen Tabelle erhalten, z. B. durch Schreiben von
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
```
Hier bedeutet `.T` die Operation des Transponierens des DataFrames, d. h. das Tauschen von Zeilen und Spalten, und die `rename`-Operation ermöglicht es uns, die Spalten umzubenennen, um das vorherige Beispiel zu entsprechen.
Hier sind einige der wichtigsten Operationen, die wir auf DataFrames ausführen können:
**Spaltenauswahl**. Wir können einzelne Spalten auswählen, indem wir `df['A']` schreiben - diese Operation gibt eine Series zurück. Wir können auch eine Teilmenge von Spalten in einen anderen DataFrame auswählen, indem wir `df[['B','A']]` schreiben - dies gibt einen anderen DataFrame zurück.
**Spaltenauswahl**. Wir können einzelne Spalten auswählen, indem wir `df['A']` schreiben diese Operation gibt eine Series zurück. Wir können auch eine Teilmenge von Spalten in einen anderen DataFrame auswählen, indem wir `df[['B','A']]` schreiben dies gibt einen anderen DataFrame zurück.
**Filtern** bestimmter Zeilen nach Kriterien. Zum Beispiel, um nur Zeilen mit Spalte `A` größer als 5 zu behalten, können wir `df[df['A']>5]` schreiben.
> **Hinweis**: Die Funktionsweise des Filterns ist wie folgt. Der Ausdruck `df['A']<5` gibt eine boolesche Serie zurück, die angibt, ob der Ausdruck für jedes Element der ursprünglichen Serie `df['A']` `True` oder `False` ist. Wenn eine boolesche Serie als Index verwendet wird, gibt sie eine Teilmenge der Zeilen im DataFrame zurück. Daher ist es nicht möglich, beliebige Python-Boolesche Ausdrücke zu verwenden, z. B. wäre das Schreiben von `df[df['A']>5 and df['A']<7]` falsch. Stattdessen sollten Sie die spezielle `&`-Operation auf boolesche Serien verwenden, indem Sie `df[(df['A']>5) & (df['A']<7)]` schreiben (*Klammern sind hier wichtig*).
> **Hinweis**: Die Funktionsweise des Filterns ist wie folgt. Der Ausdruck `df['A']<5` gibt eine boolesche Serie zurück, die angibt, ob der Ausdruck für jedes Element der ursprünglichen Serie `df['A']` `True` oder `False` ist. Wenn eine boolesche Serie als Index verwendet wird, gibt sie eine Teilmenge der Zeilen im DataFrame zurück. Daher ist es nicht möglich, beliebige Python-Boolesche Ausdrücke zu verwenden, z. B. wäre das Schreiben von `df[df['A']>5 and df['A']<7]` falsch. Stattdessen sollten Sie die spezielle `&`-Operation auf booleschen Serien verwenden, indem Sie `df[(df['A']>5) & (df['A']<7)]` schreiben (*Klammern sind hier wichtig*).
**Erstellen neuer berechneter Spalten**. Wir können neue berechnete Spalten für unseren DataFrame einfach erstellen, indem wir intuitive Ausdrücke wie diesen verwenden:
**Erstellen neuer berechneter Spalten**. Wir können neue berechnete Spalten für unseren DataFrame einfach erstellen, indem wir intuitive Ausdrücke wie diesen verwenden:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Dieses Beispiel berechnet die Abweichung von A von seinem Mittelwert. Was hier tatsächlich passiert, ist, dass wir eine Serie berechnen und diese Serie dann der linken Seite zuweisen, wodurch eine weitere Spalte erstellt wird. Daher können wir keine Operationen verwenden, die nicht mit Serien kompatibel sind, z. B. ist der folgende Code falsch:
```
Dieses Beispiel berechnet die Abweichung von A von seinem Mittelwert. Was hier tatsächlich passiert, ist, dass wir eine Serie berechnen und diese Serie dann der linken Seite zuweisen, wodurch eine weitere Spalte erstellt wird. Daher können wir keine Operationen verwenden, die nicht mit Serien kompatibel sind, z. B. ist der folgende Code falsch:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
```
Das letzte Beispiel, obwohl syntaktisch korrekt, gibt uns ein falsches Ergebnis, da es die Länge der Serie `B` allen Werten in der Spalte zuweist und nicht die Länge der einzelnen Elemente, wie wir beabsichtigt hatten.
Wenn wir komplexe Ausdrücke wie diesen berechnen müssen, können wir die Funktion `apply` verwenden. Das letzte Beispiel kann wie folgt geschrieben werden:
Wenn wir komplexe Ausdrücke wie diesen berechnen müssen, können wir die Funktion `apply` verwenden. Das letzte Beispiel kann wie folgt geschrieben werden:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
df['LenB'] = df['B'].apply(len)
```
```
Nach den obigen Operationen erhalten wir den folgenden DataFrame:
@ -173,21 +173,21 @@ Nach den obigen Operationen erhalten wir den folgenden DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Auswahl von Zeilen basierend auf Nummern** kann mit der `iloc`-Konstruktion durchgeführt werden. Zum Beispiel, um die ersten 5 Zeilen aus dem DataFrame auszuwählen:
**Auswahl von Zeilen basierend auf Nummern** kann mit der `iloc`-Konstruktion durchgeführt werden. Zum Beispiel, um die ersten 5 Zeilen aus dem DataFrame auszuwählen:
```python
df.iloc[:5]
```
```
**Gruppierung** wird oft verwendet, um ein Ergebnis ähnlich wie *Pivot-Tabellen* in Excel zu erhalten. Angenommen, wir möchten den Mittelwert der Spalte `A` für jede gegebene Anzahl von `LenB` berechnen. Dann können wir unseren DataFrame nach `LenB` gruppieren und `mean` aufrufen:
**Gruppierung** wird oft verwendet, um ein Ergebnis ähnlich wie *Pivot-Tabellen* in Excel zu erhalten. Angenommen, wir möchten den Mittelwert der Spalte `A` für jede gegebene Anzahl von `LenB` berechnen. Dann können wir unseren DataFrame nach `LenB` gruppieren und `mean` aufrufen:
```python
df.groupby(by='LenB').mean()
```
Wenn wir den Mittelwert und die Anzahl der Elemente in der Gruppe berechnen müssen, können wir die komplexere Funktion `aggregate` verwenden:
df.groupby(by='LenB')[['A','DivA']].mean()
```
Wenn wir den Mittelwert und die Anzahl der Elemente in der Gruppe berechnen müssen, können wir die komplexere Funktion `aggregate` verwenden:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
```
Dies ergibt die folgende Tabelle:
| LenB | Count | Mean |
@ -209,17 +209,17 @@ Wir werden weitere Beispiele zum Laden von Daten sehen, einschließlich des Abru
Ein Data Scientist muss oft die Daten erkunden, daher ist es wichtig, sie visualisieren zu können. Wenn ein DataFrame groß ist, möchten wir oft nur sicherstellen, dass wir alles richtig machen, indem wir die ersten paar Zeilen ausgeben. Dies kann durch Aufrufen von `df.head()` erfolgen. Wenn Sie es in Jupyter Notebook ausführen, wird der DataFrame in einer schönen tabellarischen Form angezeigt.
Wir haben auch die Verwendung der Funktion `plot` gesehen, um einige Spalten zu visualisieren. Während `plot` für viele Aufgaben sehr nützlich ist und viele verschiedene Diagrammtypen über den Parameter `kind=` unterstützt, können Sie immer die rohe `matplotlib`-Bibliothek verwenden, um etwas Komplexeres zu zeichnen. Wir werden die Datenvisualisierung in separaten Kurslektionen ausführlich behandeln.
Wir haben auch die Verwendung der Funktion `plot` gesehen, um einige Spalten zu visualisieren. Während `plot` für viele Aufgaben sehr nützlich ist und viele verschiedene Diagrammtypen über den Parameter `kind=` unterstützt, können Sie immer die rohe `matplotlib`-Bibliothek verwenden, um etwas Komplexeres zu zeichnen. Wir werden die Datenvisualisierung ausführlich in separaten Kurslektionen behandeln.
Dieser Überblick deckt die wichtigsten Konzepte von Pandas ab, jedoch ist die Bibliothek sehr umfangreich, und es gibt keine Grenzen für das, was Sie damit tun können! Wenden wir dieses Wissen nun an, um ein spezifisches Problem zu lösen.
Dieser Überblick deckt die wichtigsten Konzepte von Pandas ab, jedoch ist die Bibliothek sehr umfangreich, und es gibt keine Grenzen für das, was Sie damit tun können! Lassen Sie uns nun dieses Wissen anwenden, um ein spezifisches Problem zu lösen.
## 🚀 Challenge 1: Analyse der COVID-Ausbreitung
Das erste Problem, auf das wir uns konzentrieren werden, ist die Modellierung der epidemischen Ausbreitung von COVID-19. Dazu verwenden wir die Daten über die Anzahl der infizierten Personen in verschiedenen Ländern, bereitgestellt vom [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) der [Johns Hopkins University](https://jhu.edu/). Der Datensatz ist in [diesem GitHub-Repository](https://github.com/CSSEGISandData/COVID-19) verfügbar.
Das erste Problem, auf das wir uns konzentrieren werden, ist die Modellierung der epidemischen Ausbreitung von COVID-19. Um dies zu tun, verwenden wir die Daten über die Anzahl der infizierten Personen in verschiedenen Ländern, bereitgestellt vom [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) der [Johns Hopkins University](https://jhu.edu/). Der Datensatz ist in [diesem GitHub-Repository](https://github.com/CSSEGISandData/COVID-19) verfügbar.
Da wir demonstrieren möchten, wie man mit Daten umgeht, laden wir Sie ein, [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) zu öffnen und es von oben bis unten zu lesen. Sie können auch Zellen ausführen und einige Herausforderungen lösen, die wir am Ende für Sie hinterlassen haben.
Da wir demonstrieren möchten, wie man mit Daten umgeht, laden wir Sie ein, [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) zu öffnen und es von oben bis unten zu lesen. Sie können auch Zellen ausführen und einige Herausforderungen lösen, die wir am Ende für Sie hinterlassen haben.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.de.png)
> Wenn Sie nicht wissen, wie man Code in Jupyter Notebook ausführt, werfen Sie einen Blick auf [diesen Artikel](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
@ -228,8 +228,8 @@ Da wir demonstrieren möchten, wie man mit Daten umgeht, laden wir Sie ein, [`no
Während Daten sehr oft in tabellarischer Form vorliegen, müssen wir in einigen Fällen mit weniger strukturierten Daten umgehen, zum Beispiel Text oder Bilder. In diesem Fall müssen wir, um die oben gesehenen Datenverarbeitungstechniken anzuwenden, irgendwie **strukturierte** Daten extrahieren. Hier sind einige Beispiele:
* Extrahieren von Schlüsselwörtern aus Text und Analysieren, wie oft diese Schlüsselwörter vorkommen
* Verwendung von neuronalen Netzwerken, um Informationen über Objekte auf Bildern zu extrahieren
* Gewinnung von Informationen über die Emotionen von Personen in einem Videokamera-Feed
* Verwenden von neuronalen Netzwerken, um Informationen über Objekte auf Bildern zu extrahieren
* Ermitteln von Emotionen von Personen in einem Videokamera-Feed
## 🚀 Challenge 2: Analyse von COVID-Papieren
@ -237,11 +237,11 @@ In dieser Challenge setzen wir das Thema der COVID-Pandemie fort und konzentrier
Ein vollständiges Beispiel für die Analyse dieses Datensatzes mit dem kognitiven Dienst [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) wird [in diesem Blogbeitrag](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) beschrieben. Wir werden eine vereinfachte Version dieser Analyse besprechen.
> **NOTE**: Wir stellen keine Kopie des Datensatzes als Teil dieses Repositorys bereit. Sie müssen möglicherweise zuerst die Datei [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) aus [diesem Datensatz auf Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) herunterladen. Eine Registrierung bei Kaggle kann erforderlich sein. Sie können den Datensatz auch ohne Registrierung [hier herunterladen](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), aber er wird alle Volltexte zusätzlich zur Metadatei enthalten.
> **NOTE**: Wir stellen keine Kopie des Datensatzes als Teil dieses Repositorys bereit. Sie müssen möglicherweise zuerst die Datei [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) aus [diesem Datensatz auf Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) herunterladen. Eine Registrierung bei Kaggle kann erforderlich sein. Sie können den Datensatz auch ohne Registrierung [hier herunterladen](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), aber er wird alle Volltexte zusätzlich zur Metadaten-Datei enthalten.
Öffnen Sie [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) und lesen Sie es von oben bis unten. Sie können auch Zellen ausführen und einige Herausforderungen lösen, die wir am Ende für Sie hinterlassen haben.
Öffnen Sie [`notebook-papers.ipynb`](notebook-papers.ipynb) und lesen Sie es von oben bis unten. Sie können auch Zellen ausführen und einige Herausforderungen lösen, die wir am Ende für Sie hinterlassen haben.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.de.png)
## Verarbeitung von Bilddaten
@ -255,11 +255,11 @@ Alle diese Cloud-Dienste können mit [Python SDKs](https://docs.microsoft.com/sa
Hier sind einige Beispiele für die Erkundung von Daten aus Bilddatenquellen:
* Im Blogbeitrag [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) untersuchen wir Instagram-Fotos, um zu verstehen, was Menschen dazu bringt, einem Foto mehr Likes zu geben. Wir extrahieren zunächst so viele Informationen wie möglich aus Bildern mit [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) und verwenden dann [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum), um ein interpretierbares Modell zu erstellen.
* Im [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) verwenden wir die [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum), um Emotionen von Personen auf Fotos von Veranstaltungen zu extrahieren, um zu verstehen, was Menschen glücklich macht.
* In [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) verwenden wir die [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum), um Emotionen von Personen auf Fotos von Veranstaltungen zu extrahieren, um zu verstehen, was Menschen glücklich macht.
## Fazit
Egal, ob Sie bereits strukturierte oder unstrukturierte Daten haben, mit Python können Sie alle Schritte der Datenverarbeitung und -analyse durchführen. Es ist wahrscheinlich die flexibelste Methode der Datenverarbeitung, und das ist der Grund, warum die Mehrheit der Data Scientists Python als ihr Hauptwerkzeug verwendet. Python gründlich zu lernen, ist wahrscheinlich eine gute Idee, wenn Sie Ihre Reise in der Datenwissenschaft ernsthaft verfolgen möchten!
Egal, ob Sie bereits strukturierte oder unstrukturierte Daten haben, mit Python können Sie alle Schritte der Datenverarbeitung und des Datenverständnisses durchführen. Es ist wahrscheinlich die flexibelste Methode der Datenverarbeitung, und das ist der Grund, warum die Mehrheit der Data Scientists Python als ihr Hauptwerkzeug verwendet. Python gründlich zu lernen, ist wahrscheinlich eine gute Idee, wenn Sie Ihre Reise in der Datenwissenschaft ernst nehmen!
## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -273,7 +273,7 @@ Egal, ob Sie bereits strukturierte oder unstrukturierte Daten haben, mit Python
* [Dokumentation zur Pandas-Visualisierung](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Python lernen**
* [Lernen Sie Python auf unterhaltsame Weise mit Turtle Graphics und Fraktalen](https://github.com/shwars/pycourse)
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
* [Machen Sie Ihre ersten Schritte mit Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Lernpfad auf [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Aufgabe
@ -287,4 +287,4 @@ Diese Lektion wurde mit ♥️ von [Dmitry Soshnikov](http://soshnikov.com) erst
---
**Haftungsausschluss**:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.
Dieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T21:04:56+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:43:31+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "el"
}
@ -13,16 +13,16 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Εργασία με Python - _Σκίτσο από [@nitya](https://twitter.com/nitya)_ |
[![Εισαγωγικό Βίντεο](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Εισαγωγικό Βίντεο](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.el.png)](https://youtu.be/dZjWOGbsN4Y)
Ενώ οι βάσεις δεδομένων προσφέρουν πολύ αποτελεσματικούς τρόπους αποθήκευσης δεδομένων και ερωτημάτων μέσω γλωσσών ερωτημάτων, ο πιο ευέλικτος τρόπος επεξεργασίας δεδομένων είναι η δημιουργία του δικού σας προγράμματος για την επεξεργασία τους. Σε πολλές περιπτώσεις, η χρήση ερωτημάτων βάσης δεδομένων είναι πιο αποτελεσματική. Ωστόσο, σε ορισμένες περιπτώσεις όπου απαιτείται πιο σύνθετη επεξεργασία δεδομένων, αυτό δεν μπορεί να γίνει εύκολα με 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/)**, μια γλώσσα προγραμματισμού γενικού σκοπού, η οποία θεωρείται συχνά μία από τις καλύτερες επιλογές για αρχάριους λόγω της απλότητάς της. Η Python διαθέτει πολλές πρόσθετες βιβλιοθήκες που μπορούν να σας βοηθήσουν να λύσετε πολλά πρακτικά προβλήματα, όπως η εξαγωγή δεδομένων από αρχεία ZIP ή η μετατροπή εικόνων σε ασπρόμαυρες. Εκτός από την επιστήμη δεδομένων, η Python χρησιμοποιείται επίσης συχνά για ανάπτυξη ιστοσελίδων.
* **[R](https://www.r-project.org/)** είναι ένα παραδοσιακό εργαλείο που αναπτύχθηκε με γνώμονα την επεξεργασία στατιστικών δεδομένων. Περιέχει επίσης μια μεγάλη αποθήκη βιβλιοθηκών (CRAN), καθιστώντας το μια καλή επιλογή για επεξεργασία δεδομένων. Ωστόσο, το R δεν είναι γλώσσα γενικού σκοπού και σπάνια χρησιμοποιείται εκτός του τομέα της επιστήμης δεδομένων.
* **[Julia](https://julialang.org/)** είναι μια άλλη γλώσσα που αναπτύχθηκε ειδικά για την επιστήμη δεδομένων. Σκοπός της είναι να προσφέρει καλύτερη απόδοση από την Python, καθιστώντας την ένα εξαιρετικό εργαλείο για επιστημονικά πειράματα.
Σε αυτό το μάθημα, θα επικεντρωθούμε στη χρήση της Python για απλή επεξεργασία δεδομένων. Θα υποθέσουμε ότι έχετε βασική εξοικείωση με τη γλώσσα. Αν θέλετε μια πιο βαθιά εισαγωγή στην Python, μπορείτε να ανατρέξετε σε μία από τις παρακάτω πηγές:
Σε αυτό το μάθημα, θα επικεντρωθούμε στη χρήση της Python για απλή επεξεργασία δεδομένων. Θα υποθέσουμε ότι έχετε βασική εξοικείωση με τη γλώσσα. Εάν θέλετε μια πιο βαθιά περιήγηση στην Python, μπορείτε να ανατρέξετε σε μία από τις παρακάτω πηγές:
* [Μάθετε Python με Διασκεδαστικό Τρόπο χρησιμοποιώντας Turtle Graphics και Fractals](https://github.com/shwars/pycourse) - Γρήγορο εισαγωγικό μάθημα στην Python μέσω GitHub
* [Κάντε τα Πρώτα σας Βήματα με την 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)
@ -31,21 +31,21 @@ CO_OP_TRANSLATOR_METADATA:
Θα επικεντρωθούμε σε μερικά παραδείγματα επεξεργασίας δεδομένων, αντί να σας δώσουμε μια πλήρη επισκόπηση όλων των σχετικών βιβλιοθηκών. Αυτό θα σας επιτρέψει να κατανοήσετε τις βασικές δυνατότητες και να αποκτήσετε μια ιδέα για το πού να βρείτε λύσεις στα προβλήματά σας όταν τις χρειαστείτε.
> **Η πιο χρήσιμη συμβουλή**. Όταν χρειάζεστε να εκτελέσετε μια συγκεκριμένη λειτουργία σε δεδομένα και δεν ξέρετε πώς να το κάνετε, δοκιμάστε να το αναζητήσετε στο διαδίκτυο. Το [Stackoverflow](https://stackoverflow.com/) περιέχει συνήθως πολλά χρήσιμα δείγματα κώδικα σε Python για πολλές τυπικές εργασίες.
> **Η πιο χρήσιμη συμβουλή**. Όταν χρειάζεται να εκτελέσετε μια συγκεκριμένη λειτουργία σε δεδομένα και δεν ξέρετε πώς να το κάνετε, δοκιμάστε να το αναζητήσετε στο διαδίκτυο. Το [Stackoverflow](https://stackoverflow.com/) περιέχει συνήθως πολλά χρήσιμα δείγματα κώδικα σε Python για πολλές τυπικές εργασίες.
## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Πίνακες Δεδομένων και Dataframes
Έχετε ήδη συναντήσει πίνακες δεδομένων όταν μιλήσαμε για σχεσιακές βάσεις δεδομένων. Όταν έχετε πολλά δεδομένα που περιέχονται σε διαφορετικούς συνδεδεμένους πίνακες, είναι λογικό να χρησιμοποιήσετε SQL για να εργαστείτε με αυτά. Ωστόσο, υπάρχουν πολλές περιπτώσεις όπου έχουμε έναν πίνακα δεδομένων και πρέπει να αποκτήσουμε κάποια **κατανόηση** ή **συμπεράσματα** για αυτά τα δεδομένα, όπως η κατανομή, η συσχέτιση μεταξύ τιμών κ.λπ. Στην επιστήμη δεδομένων, υπάρχουν πολλές περιπτώσεις όπου πρέπει να εκτελέσουμε κάποιες μετασχηματισμούς των αρχικών δεδομένων, ακολουθούμενες από οπτικοποίηση. Και τα δύο αυτά βήματα μπορούν να γίνουν εύκολα χρησιμοποιώντας Python.
Έχετε ήδη συναντήσει πίνακες δεδομένων όταν μιλήσαμε για σχεσιακές βάσεις δεδομένων. Όταν έχετε πολλά δεδομένα που περιέχονται σε διαφορετικούς συνδεδεμένους πίνακες, είναι σίγουρα λογικό να χρησιμοποιήσετε SQL για να εργαστείτε με αυτά. Ωστόσο, υπάρχουν πολλές περιπτώσεις όπου έχουμε έναν πίνακα δεδομένων και πρέπει να αποκτήσουμε κάποια **κατανόηση** ή **συμπεράσματα** σχετικά με αυτά τα δεδομένα, όπως η κατανομή, η συσχέτιση μεταξύ τιμών κ.λπ. Στην επιστήμη δεδομένων, υπάρχουν πολλές περιπτώσεις όπου πρέπει να εκτελέσουμε κάποιες μετασχηματισμούς των αρχικών δεδομένων, ακολουθούμενες από οπτικοποίηση. Και τα δύο αυτά βήματα μπορούν να γίνουν εύκολα χρησιμοποιώντας Python.
Υπάρχουν δύο πιο χρήσιμες βιβλιοθήκες στην Python που μπορούν να σας βοηθήσουν να χειριστείτε πίνακες δεδομένων:
* **[Pandas](https://pandas.pydata.org/)** σας επιτρέπει να χειρίζεστε τα λεγόμενα **Dataframes**, τα οποία είναι ανάλογα με τους σχεσιακούς πίνακες. Μπορείτε να έχετε ονομασμένες στήλες και να εκτελείτε διάφορες λειτουργίες σε γραμμές, στήλες και dataframes γενικά.
* **[Numpy](https://numpy.org/)** είναι μια βιβλιοθήκη για εργασία με **tensors**, δηλαδή πολυδιάστατους **πίνακες**. Ο πίνακας έχει τιμές του ίδιου υποκείμενου τύπου και είναι πιο απλός από το dataframe, αλλά προσφέρει περισσότερες μαθηματικές λειτουργίες και δημιουργεί λιγότερη επιβάρυνση.
* **[Numpy](https://numpy.org/)** είναι μια βιβλιοθήκη για εργασία με **tensors**, δηλαδή πολυδιάστατους **πίνακες**. Ο πίνακας έχει τιμές του ίδιου υποκείμενου τύπου και είναι απλούστερος από το dataframe, αλλά προσφέρει περισσότερες μαθηματικές λειτουργίες και δημιουργεί λιγότερη επιβάρυνση.
Υπάρχουν επίσης μερικές άλλες βιβλιοθήκες που πρέπει να γνωρίζετε:
* **[Matplotlib](https://matplotlib.org/)** είναι μια βιβλιοθήκη που χρησιμοποιείται για οπτικοποίηση δεδομένων και σχεδίαση γραφημάτων
* **[SciPy](https://www.scipy.org/)** είναι μια βιβλιοθήκη με πρόσθετες επιστημονικές λειτουργίες. Την έχουμε ήδη συναντήσει όταν μιλήσαμε για πιθανότητες και στατιστική
* **[SciPy](https://www.scipy.org/)** είναι μια βιβλιοθήκη με ορισμένες πρόσθετες επιστημονικές λειτουργίες. Έχουμε ήδη συναντήσει αυτήν τη βιβλιοθήκη όταν μιλήσαμε για πιθανότητες και στατιστική
Ακολουθεί ένα κομμάτι κώδικα που θα χρησιμοποιούσατε συνήθως για να εισάγετε αυτές τις βιβλιοθήκες στην αρχή του προγράμματος Python:
```python
@ -59,9 +59,9 @@ from scipy import ... # you need to specify exact sub-packages that you need
### Series
**Series** είναι μια ακολουθία τιμών, παρόμοια με μια λίστα ή έναν πίνακα numpy. Η κύρια διαφορά είναι ότι οι σειρές έχουν επίσης **δείκτη**, και όταν εκτελούμε λειτουργίες σε σειρές (π.χ., τις προσθέτουμε), ο δείκτης λαμβάνεται υπόψη. Ο δείκτης μπορεί να είναι τόσο απλός όσο ένας ακέραιος αριθμός γραμμής (είναι ο δείκτης που χρησιμοποιείται από προεπιλογή όταν δημιουργούμε μια σειρά από λίστα ή πίνακα), ή μπορεί να έχει μια πιο σύνθετη δομή, όπως ένα χρονικό διάστημα.
**Series** είναι μια ακολουθία τιμών, παρόμοια με μια λίστα ή έναν πίνακα numpy. Η κύρια διαφορά είναι ότι το series έχει επίσης έναν **δείκτη**, και όταν εκτελούμε λειτουργίες σε series (π.χ., προσθέτουμε), ο δείκτης λαμβάνεται υπόψη. Ο δείκτης μπορεί να είναι τόσο απλός όσο ένας ακέραιος αριθμός γραμμής (είναι ο δείκτης που χρησιμοποιείται από προεπιλογή όταν δημιουργούμε ένα series από λίστα ή πίνακα), ή μπορεί να έχει μια πιο σύνθετη δομή, όπως ένα χρονικό διάστημα.
> **Σημείωση**: Υπάρχει εισαγωγικός κώδικας Pandas στο συνοδευτικό notebook [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Εδώ παραθέτουμε μόνο μερικά παραδείγματα και σίγουρα μπορείτε να δείτε το πλήρες notebook.
> **Σημείωση**: Υπάρχει εισαγωγικός κώδικας Pandas στο συνοδευτικό notebook [`notebook.ipynb`](notebook.ipynb). Εδώ παραθέτουμε μόνο μερικά παραδείγματα και σίγουρα μπορείτε να ελέγξετε το πλήρες notebook.
Ας δούμε ένα παράδειγμα: θέλουμε να αναλύσουμε τις πωλήσεις του καταστήματος παγωτού μας. Ας δημιουργήσουμε μια σειρά αριθμών πωλήσεων (αριθμός αντικειμένων που πωλήθηκαν κάθε μέρα) για μια χρονική περίοδο:
@ -73,9 +73,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Γράφημα Χρονικής Σειράς](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Γράφημα Χρονικής Σειράς](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.el.png)
Τώρα υποθέστε ότι κάθε εβδομάδα οργανώνουμε ένα πάρτι για φίλους και παίρνουμε επιπλέον 10 πακέτα παγωτού για το πάρτι. Μπορούμε να δημιουργήσουμε μια άλλη σειρά, με δείκτη ανά εβδομάδα, για να το δείξουμε:
Τώρα υποθέστε ότι κάθε εβδομάδα οργανώνουμε ένα πάρτι για φίλους και παίρνουμε επιπλέον 10 πακέτα παγωτού για το πάρτι. Μπορούμε να δημιουργήσουμε μια άλλη σειρά, με δείκτη εβδομάδας, για να το δείξουμε:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -84,20 +84,20 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Γράφημα Χρονικής Σειράς](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Γράφημα Χρονικής Σειράς](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.el.png)
> **Σημείωση** ότι δεν χρησιμοποιούμε την απλή σύνταξη `total_items+additional_items`. Αν το κάναμε, θα λαμβάναμε πολλές τιμές `NaN` (*Not a Number*) στη σειρά που προκύπτει. Αυτό συμβαίνει επειδή υπάρχουν ελλείψεις τιμών για ορισμένα σημεία δείκτη στη σειρά `additional_items`, και η προσθήκη `NaN` σε οτιδήποτε έχει ως αποτέλεσμα `NaN`. Έτσι, πρέπει να καθορίσουμε την παράμετρο `fill_value` κατά την πρόσθεση.
> **Σημείωση** ότι δεν χρησιμοποιούμε απλή σύνταξη `total_items+additional_items`. Εάν το κάναμε, θα λαμβάναμε πολλές τιμές `NaN` (*Not a Number*) στη σειρά που προκύπτει. Αυτό συμβαίνει επειδή υπάρχουν ελλείπουσες τιμές για ορισμένα σημεία δείκτη στη σειρά `additional_items`, και η προσθήκη `NaN` σε οτιδήποτε έχει ως αποτέλεσμα `NaN`. Έτσι, πρέπει να καθορίσουμε την παράμετρο `fill_value` κατά την πρόσθεση.
Με τις χρονικές σειρές, μπορούμε επίσης να **αναδειγματοληπτίσουμε** τη σειρά με διαφορετικά χρονικά διαστήματα. Για παράδειγμα, υποθέστε ότι θέλουμε να υπολογίσουμε τον μέσο όγκο πωλήσεων μηνιαίως. Μπορούμε να χρησιμοποιήσουμε τον παρακάτω κώδικα:
Με τις χρονικές σειρές, μπορούμε επίσης να **επαναδειγματίσουμε** τη σειρά με διαφορετικά χρονικά διαστήματα. Για παράδειγμα, υποθέστε ότι θέλουμε να υπολογίσουμε τον μέσο όγκο πωλήσεων μηνιαίως. Μπορούμε να χρησιμοποιήσουμε τον ακόλουθο κώδικα:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Μηνιαία Μέσα Χρονικής Σειράς](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Μηνιαίοι Μέσοι Όροι Χρονικής Σειράς](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.el.png)
### DataFrame
Ένα DataFrame είναι ουσιαστικά μια συλλογή σειρών με τον ίδιο δείκτη. Μπορούμε να συνδυάσουμε πολλές σειρές μαζί σε ένα DataFrame:
Ένα DataFrame είναι ουσιαστικά μια συλλογή από σειρές με τον ίδιο δείκτη. Μπορούμε να συνδυάσουμε πολλές σειρές μαζί σε ένα DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -137,11 +137,11 @@ df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
**Επιλογή στηλών**. Μπορούμε να επιλέξουμε μεμονωμένες στήλες γράφοντας `df['A']` - αυτή η λειτουργία επιστρέφει μια σειρά. Μπορούμε επίσης να επιλέξουμε ένα υποσύνολο στηλών σε ένα άλλο DataFrame γράφοντας `df[['B','A']]` - αυτό επιστρέφει ένα άλλο DataFrame.
**Φιλτράρισμα** μόνο συγκεκριμένων γραμμών με βάση κριτήρια. Για παράδειγμα, για να αφήσουμε μόνο γραμμές με στήλη `A` μεγαλύτερη από 5, μπορούμε να γράψουμε `df[df['A']>5]`.
**Φιλτράρισμα** μόνο ορισμένων γραμμών βάσει κριτηρίων. Για παράδειγμα, για να αφήσουμε μόνο γραμμές με στήλη `A` μεγαλύτερη από 5, μπορούμε να γράψουμε `df[df['A']>5]`.
> **Σημείωση**: Ο τρόπος που λειτουργεί το φιλτράρισμα είναι ο εξής. Η έκφραση `df['A']<5` επιστρέφει μια σειρά boolean, η οποία υποδεικνύει αν η έκφραση είναι `True` ή `False` για κάθε στοιχείο της αρχικής σειράς `df['A']`. Όταν η σειρά boolean χρησιμοποιείται ως δείκτης, επιστρέφει ένα υποσύνολο γραμμών στο DataFrame. Έτσι, δεν είναι δυνατό να χρησιμοποιήσετε αυθαίρετες εκφράσεις boolean της Python, για παράδειγμα, γράφοντας `df[df['A']>5 and df['A']<7]` θα ήταν λάθος. Αντίθετα, πρέπει να χρησιμοποιήσετε την ειδική λειτουργία `&` στις σειρές boolean, γράφοντας `df[(df['A']>5) & (df['A']<7)]` (*οι παρενθέσεις είναι σημαντικές εδώ*).
> **Σημείωση**: Ο τρόπος που λειτουργεί το φιλτράρισμα είναι ο εξής. Η έκφραση `df['A']<5` επιστρέφει μια σειρά boolean, η οποία υποδεικνύει αν η έκφραση είναι `True` ή `False` για κάθε στοιχείο της αρχικής σειράς `df['A']`. Όταν η σειρά boolean χρησιμοποιείται ως δείκτης, επιστρέφει υποσύνολο γραμμών στο DataFrame. Έτσι, δεν είναι δυνατό να χρησιμοποιήσετε αυθαίρετες εκφράσεις boolean της Python, για παράδειγμα, γράφοντας `df[df['A']>5 and df['A']<7]` θα ήταν λάθος. Αντίθετα, θα πρέπει να χρησιμοποιήσετε την ειδική λειτουργία `&` στις σειρές boolean, γράφοντας `df[(df['A']>5) & (df['A']<7)]` (*οι παρενθέσεις είναι σημαντικές εδώ*).
**Δημιουργία νέων υπολογίσιμων στηλών**. Μπορούμε εύκολα να δημιουργήσουμε νέες υπολογίσιμες στήλες για το DataFrame μας χρησιμοποιώντας εκφράσεις όπως αυτή:
**Δημιουργία νέων υπολογίσιμων στηλών**. Μπορούμε εύκολα να δημιουργήσουμε νέες υπολογίσιμες στήλες για το DataFrame μας χρησιμοποιώντας διαισθητικές εκφράσεις όπως αυτή:
```python
df['DivA'] = df['A']-df['A'].mean()
```
@ -152,7 +152,7 @@ df['LenB'] = len(df['B']) # <- Wrong result
```
Το τελευταίο παράδειγμα, ενώ είναι συντακτικά σωστό, μας δίνει λάθος αποτέλεσμα, επειδή αναθέτει το μήκος της σειράς `B` σε όλες τις τιμές της στήλης και όχι το μήκος των μεμονωμένων στοιχείων όπως σκοπεύαμε.
Αν χρειαστεί να υπολογίσουμε σύνθετες εκφράσεις όπως αυτή, μπορούμε να χρησιμοποιήσουμε τη λειτουργία `apply`. Το τελευταίο παράδειγμα μπορεί να γραφτεί ως εξής:
Εάν χρειάζεται να υπολογίσουμε σύνθετες εκφράσεις όπως αυτή, μπορούμε να χρησιμοποιήσουμε τη λειτουργία `apply`. Το τελευταίο παράδειγμα μπορεί να γραφτεί ως εξής:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -173,85 +173,77 @@ df['LenB'] = df['B'].apply(len)
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Επιλογή γραμμών βάσει αριθμών** μπορεί να γίνει χρησιμοποιώντας τη δομή `iloc`. Για παράδειγμα, για να επιλέξετε τις πρώτες 5 γραμμές από το DataFrame:
**Επιλογή γραμμών βάσει αριθμών** μπορεί να γίνει χρησιμοποιώντας τη δομή `iloc`. Για παράδειγμα, για να επιλέξουμε τις πρώτες 5 γραμμές από το DataFrame:
```python
df.iloc[:5]
```
**Ομαδοποίηση** χρησιμοποιείται συχνά για να πάρουμε ένα αποτέλεσμα παρόμοιο με *πίνακες περιστροφής* στο Excel. Υποθέστε ότι θέλουμε να υπολογίσουμε τη μέση τιμή της στήλης `A` για κάθε δεδομένο αριθμό του `LenB`. Τότε μπορούμε να ομαδοποιήσουμε το DataFrame μας με βάση το `LenB` και να καλέσουμε τη λειτουργία `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Αν χρειαστεί να υπολογίσουμε τη μέση τιμή και τον αριθμό των στοιχείων στην ομάδα, τότε μπορούμε να χρησιμοποιήσουμε τη πιο σύνθετη λειτουργία `aggregate`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
Αυτό μας δίνει τον ακόλουθο πίνακα:
| LenB | Count
Έχουμε δει πόσο εύκολο είναι να δημιουργήσουμε Series και DataFrames από αντικείμενα της Python. Ωστόσο, τα δεδομένα συνήθως έρχονται με τη μορφή ενός αρχείου κειμένου ή ενός πίνακα Excel. Ευτυχώς, το Pandas μας προσφέρει έναν απλό τρόπο να φορτώσουμε δεδομένα από τον δίσκο. Για παράδειγμα, η ανάγνωση ενός αρχείου CSV είναι τόσο απλή όσο αυτό:
Εάν χρειάζεται να υπολογίσουμε τη μέση τιμή και τον αριθμό των στοιχείων στην ομάδα, τότε μπορούμε να χρησιμοποιήσουμε την πιο σύνθετη λειτουργία
Έχουμε δει πόσο εύκολο είναι να δημιουργήσουμε Series και DataFrames από αντικείμενα της Python. Ωστόσο, τα δεδομένα συνήθως έρχονται με τη μορφή ενός αρχείου κειμένου ή ενός πίνακα Excel. Ευτυχώς, η Pandas μας προσφέρει έναν απλό τρόπο να φορτώσουμε δεδομένα από τον δίσκο. Για παράδειγμα, η ανάγνωση ενός αρχείου CSV είναι τόσο απλή όσο το εξής:
```python
df = pd.read_csv('file.csv')
```
Θα δούμε περισσότερα παραδείγματα φόρτωσης δεδομένων, συμπεριλαμβανομένης της λήψης τους από εξωτερικούς ιστότοπους, στην ενότητα "Πρόκληση".
Θα δούμε περισσότερα παραδείγματα φόρτωσης δεδομένων, συμπεριλαμβανομένης της ανάκτησής τους από εξωτερικούς ιστότοπους, στην ενότητα "Πρόκληση".
### Εκτύπωση και Οπτικοποίηση
Ένας Data Scientist συχνά πρέπει να εξερευνήσει τα δεδομένα, επομένως είναι σημαντικό να μπορεί να τα οπτικοποιήσει. Όταν το DataFrame είναι μεγάλο, πολλές φορές θέλουμε απλώς να βεβαιωθούμε ότι κάνουμε τα πάντα σωστά εκτυπώνοντας τις πρώτες γραμμές. Αυτό μπορεί να γίνει καλώντας τη μέθοδο `df.head()`. Εάν το εκτελείτε από το Jupyter Notebook, θα εκτυπώσει το DataFrame σε μια ωραία μορφή πίνακα.
Ένας Data Scientist συχνά πρέπει να εξερευνήσει τα δεδομένα, επομένως είναι σημαντικό να μπορεί να τα οπτικοποιήσει. Όταν το DataFrame είναι μεγάλο, πολλές φορές θέλουμε απλώς να βεβαιωθούμε ότι κάνουμε τα πάντα σωστά εκτυπώνοντας τις πρώτες λίγες γραμμές. Αυτό μπορεί να γίνει καλώντας τη μέθοδο `df.head()`. Αν το εκτελείτε από το Jupyter Notebook, θα εμφανίσει το DataFrame σε μια ωραία ταμπελική μορφή.
Έχουμε επίσης δει τη χρήση της συνάρτησης `plot` για την οπτικοποίηση ορισμένων στηλών. Ενώ η `plot` είναι πολύ χρήσιμη για πολλές εργασίες και υποστηρίζει πολλούς διαφορετικούς τύπους γραφημάτων μέσω της παραμέτρου `kind=`, μπορείτε πάντα να χρησιμοποιήσετε τη βιβλιοθήκη `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](https://github.com/CSSEGISandData/COVID-19).
Το πρώτο πρόβλημα στο οποίο θα επικεντρωθούμε είναι η μοντελοποίηση της εξάπλωσης της επιδημίας του COVID-19. Για να το κάνουμε αυτό, θα χρησιμοποιήσουμε δεδομένα για τον αριθμό των μολυσμένων ατόμων σε διάφορες χώρες, που παρέχονται από το [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) του [Πανεπιστημίου Johns Hopkins](https://jhu.edu/). Το σύνολο δεδομένων είναι διαθέσιμο σε αυτό το [GitHub Repository](https://github.com/CSSEGISandData/COVID-19).
Επειδή θέλουμε να δείξουμε πώς να χειριστούμε δεδομένα, σας προσκαλούμε να ανοίξετε το [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) και να το διαβάσετε από την αρχή μέχρι το τέλος. Μπορείτε επίσης να εκτελέσετε τα κελιά και να κάνετε κάποιες προκλήσεις που έχουμε αφήσει για εσάς στο τέλος.
Επειδή θέλουμε να δείξουμε πώς να χειριζόμαστε δεδομένα, σας προσκαλούμε να ανοίξετε το [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) και να το διαβάσετε από την αρχή μέχρι το τέλος. Μπορείτε επίσης να εκτελέσετε τα κελιά και να κάνετε κάποιες προκλήσεις που έχουμε αφήσει για εσάς στο τέλος.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.el.png)
> Εάν δεν γνωρίζετε πώς να εκτελέσετε κώδικα στο 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) με περισσότερα από 7000 (τη στιγμή της συγγραφής) άρθρα για τον COVID, διαθέσιμα με μεταδεδομένα και περιλήψεις (και για περίπου τα μισά από αυτά παρέχεται και το πλήρες κείμενο).
Ένα πλήρες παράδειγμα ανάλυσης αυτού του συνόλου δεδομένων χρησιμοποιώντας την υπηρεσία [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) περιγράφεται σε αυτό το [blog post](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**: Δεν παρέχουμε αντίγραφο του συνόλου δεδομένων ως μέρος αυτού του αποθετηρίου. Ίσως χρειαστεί πρώτα να κατεβάσετε το αρχείο [`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), αλλά θα περιλαμβάνει όλα τα πλήρη κείμενα εκτός από το αρχείο μεταδεδομένων.
Ανοίξτε το [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) και διαβάστε το από την αρχή μέχρι το τέλος. Μπορείτε επίσης να εκτελέσετε τα κελιά και να κάνετε κάποιες προκλήσεις που έχουμε αφήσει για εσάς στο τέλος.
Ανοίξτε το [`notebook-papers.ipynb`](notebook-papers.ipynb) και διαβάστε το από την αρχή μέχρι το τέλος. Μπορείτε επίσης να εκτελέσετε τα κελιά και να κάνετε κάποιες προκλήσεις που έχουμε αφήσει για εσάς στο τέλος.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.el.png)
## Επεξεργασία Δεδομένων Εικόνας
Πρόσφατα, έχουν αναπτυχθεί πολύ ισχυρά μοντέλα AI που μας επιτρέπουν να κατανοούμε εικόνες. Υπάρχουν πολλές εργασίες που μπορούν να λυθούν χρησιμοποιώντας προεκπαιδευμένα νευρωνικά δίκτυα ή υπηρεσίες cloud. Μερικά παραδείγματα περιλαμβάνουν:
* **Κατηγοριοποίηση Εικόνων**, που μπορεί να σας βοηθήσει να ταξινομήσετε την εικόνα σε μία από τις προκαθορισμένες κατηγορίες. Μπορείτε εύκολα να εκπαιδεύσετε τους δικούς σας ταξινομητές εικόνων χρησιμοποιώντας υπηρεσίες όπως το [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?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).
Όλες αυτές οι υπηρεσίες cloud μπορούν να κληθούν χρησιμοποιώντας [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), και έτσι μπορούν εύκολα να ενσωματωθούν στη ροή εργασίας εξερεύνησης δεδομένων σας.
Εδώ είναι μερικά παραδείγματα εξερεύνησης δεδομένων από πηγές δεδομένων εικόνας:
* Στην ανάρτηση ιστολογίου [Πώς να Μάθετε Data Science Χωρίς Κώδικα](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) εξερευνούμε φωτογραφίες από το Instagram, προσπαθώντας να κατανοήσουμε τι κάνει τους ανθρώπους να δίνουν περισσότερα likes σε μια φωτογραφία. Πρώτα εξάγουμε όσο το δυνατόν περισσότερες πληροφορίες από τις εικόνες χρησιμοποιώντας το [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) για να δημιουργήσουμε ένα ερμηνεύσιμο μοντέλο.
* Στο [Εργαστήριο Μελέτης Προσώπων](https://github.com/CloudAdvocacy/FaceStudies) χρησιμοποιούμε το [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) για να εξάγουμε συναισθήματα ανθρώπων σε φωτογραφίες από εκδηλώσεις, προκειμένου να προσπαθήσουμε να κατανοήσουμε τι κάνει τους ανθρώπους χαρούμενους.
* Στο blog post [Πώς να Μάθετε Data Science Χωρίς Κωδικοποίηση](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) εξερευνούμε φωτογραφίες από το Instagram, προσπαθώντας να κατανοήσουμε τι κάνει τους ανθρώπους να δίνουν περισσότερα likes σε μια φωτογραφία. Πρώτα εξάγουμε όσο το δυνατόν περισσότερες πληροφορίες από τις εικόνες χρησιμοποιώντας το [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) για να δημιουργήσουμε ένα ερμηνεύσιμο μοντέλο.
* Στο [Εργαστήριο Μελετών Προσώπων](https://github.com/CloudAdvocacy/FaceStudies) χρησιμοποιούμε το [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) για να εξάγουμε συναισθήματα από ανθρώπους σε φωτογραφίες από εκδηλώσεις, προσπαθώντας να κατανοήσουμε τι κάνει τους ανθρώπους χαρούμενους.
## Συμπέρασμα
Είτε έχετε ήδη δομημένα είτε μη δομημένα δεδομένα, χρησιμοποιώντας την Python μπορείτε να εκτελέσετε όλα τα βήματα που σχετίζονται με την επεξεργασία και την κατανόηση δεδομένων. Είναι πιθανώς ο πιο ευέλικτος τρόπος επεξεργασίας δεδομένων, και αυτός είναι ο λόγος που η πλειοψηφία των data scientists χρησιμοποιεί την Python ως το κύριο εργαλείο τους. Η εκμάθηση της Python σε βάθος είναι πιθανώς μια καλή ιδέα αν είστε σοβαροί για το ταξίδι σας στην επιστήμη δεδομένων!
Είτε έχετε ήδη δομημένα είτε μη δομημένα δεδομένα, χρησιμοποιώντας την Python μπορείτε να εκτελέσετε όλα τα βήματα που σχετίζονται με την επεξεργασία και κατανόηση δεδομένων. Είναι πιθανώς ο πιο ευέλικτος τρόπος επεξεργασίας δεδομένων, και αυτός είναι ο λόγος που η πλειοψηφία των data scientists χρησιμοποιεί την Python ως το κύριο εργαλείο τους. Η εις βάθος εκμάθηση της Python είναι πιθανώς μια καλή ιδέα αν είστε σοβαροί για το ταξίδι σας στη data science!
## [Κουίζ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -261,8 +253,8 @@ df = pd.read_csv('file.csv')
* [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) tutorial
* [Τεκμηρίωση για την Οπτικοποίηση στο Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* Επίσημο [10 λεπτά για την Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Τεκμηρίωση για την Οπτικοποίηση στην Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Μάθηση Python**
* [Μάθετε Python με Διασκεδαστικό Τρόπο με Turtle Graphics και Fractals](https://github.com/shwars/pycourse)
@ -272,11 +264,11 @@ df = pd.read_csv('file.csv')
[Εκτελέστε πιο λεπτομερή μελέτη δεδομένων για τις παραπάνω προκλήσεις](assignment.md)
## Credits
## Ευχαριστίες
Αυτό το μάθημα έχει δημιουργηθεί με ♥️ από τον [Dmitry Soshnikov](http://soshnikov.com)
Το μάθημα αυτό έχει γραφτεί με ♥️ από τον [Dmitry Soshnikov](http://soshnikov.com)
---
**Αποποίηση ευθύνης**:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
**Αποποίηση Ευθύνης**:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T10:05:49+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:19:06+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "en"
}
@ -19,18 +19,18 @@ Databases provide efficient ways to store and query data using query languages,
Data processing can be done in any programming language, but some languages are better suited for working with data. Data scientists typically use one of the following:
* **[Python](https://www.python.org/)**: A general-purpose programming language known for its simplicity, making it ideal for beginners. Python has numerous libraries that can help solve practical problems, such as extracting data from ZIP archives or converting images to grayscale. Beyond data science, Python is widely used for web development.
* **[R](https://www.r-project.org/)**: A specialized tool designed for statistical data processing. It has a vast library repository (CRAN), making it a strong choice for data analysis. However, R is not a general-purpose language and is rarely used outside the data science domain.
* **[Julia](https://julialang.org/)**: A language specifically developed for data science, offering better performance than Python. It is particularly useful for scientific experiments.
* **[Python](https://www.python.org/)**: A general-purpose programming language often recommended for beginners due to its simplicity. Python has many libraries that can help solve practical problems, such as extracting data from ZIP archives or converting images to grayscale. Beyond data science, Python is widely used for web development.
* **[R](https://www.r-project.org/)**: A traditional tool designed for statistical data processing. It has a large library repository (CRAN), making it a strong choice for data analysis. However, R is not a general-purpose language and is rarely used outside of data science.
* **[Julia](https://julialang.org/)**: A language specifically developed for data science, offering better performance than Python, making it ideal for scientific experiments.
In this lesson, we will focus on Python for basic data processing, assuming you have a foundational understanding of the language. For a deeper dive into Python, consider these resources:
In this lesson, we will focus on Python for simple data processing, assuming basic familiarity with the language. For a deeper dive into Python, consider these resources:
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - A quick GitHub-based introduction to Python programming.
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - A quick intro course on GitHub.
* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - A learning path on [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum).
Data can exist in various formats. In this lesson, we will focus on three types: **tabular data**, **text**, and **images**.
Data can take many forms. In this lesson, we will focus on three types: **tabular data**, **text**, and **images**.
Rather than covering all related libraries, we will explore a few examples of data processing to give you a sense of what's possible. This approach will help you understand where to find solutions when needed.
Rather than covering all related libraries, we will focus on a few examples of data processing. This approach will give you a sense of what's possible and help you understand where to find solutions when needed.
> **Best advice**: If you're unsure how to perform a specific data operation, search online. [Stackoverflow](https://stackoverflow.com/) often has useful Python code samples for common tasks.
@ -38,15 +38,13 @@ Rather than covering all related libraries, we will explore a few examples of da
## Tabular Data and Dataframes
Youve already encountered tabular data when learning about relational databases. When dealing with large datasets stored in multiple linked tables, SQL is the best tool for the job. However, there are situations where you have a single table of data and need to derive **insights** or **understanding**—such as analyzing distributions or correlations. In data science, transforming and visualizing data are common tasks, and Python makes these steps straightforward.
Youve already encountered tabular data when learning about relational databases. When dealing with large datasets spread across multiple linked tables, SQL is the best tool. However, when working with a single table and trying to gain **insights** or **understanding**—such as analyzing distributions or correlations—Python is a great choice. Data science often involves transforming data and visualizing it, both of which are easily done in Python.
Two key Python libraries for working with tabular data are:
* **[Pandas](https://pandas.pydata.org/)**: Enables manipulation of **DataFrames**, which are similar to relational tables. You can work with named columns and perform operations on rows, columns, or entire DataFrames.
* **[Numpy](https://numpy.org/)**: A library for handling **tensors**, or multi-dimensional **arrays**. Arrays contain values of the same type and are simpler than DataFrames, offering more mathematical operations with less overhead.
* **[Pandas](https://pandas.pydata.org/)**: Enables manipulation of **DataFrames**, which are similar to relational tables. You can name columns and perform operations on rows, columns, or entire DataFrames.
* **[Numpy](https://numpy.org/)**: A library for working with **tensors**, or multi-dimensional **arrays**. Arrays contain values of the same type and are simpler than DataFrames, offering more mathematical operations with less overhead.
Other useful libraries include:
* **[Matplotlib](https://matplotlib.org/)**: Used for data visualization and graph plotting.
* **[SciPy](https://www.scipy.org/)**: Provides additional scientific functions. You may recall this library from discussions on probability and statistics.
@ -58,15 +56,15 @@ import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
Pandas revolves around a few core concepts.
Pandas revolves around a few key concepts.
### Series
A **Series** is a sequence of values, similar to a list or numpy array. The key difference is that a Series has an **index**, which is considered during operations (e.g., addition). The index can be as simple as an integer row number (default when creating a Series from a list or array) or more complex, like a date range.
A **Series** is a sequence of values, similar to a list or numpy array. The key difference is that a Series has an **index**, which is considered during operations like addition. The index can be as simple as an integer row number (default when creating a Series from a list or array) or more complex, like a date range.
> **Note**: Introductory Pandas code is available in the accompanying notebook [`notebook.ipynb`](notebook.ipynb). While we outline some examples here, feel free to explore the full notebook.
> **Note**: Introductory Pandas code is available in the accompanying notebook [`notebook.ipynb`](notebook.ipynb). Well outline some examples here, but feel free to explore the full notebook.
Example: Lets analyze sales at an ice cream shop. Well generate a Series of daily sales numbers over a period of time:
For example, lets analyze sales at an ice cream shop. Well generate a Series of daily sales numbers over a period of time:
```python
start_date = "Jan 1, 2020"
@ -78,20 +76,20 @@ items_sold.plot()
```
![Time Series Plot](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.en.png)
Suppose we host weekly parties and take an additional 10 packs of ice cream for each event. We can create another Series, indexed by week, to represent this:
Now, suppose we host weekly parties where we consume an additional 10 packs of ice cream. We can create another Series indexed by week to represent this:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Adding the two Series gives us the total number:
Adding these two Series gives the total number:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Time Series Plot](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.en.png)
> **Note**: We dont use the simple syntax `total_items + additional_items`. Doing so would result in many `NaN` (*Not a Number*) values in the resulting Series because missing values in the `additional_items` index lead to `NaN` when added. To avoid this, we specify the `fill_value` parameter during addition.
> **Note**: We dont use the simple syntax `total_items + additional_items`. Doing so would result in many `NaN` (*Not a Number*) values in the resulting Series because missing values in the `additional_items` Series lead to `NaN` when added. Instead, we specify the `fill_value` parameter during addition.
With time series, we can also **resample** data at different intervals. For instance, to calculate average monthly sales:
With time series, we can also **resample** data at different intervals. For instance, to calculate monthly average sales:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
@ -100,7 +98,7 @@ ax = monthly.plot(kind='bar')
### DataFrame
A DataFrame is essentially a collection of Series with the same index. Multiple Series can be combined into a DataFrame:
A DataFrame is essentially a collection of Series with the same index. We can combine multiple Series into a DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -112,11 +110,11 @@ This creates a horizontal table like this:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Alternatively, Series can be used as columns, with column names specified via a dictionary:
We can also use Series as columns and specify column names using a dictionary:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
This produces the following table:
This results in the following table:
| | A | B |
| --- | --- | ------ |
@ -130,25 +128,25 @@ This produces the following table:
| 7 | 8 | very |
| 8 | 9 | much |
**Note**: This table layout can also be achieved by transposing the previous table using:
**Note**: We can also achieve this layout by transposing the previous table using:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Here, `.T` transposes the DataFrame (swapping rows and columns), and `rename` allows column renaming to match the previous example.
Here, `.T` transposes the DataFrame (swapping rows and columns), and `rename` allows us to rename columns to match the previous example.
Key operations on DataFrames include:
**Column selection**: Select individual columns with `df['A']` (returns a Series) or a subset of columns with `df[['B','A']]` (returns another DataFrame).
**Column selection**: Select individual columns with `df['A']` (returns a Series) or a subset of columns with `df[['B', 'A']]` (returns another DataFrame).
**Filtering rows**: Filter rows based on criteria, e.g., `df[df['A']>5]` selects rows where column `A` is greater than 5.
**Filtering rows**: Filter rows based on criteria, e.g., `df[df['A'] > 5]` keeps rows where column `A` is greater than 5.
> **Note**: Filtering works by creating a boolean Series (e.g., `df['A']<5`), which is then used as an index to return matching rows. Avoid using standard Python boolean expressions like `df[df['A']>5 and df['A']<7]`. Instead, use `&` for boolean Series: `df[(df['A']>5) & (df['A']<7)]` (*brackets are required*).
> **Note**: Filtering works by creating a boolean Series (`df['A'] < 5`) that indicates whether the condition is `True` or `False` for each element. Using this boolean Series as an index returns the filtered rows. Avoid using Python boolean expressions like `df[df['A'] > 5 and df['A'] < 7]`. Instead, use `&` for boolean Series: `df[(df['A'] > 5) & (df['A'] < 7)]` (*brackets are required*).
**Creating new columns**: Add new columns with expressions like:
```python
df['DivA'] = df['A']-df['A'].mean()
```
This calculates the divergence of `A` from its mean value. However, avoid operations incompatible with Series, such as:
This calculates the divergence of `A` from its mean value. The left-hand side assigns the computed Series to a new column. Avoid incompatible operations, such as:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
@ -176,16 +174,16 @@ After these operations, the resulting DataFrame looks like this:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Selecting rows by index**: Use `iloc` to select rows by position, e.g., the first 5 rows:
**Selecting rows by index**: Use `iloc` to select rows by position. For example, to select the first 5 rows:
```python
df.iloc[:5]
```
**Grouping**: Similar to Excel pivot tables, grouping allows calculations like the mean of column `A` for each unique `LenB` value:
**Grouping**: Grouping is useful for results similar to *pivot tables* in Excel. For example, to calculate the mean of column `A` for each unique value in `LenB`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
For more complex aggregations (e.g., mean and count), use the `aggregate` function:
For more complex aggregations, use the `aggregate` function:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -210,7 +208,7 @@ We will explore more examples of loading data, including retrieving it from exte
### Printing and Plotting
A Data Scientist frequently needs to explore data, so being able to visualize it is crucial. When working with large DataFrames, we often want to ensure everything is functioning correctly by printing the first few rows. This can be done using `df.head()`. If you run this in Jupyter Notebook, it will display the DataFrame in a neat tabular format.
A Data Scientist frequently needs to explore data, so being able to visualize it is crucial. When working with large DataFrames, we often want to ensure everything is functioning correctly by printing the first few rows. This can be achieved by calling `df.head()`. If you run this in Jupyter Notebook, it will display the DataFrame in a neat tabular format.
Weve also seen how to use the `plot` function to visualize specific columns. While `plot` is highly versatile and supports various graph types via the `kind=` parameter, you can always use the raw `matplotlib` library for more complex visualizations. We will delve deeper into data visualization in separate course lessons.
@ -228,7 +226,7 @@ To demonstrate how to work with data, we encourage you to open [`notebook-covids
## Working with Unstructured Data
While data often comes in tabular form, there are cases where we need to handle less structured data, such as text or images. In these situations, to apply the data processing techniques weve discussed, we need to **extract** structured data. Here are a few examples:
While data often comes in tabular form, there are cases where we need to work with less structured data, such as text or images. In these situations, to apply the data processing techniques weve discussed, we need to **extract** structured data. Here are a few examples:
* Extracting keywords from text and analyzing their frequency
* Using neural networks to identify objects in images
@ -251,14 +249,14 @@ Open [`notebook-papers.ipynb`](notebook-papers.ipynb) and go through it from sta
Recently, powerful AI models have been developed to analyze images. Many tasks can be accomplished using pre-trained neural networks or cloud services. Examples include:
* **Image Classification**, which categorizes images into predefined classes. You can train your own classifiers using services like [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum).
* **Object Detection**, which identifies various objects in an image. Services like [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) can detect common objects, and you can train [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) models to detect specific objects of interest.
* **Face Detection**, including age, gender, and emotion recognition. This can be achieved using [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Object Detection**, which identifies various objects in an image. Services like [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) can detect common objects, and you can train [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) models to detect specific objects of interest.
* **Face Detection**, including age, gender, and emotion recognition. This can be achieved using the [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
These cloud services can be accessed via [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), making it easy to integrate them into your data exploration workflow.
All these cloud services can be accessed via [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), making it easy to integrate them into your data exploration workflow.
Here are some examples of working with image data sources:
* In the blog post [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), we analyze Instagram photos to understand what makes people like a photo more. We extract information from images using [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) and use [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) to build an interpretable model.
* In [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies), we use [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) to analyze emotions in event photographs to understand what makes people happy.
* In the blog post [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), we analyze Instagram photos to understand what makes people like a photo more. We extract information from images using [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) and use [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) to build an interpretable model.
* In the [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies), we use the [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) to analyze emotions in event photographs to understand what makes people happy.
## Conclusion
@ -290,4 +288,4 @@ This lesson was created with ♥️ by [Dmitry Soshnikov](http://soshnikov.com)
---
**Disclaimer**:
This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T13:35:07+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:20:47+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "es"
}
@ -11,43 +11,43 @@ CO_OP_TRANSLATOR_METADATA:
| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Trabajando con Python - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
| Trabajando con Python - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
[![Video Introductorio](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Video Introductorio](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.es.png)](https://youtu.be/dZjWOGbsN4Y)
Aunque las bases de datos ofrecen formas muy eficientes de almacenar datos y consultarlos utilizando lenguajes de consulta, la forma más flexible de procesar datos es escribir tu propio programa para manipularlos. En muchos casos, realizar una consulta en una base de datos sería una forma más efectiva. Sin embargo, en algunos casos, cuando se necesita un procesamiento de datos más complejo, no se puede realizar fácilmente utilizando SQL.
Aunque las bases de datos ofrecen formas muy eficientes de almacenar datos y consultarlos mediante lenguajes de consulta, la forma más flexible de procesar datos es escribir tu propio programa para manipularlos. En muchos casos, realizar una consulta en una base de datos sería una forma más efectiva. Sin embargo, en algunos casos donde se necesita un procesamiento de datos más complejo, no se puede hacer fácilmente usando SQL.
El procesamiento de datos se puede programar en cualquier lenguaje de programación, pero hay ciertos lenguajes que son de nivel más alto en lo que respecta al trabajo con datos. Los científicos de datos suelen preferir uno de los siguientes lenguajes:
* **[Python](https://www.python.org/)**, un lenguaje de programación de propósito general, que a menudo se considera una de las mejores opciones para principiantes debido a su simplicidad. Python tiene muchas bibliotecas adicionales que pueden ayudarte a resolver muchos problemas prácticos, como extraer tus datos de un archivo ZIP o convertir una imagen a escala de grises. Además de la ciencia de datos, Python también se utiliza frecuentemente para el desarrollo web.
* **[Python](https://www.python.org/)**, un lenguaje de programación de propósito general, que a menudo se considera una de las mejores opciones para principiantes debido a su simplicidad. Python tiene muchas bibliotecas adicionales que pueden ayudarte a resolver muchos problemas prácticos, como extraer datos de un archivo ZIP o convertir una imagen a escala de grises. Además de la ciencia de datos, Python también se utiliza a menudo para el desarrollo web.
* **[R](https://www.r-project.org/)** es una herramienta tradicional desarrollada con el procesamiento de datos estadísticos en mente. También contiene un gran repositorio de bibliotecas (CRAN), lo que lo convierte en una buena opción para el procesamiento de datos. Sin embargo, R no es un lenguaje de propósito general y rara vez se utiliza fuera del ámbito de la ciencia de datos.
* **[Julia](https://julialang.org/)** es otro lenguaje desarrollado específicamente para la ciencia de datos. Está diseñado para ofrecer un mejor rendimiento que Python, lo que lo convierte en una excelente herramienta para la experimentación científica.
* **[Julia](https://julialang.org/)** es otro lenguaje desarrollado específicamente para la ciencia de datos. Está diseñado para ofrecer un mejor rendimiento que Python, lo que lo convierte en una gran herramienta para la experimentación científica.
En esta lección, nos centraremos en usar Python para un procesamiento de datos sencillo. Asumiremos que tienes un conocimiento básico del lenguaje. Si deseas un recorrido más profundo por Python, puedes consultar uno de los siguientes recursos:
En esta lección, nos centraremos en el uso de Python para el procesamiento simple de datos. Supondremos un conocimiento básico del lenguaje. Si deseas un recorrido más profundo por Python, puedes consultar uno de los siguientes recursos:
* [Aprende Python de una manera divertida con gráficos de tortuga y fractales](https://github.com/shwars/pycourse) - Curso introductorio rápido basado en GitHub sobre programación en Python
* [Da tus primeros pasos con Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Ruta de aprendizaje en [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Aprende Python de una manera divertida con Turtle Graphics y Fractales](https://github.com/shwars/pycourse) - Curso introductorio rápido basado en GitHub sobre programación en Python
* [Da tus primeros pasos con Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Ruta de aprendizaje en [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Los datos pueden venir en muchas formas. En esta lección, consideraremos tres formas de datos: **datos tabulares**, **texto** e **imágenes**.
Nos centraremos en algunos ejemplos de procesamiento de datos, en lugar de ofrecerte una visión completa de todas las bibliotecas relacionadas. Esto te permitirá obtener la idea principal de lo que es posible y te dejará con el entendimiento de dónde encontrar soluciones a tus problemas cuando las necesites.
Nos centraremos en algunos ejemplos de procesamiento de datos, en lugar de darte una visión completa de todas las bibliotecas relacionadas. Esto te permitirá comprender la idea principal de lo que es posible y te dejará con el conocimiento de dónde encontrar soluciones a tus problemas cuando las necesites.
> **El consejo más útil**. Cuando necesites realizar una operación específica en datos que no sabes cómo hacer, intenta buscarla en internet. [Stackoverflow](https://stackoverflow.com/) suele contener muchos ejemplos útiles de código en Python para muchas tareas típicas.
> **El consejo más útil**. Cuando necesites realizar una operación específica en datos y no sepas cómo hacerlo, intenta buscarlo en internet. [Stackoverflow](https://stackoverflow.com/) suele contener muchos ejemplos de código útiles en Python para muchas tareas típicas.
## [Cuestionario previo a la lección](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Datos Tabulares y Dataframes
Ya te has encontrado con datos tabulares cuando hablamos de bases de datos relacionales. Cuando tienes muchos datos y están contenidos en muchas tablas vinculadas diferentes, definitivamente tiene sentido usar SQL para trabajar con ellos. Sin embargo, hay muchos casos en los que tenemos una tabla de datos y necesitamos obtener algún **entendimiento** o **perspectiva** sobre estos datos, como la distribución, la correlación entre valores, etc. En la ciencia de datos, hay muchos casos en los que necesitamos realizar algunas transformaciones de los datos originales, seguidas de visualización. Ambos pasos se pueden realizar fácilmente utilizando Python.
Ya te has encontrado con datos tabulares cuando hablamos de bases de datos relacionales. Cuando tienes muchos datos y están contenidos en muchas tablas vinculadas diferentes, definitivamente tiene sentido usar SQL para trabajar con ellos. Sin embargo, hay muchos casos en los que tenemos una tabla de datos y necesitamos obtener algún **entendimiento** o **perspectivas** sobre estos datos, como la distribución, la correlación entre valores, etc. En la ciencia de datos, hay muchos casos en los que necesitamos realizar algunas transformaciones de los datos originales, seguidas de visualización. Ambos pasos se pueden realizar fácilmente usando Python.
Hay dos bibliotecas más útiles en Python que pueden ayudarte a trabajar con datos tabulares:
* **[Pandas](https://pandas.pydata.org/)** te permite manipular los llamados **Dataframes**, que son análogos a las tablas relacionales. Puedes tener columnas con nombres y realizar diferentes operaciones en filas, columnas y dataframes en general.
* **[Numpy](https://numpy.org/)** es una biblioteca para trabajar con **tensores**, es decir, **arreglos** multidimensionales. Un arreglo tiene valores del mismo tipo subyacente y es más simple que un dataframe, pero ofrece más operaciones matemáticas y genera menos sobrecarga.
* **[Numpy](https://numpy.org/)** es una biblioteca para trabajar con **tensores**, es decir, **arreglos** multidimensionales. Un arreglo tiene valores del mismo tipo subyacente, y es más simple que un dataframe, pero ofrece más operaciones matemáticas y genera menos sobrecarga.
También hay un par de otras bibliotecas que deberías conocer:
* **[Matplotlib](https://matplotlib.org/)** es una biblioteca utilizada para la visualización de datos y la creación de gráficos
* **[SciPy](https://www.scipy.org/)** es una biblioteca con algunas funciones científicas adicionales. Ya nos hemos encontrado con esta biblioteca al hablar de probabilidad y estadística
* **[Matplotlib](https://matplotlib.org/)** es una biblioteca utilizada para la visualización de datos y la creación de gráficos.
* **[SciPy](https://www.scipy.org/)** es una biblioteca con algunas funciones científicas adicionales. Ya nos hemos encontrado con esta biblioteca al hablar de probabilidad y estadística.
Aquí hay un fragmento de código que normalmente usarías para importar esas bibliotecas al inicio de tu programa en Python:
Aquí tienes un fragmento de código que normalmente usarías para importar estas bibliotecas al inicio de tu programa en Python:
```python
import numpy as np
import pandas as pd
@ -55,13 +55,13 @@ import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
Pandas se centra en unos pocos conceptos básicos.
Pandas se centra en algunos conceptos básicos.
### Series
**Series** es una secuencia de valores, similar a una lista o un arreglo de numpy. La principal diferencia es que las series también tienen un **índice**, y cuando operamos con series (por ejemplo, las sumamos), el índice se toma en cuenta. El índice puede ser tan simple como el número de fila entero (es el índice utilizado por defecto al crear una serie a partir de una lista o arreglo), o puede tener una estructura compleja, como un intervalo de fechas.
**Series** es una secuencia de valores, similar a una lista o un arreglo de numpy. La principal diferencia es que las series también tienen un **índice**, y cuando operamos con series (por ejemplo, las sumamos), el índice se tiene en cuenta. El índice puede ser tan simple como un número entero que representa el número de fila (es el índice utilizado por defecto al crear una serie a partir de una lista o arreglo), o puede tener una estructura compleja, como un intervalo de fechas.
> **Nota**: Hay algo de código introductorio de Pandas en el cuaderno adjunto [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Solo describimos algunos ejemplos aquí, y definitivamente puedes consultar el cuaderno completo.
> **Nota**: Hay algo de código introductorio de Pandas en el cuaderno adjunto [`notebook.ipynb`](notebook.ipynb). Aquí solo esbozamos algunos ejemplos, y definitivamente te invitamos a revisar el cuaderno completo.
Considera un ejemplo: queremos analizar las ventas de nuestro puesto de helados. Generemos una serie de números de ventas (número de artículos vendidos cada día) durante un período de tiempo:
```python
@ -72,7 +72,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Gráfico de Series Temporales](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Gráfico de Series Temporales](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.es.png)
Ahora supongamos que cada semana organizamos una fiesta para amigos y tomamos 10 paquetes adicionales de helado para la fiesta. Podemos crear otra serie, indexada por semana, para demostrar eso:
```python
@ -83,20 +83,20 @@ Cuando sumamos dos series, obtenemos el número total:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Gráfico de Series Temporales](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Gráfico de Series Temporales](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.es.png)
> **Nota** que no estamos utilizando la sintaxis simple `total_items+additional_items`. Si lo hiciéramos, recibiríamos muchos valores `NaN` (*Not a Number*) en la serie resultante. Esto se debe a que hay valores faltantes para algunos puntos del índice en la serie `additional_items`, y sumar `NaN` a cualquier cosa resulta en `NaN`. Por lo tanto, necesitamos especificar el parámetro `fill_value` durante la suma.
> **Nota** que no estamos usando la sintaxis simple `total_items+additional_items`. Si lo hiciéramos, recibiríamos muchos valores `NaN` (*Not a Number*) en la serie resultante. Esto se debe a que hay valores faltantes para algunos puntos del índice en la serie `additional_items`, y sumar `NaN` a cualquier cosa da como resultado `NaN`. Por lo tanto, necesitamos especificar el parámetro `fill_value` durante la suma.
Con las series temporales, también podemos **re-muestrear** la serie con diferentes intervalos de tiempo. Por ejemplo, supongamos que queremos calcular el volumen promedio de ventas mensuales. Podemos usar el siguiente código:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Promedios Mensuales de Series Temporales](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Promedios Mensuales de Series Temporales](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.es.png)
### DataFrame
Un DataFrame es esencialmente una colección de series con el mismo índice. Podemos combinar varias series juntas en un DataFrame:
Un DataFrame es esencialmente una colección de series con el mismo índice. Podemos combinar varias series en un DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -108,7 +108,7 @@ Esto creará una tabla horizontal como esta:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
También podemos usar Series como columnas y especificar nombres de columnas utilizando un diccionario:
También podemos usar Series como columnas y especificar nombres de columnas usando un diccionario:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -136,20 +136,20 @@ Aquí hay algunas de las operaciones más importantes que podemos realizar en Da
**Selección de columnas**. Podemos seleccionar columnas individuales escribiendo `df['A']` - esta operación devuelve una Serie. También podemos seleccionar un subconjunto de columnas en otro DataFrame escribiendo `df[['B','A']]` - esto devuelve otro DataFrame.
**Filtrar** solo ciertas filas según criterios. Por ejemplo, para dejar solo las filas con la columna `A` mayor que 5, podemos escribir `df[df['A']>5]`.
**Filtrar** solo ciertas filas según un criterio. Por ejemplo, para dejar solo las filas con la columna `A` mayor que 5, podemos escribir `df[df['A']>5]`.
> **Nota**: La forma en que funciona el filtrado es la siguiente. La expresión `df['A']<5` devuelve una serie booleana, que indica si la expresión es `True` o `False` para cada elemento de la serie original `df['A']`. Cuando se utiliza una serie booleana como índice, devuelve un subconjunto de filas en el DataFrame. Por lo tanto, no es posible usar expresiones booleanas arbitrarias de Python, por ejemplo, escribir `df[df['A']>5 and df['A']<7]` sería incorrecto. En su lugar, debes usar la operación especial `&` en series booleanas, escribiendo `df[(df['A']>5) & (df['A']<7)]` (*los paréntesis son importantes aquí*).
> **Nota**: La forma en que funciona el filtrado es la siguiente. La expresión `df['A']<5` devuelve una serie booleana, que indica si la expresión es `True` o `False` para cada elemento de la serie original `df['A']`. Cuando se usa una serie booleana como índice, devuelve un subconjunto de filas en el DataFrame. Por lo tanto, no es posible usar expresiones booleanas arbitrarias de Python, por ejemplo, escribir `df[df['A']>5 and df['A']<7]` sería incorrecto. En su lugar, debes usar la operación especial `&` en series booleanas, escribiendo `df[(df['A']>5) & (df['A']<7)]` (*los paréntesis son importantes aquí*).
**Crear nuevas columnas calculables**. Podemos crear fácilmente nuevas columnas calculables para nuestro DataFrame utilizando expresiones intuitivas como esta:
**Crear nuevas columnas calculables**. Podemos crear fácilmente nuevas columnas calculables para nuestro DataFrame usando expresiones intuitivas como esta:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Este ejemplo calcula la divergencia de A respecto a su valor promedio. Lo que realmente sucede aquí es que estamos calculando una serie y luego asignando esta serie al lado izquierdo, creando otra columna. Por lo tanto, no podemos usar operaciones que no sean compatibles con series, por ejemplo, el siguiente código es incorrecto:
Este ejemplo calcula la divergencia de A respecto a su valor medio. Lo que realmente sucede aquí es que estamos calculando una serie y luego asignando esta serie al lado izquierdo, creando otra columna. Por lo tanto, no podemos usar operaciones que no sean compatibles con series, por ejemplo, el siguiente código es incorrecto:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
El último ejemplo, aunque sintácticamente correcto, nos da un resultado incorrecto porque asigna la longitud de la serie `B` a todos los valores en la columna, y no la longitud de los elementos individuales como pretendíamos.
El último ejemplo, aunque sintácticamente correcto, nos da un resultado incorrecto, porque asigna la longitud de la serie `B` a todos los valores en la columna, y no la longitud de los elementos individuales como pretendíamos.
Si necesitamos calcular expresiones complejas como esta, podemos usar la función `apply`. El último ejemplo se puede escribir de la siguiente manera:
```python
@ -172,16 +172,16 @@ Después de las operaciones anteriores, terminaremos con el siguiente DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Seleccionar filas según números** se puede hacer utilizando la construcción `iloc`. Por ejemplo, para seleccionar las primeras 5 filas del DataFrame:
**Seleccionar filas según números** se puede hacer usando la construcción `iloc`. Por ejemplo, para seleccionar las primeras 5 filas del DataFrame:
```python
df.iloc[:5]
```
**Agrupación** se utiliza a menudo para obtener un resultado similar a las *tablas dinámicas* en Excel. Supongamos que queremos calcular el valor promedio de la columna `A` para cada número dado de `LenB`. Entonces podemos agrupar nuestro DataFrame por `LenB` y llamar a `mean`:
**Agrupación** se utiliza a menudo para obtener un resultado similar a las *tablas dinámicas* en Excel. Supongamos que queremos calcular el valor medio de la columna `A` para cada número dado de `LenB`. Entonces podemos agrupar nuestro DataFrame por `LenB` y llamar a `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Si necesitamos calcular el promedio y el número de elementos en el grupo, entonces podemos usar la función más compleja `aggregate`:
Si necesitamos calcular la media y el número de elementos en el grupo, entonces podemos usar la función más compleja `aggregate`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -198,92 +198,92 @@ Esto nos da la siguiente tabla:
| 6 | 2 | 6.000000 |
### Obtener Datos
Hemos visto lo fácil que es construir Series y DataFrames a partir de objetos de Python. Sin embargo, los datos generalmente vienen en forma de un archivo de texto o una tabla de Excel. Afortunadamente, Pandas nos ofrece una forma sencilla de cargar datos desde el disco. Por ejemplo, leer un archivo CSV es tan simple como esto:
Hemos visto lo fácil que es construir Series y DataFrames a partir de objetos de Python. Sin embargo, los datos suelen venir en forma de un archivo de texto o una tabla de Excel. Afortunadamente, Pandas nos ofrece una manera sencilla de cargar datos desde el disco. Por ejemplo, leer un archivo CSV es tan simple como esto:
```python
df = pd.read_csv('file.csv')
```
Veremos más ejemplos de cómo cargar datos, incluyendo cómo obtenerlos desde sitios web externos, en la sección "Desafío".
Veremos más ejemplos de cómo cargar datos, incluyendo cómo obtenerlos de sitios web externos, en la sección "Desafío".
### Imprimir y Graficar
### Imprimir y Graficar
Un Científico de Datos a menudo tiene que explorar los datos, por lo que es importante poder visualizarlos. Cuando un DataFrame es grande, muchas veces queremos asegurarnos de que estamos haciendo todo correctamente imprimiendo las primeras filas. Esto se puede hacer llamando a `df.head()`. Si lo ejecutas desde Jupyter Notebook, imprimirá el DataFrame en una forma tabular agradable.
Un Científico de Datos a menudo tiene que explorar los datos, por lo que es importante poder visualizarlos. Cuando el DataFrame es grande, muchas veces queremos asegurarnos de que estamos haciendo todo correctamente imprimiendo las primeras filas. Esto se puede hacer llamando a `df.head()`. Si lo ejecutas desde Jupyter Notebook, imprimirá el DataFrame en una forma tabular agradable.
También hemos visto el uso de la función `plot` para visualizar algunas columnas. Aunque `plot` es muy útil para muchas tareas y admite diferentes tipos de gráficos mediante el parámetro `kind=`, siempre puedes usar la biblioteca `matplotlib` directamente para graficar algo más complejo. Cubriremos la visualización de datos en detalle en lecciones separadas del curso.
También hemos visto el uso de la función `plot` para visualizar algunas columnas. Aunque `plot` es muy útil para muchas tareas y admite muchos tipos de gráficos diferentes mediante el parámetro `kind=`, siempre puedes usar la biblioteca `matplotlib` para graficar algo más complejo. Cubriremos la visualización de datos en detalle en lecciones separadas del curso.
Este resumen cubre los conceptos más importantes de Pandas; sin embargo, la biblioteca es muy rica y no hay límite para lo que puedes hacer con ella. ¡Ahora apliquemos este conocimiento para resolver un problema específico!
Este resumen cubre los conceptos más importantes de Pandas, sin embargo, la biblioteca es muy rica y no hay límite para lo que puedes hacer con ella. ¡Ahora apliquemos este conocimiento para resolver un problema específico!
## 🚀 Desafío 1: Analizando la Propagación del COVID
## 🚀 Desafío 1: Analizando la Propagación del COVID
El primer problema en el que nos enfocaremos es el modelado de la propagación epidémica del COVID-19. Para ello, utilizaremos los datos sobre el número de personas infectadas en diferentes países, proporcionados por el [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) de la [Universidad Johns Hopkins](https://jhu.edu/). El conjunto de datos está disponible en [este repositorio de GitHub](https://github.com/CSSEGISandData/COVID-19).
El primer problema en el que nos enfocaremos es el modelado de la propagación epidémica del COVID-19. Para ello, utilizaremos los datos sobre el número de personas infectadas en diferentes países, proporcionados por el [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) de la [Universidad Johns Hopkins](https://jhu.edu/). El conjunto de datos está disponible en [este repositorio de GitHub](https://github.com/CSSEGISandData/COVID-19).
Como queremos demostrar cómo trabajar con datos, te invitamos a abrir [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) y leerlo de principio a fin. También puedes ejecutar las celdas y realizar algunos desafíos que hemos dejado para ti al final.
Como queremos demostrar cómo manejar datos, te invitamos a abrir [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) y leerlo de principio a fin. También puedes ejecutar las celdas y realizar algunos desafíos que hemos dejado para ti al final.
![Propagación del COVID](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![Propagación del COVID](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.es.png)
> Si no sabes cómo ejecutar código en Jupyter Notebook, consulta [este artículo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Si no sabes cómo ejecutar código en Jupyter Notebook, consulta [este artículo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Trabajando con Datos No Estructurados
## Trabajando con Datos No Estructurados
Aunque los datos a menudo vienen en forma tabular, en algunos casos necesitamos trabajar con datos menos estructurados, como texto o imágenes. En este caso, para aplicar las técnicas de procesamiento de datos que hemos visto, necesitamos de alguna manera **extraer** datos estructurados. Aquí hay algunos ejemplos:
Aunque los datos suelen venir en forma tabular, en algunos casos necesitamos trabajar con datos menos estructurados, como texto o imágenes. En este caso, para aplicar las técnicas de procesamiento de datos que hemos visto anteriormente, necesitamos de alguna manera **extraer** datos estructurados. Aquí hay algunos ejemplos:
* Extraer palabras clave de un texto y ver con qué frecuencia aparecen.
* Usar redes neuronales para extraer información sobre objetos en una imagen.
* Obtener información sobre las emociones de las personas en un video.
* Extraer palabras clave de un texto y ver con qué frecuencia aparecen.
* Usar redes neuronales para extraer información sobre objetos en una imagen.
* Obtener información sobre las emociones de las personas en un video.
## 🚀 Desafío 2: Analizando Artículos sobre COVID
## 🚀 Desafío 2: Analizando Artículos sobre COVID
En este desafío, continuaremos con el tema de la pandemia de COVID y nos enfocaremos en procesar artículos científicos sobre el tema. Existe el [Conjunto de Datos CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) con más de 7000 artículos (en el momento de escribir esto) sobre COVID, disponible con metadatos y resúmenes (y para aproximadamente la mitad de ellos también se proporciona el texto completo).
En este desafío, continuaremos con el tema de la pandemia de COVID y nos enfocaremos en procesar artículos científicos sobre el tema. Existe el [Conjunto de Datos CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) con más de 7000 (en el momento de escribir esto) artículos sobre COVID, disponible con metadatos y resúmenes (y para aproximadamente la mitad de ellos también se proporciona el texto completo).
Un ejemplo completo de análisis de este conjunto de datos utilizando el servicio cognitivo [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) se describe [en este blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Discutiremos una versión simplificada de este análisis.
Un ejemplo completo de análisis de este conjunto de datos utilizando el servicio cognitivo [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) se describe [en este blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Discutiremos una versión simplificada de este análisis.
> **NOTE**: No proporcionamos una copia del conjunto de datos como parte de este repositorio. Es posible que primero necesites descargar el archivo [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) desde [este conjunto de datos en Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Es posible que se requiera registrarse en Kaggle. También puedes descargar el conjunto de datos sin registrarte [desde aquí](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), pero incluirá todos los textos completos además del archivo de metadatos.
> **NOTE**: No proporcionamos una copia del conjunto de datos como parte de este repositorio. Es posible que primero necesites descargar el archivo [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) de [este conjunto de datos en Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Es posible que se requiera registrarse en Kaggle. También puedes descargar el conjunto de datos sin registrarte [desde aquí](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), pero incluirá todos los textos completos además del archivo de metadatos.
Abre [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) y léelo de principio a fin. También puedes ejecutar las celdas y realizar algunos desafíos que hemos dejado para ti al final.
Abre [`notebook-papers.ipynb`](notebook-papers.ipynb) y léelo de principio a fin. También puedes ejecutar las celdas y realizar algunos desafíos que hemos dejado para ti al final.
![Tratamiento Médico COVID](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Tratamiento Médico COVID](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.es.png)
## Procesamiento de Datos de Imágenes
## Procesando Datos de Imágenes
Recientemente, se han desarrollado modelos de IA muy potentes que nos permiten comprender imágenes. Hay muchas tareas que se pueden resolver utilizando redes neuronales preentrenadas o servicios en la nube. Algunos ejemplos incluyen:
Recientemente, se han desarrollado modelos de IA muy potentes que nos permiten comprender imágenes. Hay muchas tareas que se pueden resolver utilizando redes neuronales preentrenadas o servicios en la nube. Algunos ejemplos incluyen:
* **Clasificación de Imágenes**, que puede ayudarte a categorizar una imagen en una de las clases predefinidas. Puedes entrenar fácilmente tus propios clasificadores de imágenes utilizando servicios como [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum).
* **Detección de Objetos** para identificar diferentes objetos en una imagen. Servicios como [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) pueden detectar una serie de objetos comunes, y puedes entrenar un modelo de [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) para detectar objetos específicos de interés.
* **Detección de Rostros**, incluyendo edad, género y emociones. Esto se puede hacer a través de [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Clasificación de Imágenes**, que puede ayudarte a categorizar la imagen en una de las clases predefinidas. Puedes entrenar fácilmente tus propios clasificadores de imágenes utilizando servicios como [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum).
* **Detección de Objetos** para detectar diferentes objetos en la imagen. Servicios como [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) pueden detectar varios objetos comunes, y puedes entrenar un modelo de [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) para detectar objetos específicos de interés.
* **Detección de Rostros**, incluyendo edad, género y emociones. Esto se puede hacer mediante [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Todos estos servicios en la nube se pueden llamar utilizando [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), y por lo tanto se pueden incorporar fácilmente en tu flujo de trabajo de exploración de datos.
Todos estos servicios en la nube se pueden llamar utilizando [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), y por lo tanto pueden incorporarse fácilmente en tu flujo de trabajo de exploración de datos.
Aquí hay algunos ejemplos de exploración de datos a partir de fuentes de datos de imágenes:
* En el blog [Cómo Aprender Ciencia de Datos sin Programar](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) exploramos fotos de Instagram, tratando de entender qué hace que las personas den más "me gusta" a una foto. Primero extraemos tanta información como sea posible de las imágenes utilizando [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), y luego usamos [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) para construir un modelo interpretable.
* En el [Taller de Estudios Faciales](https://github.com/CloudAdvocacy/FaceStudies) usamos [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) para extraer emociones de personas en fotografías de eventos, con el fin de tratar de entender qué hace felices a las personas.
Aquí hay algunos ejemplos de exploración de datos a partir de fuentes de datos de imágenes:
* En el blog [Cómo Aprender Ciencia de Datos sin Programar](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) exploramos fotos de Instagram, tratando de entender qué hace que las personas den más "me gusta" a una foto. Primero extraemos tanta información como sea posible de las imágenes utilizando [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), y luego usamos [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) para construir un modelo interpretable.
* En el [Taller de Estudios Faciales](https://github.com/CloudAdvocacy/FaceStudies) usamos [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) para extraer emociones de personas en fotografías de eventos, con el objetivo de entender qué hace felices a las personas.
## Conclusión
## Conclusión
Ya sea que tengas datos estructurados o no estructurados, con Python puedes realizar todos los pasos relacionados con el procesamiento y la comprensión de datos. Es probablemente la forma más flexible de procesar datos, y esa es la razón por la que la mayoría de los científicos de datos usan Python como su herramienta principal. ¡Aprender Python en profundidad es probablemente una buena idea si estás comprometido con tu camino en la ciencia de datos!
Ya sea que tengas datos estructurados o no estructurados, usando Python puedes realizar todos los pasos relacionados con el procesamiento y la comprensión de datos. Probablemente sea la forma más flexible de procesar datos, y esa es la razón por la que la mayoría de los científicos de datos usan Python como su herramienta principal. ¡Aprender Python en profundidad probablemente sea una buena idea si estás serio sobre tu camino en la ciencia de datos!
## [Cuestionario posterior a la lección](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Cuestionario post-lectura](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Revisión y Autoestudio
## Revisión y Autoestudio
**Libros**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Recursos en Línea**
* Tutorial oficial [10 minutos con Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Documentación sobre Visualización en Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* [Documentación sobre Visualización en Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Aprendiendo Python**
* [Aprende Python de Forma Divertida con Turtle Graphics y Fractales](https://github.com/shwars/pycourse)
* [Da tus Primeros Pasos con Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) en la Ruta de Aprendizaje de [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Aprende Python de una manera divertida con Turtle Graphics y Fractales](https://github.com/shwars/pycourse)
* [Da tus primeros pasos con Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Ruta de aprendizaje en [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Tarea
## Tarea
[Realiza un estudio de datos más detallado para los desafíos anteriores](assignment.md)
[Realiza un estudio de datos más detallado para los desafíos anteriores](assignment.md)
## Créditos
## Créditos
Esta lección ha sido creada con ♥️ por [Dmitry Soshnikov](http://soshnikov.com)
Esta lección ha sido creada con ♥️ por [Dmitry Soshnikov](http://soshnikov.com)
---
**Descargo de responsabilidad**:
Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.
Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T14:10:49+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:24:30+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "fa"
}
@ -13,34 +13,34 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| کار با پایتون - _طرح دستی توسط [@nitya](https://twitter.com/nitya)_ |
[![ویدئوی مقدمه](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![ویدئوی مقدمه](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.fa.png)](https://youtu.be/dZjWOGbsN4Y)
در حالی که پایگاه‌های داده روش‌های بسیار کارآمدی برای ذخیره‌سازی داده‌ها و جستجوی آن‌ها با استفاده از زبان‌های پرس‌وجو ارائه می‌دهند، انعطاف‌پذیرترین روش پردازش داده‌ها نوشتن برنامه‌ای است که داده‌ها را دستکاری کند. در بسیاری از موارد، انجام یک پرس‌وجوی پایگاه داده می‌تواند مؤثرتر باشد. اما در برخی موارد که پردازش داده‌های پیچیده‌تر مورد نیاز است، این کار به راحتی با SQL قابل انجام نیست.
پردازش داده‌ها را می‌توان در هر زبان برنامه‌نویسی انجام داد، اما برخی زبان‌ها سطح بالاتری برای کار با داده‌ها دارند. دانشمندان داده معمولاً یکی از زبان‌های زیر را ترجیح می‌دهند:
پردازش داده‌ها را می‌توان با هر زبان برنامه‌نویسی انجام داد، اما برخی زبان‌ها سطح بالاتری برای کار با داده‌ها دارند. دانشمندان داده معمولاً یکی از زبان‌های زیر را ترجیح می‌دهند:
* **[پایتون](https://www.python.org/)**، یک زبان برنامه‌نویسی عمومی که به دلیل سادگی اغلب به عنوان یکی از بهترین گزینه‌ها برای مبتدیان در نظر گرفته می‌شود. پایتون دارای کتابخانه‌های اضافی زیادی است که می‌توانند به شما در حل بسیاری از مشکلات عملی کمک کنند، مانند استخراج داده‌ها از آرشیو ZIP یا تبدیل تصویر به حالت خاکستری. علاوه بر علم داده، پایتون اغلب برای توسعه وب نیز استفاده می‌شود.
* **[R](https://www.r-project.org/)** یک ابزار سنتی است که با هدف پردازش داده‌های آماری توسعه یافته است. این زبان دارای مخزن بزرگی از کتابخانه‌ها (CRAN) است که آن را به گزینه‌ای مناسب برای پردازش داده‌ها تبدیل می‌کند. با این حال، R یک زبان برنامه‌نویسی عمومی نیست و به ندرت خارج از حوزه علم داده استفاده می‌شود.
* **[پایتون](https://www.python.org/)**، یک زبان برنامه‌نویسی عمومی که به دلیل سادگی اغلب به عنوان یکی از بهترین گزینه‌ها برای مبتدیان در نظر گرفته می‌شود. پایتون دارای کتابخانه‌های زیادی است که می‌توانند به شما در حل بسیاری از مشکلات عملی کمک کنند، مانند استخراج داده‌ها از آرشیو ZIP یا تبدیل تصویر به حالت خاکستری. علاوه بر علم داده، پایتون اغلب برای توسعه وب نیز استفاده می‌شود.
* **[R](https://www.r-project.org/)** یک ابزار سنتی است که با هدف پردازش داده‌های آماری توسعه یافته است. این زبان همچنین دارای مخزن بزرگی از کتابخانه‌ها (CRAN) است که آن را به گزینه‌ای مناسب برای پردازش داده‌ها تبدیل می‌کند. با این حال، R یک زبان برنامه‌نویسی عمومی نیست و به ندرت خارج از حوزه علم داده استفاده می‌شود.
* **[Julia](https://julialang.org/)** یک زبان دیگر است که به طور خاص برای علم داده توسعه یافته است. این زبان برای ارائه عملکرد بهتر نسبت به پایتون طراحی شده است و آن را به ابزاری عالی برای آزمایش‌های علمی تبدیل می‌کند.
در این درس، ما بر استفاده از پایتون برای پردازش ساده داده‌ها تمرکز خواهیم کرد. فرض می‌کنیم که با اصول اولیه این زبان آشنا هستید. اگر می‌خواهید یک مرور عمیق‌تر از پایتون داشته باشید، می‌توانید به یکی از منابع زیر مراجعه کنید:
در این درس، ما بر استفاده از پایتون برای پردازش ساده داده‌ها تمرکز خواهیم کرد. فرض می‌کنیم که با اصول اولیه این زبان آشنا هستید. اگر می‌خواهید یک تور عمیق‌تر از پایتون داشته باشید، می‌توانید به یکی از منابع زیر مراجعه کنید:
* [یادگیری پایتون به روشی سرگرم‌کننده با گرافیک لاک‌پشتی و فراکتال‌ها](https://github.com/shwars/pycourse) - دوره مقدماتی سریع در GitHub برای برنامه‌نویسی پایتون
* [یادگیری پایتون به روش سرگرم‌کننده با گرافیک لاک‌پشتی و فراکتال‌ها](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/) معمولاً شامل نمونه‌های کد مفید زیادی در پایتون برای بسیاری از وظایف معمول است.
> **مفیدترین توصیه**. وقتی نیاز دارید عملیاتی خاص روی داده‌ها انجام دهید که نمی‌دانید چگونه انجام دهید، سعی کنید آن را در اینترنت جستجو کنید. [Stackoverflow](https://stackoverflow.com/) معمولاً شامل نمونه‌های کد مفید زیادی در پایتون برای بسیاری از وظایف معمول است.
## [پیش‌زمینه آزمون](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## داده‌های جدولی و Dataframes
شما قبلاً با داده‌های جدولی آشنا شده‌اید وقتی درباره پایگاه‌های داده رابطه‌ای صحبت کردیم. وقتی داده‌های زیادی دارید و این داده‌ها در جداول مختلف مرتبط ذخیره شده‌اند، قطعاً استفاده از SQL برای کار با آن‌ها منطقی است. با این حال، موارد زیادی وجود دارد که ما یک جدول داده داریم و نیاز داریم تا برخی **درکها** یا **بینشها** درباره این داده‌ها کسب کنیم، مانند توزیع، همبستگی بین مقادیر و غیره. در علم داده، موارد زیادی وجود دارد که نیاز داریم برخی تغییرات در داده‌های اصلی انجام دهیم و سپس آن‌ها را بصری‌سازی کنیم. هر دو مرحله به راحتی با پایتون قابل انجام هستند.
شما قبلاً با داده‌های جدولی آشنا شده‌اید وقتی درباره پایگاه‌های داده رابطه‌ای صحبت کردیم. وقتی داده‌های زیادی دارید و این داده‌ها در جداول مختلف مرتبط قرار دارند، قطعاً استفاده از SQL برای کار با آن‌ها منطقی است. با این حال، موارد زیادی وجود دارد که ما یک جدول داده داریم و نیاز داریم تا برخی **درک** یا **بینش** درباره این داده‌ها کسب کنیم، مانند توزیع، همبستگی بین مقادیر و غیره. در علم داده، موارد زیادی وجود دارد که نیاز داریم برخی تغییرات در داده‌های اصلی انجام دهیم و سپس آن‌ها را بصری‌سازی کنیم. هر دو مرحله به راحتی با پایتون قابل انجام هستند.
دو کتابخانه بسیار مفید در پایتون وجود دارد که می‌توانند به شما در کار با داده‌های جدولی کمک کنند:
* **[Pandas](https://pandas.pydata.org/)** به شما اجازه می‌دهد تا با **Dataframes** کار کنید، که مشابه جداول رابطه‌ای هستند. شما می‌توانید ستون‌های نام‌گذاری شده داشته باشید و عملیات مختلفی روی سطرها، ستون‌ها و Dataframes به طور کلی انجام دهید.
* **[Pandas](https://pandas.pydata.org/)** به شما امکان می‌دهد تا با **Dataframes** کار کنید، که مشابه جداول رابطه‌ای هستند. شما می‌توانید ستون‌های نام‌گذاری شده داشته باشید و عملیات مختلفی روی ردیف‌ها، ستون‌ها و Dataframes به طور کلی انجام دهید.
* **[Numpy](https://numpy.org/)** یک کتابخانه برای کار با **تنسورها**، یعنی **آرایه‌های چندبعدی** است. آرایه دارای مقادیر از نوع پایه یکسان است و ساده‌تر از Dataframe است، اما عملیات ریاضی بیشتری ارائه می‌دهد و سربار کمتری ایجاد می‌کند.
چند کتابخانه دیگر نیز وجود دارد که باید با آن‌ها آشنا باشید:
@ -55,15 +55,15 @@ import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
Pandas بر چند مفهوم اساسی متمرکز است.
Pandas حول چند مفهوم اساسی متمرکز است.
### Series
**Series** یک دنباله از مقادیر است، مشابه لیست یا آرایه numpy. تفاوت اصلی این است که Series همچنین دارای یک **شاخص** است و وقتی روی Series عملیات انجام می‌دهیم (مثلاً آن‌ها را جمع می‌کنیم)، شاخص در نظر گرفته می‌شود. شاخص می‌تواند به سادگی شماره سطر صحیح باشد (این شاخص به طور پیش‌فرض هنگام ایجاد یک Series از لیست یا آرایه استفاده می‌شود)، یا می‌تواند ساختار پیچیده‌ای مانند بازه زمانی داشته باشد.
**Series** یک دنباله از مقادیر است، مشابه لیست یا آرایه numpy. تفاوت اصلی این است که Series همچنین دارای یک **شاخص** است و وقتی روی Series عملیات انجام می‌دهیم (مثلاً آن‌ها را جمع می‌کنیم)، شاخص در نظر گرفته می‌شود. شاخص می‌تواند به سادگی شماره ردیف صحیح باشد (این شاخص به طور پیش‌فرض هنگام ایجاد یک Series از لیست یا آرایه استفاده می‌شود)، یا می‌تواند ساختار پیچیده‌ای مانند بازه زمانی داشته باشد.
> **توجه**: کد مقدماتی Pandas در دفترچه همراه [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) موجود است. ما فقط برخی از مثال‌ها را اینجا بیان می‌کنیم و شما قطعاً می‌توانید دفترچه کامل را بررسی کنید.
> **توجه**: برخی کدهای مقدماتی Pandas در دفترچه همراه [`notebook.ipynb`](notebook.ipynb) موجود است. ما فقط برخی از مثال‌ها را اینجا بیان می‌کنیم و شما قطعاً می‌توانید دفترچه کامل را بررسی کنید.
به عنوان مثال: فرض کنید می‌خواهیم فروش یک مغازه بستنی را تحلیل کنیم. بیایید یک سری از اعداد فروش (تعداد اقلام فروخته شده در هر روز) برای یک دوره زمانی ایجاد کنیم:
به عنوان مثال: ما می‌خواهیم فروش یک مغازه بستنی‌فروشی را تحلیل کنیم. بیایید یک سری از اعداد فروش (تعداد اقلام فروخته شده در هر روز) برای یک دوره زمانی ایجاد کنیم:
```python
start_date = "Jan 1, 2020"
@ -73,9 +73,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![نمودار سری زمانی](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![نمودار سری زمانی](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.fa.png)
حالا فرض کنید هر هفته یک مهمانی برای دوستان برگزار می‌کنیم و 10 بسته بستنی اضافی برای مهمانی می‌گیریم. می‌توانیم یک سری دیگر، با شاخص هفته، برای نشان دادن این موضوع ایجاد کنیم:
حالا فرض کنید که هر هفته یک مهمانی برای دوستان برگزار می‌کنیم و 10 بسته بستنی اضافی برای مهمانی می‌گیریم. می‌توانیم یک سری دیگر، با شاخص هفته، برای نشان دادن این موضوع ایجاد کنیم:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -84,7 +84,7 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![نمودار سری زمانی](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![نمودار سری زمانی](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.fa.png)
> **توجه** که ما از نحو ساده `total_items+additional_items` استفاده نمی‌کنیم. اگر این کار را می‌کردیم، تعداد زیادی مقدار `NaN` (*Not a Number*) در سری حاصل دریافت می‌کردیم. این به این دلیل است که مقادیر گم‌شده‌ای برای برخی از نقاط شاخص در سری `additional_items` وجود دارد و افزودن `NaN` به هر چیزی نتیجه `NaN` می‌دهد. بنابراین باید پارامتر `fill_value` را هنگام جمع مشخص کنیم.
@ -93,7 +93,7 @@ total_items.plot()
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![میانگین‌های سری زمانی ماهانه](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![میانگین‌های سری زمانی ماهانه](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.fa.png)
### DataFrame
@ -109,7 +109,7 @@ df = pd.DataFrame([a,b])
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
همچنین می‌توانیم از Series به عنوان ستون‌ها استفاده کنیم و نام ستون‌ها را با استفاده از دیکشنری مشخص کنیم:
می‌توانیم از سری‌ها به عنوان ستون‌ها استفاده کنیم و نام ستون‌ها را با استفاده از دیکشنری مشخص کنیم:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -131,21 +131,21 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
اینجا `.T` به معنای عملیات ترانهاده کردن DataFrame است، یعنی تغییر سطرها و ستون‌ها، و عملیات `rename` به ما اجازه می‌دهد ستون‌ها را برای مطابقت با مثال قبلی تغییر نام دهیم.
اینجا `.T` به معنای عملیات ترانهاده کردن DataFrame است، یعنی تغییر ردیف‌ها و ستون‌ها، و عملیات `rename` به ما اجازه می‌دهد تا ستون‌ها را برای مطابقت با مثال قبلی تغییر نام دهیم.
در اینجا چند عملیات مهم که می‌توانیم روی DataFrameها انجام دهیم آورده شده است:
در اینجا چند عملیات مهم که می‌توانیم روی DataFrames انجام دهیم آورده شده است:
**انتخاب ستون‌ها**. می‌توانیم ستون‌های فردی را با نوشتن `df['A']` انتخاب کنیم - این عملیات یک Series را برمی‌گرداند. همچنین می‌توانیم زیرمجموعه‌ای از ستون‌ها را به یک DataFrame دیگر انتخاب کنیم با نوشتن `df[['B','A']]` - این یک DataFrame دیگر را برمی‌گرداند.
**فیلتر کردن** فقط سطرهای خاص بر اساس معیارها. به عنوان مثال، برای نگه داشتن فقط سطرهایی که ستون `A` بزرگ‌تر از 5 است، می‌توانیم بنویسیم `df[df['A']>5]`.
**فیلتر کردن** فقط ردیف‌های خاص بر اساس معیارها. به عنوان مثال، برای نگه داشتن فقط ردیف‌هایی که ستون `A` بزرگ‌تر از 5 است، می‌توانیم بنویسیم `df[df['A']>5]`.
> **توجه**: نحوه کار فیلتر کردن به این صورت است. عبارت `df['A']<5` یک سری بولی برمی‌گرداند که نشان می‌دهد آیا عبارت برای هر عنصر از سری اصلی `df['A']` درست یا غلط است. وقتی سری بولی به عنوان شاخص استفاده می‌شود، زیرمجموعه‌ای از سطرها را در DataFrame برمی‌گرداند. بنابراین نمی‌توان از عبارت بولی دلخواه پایتون استفاده کرد، به عنوان مثال، نوشتن `df[df['A']>5 and df['A']<7]` اشتباه خواهد بود. در عوض، باید از عملیات خاص `&` روی سری بولی استفاده کنید، با نوشتن `df[(df['A']>5) & (df['A']<7)]` (*پرانتزها اینجا مهم هستند*).
> **توجه**: نحوه کار فیلتر کردن به این صورت است. عبارت `df['A']<5` یک سری بولی برمی‌گرداند که نشان می‌دهد آیا عبارت برای هر عنصر از سری اصلی `df['A']` درست یا غلط است. وقتی سری بولی به عنوان شاخص استفاده می‌شود، زیرمجموعه‌ای از ردیف‌ها را در DataFrame برمی‌گرداند. بنابراین نمی‌توان از عبارت بولی دلخواه پایتون استفاده کرد، به عنوان مثال، نوشتن `df[df['A']>5 and df['A']<7]` اشتباه خواهد بود. در عوض، باید از عملیات خاص `&` روی سری بولی استفاده کنید، با نوشتن `df[(df['A']>5) & (df['A']<7)]` (*پرانتزها اینجا مهم هستند*).
**ایجاد ستون‌های محاسباتی جدید**. می‌توانیم به راحتی ستون‌های محاسباتی جدید برای DataFrame خود ایجاد کنیم با استفاده از عبارت‌های شهودی مانند این:
**ایجاد ستون‌های محاسباتی جدید**. می‌توانیم به راحتی ستون‌های محاسباتی جدیدی برای DataFrame خود ایجاد کنیم با استفاده از عبارت‌های شهودی مانند این:
```python
df['DivA'] = df['A']-df['A'].mean()
```
این مثال انحراف A از مقدار میانگین آن را محاسبه می‌کند. آنچه در واقع اینجا اتفاق می‌افتد این است که ما یک سری محاسبه می‌کنیم و سپس این سری را به سمت چپ اختصاص می‌دهیم، یک ستون جدید ایجاد می‌کنیم. بنابراین، نمی‌توانیم از هیچ عملیاتی که با سری‌ها سازگار نیست استفاده کنیم، به عنوان مثال، کد زیر اشتباه است:
این مثال انحراف A از مقدار میانگین آن را محاسبه می‌کند. آنچه در واقع اینجا اتفاق می‌افتد این است که ما یک سری محاسبه می‌کنیم و سپس این سری را به سمت چپ اختصاص می‌دهیم، یک ستون جدید ایجاد می‌کنیم. بنابراین نمی‌توانیم از هیچ عملیاتی که با سری‌ها سازگار نیست استفاده کنیم، به عنوان مثال، کد زیر اشتباه است:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
@ -173,14 +173,14 @@ df['LenB'] = df['B'].apply(len)
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**انتخاب سطرها بر اساس شماره‌ها** می‌تواند با استفاده از ساختار `iloc` انجام شود. به عنوان مثال، برای انتخاب 5 سطر اول از DataFrame:
**انتخاب ردیف‌ها بر اساس شماره‌ها** را می‌توان با استفاده از ساختار `iloc` انجام داد. به عنوان مثال، برای انتخاب 5 ردیف اول از DataFrame:
```python
df.iloc[:5]
```
**گروه‌بندی** اغلب برای دریافت نتیجه‌ای مشابه *جدول‌های محوری* در Excel استفاده می‌شود. فرض کنید می‌خواهیم مقدار میانگین ستون `A` را برای هر عدد داده شده از `LenB` محاسبه کنیم. سپس می‌توانیم DataFrame خود را بر اساس `LenB` گروه‌بندی کنیم و `mean` را فراخوانی کنیم:
**گروه‌بندی** اغلب برای دریافت نتیجه‌ای مشابه *جدول‌های محوری* در Excel استفاده می‌شود. فرض کنید که می‌خواهیم مقدار میانگین ستون `A` را برای هر عدد داده شده از `LenB` محاسبه کنیم. سپس می‌توانیم DataFrame خود را بر اساس `LenB` گروه‌بندی کنیم و `mean` را فراخوانی کنیم:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
اگر نیاز به محاسبه میانگین و تعداد عناصر در گروه داریم، می‌توانیم از تابع پیچیده‌تر `aggregate` استفاده کنیم:
```python
@ -199,33 +199,33 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### دریافت داده‌ها
ما دیده‌ایم که چقدر ساختن Series و DataFrames از اشیاء پایتون آسان است. با این حال، داده‌ها معمولاً به صورت یک فایل متنی یا یک جدول اکسل ارائه می‌شوند. خوشبختانه، Pandas راه ساده‌ای برای بارگذاری داده‌ها از دیسک به ما ارائه می‌دهد. به عنوان مثال، خواندن فایل CSV به سادگی زیر است:
ما دیده‌ایم که چقدر ساختن Series و DataFrames از اشیاء پایتون آسان است. با این حال، داده‌ها معمولاً به صورت یک فایل متنی یا جدول اکسل ارائه می‌شوند. خوشبختانه، Pandas راه ساده‌ای برای بارگذاری داده‌ها از دیسک به ما ارائه می‌دهد. به عنوان مثال، خواندن فایل CSV به سادگی زیر است:
```python
df = pd.read_csv('file.csv')
```
ما نمونه‌های بیشتری از بارگذاری داده‌ها، از جمله دریافت آن از وب‌سایت‌های خارجی، را در بخش "چالش" خواهیم دید.
ما مثال‌های بیشتری از بارگذاری داده‌ها، از جمله دریافت آن از وب‌سایت‌های خارجی، در بخش "چالش" خواهیم دید.
### چاپ و ترسیم
یک دانشمند داده اغلب باید داده‌ها را بررسی کند، بنابراین توانایی بصری‌سازی آن‌ها بسیار مهم است. وقتی DataFrame بزرگ است، بسیاری از مواقع فقط می‌خواهیم مطمئن شویم که همه چیز را درست انجام می‌دهیم، با چاپ چند ردیف اول. این کار با فراخوانی `df.head()` انجام می‌شود. اگر آن را از Jupyter Notebook اجرا کنید، DataFrame را به صورت یک جدول زیبا چاپ خواهد کرد.
یک دانشمند داده اغلب باید داده‌ها را بررسی کند، بنابراین توانایی بصری‌سازی آن‌ها بسیار مهم است. وقتی DataFrame بزرگ است، بسیاری مواقع فقط می‌خواهیم مطمئن شویم که همه چیز را درست انجام می‌دهیم، با چاپ چند ردیف اول. این کار با فراخوانی `df.head()` انجام می‌شود. اگر آن را از Jupyter Notebook اجرا کنید، DataFrame را به صورت یک جدول زیبا چاپ می‌کند.
ما همچنین استفاده از تابع `plot` را برای بصری‌سازی برخی ستون‌ها دیده‌ایم. در حالی که `plot` برای بسیاری از وظایف بسیار مفید است و انواع مختلف نمودار را از طریق پارامتر `kind=` پشتیبانی می‌کند، شما همیشه می‌توانید از کتابخانه خام `matplotlib` برای ترسیم چیزی پیچیده‌تر استفاده کنید. ما بصری‌سازی داده‌ها را به طور مفصل در درس‌های جداگانه دوره پوشش خواهیم داد.
ما همچنین استفاده از تابع `plot` را برای بصری‌سازی برخی ستون‌ها دیده‌ایم. در حالی که `plot` برای بسیاری از وظایف بسیار مفید است و انواع مختلف نمودارها را از طریق پارامتر `kind=` پشتیبانی می‌کند، شما همیشه می‌توانید از کتابخانه خام `matplotlib` برای ترسیم چیزی پیچیده‌تر استفاده کنید. ما بصری‌سازی داده‌ها را به طور مفصل در درس‌های جداگانه پوشش خواهیم داد.
این مرور کلی مهم‌ترین مفاهیم Pandas را پوشش می‌دهد، با این حال، این کتابخانه بسیار غنی است و هیچ محدودیتی برای کاری که می‌توانید با آن انجام دهید وجود ندارد! حالا بیایید این دانش را برای حل یک مشکل خاص به کار ببریم.
این مرور کلی مهم‌ترین مفاهیم Pandas را پوشش می‌دهد، اما این کتابخانه بسیار غنی است و هیچ محدودیتی برای کاری که می‌توانید با آن انجام دهید وجود ندارد! حالا بیایید این دانش را برای حل یک مشکل خاص به کار ببریم.
## 🚀 چالش ۱: تحلیل گسترش COVID
اولین مشکلی که روی آن تمرکز خواهیم کرد مدل‌سازی گسترش اپیدمی COVID-19 است. برای این کار، از داده‌های مربوط به تعداد افراد مبتلا در کشورهای مختلف استفاده خواهیم کرد که توسط [مرکز علوم سیستم‌ها و مهندسی](https://systems.jhu.edu/) (CSSE) در [دانشگاه جانز هاپکینز](https://jhu.edu/) ارائه شده است. مجموعه داده در [این مخزن GitHub](https://github.com/CSSEGISandData/COVID-19) موجود است.
از آنجا که می‌خواهیم نشان دهیم چگونه با داده‌ها کار کنیم، از شما دعوت می‌کنیم [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) را باز کنید و از ابتدا تا انتها بخوانید. همچنین می‌توانید سلول‌ها را اجرا کنید و برخی چالش‌هایی که در انتها برای شما گذاشته‌ایم را انجام دهید.
از آنجا که می‌خواهیم نشان دهیم چگونه با داده‌ها کار کنیم، از شما دعوت می‌کنیم [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) را باز کنید و از ابتدا تا انتها بخوانید. همچنین می‌توانید سلول‌ها را اجرا کنید و برخی چالش‌هایی که در انتها برای شما گذاشته‌ایم را انجام دهید.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.fa.png)
> اگر نمی‌دانید چگونه کد را در Jupyter Notebook اجرا کنید، به [این مقاله](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) نگاهی بیندازید.
## کار با داده‌های غیرساختاریافته
در حالی که داده‌ها اغلب به صورت جدولی ارائه می‌شوند، در برخی موارد باید با داده‌های کمتر ساختاریافته، مانند متن یا تصاویر، کار کنیم. در این حالت، برای اعمال تکنیک‌های پردازش داده‌هایی که در بالا دیده‌ایم، باید به نوعی داده‌های **ساختاریافته** استخراج کنیم. در اینجا چند مثال آورده شده است:
در حالی که داده‌ها اغلب به صورت جدولی ارائه می‌شوند، در برخی موارد باید با داده‌های کمتر ساختاریافته مانند متن یا تصاویر کار کنیم. در این حالت، برای اعمال تکنیک‌های پردازش داده که در بالا دیده‌ایم، باید به نوعی داده‌های ساختاریافته را **استخراج** کنیم. در اینجا چند مثال آورده شده است:
* استخراج کلمات کلیدی از متن و بررسی اینکه این کلمات کلیدی چند بار ظاهر می‌شوند
* استفاده از شبکه‌های عصبی برای استخراج اطلاعات درباره اشیاء موجود در تصویر
@ -233,22 +233,22 @@ df = pd.read_csv('file.csv')
## 🚀 چالش ۲: تحلیل مقالات COVID
در این چالش، موضوع همه‌گیری COVID را ادامه می‌دهیم و بر پردازش مقالات علمی در این زمینه تمرکز می‌کنیم. مجموعه داده‌ای به نام [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) با بیش از ۷۰۰۰ مقاله (در زمان نگارش) درباره COVID، همراه با متاداده و چکیده‌ها (و برای حدود نیمی از آن‌ها متن کامل نیز ارائه شده است) موجود است.
در این چالش، موضوع همه‌گیری COVID را ادامه می‌دهیم و بر پردازش مقالات علمی در این زمینه تمرکز می‌کنیم. مجموعه داده [CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) شامل بیش از ۷۰۰۰ مقاله (در زمان نگارش) درباره COVID است که با متادیتا و چکیده‌ها (و برای حدود نیمی از آن‌ها متن کامل نیز ارائه شده) در دسترس است.
یک مثال کامل از تحلیل این مجموعه داده با استفاده از سرویس شناختی [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**: ما نسخه‌ای از مجموعه داده را به عنوان بخشی از این مخزن ارائه نمی‌دهیم. ممکن است ابتدا نیاز باشد فایل [`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) دانلود کنید، اما شامل تمام متن‌های کامل علاوه بر فایل متادیتا خواهد بود.
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) را باز کنید و از ابتدا تا انتها بخوانید. همچنین می‌توانید سلول‌ها را اجرا کنید و برخی چالش‌هایی که در انتها برای شما گذاشته‌ایم را انجام دهید.
[`notebook-papers.ipynb`](notebook-papers.ipynb) را باز کنید و از ابتدا تا انتها بخوانید. همچنین می‌توانید سلول‌ها را اجرا کنید و برخی چالش‌هایی که در انتها برای شما گذاشته‌ایم را انجام دهید.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.fa.png)
## پردازش داده‌های تصویری
اخیراً مدل‌های هوش مصنوعی بسیار قدرتمندی توسعه یافته‌اند که به ما امکان درک تصاویر را می‌دهند. بسیاری از وظایف را می‌توان با استفاده از شبکه‌های عصبی از پیش آموزش‌دیده یا خدمات ابری حل کرد. برخی مثال‌ها شامل موارد زیر هستند:
اخیراً مدل‌های هوش مصنوعی بسیار قدرتمندی توسعه یافته‌اند که به ما امکان درک تصاویر را می‌دهند. بسیاری از وظایف را می‌توان با استفاده از شبکه‌های عصبی از پیش آموزش‌دیده یا خدمات ابری حل کرد. برخی از مثال‌ها شامل موارد زیر است:
* **طبقه‌بندی تصویر**، که می‌تواند به شما کمک کند تصویر را در یکی از کلاس‌های از پیش تعریف‌شده دسته‌بندی کنید. شما می‌توانید به راحتی طبقه‌بندی‌کننده‌های تصویر خود را با استفاده از خدماتی مانند [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) را برای شناسایی برخی اشیاء خاص مورد علاقه آموزش دهید.
* **تشخیص اشیاء** برای شناسایی اشیاء مختلف در تصویر. خدماتی مانند [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) فراخوانی کرد و بنابراین به راحتی می‌توان آن‌ها را در جریان کاری اکتشاف داده‌های خود گنجاند.
@ -273,7 +273,7 @@ df = pd.read_csv('file.csv')
* [مستندات درباره بصری‌سازی Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**یادگیری پایتون**
* [یادگیری پایتون به روش سرگرم‌کننده با گرافیک Turtle و فراکتال‌ها](https://github.com/shwars/pycourse)
* [یادگیری پایتون به روشی سرگرم‌کننده با گرافیک Turtle و فراکتال‌ها](https://github.com/shwars/pycourse)
* [اولین قدم‌های خود را با پایتون بردارید](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)
## تکلیف
@ -287,4 +287,4 @@ df = pd.read_csv('file.csv')
---
**سلب مسئولیت**:
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادقتی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T22:36:53+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:48:25+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "fi"
}
@ -13,57 +13,57 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Työskentely Pythonin kanssa - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![Intro Video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.fi.png)](https://youtu.be/dZjWOGbsN4Y)
Vaikka tietokannat tarjoavat erittäin tehokkaita tapoja tallentaa ja hakea dataa kyselykielien avulla, joustavin tapa käsitellä dataa on kirjoittaa oma ohjelma datan muokkaamiseen. Monissa tapauksissa tietokantakysely on tehokkaampi tapa. Kuitenkin joissain tilanteissa, kun tarvitaan monimutkaisempaa datan käsittelyä, sitä ei ole helppo toteuttaa SQL:llä.
Datan käsittely voidaan ohjelmoida millä tahansa ohjelmointikielellä, mutta tietyt kielet ovat korkeamman tason työkaluja datan käsittelyyn. Datatieteilijät suosivat yleensä seuraavia kieliä:
Vaikka tietokannat tarjoavat erittäin tehokkaita tapoja tallentaa dataa ja tehdä kyselyitä kyselykielillä, joustavin tapa käsitellä dataa on kirjoittaa oma ohjelma datan muokkaamiseen. Monissa tapauksissa tietokantakysely olisi tehokkaampi tapa. Kuitenkin joissakin tapauksissa, kun tarvitaan monimutkaisempaa datan käsittelyä, sitä ei voida helposti tehdä SQL:llä.
Datan käsittelyä voidaan ohjelmoida millä tahansa ohjelmointikielellä, mutta tietyt kielet ovat korkeammalla tasolla datan käsittelyn suhteen. Datatieteilijät suosivat yleensä yhtä seuraavista kielistä:
* **[Python](https://www.python.org/)**, yleiskäyttöinen ohjelmointikieli, jota pidetään usein yhtenä parhaista vaihtoehdoista aloittelijoille sen yksinkertaisuuden vuoksi. Pythonilla on paljon lisäkirjastoja, jotka auttavat ratkaisemaan monia käytännön ongelmia, kuten datan purkaminen ZIP-arkistosta tai kuvan muuntaminen harmaasävyksi. Pythonia käytetään datatieteen lisäksi myös usein web-kehityksessä.
* **[R](https://www.r-project.org/)** on perinteinen työkalu, joka on kehitetty tilastollista datan käsittelyä varten. Siinä on myös laaja kirjastojen kokoelma (CRAN), mikä tekee siitä hyvän valinnan datan käsittelyyn. R ei kuitenkaan ole yleiskäyttöinen ohjelmointikieli, ja sitä käytetään harvoin datatieteen ulkopuolella.
* **[Julia](https://julialang.org/)** on toinen kieli, joka on kehitetty erityisesti datatiedettä varten. Sen tavoitteena on tarjota parempaa suorituskykyä kuin Python, mikä tekee siitä erinomaisen työkalun tieteellisiin kokeiluihin.
* **[Python](https://www.python.org/)**, yleiskäyttöinen ohjelmointikieli, jota pidetään usein yhtenä parhaista vaihtoehdoista aloittelijoille sen yksinkertaisuuden vuoksi. Pythonilla on paljon lisäkirjastoja, jotka voivat auttaa ratkaisemaan monia käytännön ongelmia, kuten datan purkaminen ZIP-arkistosta tai kuvan muuntaminen harmaasävyksi. Datatieteen lisäksi Pythonia käytetään usein myös verkkokehityksessä.
* **[R](https://www.r-project.org/)** on perinteinen työkalu, joka on kehitetty tilastollisen datan käsittelyä varten. Se sisältää laajan kirjastojen arkiston (CRAN), mikä tekee siitä hyvän valinnan datan käsittelyyn. R ei kuitenkaan ole yleiskäyttöinen ohjelmointikieli, ja sitä käytetään harvoin datatieteen ulkopuolella.
* **[Julia](https://julialang.org/)** on toinen kieli, joka on kehitetty erityisesti datatiedettä varten. Sen tarkoituksena on tarjota parempaa suorituskykyä kuin Python, mikä tekee siitä erinomaisen työkalun tieteellisiin kokeiluihin.
Tässä oppitunnissa keskitymme Pythonin käyttöön yksinkertaisessa datan käsittelyssä. Oletamme, että sinulla on perustiedot kielestä. Jos haluat syvemmän katsauksen Pythoniin, voit tutustua seuraaviin resursseihin:
Tässä oppitunnissa keskitymme Pythonin käyttöön yksinkertaisessa datan käsittelyssä. Oletamme, että sinulla on perustiedot kielestä. Jos haluat syvemmän katsauksen Pythonista, voit tutustua johonkin seuraavista resursseista:
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - GitHub-pohjainen pikaopas Python-ohjelmointiin
* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - Oppimispolku [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) -sivustolla
* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Oppimispolku [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) -sivustolla
Data voi esiintyä monessa eri muodossa. Tässä oppitunnissa tarkastelemme kolmea datan muotoa: **taulukkodata**, **teksti** ja **kuvat**.
Data voi olla monessa eri muodossa. Tässä oppitunnissa tarkastelemme kolmea datan muotoa - **taulukkomuotoista dataa**, **tekstiä** ja **kuvia**.
Keskitymme muutamaan esimerkkiin datan käsittelystä sen sijaan, että antaisimme kattavan yleiskatsauksen kaikista aiheeseen liittyvistä kirjastoista. Tämä antaa sinulle käsityksen siitä, mitä on mahdollista tehdä, ja auttaa sinua ytämään ratkaisuja ongelmiisi tarvittaessa.
Keskitymme muutamaan esimerkkiin datan käsittelystä sen sijaan, että antaisimme kattavan yleiskatsauksen kaikista asiaan liittyvistä kirjastoista. Tämä antaa sinulle käsityksen siitä, mitä on mahdollista tehdä, ja auttaa sinua ymmärtämään, mistä löytää ratkaisuja ongelmiisi tarvittaessa.
> **Hyödyllisin neuvo**. Kun sinun täytyy suorittaa jokin datan käsittelytoimenpide, jota et osaa tehdä, etsi sitä internetistä. [Stackoverflow](https://stackoverflow.com/) sisältää yleensä paljon hyödyllisiä Python-koodiesimerkkejä moniin tyypillisiin tehtäviin.
> **Hyödyllisin neuvo**. Kun sinun täytyy suorittaa jokin datan käsittelytoimenpide, jota et osaa tehdä, yritä etsiä sitä internetistä. [Stackoverflow](https://stackoverflow.com/) sisältää yleensä paljon hyödyllisiä Python-koodiesimerkkejä moniin tyypillisiin tehtäviin.
## [Esikysely](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Ennakkokysely](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Taulukkodata ja DataFrame-rakenteet
## Taulukkomuotoinen data ja DataFrame-rakenteet
Olet jo tutustunut taulukkodataan, kun puhuimme relaatiotietokannoista. Kun sinulla on paljon dataa, joka on tallennettu useisiin linkitettyihin tauluihin, SQL:n käyttö on ehdottomasti järkevää. On kuitenkin monia tilanteita, joissa meillä on yksittäinen taulukko dataa, ja haluamme saada siitä **ymmärrystä** tai **oivalluksia**, kuten jakaumia tai arvojen välisiä korrelaatioita. Datatieteessä on myös paljon tilanteita, joissa alkuperäistä dataa täytyy muokata ja sen jälkeen visualisoida. Molemmat vaiheet voidaan helposti toteuttaa Pythonilla.
Olet jo tutustunut taulukkomuotoiseen dataan, kun puhuimme relaatiotietokannoista. Kun sinulla on paljon dataa, joka on tallennettu moniin eri linkitettyihin tauluihin, SQL:n käyttö on ehdottomasti järkevää. Kuitenkin on monia tapauksia, joissa meillä on yksittäinen datataulukko, ja meidän täytyy saada siitä **ymmärrystä** tai **oivalluksia**, kuten jakauma tai arvojen välinen korrelaatio. Datatieteessä on paljon tilanteita, joissa alkuperäistä dataa täytyy muokata ja sen jälkeen visualisoida. Molemmat vaiheet voidaan helposti tehdä Pythonilla.
Pythonissa on kaksi hyödyllistä kirjastoa, jotka auttavat taulukkodatan käsittelyssä:
* **[Pandas](https://pandas.pydata.org/)** mahdollistaa niin sanottujen **DataFrame-rakenteiden** käsittelyn, jotka vastaavat relaatiotietokantojen tauluja. Voit käyttää nimettyjä sarakkeita ja suorittaa erilaisia operaatioita riveille, sarakkeille ja koko DataFrame-rakenteelle.
* **[Numpy](https://numpy.org/)** on kirjasto, joka on tarkoitettu **tensoreiden**, eli monidimensionaalisten **taulukoiden**, käsittelyyn. Taulukon arvot ovat samaa tyyppiä, ja se on yksinkertaisempi kuin DataFrame, mutta tarjoaa enemmän matemaattisia operaatioita ja vähemmän ylikuormitusta.
Pythonissa on kaksi hyödyllistä kirjastoa, jotka auttavat sinua käsittelemään taulukkomuotoista dataa:
* **[Pandas](https://pandas.pydata.org/)** mahdollistaa niin sanottujen **DataFrame-rakenteiden** käsittelyn, jotka ovat analogisia relaatiotaulukoille. Voit käyttää nimettyjä sarakkeita ja suorittaa erilaisia operaatioita riveille, sarakkeille ja DataFrameille yleisesti.
* **[Numpy](https://numpy.org/)** on kirjasto, joka on tarkoitettu **tensorien**, eli monidimensionaalisten **taulukoiden**, käsittelyyn. Taulukko sisältää saman tyyppisiä arvoja, ja se on yksinkertaisempi kuin DataFrame, mutta tarjoaa enemmän matemaattisia operaatioita ja aiheuttaa vähemmän ylikuormitusta.
On myös muutamia muita kirjastoja, jotka kannattaa tietää:
* **[Matplotlib](https://matplotlib.org/)** on kirjasto, jota käytetään datan visualisointiin ja kaavioiden piirtämiseen
* **[SciPy](https://www.scipy.org/)** on kirjasto, joka sisältää lisätieteellisiä funktioita. Olemme jo törmänneet tähän kirjastoon puhuessamme todennäköisyyksistä ja tilastoista
Lisäksi on muutama muu kirjasto, jotka sinun kannattaa tietää:
* **[Matplotlib](https://matplotlib.org/)** on kirjasto, jota käytetään datan visualisointiin ja graafien piirtämiseen
* **[SciPy](https://www.scipy.org/)** on kirjasto, joka sisältää lisätieteellisiä funktioita. Olemme jo törmänneet tähän kirjastoon, kun puhuimme todennäköisyyksistä ja tilastoista
Tässä on esimerkki koodista, jota käytetään yleensä näiden kirjastojen tuomiseen Python-ohjelman alkuun:
Tässä on koodiesimerkki, jota yleensä käytetään näiden kirjastojen tuomiseen Python-ohjelman alkuun:
```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
```
```
Pandas-kirjasto perustuu muutamaan peruskäsitteeseen.
Pandas-kirjasto keskittyy muutamaan peruskäsitteeseen.
### Series
### Sarjat (Series)
**Series** on arvojen jono, joka muistuttaa listaa tai numpy-taulukkoa. Suurin ero on, että Series sisältää myös **indeksin**, ja kun operoimme Series-rakenteilla (esim. lisäämme niitä), indeksi otetaan huomioon. Indeksi voi olla yksinkertainen kokonaislukurivin numero (se on oletusindeksi, kun luomme Series-rakenteen listasta tai taulukosta), tai sillä voi olla monimutkaisempi rakenne, kuten päivämääräväli.
**Sarja** on arvojen jono, joka muistuttaa listaa tai numpy-taulukkoa. Suurin ero on, että sarjalla on myös **indeksi**, ja kun teemme operaatioita sarjoilla (esim. lisäämme niitä), indeksi otetaan huomioon. Indeksi voi olla yksinkertainen kokonaisluku (se on oletusindeksi, kun luodaan sarja listasta tai taulukosta), tai sillä voi olla monimutkainen rakenne, kuten aikaväli.
> **Huomio**: Pandas-kirjaston johdantokoodia löytyy mukana olevasta muistikirjasta [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Tässä esittelemme vain joitakin esimerkkejä, mutta voit ehdottomasti tutustua koko muistikirjaan.
> **Huomio**: Mukana olevassa notebookissa [`notebook.ipynb`](notebook.ipynb) on johdantokoodia Pandas-kirjastoon. Tässä esittelemme vain joitakin esimerkkejä, ja olet ehdottomasti tervetullut tutustumaan koko notebookiin.
Otetaan esimerkki: haluamme analysoida jäätelökioskimme myyntiä. Luodaan myyntilukujen sarja (myytyjen tuotteiden määrä päivittäin) tietylle ajanjaksolle:
Otetaan esimerkki: haluamme analysoida jäätelökioskimme myyntiä. Luodaan sarja myyntilukuja (myytyjen tuotteiden määrä päivittäin) tietylle ajanjaksolle:
```python
start_date = "Jan 1, 2020"
@ -72,48 +72,48 @@ idx = pd.date_range(start_date,end_date)
print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Aikasarjakaavio](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
```
![Aikasarjan kuvaaja](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.fi.png)
Oletetaan nyt, että järjestämme joka viikko juhlat ystäville, ja otamme juhliin 10 ylimääräistä jäätelöpakkausta. Voimme luoda toisen sarjan, joka on indeksoitu viikoittain, havainnollistamaan tätä:
Oletetaan nyt, että järjestämme joka viikko juhlat ystäville, ja otamme juhliin 10 ylimääräistä jäätelöpakkausta. Voimme luoda toisen sarjan, joka on indeksoitu viikoittain, osoittamaan tätä:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Kun lisäämme kaksi sarjaa yhteen, saamme kokonaismäärän:
```
Kun lisäämme kaksi sarjaa yhteen, saamme kokonaismäärän:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Aikasarjakaavio](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
```
![Aikasarjan kuvaaja](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.fi.png)
> **Huomio**: Emme käytä yksinkertaista syntaksia `total_items+additional_items`. Jos käyttäisimme, saisimme paljon `NaN` (*Not a Number*) -arvoja tuloksena olevaan sarjaan. Tämä johtuu siitä, että `additional_items`-sarjassa on puuttuvia arvoja joillekin indeksipisteille, ja `NaN`-arvon lisääminen mihin tahansa johtaa `NaN`-arvoon. Siksi meidän täytyy määrittää `fill_value`-parametri yhteenlaskun aikana.
> **Huomio**: Emme käytä yksinkertaista syntaksia `total_items+additional_items`. Jos tekisimme niin, saisimme paljon `NaN` (*Not a Number*) -arvoja tuloksena olevaan sarjaan. Tämä johtuu siitä, että `additional_items`-sarjassa on puuttuvia arvoja joillekin indeksipisteille, ja `NaN`-arvon lisääminen mihin tahansa johtaa `NaN`:iin. Siksi meidän täytyy määrittää `fill_value`-parametri lisäyksen aikana.
Aikasarjojen kanssa voimme myös **uudelleennäytteistää** sarjan eri aikaväleillä. Esimerkiksi, jos haluamme laskea keskimääräisen myyntimäärän kuukausittain, voimme käyttää seuraavaa koodia:
Aikasarjojen kanssa voimme myös **resamplata** sarjan eri aikaväleillä. Esimerkiksi, jos haluamme laskea keskimääräisen myyntimäärän kuukausittain, voimme käyttää seuraavaa koodia:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Kuukausittaiset aikasarjojen keskiarvot](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
```
![Kuukausittaiset aikasarjan keskiarvot](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.fi.png)
### DataFrame
DataFrame on käytännössä kokoelma sarjoja, joilla on sama indeksi. Voimme yhdistää useita sarjoja yhteen DataFrameen:
DataFrame on pohjimmiltaan kokoelma sarjoja, joilla on sama indeksi. Voimme yhdistää useita sarjoja DataFrameksi:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Tämä luo vaakasuuntaisen taulukon, joka näyttää tältä:
```
Tämä luo vaakasuoran taulukon, joka näyttää tältä:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Voimme myös käyttää sarjoja sarakkeina ja määrittää sarakenimet sanakirjan avulla:
Voimme myös käyttää sarjoja sarakkeina ja määrittää sarakenimet sanakirjan avulla:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Tämä antaa meille taulukon, joka näyttää tältä:
```
Tämä antaa meille taulukon, joka näyttää tältä:
| | A | B |
| --- | --- | ------ |
@ -127,39 +127,39 @@ Tämä antaa meille taulukon, joka näyttää tältä:
| 7 | 8 | very |
| 8 | 9 | much |
**Huomio**: Voimme myös saada tämän taulukon asettelun transponoimalla edellisen taulukon, esimerkiksi kirjoittamalla
**Huomio**: Voimme myös saada tämän taulukon asettelun transponoimalla edellisen taulukon, esimerkiksi kirjoittamalla
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
```
Tässä `.T` tarkoittaa DataFramen transponointia, eli rivien ja sarakkeiden vaihtamista, ja `rename`-operaatio mahdollistaa sarakkeiden uudelleennimeämisen vastaamaan edellistä esimerkkiä.
Tässä on muutamia tärkeimpiä operaatioita, joita voimme suorittaa DataFrame-rakenteilla:
Tässä on muutamia tärkeimpiä operaatioita, joita voimme suorittaa DataFrameille:
**Sarakkeiden valinta**. Voimme valita yksittäisiä sarakkeita kirjoittamalla `df['A']` - tämä operaatio palauttaa Series-rakenteen. Voimme myös valita osajoukon sarakkeista toiseen DataFrameen kirjoittamalla `df[['B','A']]` - tämä palauttaa toisen DataFrame-rakenteen.
**Sarakkeiden valinta**. Voimme valita yksittäisiä sarakkeita kirjoittamalla `df['A']` - tämä operaatio palauttaa sarjan. Voimme myös valita osajoukon sarakkeista toiseen DataFrameen kirjoittamalla `df[['B','A']]` - tämä palauttaa toisen DataFramen.
**Rivien suodatus kriteerien perusteella**. Esimerkiksi, jos haluamme jättää vain rivit, joissa sarakkeen `A` arvo on suurempi kuin 5, voimme kirjoittaa `df[df['A']>5]`.
**Rivien suodatus** tiettyjen kriteerien perusteella. Esimerkiksi, jos haluamme jättää vain rivit, joissa sarakkeen `A` arvo on suurempi kuin 5, voimme kirjoittaa `df[df['A']>5]`.
> **Huomio**: Suodatus toimii seuraavasti. Lauseke `df['A']<5` palauttaa totuusarvosarjan, joka osoittaa, onko lauseke `True` vai `False` kullekin alkuperäisen sarjan `df['A']` elementille. Kun totuusarvosarjaa käytetään indeksinä, se palauttaa DataFramen rivien osajoukon. Siksi ei ole mahdollista käyttää mielivaltaisia Pythonin totuusarvolausekkeita, esimerkiksi kirjoittamalla `df[df['A']>5 and df['A']<7]` olisi väärin. Sen sijaan sinun tulisi käyttää erityistä `&`-operaatiota totuusarvosarjoille, kirjoittamalla `df[(df['A']>5) & (df['A']<7)]` (*sulut ovat tässä tärkeitä*).
> **Huomio**: Suodatuksen toiminta on seuraava. Lauseke `df['A']<5` palauttaa totuusarvosarjan, joka osoittaa, onko lauseke `True` vai `False` kullekin alkuperäisen sarjan `df['A']` elementille. Kun totuusarvosarjaa käytetään indeksinä, se palauttaa DataFramen rivien osajoukon. Siksi ei ole mahdollista käyttää mielivaltaisia Pythonin totuuslausekkeita, esimerkiksi kirjoittamalla `df[df['A']>5 and df['A']<7]` olisi väärin. Sen sijaan sinun tulisi käyttää erityistä `&`-operaatiota totuusarvosarjoille, kirjoittamalla `df[(df['A']>5) & (df['A']<7)]` (*sulkeet ovat tässä tärkeitä*).
**Uusien laskettavien sarakkeiden luominen**. Voimme helposti luoda uusia laskettavia sarakkeita DataFrameen käyttämällä intuitiivista lauseketta, kuten tämä:
**Uusien laskettavien sarakkeiden luominen**. Voimme helposti luoda uusia laskettavia sarakkeita DataFrameille käyttämällä intuitiivisia lausekkeita, kuten tämä:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Tämä esimerkki laskee sarakkeen A poikkeaman sen keskiarvosta. Mitä tässä oikeasti tapahtuu, on se, että laskemme sarjan ja sitten määritämme tämän sarjan vasemmalle puolelle, luoden uuden sarakkeen. Siksi emme voi käyttää mitään operaatioita, jotka eivät ole yhteensopivia sarjojen kanssa, esimerkiksi alla oleva koodi on väärin:
```
Tämä esimerkki laskee sarakkeen A poikkeaman sen keskiarvosta. Mitä tässä oikeastaan tapahtuu, on se, että laskemme sarjan ja sitten määritämme tämän sarjan vasemmalle puolelle, luoden uuden sarakkeen. Siksi emme voi käyttää operaatioita, jotka eivät ole yhteensopivia sarjojen kanssa, esimerkiksi alla oleva koodi on väärin:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Viimeinen esimerkki, vaikka se onkin syntaktisesti oikein, antaa meille väärän tuloksen, koska se määrittää sarjan `B` pituuden kaikille sarakkeen arvoille, eikä yksittäisten elementtien pituutta, kuten tarkoitimme.
```
Viimeinen esimerkki, vaikka se on syntaktisesti oikein, antaa meille väärän tuloksen, koska se määrittää sarjan `B` pituuden kaikille sarakkeen arvoille, eikä yksittäisten elementtien pituutta, kuten tarkoitimme.
Jos meidän täytyy laskea monimutkaisia lausekkeita, voimme käyttää `apply`-funktiota. Viimeinen esimerkki voidaan kirjoittaa seuraavasti:
Jos meidän täytyy laskea monimutkaisia lausekkeita, voimme käyttää `apply`-funktiota. Viimeinen esimerkki voidaan kirjoittaa seuraavasti:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
df['LenB'] = df['B'].apply(len)
```
```
Yllä olevien operaatioiden jälkeen päädymme seuraavaan DataFrameen:
Yllä olevien operaatioiden jälkeen meillä on seuraava DataFrame:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -173,21 +173,21 @@ Yllä olevien operaatioiden jälkeen päädymme seuraavaan DataFrameen:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Rivien valinta numeroiden perusteella** voidaan tehdä käyttämällä `iloc`-rakennetta. Esimerkiksi, jos haluamme valita ensimmäiset 5 riviä DataFramesta:
**Rivien valinta numeroiden perusteella** voidaan tehdä käyttämällä `iloc`-rakennetta. Esimerkiksi, jos haluamme valita ensimmäiset 5 riviä DataFramesta:
```python
df.iloc[:5]
```
```
**Ryhmittely** on usein käytetty tapa saada tuloksia, jotka muistuttavat Excelin *pivot-taulukoita*. Oletetaan, että haluamme laskea sarakkeen `A` keskiarvon jokaiselle annetulle `LenB`-arvolle. Voimme ryhmitellä DataFramen `LenB`-sarakkeen mukaan ja kutsua `mean`:
**Ryhmittely** on usein käytetty tapa saada tuloksia, jotka muistuttavat *pivot-taulukoita* Excelissä. Oletetaan, että haluamme laskea sarakkeen `A` keskiarvon jokaiselle annetulle `LenB`-arvolle. Voimme ryhmitellä DataFramen `LenB`-sarakkeen mukaan ja kutsua `mean`-funktiota:
```python
df.groupby(by='LenB').mean()
```
Jos meidän täytyy laskea keskiarvo ja elementtien lukumäärä ryhmässä, voimme käyttää monimutkaisempaa `aggregate`-funktiota:
df.groupby(by='LenB')[['A','DivA']].mean()
```
Jos meidän täytyy laskea keskiarvo ja elementtien lukumäärä ryhmässä, voimme käyttää monimutkaisempaa `aggregate`-funktiota:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
```
Tämä antaa meille seuraavan taulukon:
| LenB | Count | Mean |
@ -198,8 +198,8 @@ Tämä antaa meille seuraavan taulukon:
| 4 | 3 | 6.333333 |
| 6 | 2 | 6.000000 |
### Datan hankkiminen
Olemme nähneet, kuinka helppoa on luoda Series- ja DataFrame-objekteja Pythonilla. Kuitenkin data tulee yleensä tekstimuodossa tai Excel-taulukkona. Onneksi Pandas tarjoaa yksinkertaisen tavan ladata dataa levyltä. Esimerkiksi CSV-tiedoston lukeminen onnistuu näin helposti:
### Datan hankinta
Olemme nähneet, kuinka helppoa on luoda Series- ja DataFrame-objekteja Pythonilla. Kuitenkin data tulee yleensä tekstitiedostona tai Excel-taulukkona. Onneksi Pandas tarjoaa yksinkertaisen tavan ladata dataa levyltä. Esimerkiksi CSV-tiedoston lukeminen on yhtä helppoa kuin tämä:
```python
df = pd.read_csv('file.csv')
```
@ -207,59 +207,59 @@ Näemme lisää esimerkkejä datan lataamisesta, mukaan lukien sen hakeminen ulk
### Tulostaminen ja Visualisointi
Data Scientistin täytyy usein tutkia dataa, joten sen visualisointi on tärkeää. Kun DataFrame on suuri, haluamme monesti varmistaa, että kaikki toimii oikein, tulostamalla ensimmäiset rivit. Tämä onnistuu kutsumalla `df.head()`. Jos suoritat sen Jupyter Notebookissa, se tulostaa DataFramen siistissä taulukkomuodossa.
Data Scientistin täytyy usein tutkia dataa, joten on tärkeää pystyä visualisoimaan sitä. Kun DataFrame on suuri, haluamme monesti varmistaa, että kaikki toimii oikein tulostamalla ensimmäiset rivit. Tämä onnistuu kutsumalla `df.head()`. Jos suoritat sen Jupyter Notebookissa, se tulostaa DataFramen siistissä taulukkomuodossa.
Olemme myös nähneet `plot`-funktion käytön tiettyjen sarakkeiden visualisointiin. Vaikka `plot` on erittäin hyödyllinen moniin tehtäviin ja tukee monia eri kaaviotyyppejä `kind=`-parametrin avulla, voit aina käyttää raakaa `matplotlib`-kirjastoa monimutkaisempien kaavioiden luomiseen. Käsittelemme datan visualisointia yksityiskohtaisesti erillisissä kurssiosioissa.
Olemme myös nähneet `plot`-funktion käytön tiettyjen sarakkeiden visualisointiin. Vaikka `plot` on erittäin hyödyllinen moniin tehtäviin ja tukee monia eri kaaviotyyppejä `kind=`-parametrin avulla, voit aina käyttää raakaa `matplotlib`-kirjastoa monimutkaisempien kaavioiden luomiseen. Käsittelemme datan visualisointia yksityiskohtaisesti erillisissä kurssin osioissa.
Tämä yleiskatsaus kattaa Pandasin tärkeimmät käsitteet, mutta kirjasto on erittäin monipuolinen, eikä sen käyttömahdollisuuksilla ole rajoja! Käytetään nyt tätä tietoa tietyn ongelman ratkaisemiseen.
## 🚀 Haaste 1: COVID-19:n leviämisen analysointi
## 🚀 Haaste 1: COVID-leviämisen analysointi
Ensimmäinen ongelma, johon keskitymme, on COVID-19:n epidemian leviämisen mallintaminen. Tätä varten käytämme dataa tartunnan saaneiden henkilöiden määrästä eri maissa, jonka tarjoaa [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) [Johns Hopkins University](https://jhu.edu/):sta. Datasetti on saatavilla [tässä GitHub-repositoriossa](https://github.com/CSSEGISandData/COVID-19).
Koska haluamme demonstroida datan käsittelyä, kutsumme sinut avaamaan [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) ja lukemaan sen alusta loppuun. Voit myös suorittaa soluja ja tehdä joitakin haasteita, jotka olemme jättäneet sinulle loppuun.
Koska haluamme demonstroida, miten dataa käsitellään, kutsumme sinut avaamaan [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) ja lukemaan sen alusta loppuun. Voit myös suorittaa soluja ja tehdä joitakin haasteita, jotka olemme jättäneet sinulle loppuun.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Leviäminen](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.fi.png)
> Jos et tiedä, miten suorittaa koodia Jupyter Notebookissa, tutustu [tähän artikkeliin](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Työskentely jäsentämättömän datan kanssa
Vaikka data tulee usein taulukkomuodossa, joissakin tapauksissa meidän täytyy käsitellä vähemmän jäsenneltyä dataa, kuten tekstiä tai kuvia. Tällöin, jotta voimme soveltaa yllä nähtyjä datankäsittelytekniikoita, meidän täytyy jotenkin **jäsentää** data. Tässä muutamia esimerkkejä:
Vaikka data tulee usein taulukkomuodossa, joissakin tapauksissa meidän täytyy käsitellä vähemmän jäsenneltyä dataa, kuten tekstiä tai kuvia. Tällöin, jotta voimme soveltaa edellä nähtyjä datankäsittelytekniikoita, meidän täytyy jotenkin **jäsentää** data. Tässä muutamia esimerkkejä:
* Avainsanojen poimiminen tekstistä ja niiden esiintymistiheyden tarkastelu
* Neuroverkkojen käyttö tiedon poimimiseen kuvassa olevista objekteista
* Tunteiden analysointi videokameran syötteessä olevista ihmisis
* Tunteiden analysointi videokameran syötteestä
## 🚀 Haaste 2: COVID-aiheisten tutkimusten analysointi
## 🚀 Haaste 2: COVID-tutkimuspapereiden analysointi
Tässä haasteessa jatkamme COVID-pandemian aihetta ja keskitymme tieteellisten artikkeleiden käsittelyyn aiheesta. [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) sisältää yli 7000 (kirjoitushetkellä) COVID-aiheista artikkelia, jotka ovat saatavilla metadatan ja tiivistelmien kanssa (ja noin puolessa tapauksista myös koko teksti on saatavilla).
Tässä haasteessa jatkamme COVID-pandemian aihetta ja keskitymme tieteellisten papereiden käsittelyyn aiheesta. [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) sisältää yli 7000 (kirjoitushetkellä) paperia COVID:sta, saatavilla metadatan ja tiivistelmien kanssa (ja noin puolessa tapauksista myös koko teksti).
Täydellinen esimerkki tämän datasetin analysoinnista [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) -palvelun avulla on kuvattu [tässä blogikirjoituksessa](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Keskustelemme yksinkertaistetusta versiosta tästä analyysistä.
Täydellinen esimerkki tämän datasetin analysoinnista [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) -kognitiivisen palvelun avulla on kuvattu [tässä blogikirjoituksessa](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Keskustelemme yksinkertaistetusta versiosta tästä analyysistä.
> **NOTE**: Emme tarjoa datasetin kopiota osana tätä repositoriota. Sinun täytyy ensin ladata [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) tiedosto [tästä Kaggle-datasetistä](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Rekisteröityminen Kaggleen saattaa olla tarpeen. Voit myös ladata datasetin ilman rekisteröitymistä [täältä](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), mutta se sisältää kaikki kokotekstit metadatatiedoston lisäksi.
Avaa [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) ja lue se alusta loppuun. Voit myös suorittaa soluja ja tehdä joitakin haasteita, jotka olemme jättäneet sinulle loppuun.
Avaa [`notebook-papers.ipynb`](notebook-papers.ipynb) ja lue se alusta loppuun. Voit myös suorittaa soluja ja tehdä joitakin haasteita, jotka olemme jättäneet sinulle loppuun.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Lääketieteellinen Hoito](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.fi.png)
## Kuvadatan käsittely
Viime aikoina on kehitetty erittäin tehokkaita AI-malleja, jotka mahdollistavat kuvien ymmärtämisen. Monet tehtävät voidaan ratkaista esikoulutettujen neuroverkkojen tai pilvipalveluiden avulla. Esimerkkejä:
* **Kuvien luokittelu**, joka auttaa kategorisoimaan kuvan ennalta määriteltyihin luokkiin. Voit helposti kouluttaa omia kuvien luokittelijoita palveluilla, kuten [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum).
* **Objektien tunnistus**, joka tunnistaa eri objektit kuvassa. Palvelut, kuten [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), voivat tunnistaa useita yleisiä objekteja, ja voit kouluttaa [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) -mallin tunnistamaan tiettyjä kiinnostavia objekteja.
* **Kasvojen tunnistus**, mukaan lukien ikä-, sukupuoli- ja tunnetilojen tunnistus. Tämä onnistuu [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) -palvelun avulla.
* **Objektien tunnistus** kuvassa. Palvelut, kuten [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), voivat tunnistaa useita yleisiä objekteja, ja voit kouluttaa [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) -mallin tunnistamaan tiettyjä kiinnostavia objekteja.
* **Kasvojen tunnistus**, mukaan lukien ikä, sukupuoli ja tunteiden tunnistus. Tämä voidaan tehdä [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) avulla.
Kaikki nämä pilvipalvelut voidaan kutsua [Python SDK:iden](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) avulla, ja ne voidaan helposti sisällyttää datan tutkimustyöhön.
Tässä muutamia esimerkkejä kuvadatalähteiden tutkimisesta:
* Blogikirjoituksessa [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) tutkimme Instagram-kuvia yrittäen ymmärtää, mikä saa ihmiset antamaan enemmän tykkäyksiä kuvalle. Poimimme ensin mahdollisimman paljon tietoa kuvista [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) -palvelun avulla ja käytämme sitten [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) -palvelua tulkittavan mallin rakentamiseen.
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) -työpajassa käytämme [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) -palvelua poimimaan tunteita tapahtumien valokuvissa olevista ihmisistä, jotta voimme yrittää ymmärtää, mikä tekee ihmiset onnellisiksi.
* Blogikirjoituksessa [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) tutkimme Instagram-kuvia yrittäen ymmärtää, mikä saa ihmiset antamaan enemmän tykkäyksiä kuvalle. Ensin poimimme mahdollisimman paljon tietoa kuvista [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) avulla, ja sitten käytämme [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) -palvelua tulkittavan mallin rakentamiseen.
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) -työpajassa käytämme [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) -palvelua poimimaan tunteita tapahtumien valokuvista, jotta voimme yrittää ymmärtää, mikä tekee ihmiset onnellisiksi.
## Yhteenveto
Olipa sinulla jo jäsenneltyä tai jäsentämätöntä dataa, Pythonilla voit suorittaa kaikki datankäsittelyyn ja ymmärtämiseen liittyvät vaiheet. Se on todennäköisesti joustavin tapa käsitellä dataa, ja siksi suurin osa data-analyytikoista käyttää Pythonia ensisijaisena työkalunaan. Pythonin syvällinen oppiminen on luultavasti hyvä idea, jos olet vakavissasi data-analytiikan urasi suhteen!
Olipa sinulla jo jäsenneltyä tai jäsentämätöntä dataa, Pythonilla voit suorittaa kaikki datankäsittelyyn ja ymmärtämiseen liittyvät vaiheet. Se on todennäköisesti joustavin tapa datankäsittelyyn, ja siksi suurin osa data-analyytikoista käyttää Pythonia ensisijaisena työkalunaan. Pythonin syvällinen oppiminen on luultavasti hyvä idea, jos olet vakavissasi datatieteen urasi suhteen!
## [Luennon jälkeinen kysely](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -269,8 +269,8 @@ Olipa sinulla jo jäsenneltyä tai jäsentämätöntä dataa, Pythonilla voit su
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Verkkoresurssit**
* Virallinen [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) -tutoriaali
* [Dokumentaatio Pandasin visualisoinnista](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* Virallinen [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) -opas
* [Dokumentaatio Pandas-visualisoinnista](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Pythonin oppiminen**
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
@ -287,4 +287,4 @@ Tämän oppitunnin on kirjoittanut ♥️:lla [Dmitry Soshnikov](http://soshniko
---
**Vastuuvapauslauseke**:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Pyrimme tarkkuuteen, mutta huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulee pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskääntämistä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinkäsityksistä tai virhetulkinnoista.
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.

@ -1,24 +1,24 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T12:21:08+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:19:48+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "fr"
}
-->
# Travailler avec les données : Python et la bibliothèque Pandas
# Travailler avec des données : Python et la bibliothèque Pandas
| ![ Sketchnote par [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Travailler avec Python - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
[![Vidéo d'introduction](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Vidéo d'introduction](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.fr.png)](https://youtu.be/dZjWOGbsN4Y)
Bien que les bases de données offrent des moyens très efficaces de stocker et d'interroger des données à l'aide de langages de requête, la méthode la plus flexible pour traiter les données reste d'écrire son propre programme pour les manipuler. Dans de nombreux cas, une requête de base de données serait plus efficace. Cependant, dans certains cas où un traitement de données plus complexe est nécessaire, cela ne peut pas être facilement réalisé avec SQL.
Bien que les bases de données offrent des moyens très efficaces de stocker et d'interroger des données à l'aide de langages de requête, la méthode la plus flexible pour traiter les données reste d'écrire son propre programme pour les manipuler. Dans de nombreux cas, effectuer une requête dans une base de données serait plus efficace. Cependant, dans certains cas où un traitement de données plus complexe est nécessaire, cela ne peut pas être facilement réalisé avec SQL.
Le traitement des données peut être programmé dans n'importe quel langage, mais certains langages sont plus adaptés au travail avec les données. Les data scientists préfèrent généralement l'un des langages suivants :
* **[Python](https://www.python.org/)**, un langage de programmation généraliste, souvent considéré comme l'une des meilleures options pour les débutants en raison de sa simplicité. Python dispose de nombreuses bibliothèques supplémentaires qui peuvent vous aider à résoudre de nombreux problèmes pratiques, comme extraire vos données d'une archive ZIP ou convertir une image en niveaux de gris. En plus de la science des données, Python est également souvent utilisé pour le développement web.
* **[Python](https://www.python.org/)**, un langage de programmation généraliste, souvent considéré comme l'une des meilleures options pour les débutants grâce à sa simplicité. Python dispose de nombreuses bibliothèques supplémentaires qui peuvent vous aider à résoudre de nombreux problèmes pratiques, comme extraire vos données d'une archive ZIP ou convertir une image en niveaux de gris. En plus de la science des données, Python est également souvent utilisé pour le développement web.
* **[R](https://www.r-project.org/)** est un outil traditionnel développé spécifiquement pour le traitement statistique des données. Il contient également un vaste dépôt de bibliothèques (CRAN), ce qui en fait un bon choix pour le traitement des données. Cependant, R n'est pas un langage de programmation généraliste et est rarement utilisé en dehors du domaine de la science des données.
* **[Julia](https://julialang.org/)** est un autre langage développé spécifiquement pour la science des données. Il est conçu pour offrir de meilleures performances que Python, ce qui en fait un excellent outil pour les expérimentations scientifiques.
@ -29,19 +29,19 @@ Dans cette leçon, nous nous concentrerons sur l'utilisation de Python pour un t
Les données peuvent se présenter sous de nombreuses formes. Dans cette leçon, nous examinerons trois formes de données : **les données tabulaires**, **le texte** et **les images**.
Nous nous concentrerons sur quelques exemples de traitement de données, au lieu de vous donner un aperçu complet de toutes les bibliothèques associées. Cela vous permettra de comprendre les possibilités principales et de savoir où trouver des solutions à vos problèmes lorsque vous en aurez besoin.
Nous nous concentrerons sur quelques exemples de traitement de données, au lieu de vous donner un aperçu complet de toutes les bibliothèques associées. Cela vous permettra de comprendre les possibilités principales et de savoir où chercher des solutions à vos problèmes lorsque vous en aurez besoin.
> **Le conseil le plus utile** : Lorsque vous devez effectuer une opération sur des données que vous ne savez pas comment réaliser, essayez de chercher sur Internet. [Stackoverflow](https://stackoverflow.com/) contient souvent de nombreux exemples de code utiles en Python pour de nombreuses tâches typiques.
> **Le conseil le plus utile** : Lorsque vous devez effectuer une opération sur des données que vous ne savez pas comment réaliser, essayez de chercher sur Internet. [Stackoverflow](https://stackoverflow.com/) contient généralement de nombreux exemples de code utiles en Python pour de nombreuses tâches typiques.
## [Quiz pré-lecture](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Données tabulaires et DataFrames
Vous avez déjà rencontré les données tabulaires lorsque nous avons parlé des bases de données relationnelles. Lorsque vous avez beaucoup de données contenues dans de nombreuses tables liées, il est logique d'utiliser SQL pour les manipuler. Cependant, il existe de nombreux cas où nous avons une table de données et où nous devons obtenir une **compréhension** ou des **informations** sur ces données, comme leur distribution, les corrélations entre les valeurs, etc. En science des données, il y a de nombreux cas où nous devons effectuer des transformations des données originales, suivies de visualisations. Ces deux étapes peuvent être facilement réalisées avec Python.
Vous avez déjà rencontré des données tabulaires lorsque nous avons parlé des bases de données relationnelles. Lorsque vous avez beaucoup de données contenues dans de nombreuses tables liées, il est logique d'utiliser SQL pour les manipuler. Cependant, il existe de nombreux cas où nous avons une table de données et où nous devons obtenir une **compréhension** ou des **informations** sur ces données, comme leur distribution, les corrélations entre les valeurs, etc. En science des données, il y a de nombreux cas où nous devons effectuer des transformations des données originales, suivies de visualisations. Ces deux étapes peuvent être facilement réalisées avec Python.
Deux bibliothèques Python sont particulièrement utiles pour travailler avec des données tabulaires :
* **[Pandas](https://pandas.pydata.org/)** permet de manipuler des **DataFrames**, qui sont analogues aux tables relationnelles. Vous pouvez avoir des colonnes nommées et effectuer différentes opérations sur les lignes, les colonnes et les DataFrames en général.
* **[Numpy](https://numpy.org/)** est une bibliothèque pour travailler avec des **tenseurs**, c'est-à-dire des **tableaux** multidimensionnels. Un tableau contient des valeurs du même type sous-jacent, il est plus simple qu'un DataFrame, mais offre davantage d'opérations mathématiques et génère moins de surcharge.
Il existe deux bibliothèques Python particulièrement utiles pour travailler avec des données tabulaires :
* **[Pandas](https://pandas.pydata.org/)** permet de manipuler ce qu'on appelle des **DataFrames**, qui sont analogues aux tables relationnelles. Vous pouvez avoir des colonnes nommées et effectuer différentes opérations sur les lignes, les colonnes et les DataFrames en général.
* **[Numpy](https://numpy.org/)** est une bibliothèque pour travailler avec des **tenseurs**, c'est-à-dire des **tableaux** multidimensionnels. Un tableau contient des valeurs d'un même type sous-jacent, il est plus simple qu'un DataFrame, mais offre davantage d'opérations mathématiques et génère moins de surcharge.
Il existe également quelques autres bibliothèques que vous devriez connaître :
* **[Matplotlib](https://matplotlib.org/)** est une bibliothèque utilisée pour la visualisation des données et la création de graphiques.
@ -59,9 +59,9 @@ Pandas repose sur quelques concepts de base.
### Series
Une **Series** est une séquence de valeurs, similaire à une liste ou un tableau numpy. La principale différence est qu'une série possède également un **index**, et lorsque nous opérons sur des séries (par exemple, les additionner), l'index est pris en compte. L'index peut être aussi simple qu'un numéro de ligne entier (c'est l'index utilisé par défaut lors de la création d'une série à partir d'une liste ou d'un tableau), ou il peut avoir une structure complexe, comme un intervalle de dates.
Une **Series** est une séquence de valeurs, similaire à une liste ou un tableau numpy. La principale différence est qu'une série possède également un **index**, et lorsque nous effectuons des opérations sur les séries (par exemple, les additionner), l'index est pris en compte. L'index peut être aussi simple qu'un numéro de ligne entier (c'est l'index utilisé par défaut lors de la création d'une série à partir d'une liste ou d'un tableau), ou il peut avoir une structure complexe, comme un intervalle de dates.
> **Note** : Il y a du code introductif sur Pandas dans le notebook associé [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Nous ne présentons ici que quelques exemples, mais n'hésitez pas à consulter le notebook complet.
> **Note** : Il y a du code introductif sur Pandas dans le notebook associé [`notebook.ipynb`](notebook.ipynb). Nous ne présentons ici que quelques exemples, mais n'hésitez pas à consulter le notebook complet.
Prenons un exemple : nous voulons analyser les ventes de notre stand de glaces. Générons une série de chiffres de ventes (nombre d'articles vendus chaque jour) pour une certaine période :
```python
@ -72,9 +72,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Graphique de séries temporelles](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Graphique de séries temporelles](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.fr.png)
Supposons maintenant que chaque semaine, nous organisons une fête pour nos amis et que nous prenons 10 packs de glace supplémentaires pour la fête. Nous pouvons créer une autre série, indexée par semaine, pour le démontrer :
Supposons maintenant que chaque semaine, nous organisons une fête pour nos amis et que nous prenons 10 packs de glaces supplémentaires pour la fête. Nous pouvons créer une autre série, indexée par semaine, pour le démontrer :
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -83,7 +83,7 @@ Lorsque nous additionnons deux séries, nous obtenons le total :
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Graphique de séries temporelles](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Graphique de séries temporelles](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.fr.png)
> **Note** : Nous n'utilisons pas la syntaxe simple `total_items+additional_items`. Si nous l'avions fait, nous aurions obtenu de nombreuses valeurs `NaN` (*Not a Number*) dans la série résultante. Cela est dû au fait qu'il manque des valeurs pour certains points d'index dans la série `additional_items`, et additionner `NaN` à quoi que ce soit donne `NaN`. Ainsi, nous devons spécifier le paramètre `fill_value` lors de l'addition.
@ -92,11 +92,11 @@ Avec les séries temporelles, nous pouvons également **reéchantillonner** la s
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Moyennes mensuelles des séries temporelles](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Moyennes mensuelles des séries temporelles](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.fr.png)
### DataFrame
Un DataFrame est essentiellement une collection de séries ayant le même index. Nous pouvons combiner plusieurs séries ensemble dans un DataFrame :
Un DataFrame est essentiellement une collection de séries ayant le même index. Nous pouvons combiner plusieurs séries pour créer un DataFrame :
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -126,7 +126,7 @@ Cela nous donnera une table comme celle-ci :
| 7 | 8 | very |
| 8 | 9 | much |
**Note** : Nous pouvons également obtenir cette disposition de table en transposant la table précédente, par exemple en écrivant :
**Note** : Nous pouvons également obtenir cette disposition de table en transposant la table précédente, par exemple en écrivant
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
@ -138,13 +138,13 @@ Voici quelques-unes des opérations les plus importantes que nous pouvons effect
**Filtrage** de certaines lignes selon des critères. Par exemple, pour ne conserver que les lignes où la colonne `A` est supérieure à 5, nous pouvons écrire `df[df['A']>5]`.
> **Note** : Le fonctionnement du filtrage est le suivant. L'expression `df['A']<5` renvoie une série booléenne, qui indique si l'expression est `True` ou `False` pour chaque élément de la série originale `df['A']`. Lorsqu'une série booléenne est utilisée comme index, elle renvoie un sous-ensemble de lignes dans le DataFrame. Ainsi, il n'est pas possible d'utiliser une expression booléenne Python arbitraire, par exemple, écrire `df[df['A']>5 and df['A']<7]` serait incorrect. À la place, vous devez utiliser l'opération spéciale `&` sur les séries booléennes, en écrivant `df[(df['A']>5) & (df['A']<7)]` (*les parenthèses sont importantes ici*).
> **Note** : Le fonctionnement du filtrage est le suivant. L'expression `df['A']<5` renvoie une série booléenne, qui indique si l'expression est `True` ou `False` pour chaque élément de la série originale `df['A']`. Lorsqu'une série booléenne est utilisée comme index, elle renvoie un sous-ensemble de lignes dans le DataFrame. Ainsi, il n'est pas possible d'utiliser une expression booléenne Python arbitraire, par exemple, écrire `df[df['A']>5 and df['A']<7]` serait incorrect. À la place, vous devez utiliser l'opérateur spécial `&` sur les séries booléennes, en écrivant `df[(df['A']>5) & (df['A']<7)]` (*les parenthèses sont importantes ici*).
**Création de nouvelles colonnes calculables**. Nous pouvons facilement créer de nouvelles colonnes calculables pour notre DataFrame en utilisant une expression intuitive comme celle-ci :
```python
df['DivA'] = df['A']-df['A'].mean()
```
Cet exemple calcule l'écart de `A` par rapport à sa valeur moyenne. Ce qui se passe réellement ici, c'est que nous calculons une série, puis nous assignons cette série au côté gauche, créant une autre colonne. Ainsi, nous ne pouvons pas utiliser d'opérations incompatibles avec les séries, par exemple, le code ci-dessous est incorrect :
Cet exemple calcule la divergence de `A` par rapport à sa valeur moyenne. Ce qui se passe réellement ici, c'est que nous calculons une série, puis nous l'assignons au côté gauche, créant une autre colonne. Ainsi, nous ne pouvons pas utiliser d'opérations incompatibles avec les séries, par exemple, le code ci-dessous est incorrect :
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
@ -177,11 +177,11 @@ Après les opérations ci-dessus, nous obtiendrons le DataFrame suivant :
df.iloc[:5]
```
**Regroupement** est souvent utilisé pour obtenir un résultat similaire aux *tableaux croisés dynamiques* dans Excel. Supposons que nous voulons calculer la valeur moyenne de la colonne `A` pour chaque nombre donné de `LenB`. Nous pouvons alors regrouper notre DataFrame par `LenB` et appeler `mean` :
**Regroupement** est souvent utilisé pour obtenir un résultat similaire aux *tableaux croisés dynamiques* dans Excel. Supposons que nous souhaitons calculer la valeur moyenne de la colonne `A` pour chaque nombre donné de `LenB`. Nous pouvons alors regrouper notre DataFrame par `LenB` et appeler `mean` :
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Si nous devons calculer la moyenne et le nombre d'éléments dans le groupe, nous pouvons utiliser la fonction plus complexe `aggregate` :
Si nous devons calculer la moyenne et le nombre d'éléments dans le groupe, nous pouvons utiliser la fonction `aggregate` plus complexe :
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -206,55 +206,55 @@ Nous verrons plus d'exemples de chargement de données, y compris leur récupér
### Impression et Visualisation
Un Data Scientist doit souvent explorer les données, il est donc important de pouvoir les visualiser. Lorsque le DataFrame est volumineux, nous voulons souvent simplement vérifier que tout fonctionne correctement en affichant les premières lignes. Cela peut être fait en appelant `df.head()`. Si vous l'exécutez depuis Jupyter Notebook, cela affichera le DataFrame sous une forme tabulaire agréable.
Un Data Scientist doit souvent explorer les données, il est donc important de pouvoir les visualiser. Lorsque le DataFrame est volumineux, il est souvent utile de vérifier que tout fonctionne correctement en affichant les premières lignes. Cela peut être fait en appelant `df.head()`. Si vous l'exécutez depuis Jupyter Notebook, cela affichera le DataFrame sous une forme tabulaire agréable.
Nous avons également vu l'utilisation de la fonction `plot` pour visualiser certaines colonnes. Bien que `plot` soit très utile pour de nombreuses tâches et prenne en charge différents types de graphiques via le paramètre `kind=`, vous pouvez toujours utiliser la bibliothèque `matplotlib` brute pour tracer quelque chose de plus complexe. Nous couvrirons la visualisation des données en détail dans des leçons de cours séparées.
Cette vue d'ensemble couvre les concepts les plus importants de Pandas, cependant, la bibliothèque est très riche, et il n'y a pas de limite à ce que vous pouvez faire avec elle ! Appliquons maintenant ces connaissances pour résoudre un problème spécifique.
Cette vue d'ensemble couvre les concepts les plus importants de Pandas, mais la bibliothèque est très riche, et il n'y a pas de limite à ce que vous pouvez faire avec elle ! Appliquons maintenant ces connaissances pour résoudre un problème spécifique.
## 🚀 Challenge 1 : Analyser la propagation du COVID
Le premier problème sur lequel nous allons nous concentrer est la modélisation de la propagation de l'épidémie de COVID-19. Pour ce faire, nous utiliserons les données sur le nombre de personnes infectées dans différents pays, fournies par le [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) de l'[Université Johns Hopkins](https://jhu.edu/). Le jeu de données est disponible dans [ce dépôt GitHub](https://github.com/CSSEGISandData/COVID-19).
Puisque nous voulons démontrer comment traiter les données, nous vous invitons à ouvrir [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) et à le lire de haut en bas. Vous pouvez également exécuter les cellules et relever certains défis que nous avons laissés pour vous à la fin.
Puisque nous voulons démontrer comment traiter les données, nous vous invitons à ouvrir [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) et à le lire de haut en bas. Vous pouvez également exécuter les cellules et relever certains défis que nous avons laissés pour vous à la fin.
![Propagation du COVID](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![Propagation du COVID](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.fr.png)
> Si vous ne savez pas comment exécuter du code dans Jupyter Notebook, consultez [cet article](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Travailler avec des données non structurées
Bien que les données se présentent très souvent sous forme tabulaire, dans certains cas, nous devons traiter des données moins structurées, par exemple du texte ou des images. Dans ce cas, pour appliquer les techniques de traitement des données que nous avons vues ci-dessus, nous devons **extraire** des données structurées. Voici quelques exemples :
Bien que les données soient souvent sous forme tabulaire, dans certains cas, nous devons traiter des données moins structurées, comme du texte ou des images. Dans ce cas, pour appliquer les techniques de traitement des données que nous avons vues précédemment, nous devons **extraire** des données structurées. Voici quelques exemples :
* Extraire des mots-clés d'un texte et voir à quelle fréquence ces mots-clés apparaissent
* Utiliser des réseaux neuronaux pour extraire des informations sur les objets dans une image
* Obtenir des informations sur les émotions des personnes à partir d'un flux vidéo de caméra
* Obtenir des informations sur les émotions des personnes à partir d'un flux vidéo
## 🚀 Challenge 2 : Analyser les articles sur le COVID
Dans ce défi, nous continuerons avec le sujet de la pandémie de COVID et nous concentrerons sur le traitement des articles scientifiques sur le sujet. Il existe [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) avec plus de 7000 articles (au moment de la rédaction) sur le COVID, disponibles avec des métadonnées et des résumés (et pour environ la moitié d'entre eux, le texte complet est également fourni).
Dans ce défi, nous continuerons avec le sujet de la pandémie de COVID et nous concentrerons sur le traitement des articles scientifiques sur le sujet. Il existe un [jeu de données CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) contenant plus de 7000 articles (au moment de la rédaction) sur le COVID, disponibles avec des métadonnées et des résumés (et pour environ la moitié d'entre eux, le texte complet est également fourni).
Un exemple complet d'analyse de ce jeu de données en utilisant le service cognitif [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) est décrit [dans cet article de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Nous discuterons d'une version simplifiée de cette analyse.
Un exemple complet d'analyse de ce jeu de données en utilisant le service cognitif [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) est décrit [dans ce billet de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Nous discuterons d'une version simplifiée de cette analyse.
> **NOTE** : Nous ne fournissons pas une copie du jeu de données dans ce dépôt. Vous devrez peut-être d'abord télécharger le fichier [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) depuis [ce jeu de données sur Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Une inscription sur Kaggle peut être requise. Vous pouvez également télécharger le jeu de données sans inscription [ici](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), mais cela inclura tous les textes complets en plus du fichier de métadonnées.
Ouvrez [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) et lisez-le de haut en bas. Vous pouvez également exécuter les cellules et relever certains défis que nous avons laissés pour vous à la fin.
Ouvrez [`notebook-papers.ipynb`](notebook-papers.ipynb) et lisez-le de haut en bas. Vous pouvez également exécuter les cellules et relever certains défis que nous avons laissés pour vous à la fin.
![Traitement médical du COVID](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Traitement médical du COVID](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.fr.png)
## Traitement des données d'image
Récemment, des modèles d'IA très puissants ont été développés, permettant de comprendre les images. De nombreuses tâches peuvent être résolues en utilisant des réseaux neuronaux pré-entraînés ou des services cloud. Voici quelques exemples :
Récemment, des modèles d'IA très puissants ont été développés pour comprendre les images. De nombreuses tâches peuvent être résolues en utilisant des réseaux neuronaux pré-entraînés ou des services cloud. Voici quelques exemples :
* **Classification d'images**, qui peut vous aider à catégoriser une image dans l'une des classes prédéfinies. Vous pouvez facilement entraîner vos propres classificateurs d'images en utilisant des services tels que [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Détection d'objets** pour détecter différents objets dans une image. Des services tels que [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) peuvent détecter un certain nombre d'objets courants, et vous pouvez entraîner un modèle [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) pour détecter des objets spécifiques d'intérêt.
* **Classification d'images**, qui peut vous aider à catégoriser une image dans l'une des classes prédéfinies. Vous pouvez facilement entraîner vos propres classificateurs d'images en utilisant des services comme [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Détection d'objets** pour détecter différents objets dans une image. Des services comme [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) peuvent détecter un certain nombre d'objets courants, et vous pouvez entraîner un modèle [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) pour détecter des objets spécifiques d'intérêt.
* **Détection de visages**, y compris l'âge, le genre et les émotions. Cela peut être fait via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Tous ces services cloud peuvent être appelés en utilisant les [SDK Python](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), et peuvent donc être facilement intégrés dans votre flux de travail d'exploration de données.
Voici quelques exemples d'exploration de données à partir de sources d'images :
* Dans l'article de blog [Comment apprendre la science des données sans coder](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), nous explorons les photos Instagram, en essayant de comprendre ce qui pousse les gens à donner plus de "likes" à une photo. Nous extrayons d'abord autant d'informations que possible des images en utilisant [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), puis nous utilisons [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) pour construire un modèle interprétable.
* Dans l'[atelier sur les études faciales](https://github.com/CloudAdvocacy/FaceStudies), nous utilisons [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) pour extraire les émotions des personnes sur des photographies d'événements, afin d'essayer de comprendre ce qui rend les gens heureux.
* Dans le billet de blog [Comment apprendre la science des données sans coder](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), nous explorons les photos Instagram, en essayant de comprendre ce qui pousse les gens à donner plus de "likes" à une photo. Nous extrayons d'abord autant d'informations que possible des images en utilisant [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), puis nous utilisons [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) pour construire un modèle interprétable.
* Dans l'[atelier sur les études faciales](https://github.com/CloudAdvocacy/FaceStudies), nous utilisons [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) pour extraire les émotions des personnes sur des photographies d'événements, afin de tenter de comprendre ce qui rend les gens heureux.
## Conclusion
@ -286,4 +286,4 @@ Cette leçon a été rédigée avec ♥️ par [Dmitry Soshnikov](http://soshnik
---
**Avertissement** :
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de faire appel à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.

@ -1,53 +1,53 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T23:13:43+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:50:14+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "he"
}
-->
# עבודה עם נתונים: פייתון וספריית Pandas
# עבודה עם נתונים: Python וספריית Pandas
| ![ איור מאת [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| ![ סקיצה מאת [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| עבודה עם פייתון - יור מאת [@nitya](https://twitter.com/nitya)_ |
| עבודה עם Python - _סקיצה מאת [@nitya](https://twitter.com/nitya)_ |
[![סרטון מבוא](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![סרטון מבוא](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.he.png)](https://youtu.be/dZjWOGbsN4Y)
בעוד שמסדי נתונים מציעים דרכים יעילות מאוד לאחסן נתונים ולשאול אותם באמצעות שפות שאילתה, הדרך הגמישה ביותר לעיבוד נתונים היא כתיבת תוכנית משלך כדי לעבד את הנתונים. במקרים רבים, שאילתה במסד נתונים תהיה דרך יעילה יותר. עם זאת, במקרים שבהם נדרש עיבוד נתונים מורכב יותר, לא ניתן לבצע זאת בקלות באמצעות SQL.
עיבוד נתונים ניתן לתכנות בכל שפת תכנות, אך ישנן שפות מסוימות שהן ברמה גבוהה יותר בכל הנוגע לעבודה עם נתונים. מדעני נתונים בדרך כלל מעדיפים אחת מהשפות הבאות:
בעוד שמאגרי נתונים מציעים דרכים יעילות מאוד לאחסן נתונים ולבצע שאילתות באמצעות שפות שאילתה, הדרך הגמישה ביותר לעיבוד נתונים היא כתיבת תוכנית משלך כדי לתפעל נתונים. במקרים רבים, ביצוע שאילתה במאגר נתונים יהיה דרך יעילה יותר. עם זאת, במקרים שבהם נדרש עיבוד נתונים מורכב יותר, לא ניתן לבצע זאת בקלות באמצעות SQL.
ניתן לתכנת עיבוד נתונים בכל שפת תכנות, אך ישנן שפות מסוימות שהן ברמה גבוהה יותר בכל הנוגע לעבודה עם נתונים. מדעני נתונים בדרך כלל מעדיפים אחת מהשפות הבאות:
* **[Python](https://www.python.org/)**, שפת תכנות כללית, שנחשבת לעיתים קרובות לאחת האפשרויות הטובות ביותר למתחילים בשל הפשטות שלה. לפייתון יש הרבה ספריות נוספות שיכולות לעזור לך לפתור בעיות מעשיות רבות, כמו חילוץ נתונים מארכיון ZIP או המרת תמונה לגווני אפור. בנוסף למדעי הנתונים, פייתון משמשת לעיתים קרובות גם לפיתוח אתרים.
* **[Python](https://www.python.org/)**, שפת תכנות כללית, שנחשבת לעיתים קרובות כאחת האפשרויות הטובות ביותר למתחילים בשל הפשטות שלה. ל-Python יש הרבה ספריות נוספות שיכולות לעזור לך לפתור בעיות מעשיות רבות, כמו חילוץ נתונים מארכיון ZIP או המרת תמונה לגווני אפור. בנוסף למדעי הנתונים, Python משמשת גם לעיתים קרובות לפיתוח אתרים.
* **[R](https://www.r-project.org/)** היא כלי מסורתי שפותח עם עיבוד נתונים סטטיסטיים בראש. היא מכילה גם מאגר גדול של ספריות (CRAN), מה שהופך אותה לבחירה טובה לעיבוד נתונים. עם זאת, R אינה שפת תכנות כללית, והיא משמשת לעיתים רחוקות מחוץ לתחום מדעי הנתונים.
* **[Julia](https://julialang.org/)** היא שפה נוספת שפותחה במיוחד עבור מדעי הנתונים. היא נועדה לספק ביצועים טובים יותר מפייתון, מה שהופך אותה לכלי מצוין לניסויים מדעיים.
* **[Julia](https://julialang.org/)** היא שפה נוספת שפותחה במיוחד עבור מדעי הנתונים. היא נועדה לספק ביצועים טובים יותר מ-Python, מה שהופך אותה לכלי מצוין לניסויים מדעיים.
בשיעור זה נתמקד בשימוש בפייתון לעיבוד נתונים פשוט. נניח היכרות בסיסית עם השפה. אם ברצונך להעמיק בפייתון, תוכל לעיין באחד מהמשאבים הבאים:
בשיעור זה, נתמקד בשימוש ב-Python לעיבוד נתונים פשוט. נניח היכרות בסיסית עם השפה. אם ברצונך סיור מעמיק יותר ב-Python, תוכל לעיין באחד מהמשאבים הבאים:
* [למד פייתון בדרך מהנה עם גרפיקת צב ופרקטלים](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)
* [למד Python בדרך מהנה עם גרפיקה של צב ופרקטלים](https://github.com/shwars/pycourse) - קורס מבוא מהיר ל-Python מבוסס GitHub
* [עשה את הצעדים הראשונים שלך עם 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)
נתונים יכולים להגיע בצורות רבות. בשיעור זה נתמקד בשלוש צורות של נתונים - **נתונים טבלאיים**, **טקסט** ו**תמונות**.
נתונים יכולים להגיע בצורות רבות. בשיעור זה, נתמקד בשלוש צורות של נתונים - **נתונים טבלאיים**, **טקסט** ו**תמונות**.
נתמקד בכמה דוגמאות לעיבוד נתונים, במקום לתת סקירה מלאה של כל הספריות הקשורות. זה יאפשר לך להבין את הרעיון המרכזי של מה אפשרי, ולהשאיר אותך עם הבנה היכן למצוא פתרונות לבעיות שלך כשאתה זקוק להם.
נתמקד בכמה דוגמאות לעיבוד נתונים, במקום לתת לך סקירה מלאה של כל הספריות הקשורות. זה יאפשר לך להבין את הרעיון המרכזי של מה אפשרי, ולהשאיר אותך עם הבנה היכן למצוא פתרונות לבעיות שלך כשאתה זקוק להם.
> **העצה הכי שימושית**. כשאתה צריך לבצע פעולה מסוימת על נתונים ואינך יודע איך לעשות זאת, נסה לחפש באינטרנט. [Stackoverflow](https://stackoverflow.com/) מכיל בדרך כלל הרבה דוגמאות קוד שימושיות בפייתון עבור משימות טיפוסיות רבות.
> **העצה הכי שימושית**. כשאתה צריך לבצע פעולה מסוימת על נתונים שאינך יודע כיצד לבצע, נסה לחפש אותה באינטרנט. [Stackoverflow](https://stackoverflow.com/) בדרך כלל מכיל הרבה דוגמאות קוד שימושיות ב-Python עבור משימות טיפוסיות רבות.
## [שאלון לפני השיעור](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## נתונים טבלאיים ו-Dataframes
כבר פגשת נתונים טבלאיים כשדיברנו על מסדי נתונים יחסיים. כשיש לך הרבה נתונים, והם נמצאים בטבלאות רבות ומקושרות, בהחלט יש היגיון להשתמש ב-SQL לעבודה איתם. עם זאת, ישנם מקרים רבים שבהם יש לנו טבלה של נתונים, ואנו צריכים לקבל **הבנה** או **תובנות** על נתונים אלו, כמו התפלגות, מתאם בין ערכים, וכו'. במדעי הנתונים, ישנם מקרים רבים שבהם אנו צריכים לבצע כמה טרנספורמציות של הנתונים המקוריים, ולאחר מכן ויזואליזציה. שני השלבים הללו יכולים להתבצע בקלות באמצעות פייתון.
כבר פגשת נתונים טבלאיים כשדיברנו על מאגרי נתונים יחסיים. כשיש לך הרבה נתונים, והם נמצאים בטבלאות רבות ומקושרות, בהחלט יש היגיון להשתמש ב-SQL לעבודה איתם. עם זאת, ישנם מקרים רבים שבהם יש לנו טבלה של נתונים, ואנו צריכים לקבל **הבנה** או **תובנות** על הנתונים הללו, כמו התפלגות, קורלציה בין ערכים, וכו'. במדעי הנתונים, ישנם מקרים רבים שבהם אנו צריכים לבצע כמה טרנספורמציות של הנתונים המקוריים, ולאחר מכן ויזואליזציה. שני השלבים הללו יכולים להתבצע בקלות באמצעות Python.
ישנן שתי ספריות שימושיות ביותר בפייתון שיכולות לעזור לך להתמודד עם נתונים טבלאיים:
* **[Pandas](https://pandas.pydata.org/)** מאפשרת לך לעבוד עם **Dataframes**, שהם אנלוגיים לטבלאות יחסיות. ניתן להגדיר עמודות עם שמות, ולבצע פעולות שונות על שורות, עמודות ו-Dataframes באופן כללי.
* **[Numpy](https://numpy.org/)** היא ספרייה לעבודה עם **tensors**, כלומר **מערכים** רב-ממדיים. מערך מכיל ערכים מסוג בסיסי אחיד, והוא פשוט יותר מ-Dataframe, אך מציע יותר פעולות מתמטיות ויוצר פחות עומס.
ישנן שתי ספריות שימושיות ביותר ב-Python שיכולות לעזור לך להתמודד עם נתונים טבלאיים:
* **[Pandas](https://pandas.pydata.org/)** מאפשרת לך לתפעל **Dataframes**, שהם אנלוגיים לטבלאות יחסיות. ניתן להגדיר עמודות עם שמות, ולבצע פעולות שונות על שורות, עמודות ו-Dataframes באופן כללי.
* **[Numpy](https://numpy.org/)** היא ספרייה לעבודה עם **tensors**, כלומר **מערכים** רב-ממדיים. מערך מכיל ערכים מסוג בסיסי זהה, והוא פשוט יותר מ-Dataframe, אך מציע יותר פעולות מתמטיות ויוצר פחות עומס.
ישנן גם כמה ספריות נוספות שכדאי להכיר:
* **[Matplotlib](https://matplotlib.org/)** היא ספרייה המשמשת לוויזואליזציה של נתונים ושרטוט גרפים
* **[SciPy](https://www.scipy.org/)** היא ספרייה עם פונקציות מדעיות נוספות. כבר נתקלנו בספרייה זו כשדיברנו על הסתברות וסטטיסטיקה
* **[Matplotlib](https://matplotlib.org/)** היא ספרייה המשמשת לויזואליזציה של נתונים ושרטוט גרפים
* **[SciPy](https://www.scipy.org/)** היא ספרייה עם כמה פונקציות מדעיות נוספות. כבר נתקלנו בספרייה זו כשדיברנו על הסתברות וסטטיסטיקה
הנה קטע קוד שתשתמש בו בדרך כלל לייבוא הספריות הללו בתחילת תוכנית פייתון:
הנה קטע קוד שתשתמש בו בדרך כלל כדי לייבא את הספריות הללו בתחילת תוכנית Python שלך:
```python
import numpy as np
import pandas as pd
@ -57,13 +57,13 @@ from scipy import ... # you need to specify exact sub-packages that you need
Pandas מתמקדת בכמה מושגים בסיסיים.
### Series
### Series
**Series** היא רצף של ערכים, בדומה לרשימה או מערך numpy. ההבדל העיקרי הוא של-Series יש גם **אינדקס**, וכשמבצעים פעולות על Series (למשל, חיבור), האינדקס נלקח בחשבון. האינדקס יכול להיות פשוט כמו מספר שורה שלם (זהו האינדקס המשמש כברירת מחדל כשיוצרים Series מרשימה או מערך), או שהוא יכול להיות בעל מבנה מורכב, כמו טווח תאריכים.
**Series** היא רצף של ערכים, בדומה לרשימה או מערך numpy. ההבדל העיקרי הוא ש-Series מכילה גם **אינדקס**, וכשאנחנו מבצעים פעולות על Series (למשל, מוסיפים אותם), האינדקס נלקח בחשבון. האינדקס יכול להיות פשוט כמו מספר שורה שלם (זהו האינדקס המשמש כברירת מחדל בעת יצירת Series מרשימה או מערך), או שהוא יכול להיות בעל מבנה מורכב, כמו מרווחי תאריכים.
> **הערה**: יש קוד מבואי ל-Pandas במחברת המצורפת [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). אנו מציינים כאן רק חלק מהדוגמאות, ואתם בהחלט מוזמנים לבדוק את המחברת המלאה.
> **הערה**: יש קוד מבוא ל-Pandas במחברת המצורפת [`notebook.ipynb`](notebook.ipynb). אנו מציינים כאן רק כמה דוגמאות, ואתם בהחלט מוזמנים לבדוק את המחברת המלאה.
נניח לדוגמה: אנו רוצים לנתח מכירות של דוכן גלידה שלנו. בואו ניצור סדרה של מספרי מכירות (מספר הפריטים שנמכרו בכל יום) לתקופת זמן מסוימת:
לדוגמה: אנו רוצים לנתח מכירות של חנות הגלידה שלנו. בואו ניצור סדרת מספרי מכירות (מספר הפריטים שנמכרו בכל יום) עבור תקופת זמן מסוימת:
```python
start_date = "Jan 1, 2020"
@ -73,47 +73,47 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![גרף סדרת זמן](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![גרף סדרת זמן](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.he.png)
עכשיו נניח שבכל שבוע אנו מארגנים מסיבה לחברים, ולוקחים 10 חבילות גלידה נוספות למסיבה. נוכל ליצור סדרה נוספת, שמאונדקסת לפי שבוע, כדי להדגים זאת:
עכשיו נניח שבכל שבוע אנו מארגנים מסיבה לחברים, ולוקחים 10 חבילות נוספות של גלידה למסיבה. נוכל ליצור סדרה נוספת, עם אינדקס לפי שבוע, כדי להדגים זאת:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
כשנחבר את שתי הסדרות יחד, נקבל את המספר הכולל:
כשאנו מוסיפים שתי סדרות יחד, אנו מקבלים את המספר הכולל:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![גרף סדרת זמן](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![גרף סדרת זמן](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.he.png)
> **הערה** שאיננו משתמשים בתחביר הפשוט `total_items+additional_items`. אם היינו עושים זאת, היינו מקבלים הרבה ערכי `NaN` (*לא מספר*) בסדרה המתקבלת. זאת מכיוון שיש ערכים חסרים עבור חלק מנקודות האינדקס בסדרה `additional_items`, וחיבור `NaN` לכל דבר אחר נותן `NaN`. לכן עלינו לציין את הפרמטר `fill_value` במהלך החיבור.
> **הערה** שאנו לא משתמשים בתחביר הפשוט `total_items+additional_items`. אם היינו עושים זאת, היינו מקבלים הרבה ערכי `NaN` (*Not a Number*) בסדרה המתקבלת. זאת מכיוון שיש ערכים חסרים עבור חלק מנקודות האינדקס בסדרת `additional_items`, והוספת `NaN` לכל דבר תוצאה ב-`NaN`. לכן עלינו לציין את הפרמטר `fill_value` במהלך ההוספה.
עם סדרות זמן, ניתן גם **לדגום מחדש** את הסדרה עם מרווחי זמן שונים. לדוגמה, נניח שאנו רוצים לחשב את ממוצע נפח המכירות חודשי. נוכל להשתמש בקוד הבא:
עם סדרות זמן, אנו יכולים גם **לדגום מחדש** את הסדרה עם מרווחי זמן שונים. לדוגמה, נניח שאנו רוצים לחשב את ממוצע נפח המכירות חודשי. נוכל להשתמש בקוד הבא:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![ממוצעים חודשיים של סדרת זמן](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![ממוצעים חודשיים של סדרת זמן](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.he.png)
### DataFrame
DataFrame הוא למעשה אוסף של סדרות עם אותו אינדקס. נוכל לשלב כמה סדרות יחד ל-DataFrame:
DataFrame הוא למעשה אוסף של סדרות עם אותו אינדקס. אנו יכולים לשלב כמה סדרות יחד ליצירת DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
זה ייצור טבלה אופקית כזו:
זה ייצור טבלה אופקית כמו זו:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
נוכל גם להשתמש בסדרות כעמודות, ולציין שמות עמודות באמצעות מילון:
אנו יכולים גם להשתמש בסדרות כעמודות, ולציין שמות עמודות באמצעות מילון:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
זה ייתן לנו טבלה כזו:
זה ייתן לנו טבלה כמו זו:
| | A | B |
| --- | --- | ------ |
@ -127,32 +127,32 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**הערה** שנוכל גם לקבל את פריסת הטבלה הזו על ידי טרנספוזיציה של הטבלה הקודמת, למשל על ידי כתיבת
**הערה** שאנו יכולים גם לקבל את פריסת הטבלה הזו על ידי טרנספוזיציה של הטבלה הקודמת, למשל על ידי כתיבה
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
כאן `.T` מציין את פעולת הטרנספוזיציה של ה-DataFrame, כלומר שינוי שורות ועמודות, ופעולת `rename` מאפשרת לנו לשנות את שמות העמודות כך שיתאימו לדוגמה הקודמת.
כאן `.T` מתייחס לפעולת הטרנספוזיציה של ה-DataFrame, כלומר שינוי שורות ועמודות, ופעולת `rename` מאפשרת לנו לשנות את שמות העמודות כך שיתאימו לדוגמה הקודמת.
הנה כמה מהפעולות החשובות ביותר שנוכל לבצע על DataFrames:
הנה כמה מהפעולות החשובות ביותר שניתן לבצע על DataFrames:
**בחירת עמודות**. נוכל לבחור עמודות בודדות על ידי כתיבת `df['A']` - פעולה זו מחזירה סדרה. נוכל גם לבחור תת-קבוצה של עמודות ל-DataFrame אחר על ידי כתיבת `df[['B','A']]` - זה מחזיר DataFrame נוסף.
**בחירת עמודות**. ניתן לבחור עמודות בודדות על ידי כתיבה `df['A']` - פעולה זו מחזירה סדרה. ניתן גם לבחור תת-קבוצה של עמודות ל-DataFrame אחר על ידי כתיבה `df[['B','A']]` - פעולה זו מחזירה DataFrame נוסף.
**סינון** שורות מסוימות לפי קריטריונים. לדוגמה, כדי להשאיר רק שורות שבהן העמודה `A` גדולה מ-5, נוכל לכתוב `df[df['A']>5]`.
**סינון** שורות מסוימות לפי קריטריונים. לדוגמה, כדי להשאיר רק שורות עם עמודה `A` גדולה מ-5, ניתן לכתוב `df[df['A']>5]`.
> **הערה**: הדרך שבה סינון עובד היא הבאה. הביטוי `df['A']<5` מחזיר סדרת בוליאנים, שמציינת האם הביטוי `True` או `False` עבור כל אלמנט בסדרה המקורית `df['A']`. כשסדרת בוליאנים משמשת כאינדקס, היא מחזירה תת-קבוצה של שורות ב-DataFrame. לכן לא ניתן להשתמש בביטוי בוליאני כללי של פייתון, לדוגמה, כתיבת `df[df['A']>5 and df['A']<7]` תהיה שגויה. במקום זאת, עליך להשתמש בפעולת `&` מיוחדת על סדרות בוליאניות, ולכתוב `df[(df['A']>5) & (df['A']<7)]` (*סוגריים חשובים כאן*).
> **הערה**: הדרך שבה סינון עובד היא כדלקמן. הביטוי `df['A']<5` מחזיר סדרה בוליאנית, שמציינת האם הביטוי הוא `True` או `False` עבור כל אלמנט בסדרה המקורית `df['A']`. כאשר סדרה בוליאנית משמשת כאינדקס, היא מחזירה תת-קבוצה של שורות ב-DataFrame. לכן, לא ניתן להשתמש בביטוי בוליאני שרירותי של Python, לדוגמה, כתיבה `df[df['A']>5 and df['A']<7]` תהיה שגויה. במקום זאת, יש להשתמש בפעולת `&` מיוחדת על סדרות בוליאניות, ולכתוב `df[(df['A']>5) & (df['A']<7)]` (*סוגריים חשובים כאן*).
**יצירת עמודות מחושבות חדשות**. נוכל בקלות ליצור עמודות מחושבות חדשות עבור ה-DataFrame שלנו על ידי שימוש בביטוי אינטואיטיבי כמו זה:
**יצירת עמודות חדשות לחישוב**. ניתן ליצור בקלות עמודות חדשות לחישוב עבור ה-DataFrame שלנו באמצעות ביטוי אינטואיטיבי כמו זה:
```python
df['DivA'] = df['A']-df['A'].mean()
```
דוגמה זו מחשבת את הסטייה של A מערך הממוצע שלה. מה שקורה כאן בפועל הוא שאנו מחשבים סדרה, ואז משייכים סדרה זו לצד השמאלי, ויוצרים עמודה חדשה. לכן, לא נוכל להשתמש בפעולות שאינן תואמות לסדרות, לדוגמה, הקוד הבא שגוי:
דוגמה זו מחשבת את הסטייה של A מערך הממוצע שלה. מה שקורה בפועל כאן הוא שאנו מחשבים סדרה, ואז מקצים את הסדרה הזו לצד השמאלי, ויוצרים עמודה נוספת. לכן, לא ניתן להשתמש בפעולות שאינן תואמות לסדרות, לדוגמה, הקוד הבא שגוי:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
הדוגמה האחרונה, למרות שהיא נכונה תחבירית, נותנת לנו תוצאה שגויה, מכיוון שהיא משייכת את אורך הסדרה `B` לכל הערכים בעמודה, ולא את אורך האלמנטים הבודדים כפי שהתכוונו.
הדוגמה האחרונה, למרות שהיא נכונה מבחינה תחבירית, נותנת לנו תוצאה שגויה, מכיוון שהיא מקצה את אורך הסדרה `B` לכל הערכים בעמודה, ולא את אורך האלמנטים הבודדים כפי שהתכוונו.
אם אנו צריכים לחשב ביטויים מורכבים כאלה, נוכל להשתמש בפונקציית `apply`. הדוגמה האחרונה יכולה להיכתב כך:
אם אנו צריכים לחשב ביטויים מורכבים כאלה, ניתן להשתמש בפונקציית `apply`. הדוגמה האחרונה יכולה להיכתב כך:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -178,11 +178,11 @@ df['LenB'] = df['B'].apply(len)
df.iloc[:5]
```
**קיבוץ** משמש לעיתים קרובות לקבלת תוצאה דומה ל-*טבלאות ציר* ב-Excel. נניח שאנו רוצים לחשב את הערך הממוצע של העמודה `A` עבור כל מספר נתון של `LenB`. אז נוכל לקבץ את ה-DataFrame שלנו לפי `LenB`, ולקרוא ל-`mean`:
**קיבוץ** משמש לעיתים קרובות לקבלת תוצאה דומה ל-*טבלאות ציר* ב-Excel. נניח שאנו רוצים לחשב את ערך הממוצע של עמודה `A` עבור כל מספר נתון של `LenB`. אז נוכל לקבץ את ה-DataFrame שלנו לפי `LenB`, ולקרוא ל-`mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
אם אנו צריכים לחשב ממוצע ומספר אלמנטים בקבוצה, נוכל להשתמש בפונקציית `aggregate` מורכבת יותר:
אם אנו צריכים לחשב ממוצע ומספר האלמנטים בקבוצה, אז נוכל להשתמש בפונקציית `aggregate` מורכבת יותר:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -199,86 +199,86 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### קבלת נתונים
ראינו כמה קל לבנות Series ו-DataFrames מאובייקטים של פייתון. עם זאת, נתונים בדרך כלל מגיעים בצורה של קובץ טקסט או טבלת Excel. למרבה המזל, Pandas מציעה דרך פשוטה לטעון נתונים מהדיסק. לדוגמה, קריאת קובץ CSV פשוטה כמו זו:
ראינו כמה קל ליצור Series ו-DataFrames מאובייקטים של Python. עם זאת, נתונים בדרך כלל מגיעים בצורה של קובץ טקסט או טבלת Excel. למרבה המזל, Pandas מציעה דרך פשוטה לטעון נתונים מהדיסק. לדוגמה, קריאת קובץ CSV היא פשוטה כמו זו:
```python
df = pd.read_csv('file.csv')
```
נראה דוגמאות נוספות לטעינת נתונים, כולל הבאתם מאתרים חיצוניים, בסעיף "אתגר".
נראה דוגמאות נוספות לטעינת נתונים, כולל הבאתם מאתרים חיצוניים, בחלק "אתגר".
### הדפסה ויצירת גרפים
### הדפסה וגרפיקה
מדען נתונים נדרש לעיתים קרובות לחקור את הנתונים, ולכן חשוב להיות מסוגלים להמחיש אותם. כאשר DataFrame גדול, פעמים רבות נרצה רק לוודא שאנו פועלים נכון על ידי הדפסת השורות הראשונות. ניתן לעשות זאת על ידי קריאה ל-`df.head()`. אם אתם מריצים זאת מתוך Jupyter Notebook, זה ידפיס את ה-DataFrame בצורה טבלאית ונוחה.
מדען נתונים לעיתים קרובות צריך לחקור את הנתונים, ולכן חשוב להיות מסוגל להציג אותם בצורה חזותית. כאשר DataFrame גדול, פעמים רבות אנו רוצים רק לוודא שאנחנו עושים הכל נכון על ידי הדפסת השורות הראשונות. ניתן לעשות זאת על ידי קריאה ל-`df.head()`. אם אתם מריצים זאת מתוך Jupyter Notebook, זה ידפיס את ה-DataFrame בצורה טבלאית יפה.
כמו כן, ראינו את השימוש בפונקציה `plot` להמחשת עמודות מסוימות. בעוד ש-`plot` שימושית מאוד למשימות רבות ותומכת בסוגי גרפים שונים באמצעות הפרמטר `kind=`, תמיד ניתן להשתמש בספריית `matplotlib` הגולמית כדי ליצור גרפים מורכבים יותר. נעסוק בהמחשת נתונים בפירוט בשיעורים נפרדים.
כמו כן, ראינו את השימוש בפונקציה `plot` כדי להציג גרפית עמודות מסוימות. בעוד ש-`plot` מאוד שימושית למשימות רבות ותומכת בסוגי גרפים שונים באמצעות הפרמטר `kind=`, תמיד ניתן להשתמש בספריית `matplotlib` הגולמית כדי ליצור גרפים מורכבים יותר. נעסוק בהדמיית נתונים בפירוט בשיעורים נפרדים בקורס.
סקירה זו מכסה את המושגים החשובים ביותר של Pandas, אך הספרייה עשירה מאוד ואין גבול למה שניתן לעשות איתה! כעת ניישם את הידע הזה לפתרון בעיה ספציפית.
סקירה זו מכסה את הרעיונות החשובים ביותר של Pandas, אך הספרייה עשירה מאוד ואין גבול למה שניתן לעשות איתה! עכשיו ניישם את הידע הזה לפתרון בעיה ספציפית.
## 🚀 אתגר 1: ניתוח התפשטות הקורונה
## 🚀 אתגר 1: ניתוח התפשטות COVID
הבעיה הראשונה שבה נתמקד היא מודלינג של התפשטות מגפת הקורונה. לשם כך, נשתמש בנתונים על מספר הנדבקים במדינות שונות, המסופקים על ידי [המרכז להנדסת מערכות ומדע](https://systems.jhu.edu/) (CSSE) ב-[אוניברסיטת ג'ונס הופקינס](https://jhu.edu/). מערך הנתונים זמין ב-[מאגר GitHub זה](https://github.com/CSSEGISandData/COVID-19).
הבעיה הראשונה שבה נתמקד היא מודלינג של התפשטות מגפת COVID-19. כדי לעשות זאת, נשתמש בנתונים על מספר הנדבקים במדינות שונות, המסופקים על ידי [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) ב-[אוניברסיטת ג'ונס הופקינס](https://jhu.edu/). מערך הנתונים זמין ב-[מאגר GitHub זה](https://github.com/CSSEGISandData/COVID-19).
מכיוון שאנו רוצים להדגים כיצד להתמודד עם נתונים, אנו מזמינים אתכם לפתוח את [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) ולקרוא אותו מההתחלה ועד הסוף. תוכלו גם להריץ תאים ולבצע אתגרים שהשארנו עבורכם בסוף.
מכיוון שאנחנו רוצים להדגים כיצד להתמודד עם נתונים, אנו מזמינים אתכם לפתוח את [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) ולקרוא אותו מההתחלה ועד הסוף. תוכלו גם להריץ תאים ולעשות כמה אתגרים שהשארנו לכם בסוף.
![התפשטות הקורונה](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![התפשטות COVID](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.he.png)
> אם אינכם יודעים כיצד להריץ קוד ב-Jupyter Notebook, עיינו ב-[מאמר זה](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## עבודה עם נתונים לא מובנים
בעוד שנתונים מגיעים לעיתים קרובות בצורה טבלאית, במקרים מסוימים נצטרך להתמודד עם נתונים פחות מובנים, כמו טקסט או תמונות. במקרה כזה, כדי ליישם טכניקות עיבוד נתונים שראינו קודם, נצטרך **לחלץ** נתונים מובנים. הנה כמה דוגמאות:
בעוד שנתונים לעיתים קרובות מגיעים בצורה טבלאית, במקרים מסוימים אנו צריכים להתמודד עם נתונים פחות מובנים, למשל טקסט או תמונות. במקרה כזה, כדי ליישם טכניקות עיבוד נתונים שראינו קודם, עלינו **לחלץ** נתונים מובנים. הנה כמה דוגמאות:
* חילוץ מילות מפתח מטקסט ובדיקת תדירות הופעתן
* שימוש ברשתות עצביות לחילוץ מידע על אובייקטים בתמונה
* קבלת מידע על רגשות של אנשים מזרם וידאו
* שימוש ברשתות נוירונים לחילוץ מידע על אובייקטים בתמונה
* קבלת מידע על רגשות של אנשים מזרם מצלמת וידאו
## 🚀 אתגר 2: ניתוח מאמרים על הקורונה
## 🚀 אתגר 2: ניתוח מאמרים על COVID
באתגר זה נמשיך בנושא מגפת הקורונה, ונתמקד בעיבוד מאמרים מדעיים בנושא. קיים [מאגר CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) עם יותר מ-7000 (בזמן הכתיבה) מאמרים על הקורונה, הזמינים עם מטא-נתונים ותקצירים (ובכמחציתם גם טקסט מלא).
באתגר זה, נמשיך עם נושא מגפת COVID, ונעסוק בעיבוד מאמרים מדעיים בנושא. ישנו [מערך נתונים CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) עם יותר מ-7000 (בזמן כתיבת שורות אלו) מאמרים על COVID, הזמינים עם מטא-נתונים ותקצירים (ולגבי כמחציתם גם טקסט מלא).
דוגמה מלאה לניתוח מערך נתונים זה באמצעות [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**: איננו מספקים עותק של מערך הנתונים כחלק ממאגר זה. ייתכן שתצטרכו להוריד תחילה את הקובץ [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) ממערך נתונים זה ב-Kaggle. ייתכן שתידרש הרשמה ל-Kaggle. תוכלו גם להוריד את מערך הנתונים ללא הרשמה [מכאן](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), אך הוא יכלול את כל הטקסטים המלאים בנוסף לקובץ המטא-נתונים.
פתחו את [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) וקראו אותו מההתחלה ועד הסוף. תוכלו גם להריץ תאים ולבצע אתגרים שהשארנו עבורכם בסוף.
פתחו את [`notebook-papers.ipynb`](notebook-papers.ipynb) וקראו אותו מההתחלה ועד הסוף. תוכלו גם להריץ תאים ולעשות כמה אתגרים שהשארנו לכם בסוף.
![טיפול רפואי בקורונה](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![טיפול רפואי ב-COVID](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.he.png)
## עיבוד נתוני תמונה
לאחרונה פותחו מודלים חזקים מאוד של בינה מלאכותית המאפשרים להבין תמונות. ישנם משימות רבות שניתן לפתור באמצעות רשתות עצביות מאומנות מראש או שירותי ענן. דוגמאות כוללות:
לאחרונה פותחו מודלים 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) לזיהוי אובייקטים ספציפיים.
* **סיווג תמונות**, שיכול לעזור לכם לקטלג את התמונה לאחת מהקטגוריות המוגדרות מראש. ניתן בקלות לאמן מסווגי תמונות משלכם באמצעות שירותים כמו [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), ולכן ניתן לשלבם בקלות בתהליך חקר הנתונים שלכם.
הנה כמה דוגמאות לחקר נתונים ממקורות תמונה:
* בפוסט [איך ללמוד מדעי הנתונים בלי קידוד](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) לחילוץ רגשות של אנשים בתמונות מאירועים, בניסיון להבין מה גורם לאנשים להיות שמחים.
* בפוסט בבלוג [איך ללמוד מדעי נתונים ללא קוד](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) כדי לבנות מודל שניתן לפרש.
* ב-[סדנת מחקרי פנים](https://github.com/CloudAdvocacy/FaceStudies) אנו משתמשים ב-[Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) כדי לחלץ רגשות של אנשים בתמונות מאירועים, בניסיון להבין מה גורם לאנשים להיות שמחים.
## סיכום
בין אם יש לכם נתונים מובנים או לא מובנים, באמצעות פייתון תוכלו לבצע את כל השלבים הקשורים לעיבוד והבנת נתונים. זו כנראה הדרך הגמישה ביותר לעיבוד נתונים, ולכן רוב מדעני הנתונים משתמשים בפייתון ככלי העיקרי שלהם. לימוד מעמיק של פייתון הוא כנראה רעיון טוב אם אתם רציניים במסע שלכם במדעי הנתונים!
בין אם כבר יש לכם נתונים מובנים או לא מובנים, באמצעות Python תוכלו לבצע את כל השלבים הקשורים לעיבוד והבנת נתונים. זו כנראה הדרך הגמישה ביותר לעיבוד נתונים, וזו הסיבה שרוב מדעני הנתונים משתמשים ב-Python ככלי העיקרי שלהם. ללמוד Python לעומק זו כנראה החלטה טובה אם אתם רציניים לגבי המסע שלכם במדעי הנתונים!
## [שאלון לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [שאלון לאחר השיעור](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 דקות ל-Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [תיעוד על הדמיית נתונים ב-Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**לימוד פייתון**
* [למדו פייתון בדרך מהנה עם Turtle Graphics ופרקטלים](https://github.com/shwars/pycourse)
* [עשו את הצעדים הראשונים שלכם עם פייתון](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)
**לימוד 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)
## קרדיטים

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T14:53:07+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:32:04+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "hi"
}
@ -13,21 +13,21 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Python के साथ काम करना - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![Intro Video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.hi.png)](https://youtu.be/dZjWOGbsN4Y)
हालांकि डेटाबेस डेटा को स्टोर करने और उन्हें क्वेरी लैंग्वेज का उपयोग करके क्वेरी करने के लिए बहुत कुशल तरीके प्रदान करते हैं, डेटा प्रोसेसिंग का सबसे लचीला तरीका अपना प्रोग्राम लिखना है। कई मामलों में, डेटाबेस क्वेरी करना अधिक प्रभावी हो सकता है। लेकिन कुछ मामलों में जब अधिक जटिल डेटा प्रोसेसिंग की आवश्यकता होती है, तो इसे 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/)**, एक सामान्य-उद्देश्य प्रोग्रामिंग भाषा, जिसे इसकी सरलता के कारण अक्सर शुरुआती लोगों के लिए सबसे अच्छा विकल्प माना जाता है। Python में कई अतिरिक्त लाइब्रेरी हैं जो आपको कई व्यावहारिक समस्याओं को हल करने में मदद कर सकती हैं, जैसे ZIP आर्काइव से डेटा निकालना या तस्वीर को ग्रेस्केल में बदलना। डेटा साइंस के अलावा, Python का उपयोग वेब डेवलपमेंट के लिए भी किया जाता है।
* **[R](https://www.r-project.org/)** एक पारंपरिक टूलबॉक्स है जिसे सांख्यिकीय डेटा प्रोसेसिंग के लिए विकसित किया गया है। इसमें लाइब्रेरी का बड़ा संग्रह (CRAN) है, जो इसे डेटा प्रोसेसिंग के लिए एक अच्छा विकल्प बनाता है। हालांकि, R एक सामान्य-उद्देश्य प्रोग्रामिंग भाषा नहीं है और इसे डेटा साइंस के क्षेत्र के बाहर शायद ही कभी उपयोग किया जाता है।
* **[Julia](https://julialang.org/)** एक अन्य भाषा है जो विशेष रूप से डेटा साइंस के लिए विकसित की गई है। इसे 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 पर लर्निंग पाथ
डेटा कई रूपों में आ सकता है। इस पाठ में, हम डेटा के तीन रूपों पर विचार करेंगे - **तालिका डेटा**, **पाठ** और **छविया**।
डेटा कई रूपों में आ सकता है। इस पाठ में, हम डेटा के तीन रूपों पर विचार करेंगे - **तालिका डेटा**, **पाठ** और **छविया**।
हम संबंधित लाइब्रेरी का पूरा अवलोकन देने के बजाय डेटा प्रोसेसिंग के कुछ उदाहरणों पर ध्यान केंद्रित करेंगे। यह आपको यह समझने की अनुमति देगा कि क्या संभव है और जब आपको इसकी आवश्यकता हो तो अपनी समस्याओं के समाधान कहां से प्राप्त करें।
@ -37,15 +37,15 @@ CO_OP_TRANSLATOR_METADATA:
## तालिका डेटा और डेटा फ्रेम्स
आप पहले ही तालिका डेटा से परिचित हो चुके हैं जब हमने रिलेशनल डेटाबेस के बारे में बात की थी। जब आपके पास बहुत सारा डेटा होता है और यह कई अलग-अलग लिंक्ड टेबल्स में होता है, तो SQL का उपयोग करना निश्चित रूप से समझदारी है। हालांकि, कई मामलों में हमारे पास डेटा की एक तालिका होती है और हमें इस डेटा के बारे में कुछ **समझ** या **ंतर्दृष्टि** प्राप्त करने की आवश्यकता होती है, जैसे वितरण, मानों के बीच सहसंबंध आदि। डेटा साइंस में, कई बार हमें मूल डेटा के कुछ रूपांतरण करने की आवश्यकता होती है, उसके बाद विज़ुअलाइज़ेशन। ये दोनों चरण Python का उपयोग करके आसानी से किए जा सकते हैं।
आप पहले ही तालिका डेटा से परिचित हो चुके हैं जब हमने रिलेशनल डेटाबेस के बारे में बात की थी। जब आपके पास बहुत सारा डेटा होता है और यह कई अलग-अलग लिंक्ड टेबल्स में होता है, तो SQL का उपयोग करना निश्चित रूप से समझ में आता है। हालांकि, कई मामलों में हमारे पास डेटा की एक तालिका होती है और हमें इस डेटा के बारे में कुछ **समझ** या **वलोकन** प्राप्त करने की आवश्यकता होती है, जैसे वितरण, मानों के बीच सहसंबंध आदि। डेटा साइंस में, कई बार हमें मूल डेटा के कुछ रूपांतरण करने की आवश्यकता होती है, उसके बाद विज़ुअलाइज़ेशन। ये दोनों चरण Python का उपयोग करके आसानी से किए जा सकते हैं।
Python में तालिका डेटा से निपटने में मदद करने के लिए दो सबसे उपयोगी लाइब्रेरी हैं:
* **[Pandas](https://pandas.pydata.org/)** आपको **Dataframes** को हेरफेर करने की अनुमति देता है, जो रिलेशनल टेबल्स के समान होते हैं। आप नामित कॉलम रख सकते हैं और पंक्तियों, कॉलम और डेटा फ्रेम्स पर विभिन्न ऑपरेशन कर सकते हैं।
* **[Numpy](https://numpy.org/)** **टेंसर**, यानी बहु-आयामी **एरे** के साथ काम करने के लिए एक लाइब्रेरी है। एरे में समान प्रकार के मान होते हैं और यह डेटा फ्रेम की तुलना में सरल होता है, लेकिन यह अधिक गणितीय ऑपरेशन प्रदान करता है और कम ओवरहेड बनाता है।
* **[Pandas](https://pandas.pydata.org/)** आपको तथाकथित **Dataframes** को हेरफेर करने की अनुमति देता है, जो रिलेशनल टेबल्स के समान होते हैं। आप नामित कॉलम रख सकते हैं और पंक्तियों, कॉलम और डेटा फ्रेम्स पर विभिन्न ऑपरेशन कर सकते हैं।
* **[Numpy](https://numpy.org/)** **टेंसर**, यानी बहु-आयामी **arrays** के साथ काम करने के लिए एक लाइब्रेरी है। Array में समान प्रकार के मान होते हैं और यह डेटा फ्रेम की तुलना में सरल होता है, लेकिन यह अधिक गणितीय ऑपरेशन प्रदान करता है और कम ओवरहेड बनाता है।
कुछ अन्य लाइब्रेरी भी हैं जिन्हें आपको जानना चाहिए:
* **[Matplotlib](https://matplotlib.org/)** डेटा विज़ुअलाइज़ेशन और ग्राफ़ प्लॉटिंग के लिए उपयोग की जाने वाली लाइब्रेरी
* **[SciPy](https://www.scipy.org/)** कुछ अतिरिक्त वैज्ञानिक कार्यों वाली लाइब्रेरी। हमने पहले ही इस लाइब्रेरी का सामना किया है जब हमने प्रायिकता और सांख्यिकी के बारे में बात की थी।
* **[SciPy](https://www.scipy.org/)** कुछ अतिरिक्त वैज्ञानिक कार्यों वाली लाइब्रेरी। हमने पहले ही इस लाइब्रेरी का सामना किया है जब हमने संभावना और सांख्यिकी के बारे में बात की थी।
यहां एक कोड का टुकड़ा है जिसे आप आमतौर पर अपने Python प्रोग्राम की शुरुआत में इन लाइब्रेरी को आयात करने के लिए उपयोग करेंगे:
```python
@ -53,17 +53,17 @@ 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
```
```
Pandas कुछ बुनियादी अवधारणाओं के इर्द-गिर्द केंद्रित है।
### सीरीज
### सीरीज
**सीरीज** मानों का एक अनुक्रम है, जो सूची या numpy एरे के समान है। मुख्य अंतर यह है कि सीरीज में एक **इंडेक्स** भी होता है, और जब हम सीरीज पर ऑपरेशन करते हैं (जैसे, उन्हें जोड़ते हैं), तो इंडेक्स को ध्यान में रखा जाता है। इंडेक्स उतना ही सरल हो सकता है जितना कि पूर्णांक पंक्ति संख्या (यह वह इंडेक्स है जिसका उपयोग सूची या एरे से सीरीज बनाते समय डिफ़ॉल्ट रूप से किया जाता है), या इसमें जटिल संरचना हो सकती है, जैसे कि तारीख अंतराल।
**सीरीज** मानों का एक अनुक्रम है, जो सूची या numpy array के समान है। मुख्य अंतर यह है कि सीरीज में एक **इंडेक्स** भी होता है, और जब हम सीरीज पर ऑपरेशन करते हैं (जैसे, उन्हें जोड़ते हैं), तो इंडेक्स को ध्यान में रखा जाता है। इंडेक्स उतना ही सरल हो सकता है जितना कि पूर्णांक पंक्ति संख्या (यह वह इंडेक्स है जिसका उपयोग सूची या array से सीरीज़ बनाते समय डिफ़ॉल्ट रूप से किया जाता है), या इसमें जटिल संरचना हो सकती है, जैसे कि तारीख अंतराल।
> **ध्यान दें**: साथ में दिए गए नोटबुक [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) में Pandas का कुछ प्रारंभिक कोड है। हम यहां केवल कुछ उदाहरणों को रेखांकित करते हैं, और आप निश्चित रूप से पूरे नोटबुक को देख सकते हैं।
> **ध्यान दें**: साथ में दिए गए नोटबुक [`notebook.ipynb`](notebook.ipynb) में कुछ प्रारंभिक Pandas कोड है। हम यहां केवल कुछ उदाहरणों को रेखांकित करते हैं, और आप निश्चित रूप से पूरे नोटबुक को देख सकते हैं।
एक उदाहरण पर विचार करें: हम अपनी आइसक्रीम दुकान की बिक्री का विश्लेषण करना चाहते हैं। चलिए कुछ समय अवधि के लिए बिक्री संख्या (प्रत्येक दिन बेची गई वस्तुओं की संख्या) की एक सीरीज बनाते हैं:
एक उदाहरण पर विचार करें: हम अपनी आइसक्रीम दुकान की बिक्री का विश्लेषण करना चाहते हैं। आइए कुछ समय अवधि के लिए बिक्री संख्या (प्रत्येक दिन बेची गई वस्तुओं की संख्या) की एक सीरीज़ बनाएं:
```python
start_date = "Jan 1, 2020"
@ -72,47 +72,47 @@ idx = pd.date_range(start_date,end_date)
print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![टाइम सीरीज प्लॉट](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
```
![टाइम सीरीज़ प्लॉट](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.hi.png)
अब मान लें कि हर सप्ताह हम दोस्तों के लिए एक पार्टी आयोजित कर रहे हैं, और हम पार्टी के लिए अतिरिक्त 10 पैक आइसक्रीम लेते हैं। हम इसे दिखाने के लिए सप्ताह द्वारा इंडेक्स की गई एक और सीरीज बना सकते हैं:
अब मान लें कि हर सप्ताह हम दोस्तों के लिए एक पार्टी आयोजित कर रहे हैं और पार्टी के लिए अतिरिक्त 10 पैक आइसक्रीम लेते हैं। हम इसे दिखाने के लिए सप्ताह द्वारा इंडेक्स की गई एक और सीरीज बना सकते हैं:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
जब हम दो सीरीज को जोड़ते हैं, तो हमें कुल संख्या मिलती है:
```
जब हम दो सीरीज को जोड़ते हैं, तो हमें कुल संख्या मिलती है:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![टाइम सीरीज प्लॉट](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
```
![टाइम सीरीज़ प्लॉट](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.hi.png)
> **ध्यान दें** कि हम साधारण सिंटैक्स `total_items+additional_items` का उपयोग नहीं कर रहे हैं। यदि हम ऐसा करते, तो हमें परिणामी सीरीज में बहुत सारे `NaN` (*Not a Number*) मान मिलते। ऐसा इसलिए है क्योंकि `additional_items` सीरीज में कुछ इंडेक्स पॉइंट्स के लिए मान गायब हैं, और किसी भी चीज़ में `NaN` जोड़ने से `NaN` मिलता है। इसलिए हमें जोड़ने के दौरान `fill_value` पैरामीटर निर्दिष्ट करने की आवश्यकता होती है।
> **ध्यान दें** कि हम साधारण सिंटैक्स `total_items+additional_items` का उपयोग नहीं कर रहे हैं। यदि हमने ऐसा किया होता, तो हमें परिणामी सीरीज़ में कई `NaN` (*Not a Number*) मान प्राप्त होते। ऐसा इसलिए है क्योंकि `additional_items` सीरीज में कुछ इंडेक्स पॉइंट्स के लिए मान गायब हैं, और किसी भी चीज़ में `NaN` जोड़ने से `NaN` मिलता है। इसलिए हमें जोड़ने के दौरान `fill_value` पैरामीटर निर्दिष्ट करने की आवश्यकता होती है।
टाइम सीरीज के साथ, हम विभिन्न समय अंतरालों के साथ सीरीज को **पुन: नमूना** कर सकते हैं। उदाहरण के लिए, मान लें कि हम मासिक औसत बिक्री मात्रा की गणना करना चाहते हैं। हम निम्नलिखित कोड का उपयोग कर सकते हैं:
टाइम सीरीज के साथ, हम विभिन्न समय अंतरालों के साथ सीरीज को **पुन: नमूना** कर सकते हैं। उदाहरण के लिए, मान लें कि हम मासिक औसत बिक्री मात्रा की गणना करना चाहते हैं। हम निम्नलिखित कोड का उपयोग कर सकते हैं:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![मासिक टाइम सीरीज औसत](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
```
![मासिक टाइम सीरीज़ औसत](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.hi.png)
### डेटा फ्रेम
डेटा फ्रेम मूल रूप से समान इंडेक्स वाली कई सीरीज का संग्रह है। हम कई सीरीज को एक साथ डेटा फ्रेम में जोड़ सकते हैं:
डेटा फ्रेम मूल रूप से समान इंडेक्स वाली कई सीरीज का संग्रह है। हम कई सीरीज को एक साथ डेटा फ्रेम में जोड़ सकते हैं:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
```
यह इस तरह की एक क्षैतिज तालिका बनाएगा:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
हम सीरीज को कॉलम के रूप में भी उपयोग कर सकते हैं और डिक्शनरी का उपयोग करके कॉलम नाम निर्दिष्ट कर सकते हैं:
हम सीरीज को कॉलम के रूप में भी उपयोग कर सकते हैं और डिक्शनरी का उपयोग करके कॉलम नाम निर्दिष्ट कर सकते हैं:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
```
यह हमें इस तरह की एक तालिका देगा:
| | A | B |
@ -127,37 +127,37 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**ध्यान दें** कि हम पिछले तालिका लेआउट को ट्रांसपोज़ करके भी प्राप्त कर सकते हैं, जैसे कि लिखकर
**ध्यान दें** कि हम पिछले तालिका को ट्रांसपोज़ करके भी इस लेआउट को प्राप्त कर सकते हैं, जैसे कि लिखकर
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
```
यहां `.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` एक बूलियन सीरीज लौटाती है, जो इंगित करती है कि मूल सीरीज `df['A']` के प्रत्येक तत्व के लिए अभिव्यक्ति `True` या `False` है। जब बूलियन सीरीज को इंडेक्स के रूप में उपयोग किया जाता है, तो यह डेटा फ्रेम में पंक्तियों का उपसमुच्चय लौटाती है। इसलिए किसी भी मनमाने Python बूलियन अभिव्यक्ति का उपयोग करना संभव नहीं है, उदाहरण के लिए, लिखना `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'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
पिछला उदाहरण, जबकि सिंटैक्टिक रूप से सही है, हमें गलत परिणाम देता है, क्योंकि यह कॉलम में सभी मानों को सीरीज `B` की लंबाई असाइन करता है, और व्यक्तिगत तत्वों की लंबाई नहीं जैसा कि हमने इरादा किया था।
```
हालांकि यह उदाहरण सिंटैक्टिक रूप से सही है, यह हमें गलत परिणाम देता है क्योंकि यह कॉलम में सभी मानों को सीरीज `B` की लंबाई असाइन करता है, न कि व्यक्तिगत तत्वों की लंबाई जैसा कि हमने इरादा किया था।
यदि हमें इस तरह के जटिल अभिव्यक्तियों की गणना करने की आवश्यकता है, तो हम `apply` फ़ंक्शन का उपयोग कर सकते हैं। अंतिम उदाहरण को निम्नलिखित रूप में लिखा जा सकता है:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
df['LenB'] = df['B'].apply(len)
```
```
ऊपर दिए गए ऑपरेशन के बाद, हमारे पास निम्नलिखित डेटा फ्रेम होगा:
@ -176,18 +176,18 @@ df['LenB'] = df['B'].apply(len)
**संख्या के आधार पर पंक्तियों का चयन करना** `iloc` निर्माण का उपयोग करके किया जा सकता है। उदाहरण के लिए, डेटा फ्रेम से पहली 5 पंक्तियों का चयन करने के लिए:
```python
df.iloc[:5]
```
```
**ग्रुपिंग** अक्सर *पिवट टेबल्स* के समान परिणाम प्राप्त करने के लिए उपयोग किया जाता है। मान लें कि हम `LenB` की प्रत्येक संख्या के लिए कॉलम `A` का औसत मान गणना करना चाहते हैं। फिर हम अपने डेटा फ्रेम को `LenB` द्वारा ग्रुप कर सकते हैं और `mean` कॉल कर सकते हैं:
**समूह बनाना** अक्सर Excel में *पिवट टेबल्स* के समान परिणाम प्राप्त करने के लिए उपयोग किया जाता है। मान लें कि हम `LenB` की प्रत्येक संख्या के लिए कॉलम `A` का औसत मान गणना करना चाहते हैं। फिर हम अपने डेटा फ्रेम को `LenB` द्वारा समूहित कर सकते हैं और `mean` कॉल कर सकते हैं:
```python
df.groupby(by='LenB').mean()
```
यदि हमें ग्रुप में औसत और तत्वों की संख्या की गणना करने क आवश्यकता है, तो हम अधिक जटिल `aggregate` फ़ंक्शन का उपयोग कर सकते हैं:
df.groupby(by='LenB')[['A','DivA']].mean()
```
यदि हमें समूह में औसत और तत्वों की संख्या की गणना करनी है, तो हम अधिक जटिल `aggregate` फ़ंक्शन का उपयोग कर सकते हैं:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
```
यह हमें निम्नलिखित तालिका देता है:
| LenB | Count | Mean |
@ -203,29 +203,29 @@ df.groupby(by='LenB') \
```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=` पैरामीटर के माध्यम से कई प्रकार के ग्राफ़ को सपोर्ट करता है, आप हमेशा कुछ अधिक जटिल प्लॉट करने के लिए raw `matplotlib` लाइब्रेरी का उपयोग कर सकते हैं। हम डेटा विज़ुअलाइज़ेशन को अलग पाठों में विस्तार से कवर करेंगे।
यह अवलोकन Pandas के सबसे महत्वपूर्ण अवधारणाओं को कवर करता है, हालांकि, यह लाइब्रेरी बहुत समृद्ध है, और आप इसके साथ क्या कर सकते हैं इसकी कोई सीमा नहीं है! अब चलिए इस ज्ञान का उपयोग करके एक विशिष्ट समस्या को हल करते हैं।
यह अवलोकन Pandas के सबसे महत्वपूर्ण अवधारणाओं को कवर करता है, हालांकि, यह लाइब्रेरी बहुत समृद्ध है, और इसके साथ आप जो कर सकते हैं उसकी कोई सीमा नहीं है! अब चलिए इस ज्ञान का उपयोग करके एक विशिष्ट समस्या को हल करते हैं।
## 🚀 चैलेंज 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) में उपलब्ध है।
चूंकि हम दिखाना चाहते हैं कि डेटा के साथ कैसे काम किया जाए, हम आपको [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) खोलने और इसे ऊपर से नीचे तक पढ़ने के लिए आमंत्रित करते हैं। आप सेल्स को निष्पादित कर सकते हैं और अंत में छोड़े गए कुछ चैलेंज को भी कर सकते हैं।
चूंकि हम दिखाना चाहते हैं कि डेटा के साथ कैसे काम किया जाए, हम आपको [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) खोलने और इसे ऊपर से नीचे तक पढ़ने के लिए आमंत्रित करते हैं। आप सेल्स को भी चला सकते हैं और अंत में छोड़े गए कुछ चैलेंज को हल कर सकते हैं।
![COVID फैलाव](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID फैलाव](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.hi.png)
> यदि आप नहीं जानते कि Jupyter Notebook में कोड कैसे चलाना है, तो [इस लेख](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) को देखें।
> यदि आपको Jupyter Notebook में कोड चलाने का तरीका नहीं पता है, तो [इस लेख](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) को देखें।
## असंरचित डेटा के साथ काम करना
हालांकि डेटा अक्सर टेबल के रूप में आता है, कुछ मामलों में हमें कम संरचित डेटा, जैसे टेक्स्ट या इमेज के साथ काम करना पड़ता है। इस मामले में, ऊपर देखी गई डेटा प्रोसेसिंग तकनीकों को लागू करने के लिए, हमें किसी तरह **संरचित** डेटा निकालना होगा। यहां कुछ उदाहरण दिए गए हैं:
हालांकि डेटा अक्सर टेबल के रूप में आता है, कुछ मामलों में हमें कम संरचित डेटा के साथ काम करना पड़ता है, जैसे टेक्स्ट या इमेज। इस स्थिति में, ऊपर देखी गई डेटा प्रोसेसिंग तकनीकों को लागू करने के लिए, हमें किसी तरह **संरचित** डेटा निकालना होता है। यहां कुछ उदाहरण दिए गए हैं:
* टेक्स्ट से कीवर्ड निकालना और यह देखना कि वे कितनी बार दिखाई देते हैं
* तस्वीर में वस्तुओं के बारे में जानकारी निकालने के लिए न्यूरल नेटवर्क का उपयोग करना
@ -235,31 +235,31 @@ df = pd.read_csv('file.csv')
इस चैलेंज में, हम COVID महामारी के विषय को जारी रखेंगे और इस विषय पर वैज्ञानिक पेपर्स को प्रोसेस करने पर ध्यान केंद्रित करेंगे। [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) में 7000 से अधिक (लेखन के समय) COVID पर पेपर्स उपलब्ध हैं, जिनमें मेटाडेटा और एब्स्ट्रैक्ट्स शामिल हैं (और लगभग आधे के लिए पूरा टेक्स्ट भी उपलब्ध है)।
इस डेटा सेट का उपयोग करके [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**: हम इस रिपॉजिटरी के हिस्से के रूप में डेटा सेट की एक प्रति प्रदान नहीं करते हैं। आपको पहले [`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) डेटा सेट डाउनलोड कर सकते हैं, लेकिन इसमें मेटाडेटा फाइल के अलावा सभी पूर्ण टेक्स्ट शामिल होंगे।
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) खोलें और इसे ऊपर से नीचे तक पढ़ें। आप सेल्स को निष्पादित कर सकते हैं और अंत में छोड़े गए कुछ चैलेंज को भी कर सकते हैं।
[`notebook-papers.ipynb`](notebook-papers.ipynb) खोलें और इसे ऊपर से नीचे तक पढ़ें। आप सेल्स को भी चला सकते हैं और अंत में छोड़े गए कुछ चैलेंज को हल कर सकते हैं।
![Covid मेडिकल ट्रीटमेंट](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid मेडिकल ट्रीटमेंट](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.hi.png)
## इमेज डेटा प्रोसेसिंग
हाल ही में, बहुत शक्तिशाली 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) मॉडल को कुछ विशिष्ट वस्तुओं का पता लगाने के लिए प्रशिक्षित कर सकते हैं।
* **इमेज क्लासिफिकेशन**, जो आपको इमेज को प्री-डिफाइंड क्लासेस में वर्गीकृत करने में मदद कर सकता है। आप [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/) में हम 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 को गहराई से सीखना एक अच्छा विचार हो सकता है!
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -274,7 +274,7 @@ df = pd.read_csv('file.csv')
**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](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) पर लर्निंग पाथ
* [Python के साथ अपने पहले कदम उठाएं](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn पर लर्निंग पाथ
## असाइनमेंट
@ -287,4 +287,4 @@ df = pd.read_csv('file.csv')
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,27 +1,27 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T12:02:48+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:28:08+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "hk"
}
-->
# 使用數據Python 和 Pandas 庫
| ![由 [(@sketchthedocs)](https://sketchthedocs.dev) 繪製的草圖筆記](../../sketchnotes/07-WorkWithPython.png) |
| ![ 由 [(@sketchthedocs)](https://sketchthedocs.dev) 繪製的手繪筆記 ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| 使用 Python - _由 [@nitya](https://twitter.com/nitya) 繪製的草圖筆記_ |
| 使用 Python - _由 [@nitya](https://twitter.com/nitya) 繪製的手繪筆記_ |
[![介紹影片](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![介紹影片](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.hk.png)](https://youtu.be/dZjWOGbsN4Y)
雖然數據庫提供了非常高效的方式來存儲數據並使用查詢語言進行查詢,但最靈活的數據處理方式是編寫自己的程序來操作數據。在許多情況下,使用數據庫查詢可能更有效。然而,在某些需要更複雜數據處理的情況下,使用 SQL 並不容易完成這些操作。
數據處理可以用任何編程語言來編寫,但些語言在處理數據方面更高效。數據科學家通常偏好以下幾種語言之一:
數據處理可以用任何編程語言來編寫,但些語言在處理數據方面更高效。數據科學家通常偏好以下幾種語言之一:
* **[Python](https://www.python.org/)**:一種通用編程語言,因其簡單易學,常被認為是初學者的最佳選擇之一。Python 擁有許多額外的庫,可以幫助解決許多實際問題,例如從 ZIP 壓縮檔中提取數據或將圖片轉換為灰階。除了數據科學Python 還常用於網頁開發。
* **[Python](https://www.python.org/)**:一種通用編程語言,因其簡單常被認為是初學者的最佳選擇之一。Python 擁有許多額外的庫,可以幫助解決許多實際問題,例如從 ZIP 壓縮檔中提取數據或將圖片轉換為灰階。除了數據科學Python 還常用於網頁開發。
* **[R](https://www.r-project.org/)**一個專為統計數據處理而開發的傳統工具箱。它擁有大量的庫CRAN使其成為數據處理的良好選擇。然而R 並不是通用編程語言,通常僅用於數據科學領域。
* **[Julia](https://julialang.org/)**:另一種專為數據科學開發的語言。它旨在提供比 Python 更好的性能,是進行科學實驗的強大工具。
* **[Julia](https://julialang.org/)**:另一種專為數據科學開發的語言。它旨在提供比 Python 更好的性能,是科學實驗的強大工具。
在本課中,我們將專注於使用 Python 進行簡單的數據處理。我們假設您對該語言已有基本的了解。如果您想更深入地學習 Python可以參考以下資源
@ -32,23 +32,23 @@ CO_OP_TRANSLATOR_METADATA:
我們將專注於一些數據處理的例子,而不是全面介紹所有相關庫。這樣可以讓您了解主要的可能性,並在需要時知道去哪裡尋找解決方案。
> **最有用的建議**:當您需要對數據執行某些操作但不知道如何時,嘗試在互聯網上搜索。[Stackoverflow](https://stackoverflow.com/) 通常包含許多針對常見任務的 Python 代碼示例。
> **最有用的建議**:當您需要對數據執行某些操作但不知道如何實現時,嘗試在互聯網上搜索。[Stackoverflow](https://stackoverflow.com/) 通常包含許多針對常見任務的 Python 代碼示例。
## [課前測驗](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## 表格數據與 DataFrame
當我們討論關係型數據庫時,您已經接觸過表格數據。當您擁有大量數據,並且這些數據存儲在許多不同的關聯表中時,使用 SQL 來處理它們是非常合理的。然而,在許多情況下,我們擁有一個數據表,並需要對這些數據進行一些**理解**或**洞察**,例如分佈情況、值之間的相關性等。在數據科學中,經常需要對原始數據進行一些轉換,然後進行可視化。這兩個步驟都可以輕鬆地使用 Python 完成。
當我們討論關係型數據庫時,您已經接觸過表格數據。當您擁有大量數據,並且這些數據存儲在許多不同的關聯表中時,使用 SQL 來處理它們是非常合理的。然而,在許多情況下,我們擁有一個數據表,並需要對該數據獲得一些**理解**或**洞察**,例如分佈情況、值之間的相關性等。在數據科學中,經常需要對原始數據進行一些轉換,然後進行可視化。這兩個步驟都可以輕鬆地使用 Python 完成。
Python 中有兩個非常有用的庫可以幫助您處理表格數據:
* **[Pandas](https://pandas.pydata.org/)**:允許您操作所謂的 **DataFrame**,類似於關係型表格。您可以擁有命名的列,並對行、列以及整個 DataFrame 執行不同的操作。
* **[Numpy](https://numpy.org/)**:用於處理 **張量**(即多維 **數組**)的庫。數組中的值具有相同的基礎類型,它比 DataFrame 更簡單,但提供了更多的數學操作,並且開銷更小。
* **[Numpy](https://numpy.org/)**:用於處理 **張量**(即多維 **數組**)的庫。數組中的值具有相同的基礎類型,並且比 DataFrame 更簡單,但它提供了更多的數學操作,並且開銷更小。
此外,還有幾個您應該了解的庫:
* **[Matplotlib](https://matplotlib.org/)**:用於數據可視化和繪製圖表的庫
* **[SciPy](https://www.scipy.org/)**:包含一些額外科學功能的庫。我們在討論概率和統計時已經接觸過這個
* **[SciPy](https://www.scipy.org/)**:包含一些額外科學函數的庫。我們在討論概率和統計時已經接觸過該
以下是您通常在 Python 程序開頭用於導入這些庫的代碼:
以下是您通常在 Python 程序開頭導入這些庫的代碼:
```python
import numpy as np
import pandas as pd
@ -62,9 +62,10 @@ Pandas 圍繞幾個基本概念構建。
**Series** 是一組值的序列,類似於列表或 numpy 數組。主要區別在於 Series 還有一個 **索引**,當我們對 Series 進行操作(例如相加)時,索引會被考慮在內。索引可以簡單如整數行號(從列表或數組創建 Series 時默認使用的索引),也可以具有複雜結構,例如日期區間。
> **注意**:在隨附的筆記本 [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) 中有一些 Pandas 的入門代碼。我們在這裡僅概述一些示例,您可以查看完整的筆記本。
> **注意**:在隨附的筆記本 [`notebook.ipynb`](notebook.ipynb) 中有一些 Pandas 的入門代碼。我們在這裡僅概述一些示例,您可以查看完整的筆記本。
舉個例子:我們想分析我們冰淇淋店的銷售情況。讓我們生成一個銷售數據的 Series某段時間內每天售出的數量
舉個例子:我們想分析我們冰淇淋店的銷售情況。讓我們生成一段時間內的銷售數據(每天售出的數量):
```python
start_date = "Jan 1, 2020"
end_date = "Mar 31, 2020"
@ -73,7 +74,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![時間序列圖](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![時間序列圖](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.hk.png)
假設每週我們都會為朋友舉辦派對,並額外準備 10 盒冰淇淋。我們可以創建另一個以週為索引的 Series 來展示這一點:
```python
@ -84,20 +85,20 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![時間序列圖](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![時間序列圖](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.hk.png)
> **注意**:我們沒有使用簡單的語法 `total_items+additional_items`。如果這樣做,我們會在結果 Series 中得到許多 `NaN`*非數值*)值。這是因為在 `additional_items` Series 的某些索引點上存在缺失值,並且將 `NaN` 與任何值相加會得到 `NaN`。因此,我們需要在相加時指定 `fill_value` 參數。
> **注意**:我們並未使用簡單的語法 `total_items+additional_items`。如果這樣做,結果 Series 中會有許多 `NaN`*非數值*)值。這是因為在 `additional_items` Series 的某些索引點上存在缺失值,而將 `NaN` 與任何值相加的結果都是 `NaN`。因此,我們需要在相加時指定 `fill_value` 參數。
對於時間序列,我們還可以使用不同的時間間隔對序列進行**重採樣**。例如,假設我們想計算每月的平均銷售量。我們可以使用以下代碼:
對於時間序列,我們還可以使用不同的時間間隔對其進行**重採樣**。例如,假設我們想計算每月的平均銷售量,可以使用以下代碼:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![每月時間序列平均值](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![每月時間序列平均值](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.hk.png)
### DataFrame
DataFrame 本質上是具有相同索引的多個 Series 的集合。我們可以將個 Series 組合成一個 DataFrame
DataFrame 本質上是具有相同索引的多個 Series 的集合。我們可以將個 Series 組合成一個 DataFrame
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -135,11 +136,11 @@ df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
以下是我們可以對 DataFrame 執行的一些最重要操作:
**選擇**。我們可以通過 `df['A']` 選擇單個列——此操作返回一個 Series。我們還可以通過 `df[['B','A']]` 選擇列的子集到另一個 DataFrame 中——此操作返回另一個 DataFrame。
**選擇**。我們可以通過 `df['A']` 選擇單個列——此操作返回一個 Series。我們還可以通過 `df[['B','A']]` 選擇列的子集到另一個 DataFrame 中——此操作返回另一個 DataFrame。
**篩選**符合條件的行。例如,要僅保留列 `A` 大於 5 的行,我們可以寫 `df[df['A']>5]`
> **注意**:篩選的工作方式如下。表達式 `df['A']<5` 返回一個布爾 Series指示原始 Series `df['A']` 的每個元素是否`True``False`。當布爾 Series 用作索引時,它返回 DataFrame 中的行子集。因此,不能使用任意的 Python 布爾表達式,例如,寫 `df[df['A']>5 and df['A']<7]` 是錯誤的。相反,您應該使用布爾 Series 的特殊 `&` 操作,寫作 `df[(df['A']>5) & (df['A']<7)]`*括號在這裡很重要*)。
> **注意**:篩選的工作方式如下。表達式 `df['A']<5` 返回一個布爾 Series指示原始 Series `df['A']` 的每個元素是否滿足條件。當布爾 Series 用作索引時,它返回 DataFrame 中的行子集。因此,不能使用任意的 Python 布爾表達式,例如,寫 `df[df['A']>5 and df['A']<7]` 是錯誤的。相反,您應該使用布爾 Series 的特殊 `&` 操作,寫作 `df[(df['A']>5) & (df['A']<7)]`*括號在這裡很重要*)。
**創建新的可計算列**。我們可以通過直觀的表達式輕鬆為 DataFrame 創建新的可計算列:
```python
@ -150,7 +151,7 @@ df['DivA'] = df['A']-df['A'].mean()
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
後一個示例雖然語法正確,但給出了錯誤的結果,因為它將 Series `B` 的長度賦值給列中的所有值,而不是我們預期的每個元素的長度。
後一個示例雖然語法正確,但給出了錯誤的結果,因為它將 Series `B` 的長度賦值給所有值,而不是我們預期的每個元素的長度。
如果我們需要計算這樣的複雜表達式,可以使用 `apply` 函數。最後一個示例可以寫成如下:
```python
@ -173,14 +174,14 @@ df['LenB'] = df['B'].apply(len)
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**基於數字選擇行**可以使用 `iloc` 結構。例如,要從 DataFrame 中選擇前 5 行:
**基於行號選擇行**可以使用 `iloc` 結構。例如,要從 DataFrame 中選擇前 5 行:
```python
df.iloc[:5]
```
**分組**通常用於獲得類似於 Excel 中 *樞紐分析表* 的結果。假設我們想計算列 `A` 的平均值,按 `LenB` 的每個值分組。我們可以按 `LenB` 將 DataFrame 分組,然後調用 `mean`
**分組**通常用於獲得類似於 Excel 中*樞軸表*的結果。假設我們想計算每個 `LenB` 值對應的列 `A` 的平均值。我們可以按 `LenB` 將 DataFrame 分組,然後調用 `mean`
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
如果我們需要計算平均值和組中的元素數量,則可以使用更複雜的 `aggregate` 函數:
```python
@ -199,67 +200,67 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### 獲取數據
我們已經看到如何輕鬆地從 Python 對象構建 Series 和 DataFrame。然而數據通常以文本文件或 Excel 表格的形式出現。幸運的是Pandas 為我們提供了一種簡單的方法來從磁碟中載數據。例如,讀取 CSV 文件就像這樣簡單:
我們已經看到如何輕鬆地從 Python 對象構建 Series 和 DataFrames。然而,數據通常以文本文件或 Excel 表格的形式存在。幸運的是Pandas 為我們提供了一種簡單的方法來從磁碟中載數據。例如,讀取 CSV 文件就像這樣簡單:
```python
df = pd.read_csv('file.csv')
```
我們將在“挑戰”部分中看到更多載數據的例子,包括從外部網站獲取數據。
我們將在“挑戰”部分中看到更多載數據的例子,包括從外部網站獲取數據。
### 打印繪圖
### 打印繪圖
數據科學家經常需要探索數據,因此能夠將數據可視化非常重要。當 DataFrame 很大時,我們通常只打印出前幾行來確保我們的操作是正確的。這可以通過調用 `df.head()` 完成。如果你在 Jupyter Notebook 中運行,它會以漂亮的表格形式打印出 DataFrame。
數據科學家經常需要探索數據,因此能夠可視化數據非常重要。當 DataFrame 很大時,我們通常只需要打印出前幾行來確保我們的操作是正確的。這可以通過調用 `df.head()` 完成。如果你在 Jupyter Notebook 中運行,它會以漂亮的表格形式打印出 DataFrame。
我們還看到使用 `plot` 函數來可視化某些列的用法。雖然 `plot`許多任務非常有用,並且通過 `kind=` 參數支持多種圖表類型,但你也可以使用原始的 `matplotlib` 庫來繪製更複雜的圖表。我們將在單獨的課程中詳細介紹數據可視化。
我們還看到使用 `plot` 函數來可視化某些列的用法。雖然 `plot` 對許多任務非常有用,並且通過 `kind=` 參數支持多種不同的圖表類型,但你也可以使用原始的 `matplotlib` 庫來繪製更複雜的圖表。我們將在單獨的課程中詳細介紹數據可視化。
這個概述涵蓋了 Pandas 的一些重要概念,但這個庫非常豐富,你可以用它做的事情幾乎是無限的!現在,讓我們應用這些知識來解決具體問題。
這個概述涵蓋了 Pandas 的最重要概念,但這個庫非常豐富,幾乎沒有你不能用它完成的事情!現在讓我們應用這些知識來解決具體問題。
## 🚀 挑戰 1分析 COVID 傳播
我們將專注於的第一個問題是建模 COVID-19 的流行病傳播。為此,我們將使用由 [約翰霍普金斯大學](https://jhu.edu/) 的 [系統科學與工程中心](https://systems.jhu.edu/) (CSSE) 提供的不同國家感染人數數據。數據集可在 [這個 GitHub 存庫](https://github.com/CSSEGISandData/COVID-19) 中獲得
我們將專注於的第一個問題是 COVID-19 的流行病傳播建模。為了做到這一點,我們將使用由 [約翰霍普金斯大學](https://jhu.edu/) 的 [系統科學與工程中心](https://systems.jhu.edu/) (CSSE) 提供的不同國家感染人數數據。數據集可在 [這個 GitHub 庫](https://github.com/CSSEGISandData/COVID-19) 中找到
由於我們想展示如何處理數據,我們邀請你打開 [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) 並從頭到尾閱讀它。你還可以執行單元格,並完成我們在最後為你留下的一些挑戰。
由於我們想展示如何處理數據,我們邀請你打開 [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) 並從頭到尾閱讀。你也可以執行單元格,並完成我們在最後留下的一些挑戰。
![COVID 傳播](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID 傳播](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.hk.png)
> 如果你不知道如何在 Jupyter Notebook 中運行代碼,可以查看 [這篇文章](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)。
## 處理非結構化數據
雖然數據通常以表格形式出現,但在某些情況下,我們需要處理非結構化數據,例如文本或圖像。在這種情況下,為了應用我們上面看到的數據處理技術,我們需要以某種方式**提取**結構化數據。以下是一些例子:
雖然數據通常以表格形式出現,但在某些情況下我們需要處理較少結構化的數據,例如文本或圖片。在這種情況下,要應用我們上面看到的數據處理技術,我們需要以某種方式**提取**結構化數據。以下是一些例子:
* 從文本中提取關鍵詞,並查看這些關鍵詞出現的頻率
* 從文本中提取關鍵字,並查看這些關鍵字出現的頻率
* 使用神經網絡提取圖片中物體的信息
* 獲取視頻鏡頭中人物的情感信息
## 🚀 挑戰 2分析 COVID 論文
## 🚀 挑戰 2分析 COVID 相關論文
在這個挑戰中,我們將繼續關注 COVID 大流行的主題,並專注於處理相關的科學論文。有一個 [CORD-19 數據集](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge),其中包含超過 7000 篇(撰寫本文時)關於 COVID 的論文,並附有元數據和摘要(其中約一半還提供了全文)。
在這個挑戰中,我們將繼續探討 COVID 疫情的主題,並專注於處理相關的科學論文。有一個 [CORD-19 數據集](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge),其中包含超過 7000 篇(撰寫時)關於 COVID 的論文,並提供了元數據和摘要(其中約一半還提供了全文)。
使用 [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) 無需註冊下載數據集,但它將包括所有全文以及元數據文件。
> **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) 無需註冊下載數據集,但它將包括所有全文以及元數據文件。
打開 [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) 並從頭到尾閱讀它。你還可以執行單元格,並完成我們在最後為你留下的一些挑戰。
打開 [`notebook-papers.ipynb`](notebook-papers.ipynb) 並從頭到尾閱讀。你也可以執行單元格,並完成我們在最後留下的一些挑戰。
![COVID 醫療處理](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![COVID 醫療處理](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.hk.png)
## 處理圖數據
## 處理圖數據
最近,已經開發出非常強大的 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) 模型來檢測一些特定的感興趣物體。
* **片分類**,可以幫助你將圖片分類到預定義的類別之一。你可以使用像 [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) 調用,因此可以輕鬆地集成到你的數據探索工作流程中。
以下是一些從圖像數據源中探索數據的例子:
* 在博客文章 [如何在無需編碼的情況下學習數據科學](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) 建可解釋的模型。
以下是一些探索圖片數據的例子:
* 在博客文章 [如何在無需編碼的情況下學習數據科學](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 可能是一個好主意!
## [課後測驗](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -269,12 +270,12 @@ df = pd.read_csv('file.csv')
* [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) 教程
* 官方 [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)
**學習 Python**
* [用 Turtle Graphics 和分形圖形趣味學習 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)
* [用 Turtle Graphics 和分形圖以有趣的方式學習 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) 上的學習路徑
## 作業
@ -287,4 +288,4 @@ df = pd.read_csv('file.csv')
---
**免責聲明**
此文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任
本文件已使用人工智能翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始語言的文件應被視為權威來源。對於重要信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋概不負責

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T19:18:23+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T16:01:59+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "hr"
}
@ -13,35 +13,35 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Rad s Pythonom - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![Intro Video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.hr.png)](https://youtu.be/dZjWOGbsN4Y)
Iako baze podataka nude vrlo učinkovite načine za pohranu podataka i njihovo pretraživanje pomoću jezika upita, najfleksibilniji način obrade podataka je pisanje vlastitog programa za manipulaciju podacima. U mnogim slučajevima, upit u bazi podataka bio bi učinkovitiji način. Međutim, u nekim slučajevima kada je potrebna složenija obrada podataka, to se ne može lako postići pomoću SQL-a.
Obrada podataka može se programirati u bilo kojem programskom jeziku, ali postoje određeni jezici koji su na višoj razini u radu s podacima. Data znanstvenici obično preferiraju jedan od sljedećih jezika:
* **[Python](https://www.python.org/)**, opći programski jezik, često se smatra jednim od najboljih izbora za početnike zbog svoje jednostavnosti. Python ima mnogo dodatnih biblioteka koje vam mogu pomoći u rješavanju mnogih praktičnih problema, poput izdvajanja podataka iz ZIP arhive ili pretvaranja slike u sivu skalu. Osim u data znanosti, Python se često koristi i za razvoj weba.
* **[R](https://www.r-project.org/)** je tradicionalni alat razvijen s obradom statističkih podataka na umu. Također sadrži veliku zbirku biblioteka (CRAN), što ga čini dobrim izborom za obradu podataka. Međutim, R nije opći programski jezik i rijetko se koristi izvan područja data znanosti.
* **[Julia](https://julialang.org/)** je još jedan jezik razvijen posebno za data znanost. Namijenjen je pružanju bolje performanse od Pythona, što ga čini izvrsnim alatom za znanstvene eksperimente.
* **[R](https://www.r-project.org/)** je tradicionalni alat razvijen s ciljem statističke obrade podataka. Također sadrži veliku zbirku biblioteka (CRAN), što ga čini dobrim izborom za obradu podataka. Međutim, R nije opći programski jezik i rijetko se koristi izvan područja data znanosti.
* **[Julia](https://julialang.org/)** je još jedan jezik razvijen posebno za data znanost. Namijenjen je pružanju bolje performanse od Pythona, što ga čini odličnim alatom za znanstvene eksperimente.
U ovoj lekciji fokusirat ćemo se na korištenje Pythona za jednostavnu obradu podataka. Pretpostavit ćemo osnovno poznavanje jezika. Ako želite dublje istražiti Python, možete se obratiti jednom od sljedećih resursa:
U ovoj lekciji fokusirat ćemo se na korištenje Pythona za jednostavnu obradu podataka. Pretpostavit ćemo osnovno poznavanje jezika. Ako želite dublje istražiti Python, možete se obratiti jednom od sljedećih izvora:
* [Naučite Python na zabavan način s Turtle Graphics i Fraktalima](https://github.com/shwars/pycourse) - GitHub tečaj za brzi uvod u Python programiranje
* [Naučite Python na zabavan način uz Turtle Graphics i Fraktale](https://github.com/shwars/pycourse) - GitHub tečaj za brzi uvod u Python programiranje
* [Napravite svoje prve korake s Pythonom](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Put učenja na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Podaci mogu dolaziti u mnogim oblicima. U ovoj lekciji razmotrit ćemo tri oblika podataka - **tablični podaci**, **tekst** i **slike**.
Fokusirat ćemo se na nekoliko primjera obrade podataka, umjesto da vam damo potpuni pregled svih povezanih biblioteka. To će vam omogućiti da steknete osnovnu ideju o tome što je moguće i ostaviti vas s razumijevanjem gdje pronaći rješenja za svoje probleme kada vam zatrebaju.
Fokusirat ćemo se na nekoliko primjera obrade podataka, umjesto da vam damo potpuni pregled svih povezanih biblioteka. To će vam omogućiti da steknete osnovnu ideju o tome što je moguće, i ostaviti vas s razumijevanjem gdje pronaći rješenja za svoje probleme kada vam zatrebaju.
> **Najkorisniji savjet**. Kada trebate izvršiti određenu operaciju na podacima, a ne znate kako to učiniti, pokušajte to potražiti na internetu. [Stackoverflow](https://stackoverflow.com/) obično sadrži mnogo korisnih uzoraka koda u Pythonu za mnoge tipične zadatke.
## [Pre-lecture kviz](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tablični Podaci i Dataframeovi
Već ste se susreli s tabličnim podacima kada smo govorili o relacijskim bazama podataka. Kada imate puno podataka, a oni su sadržani u mnogim različitim povezanim tablicama, definitivno ima smisla koristiti SQL za rad s njima. Međutim, postoje mnogi slučajevi kada imamo tablicu podataka i trebamo steći neko **razumijevanje** ili **uvid** u te podatke, poput distribucije, korelacije između vrijednosti itd. U data znanosti postoji mnogo slučajeva kada trebamo izvršiti neke transformacije originalnih podataka, praćene vizualizacijom. Oba ta koraka mogu se lako obaviti pomoću Pythona.
Već ste se susreli s tabličnim podacima kada smo govorili o relacijskim bazama podataka. Kada imate puno podataka, i oni su sadržani u mnogim različitim povezanim tablicama, definitivno ima smisla koristiti SQL za rad s njima. Međutim, postoje mnogi slučajevi kada imamo tablicu podataka i trebamo steći neko **razumijevanje** ili **uvid** u te podatke, poput distribucije, korelacije između vrijednosti itd. U data znanosti, postoji mnogo slučajeva kada trebamo izvršiti neke transformacije originalnih podataka, praćene vizualizacijom. Oba ta koraka mogu se lako izvršiti pomoću Pythona.
Postoje dvije najkorisnije biblioteke u Pythonu koje vam mogu pomoći u radu s tabličnim podacima:
* **[Pandas](https://pandas.pydata.org/)** omogućuje manipulaciju tzv. **Dataframeovima**, koji su analogni relacijskim tablicama. Možete imati imenovane stupce i izvoditi različite operacije na redovima, stupcima i dataframeovima općenito.
* **[Numpy](https://numpy.org/)** je biblioteka za rad s **tensoreima**, tj. višedimenzionalnim **nizovima**. Niz ima vrijednosti istog osnovnog tipa i jednostavniji je od dataframea, ali nudi više matematičkih operacija i stvara manje opterećenje.
* **[Pandas](https://pandas.pydata.org/)** omogućuje manipulaciju tzv. **Dataframeovima**, koji su analogni relacijskim tablicama. Možete imati imenovane stupce i izvršavati različite operacije na redovima, stupcima i dataframeovima općenito.
* **[Numpy](https://numpy.org/)** je biblioteka za rad s **tensori**, tj. višedimenzionalnim **nizovima**. Niz ima vrijednosti istog osnovnog tipa i jednostavniji je od dataframea, ali nudi više matematičkih operacija i stvara manje opterećenje.
Postoji i nekoliko drugih biblioteka koje biste trebali znati:
* **[Matplotlib](https://matplotlib.org/)** je biblioteka koja se koristi za vizualizaciju podataka i crtanje grafova
@ -59,9 +59,9 @@ Pandas se temelji na nekoliko osnovnih koncepata.
### Series
**Series** je niz vrijednosti, sličan listi ili numpy nizu. Glavna razlika je što series također ima **indeks**, i kada radimo s series (npr. zbrajamo ih), indeks se uzima u obzir. Indeks može biti jednostavan kao broj retka (to je indeks koji se koristi prema zadanim postavkama pri stvaranju series iz liste ili niza), ili može imati složenu strukturu, poput vremenskog intervala.
**Series** je niz vrijednosti, sličan listi ili numpy nizu. Glavna razlika je što series također ima **indeks**, i kada radimo s series (npr., zbrajamo ih), indeks se uzima u obzir. Indeks može biti jednostavan kao broj retka (to je indeks koji se koristi prema zadanim postavkama pri stvaranju series iz liste ili niza), ili može imati složenu strukturu, poput vremenskog intervala.
> **Napomena**: U pratećem notebooku [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) nalazi se uvodni kod za Pandas. Ovdje ćemo samo navesti neke primjere, a vi ste svakako dobrodošli provjeriti cijeli notebook.
> **Napomena**: U pratećem notebooku [`notebook.ipynb`](notebook.ipynb) nalazi se uvodni kod za Pandas. Ovdje ćemo samo navesti neke primjere, a vi ste svakako dobrodošli provjeriti cijeli notebook.
Razmotrimo primjer: želimo analizirati prodaju našeg kioska za sladoled. Generirat ćemo niz brojeva prodaje (broj prodanih artikala svaki dan) za određeni vremenski period:
@ -73,7 +73,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Grafikon vremenskog niza](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Time Series Plot](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.hr.png)
Sada pretpostavimo da svaki tjedan organiziramo zabavu za prijatelje i uzimamo dodatnih 10 paketa sladoleda za zabavu. Možemo stvoriti drugi niz, indeksiran po tjednu, kako bismo to prikazali:
```python
@ -84,16 +84,16 @@ Kada zbrojimo dva niza, dobijemo ukupni broj:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Grafikon vremenskog niza](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Time Series Plot](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.hr.png)
> **Napomena** da ne koristimo jednostavnu sintaksu `total_items+additional_items`. Da jesmo, dobili bismo puno `NaN` (*Not a Number*) vrijednosti u rezultirajućem nizu. To je zato što nedostaju vrijednosti za neke točke indeksa u nizu `additional_items`, a dodavanje `NaN` bilo čemu rezultira `NaN`. Stoga moramo navesti parametar `fill_value` tijekom zbrajanja.
> **Napomena** da ne koristimo jednostavnu sintaksu `total_items+additional_items`. Da jesmo, dobili bismo puno `NaN` (*Not a Number*) vrijednosti u rezultirajućem nizu. To je zato što nedostaju vrijednosti za neke točke indeksa u nizu `additional_items`, a zbrajanje `NaN` s bilo čim rezultira `NaN`. Stoga trebamo specificirati parametar `fill_value` tijekom zbrajanja.
S vremenskim nizovima također možemo **ponovno uzorkovati** nizove s različitim vremenskim intervalima. Na primjer, pretpostavimo da želimo izračunati prosječni obujam prodaje mjesečno. Možemo koristiti sljedeći kod:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Mjesečni prosjeci vremenskog niza](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Monthly Time Series Averages](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.hr.png)
### DataFrame
@ -109,7 +109,7 @@ To će stvoriti horizontalnu tablicu poput ove:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Također možemo koristiti Series kao stupce i odrediti nazive stupaca pomoću rječnika:
Također možemo koristiti Series kao stupce i specificirati nazive stupaca pomoću rječnika:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -131,9 +131,9 @@ To će nam dati tablicu poput ove:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Ovdje `.T` označava operaciju transponiranja DataFramea, tj. promjenu redova i stupaca, a operacija `rename` omogućuje nam preimenovanje stupaca kako bi odgovarali prethodnom primjeru.
Ovdje `.T` označava operaciju transponiranja DataFramea, tj. zamjenu redova i stupaca, a operacija `rename` omogućuje nam preimenovanje stupaca kako bi odgovarali prethodnom primjeru.
Evo nekoliko najvažnijih operacija koje možemo izvesti na DataFrameovima:
Evo nekoliko najvažnijih operacija koje možemo izvršiti na DataFrameovima:
**Odabir stupaca**. Možemo odabrati pojedinačne stupce pisanjem `df['A']` - ova operacija vraća Series. Također možemo odabrati podskup stupaca u drugi DataFrame pisanjem `df[['B','A']]` - ovo vraća drugi DataFrame.
@ -141,16 +141,16 @@ Evo nekoliko najvažnijih operacija koje možemo izvesti na DataFrameovima:
> **Napomena**: Način na koji filtriranje funkcionira je sljedeći. Izraz `df['A']<5` vraća boolean series, koji označava je li izraz `True` ili `False` za svaki element originalnog niza `df['A']`. Kada se boolean series koristi kao indeks, vraća podskup redova u DataFrameu. Stoga nije moguće koristiti proizvoljan Python boolean izraz, na primjer, pisanje `df[df['A']>5 and df['A']<7]` bilo bi pogrešno. Umjesto toga, trebali biste koristiti posebnu `&` operaciju na boolean series, pisanjem `df[(df['A']>5) & (df['A']<7)]` (*zagrade su ovdje važne*).
**Stvaranje novih izračunljivih stupaca**. Možemo lako stvoriti nove izračunljive stupce za naš DataFrame koristeći intuitivan izraz poput ovog:
**Stvaranje novih izračunljivih stupaca**. Lako možemo stvoriti nove izračunljive stupce za naš DataFrame koristeći intuitivan izraz poput ovog:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Ovaj primjer izračunava odstupanje A od njegove srednje vrijednosti. Ono što se zapravo događa ovdje je da izračunavamo series, a zatim dodjeljujemo ovaj series lijevoj strani, stvarajući drugi stupac. Stoga ne možemo koristiti operacije koje nisu kompatibilne s series, na primjer, sljedeći kod je pogrešan:
Ovaj primjer izračunava odstupanje A od njegove srednje vrijednosti. Ono što se zapravo događa ovdje je da izračunavamo series, a zatim dodjeljujemo ovaj series lijevoj strani, stvarajući novi stupac. Stoga ne možemo koristiti operacije koje nisu kompatibilne sa series, na primjer, sljedeći kod je pogrešan:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Posljednji primjer, iako sintaktički ispravan, daje nam pogrešan rezultat jer dodjeljuje duljinu series `B` svim vrijednostima u stupcu, a ne duljinu pojedinih elemenata kako smo namjeravali.
Posljednji primjer, iako sintaktički ispravan, daje nam pogrešan rezultat jer dodjeljuje duljinu series `B` svim vrijednostima u stupcu, a ne duljinu pojedinačnih elemenata kako smo namjeravali.
Ako trebamo izračunati složene izraze poput ovog, možemo koristiti funkciju `apply`. Posljednji primjer može se napisati na sljedeći način:
```python
@ -173,14 +173,14 @@ Nakon gore navedenih operacija, završit ćemo s sljedećim DataFrameom:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Odabir redova prema brojevima** može se obaviti pomoću konstrukta `iloc`. Na primjer, za odabir prvih 5 redova iz DataFramea:
**Odabir redova prema brojevima** može se izvršiti pomoću konstrukta `iloc`. Na primjer, za odabir prvih 5 redova iz DataFramea:
```python
df.iloc[:5]
```
**Grupiranje** se često koristi za dobivanje rezultata sličnih *pivot tablicama* u Excelu. Pretpostavimo da želimo izračunati srednju vrijednost stupca `A` za svaki dani broj `LenB`. Tada možemo grupirati naš DataFrame prema `LenB` i pozvati `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ako trebamo izračunati srednju vrijednost i broj elemenata u grupi, tada možemo koristiti složeniju funkciju `aggregate`:
```python
@ -205,57 +205,57 @@ df = pd.read_csv('file.csv')
```
Vidjet ćemo više primjera učitavanja podataka, uključujući njihovo preuzimanje s vanjskih web stranica, u odjeljku "Izazov".
### Ispisivanje i Grafički Prikaz
### Ispisivanje i Vizualizacija
Data Scientist često mora istraživati podatke, stoga je važno moći ih vizualizirati. Kada je DataFrame velik, često želimo samo provjeriti radimo li sve ispravno ispisivanjem prvih nekoliko redaka. To se može učiniti pozivanjem `df.head()`. Ako ga pokrećete iz Jupyter Notebooka, ispisat će DataFrame u lijepom tabličnom obliku.
Također smo vidjeli korištenje funkcije `plot` za vizualizaciju nekih stupaca. Iako je `plot` vrlo koristan za mnoge zadatke i podržava različite vrste grafova putem parametra `kind=`, uvijek možete koristiti osnovnu biblioteku `matplotlib` za prikaz nečeg složenijeg. Detaljno ćemo obraditi vizualizaciju podataka u zasebnim lekcijama tečaja.
Također smo vidjeli korištenje funkcije `plot` za vizualizaciju nekih stupaca. Iako je `plot` vrlo koristan za mnoge zadatke i podržava mnoge različite vrste grafova putem parametra `kind=`, uvijek možete koristiti osnovnu biblioteku `matplotlib` za crtanje nečeg složenijeg. Detaljno ćemo obraditi vizualizaciju podataka u zasebnim lekcijama tečaja.
Ovaj pregled pokriva najvažnije koncepte Pandasa, no biblioteka je vrlo bogata i nema ograničenja za ono što možete učiniti s njom! Sada primijenimo ovo znanje na rješavanje specifičnog problema.
## 🚀 Izazov 1: Analiza Širenja COVID-a
## 🚀 Izazov 1: Analiza širenja COVID-a
Prvi problem na kojem ćemo se fokusirati je modeliranje širenja epidemije COVID-19. Za to ćemo koristiti podatke o broju zaraženih osoba u različitim zemljama, koje pruža [Centar za znanost o sustavima i inženjering](https://systems.jhu.edu/) (CSSE) na [Sveučilištu Johns Hopkins](https://jhu.edu/). Skup podataka dostupan je u [ovom GitHub repozitoriju](https://github.com/CSSEGISandData/COVID-19).
Prvi problem na kojem ćemo se fokusirati je modeliranje širenja epidemije COVID-19. Kako bismo to učinili, koristit ćemo podatke o broju zaraženih osoba u različitim zemljama, koje pruža [Centar za sustavnu znanost i inženjering](https://systems.jhu.edu/) (CSSE) na [Sveučilištu Johns Hopkins](https://jhu.edu/). Skup podataka dostupan je u [ovom GitHub repozitoriju](https://github.com/CSSEGISandData/COVID-19).
Budući da želimo pokazati kako se nositi s podacima, pozivamo vas da otvorite [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) i pročitate ga od početka do kraja. Također možete izvršavati ćelije i riješiti neke izazove koje smo ostavili na kraju.
Budući da želimo demonstrirati kako raditi s podacima, pozivamo vas da otvorite [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) i pročitate ga od početka do kraja. Također možete izvršavati ćelije i riješiti neke izazove koje smo ostavili na kraju.
![Širenje COVID-a](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![Širenje COVID-a](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.hr.png)
> Ako ne znate kako pokrenuti kod u Jupyter Notebooku, pogledajte [ovaj članak](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Rad s Nestrukturiranim Podacima
## Rad s nestrukturiranim podacima
Iako podaci vrlo često dolaze u tabličnom obliku, u nekim slučajevima moramo se nositi s manje strukturiranim podacima, na primjer, tekstom ili slikama. U tom slučaju, kako bismo primijenili tehnike obrade podataka koje smo vidjeli, moramo nekako **izvući** strukturirane podatke. Evo nekoliko primjera:
Iako podaci vrlo često dolaze u tabličnom obliku, u nekim slučajevima moramo raditi s manje strukturiranim podacima, na primjer, tekstom ili slikama. U tom slučaju, kako bismo primijenili tehnike obrade podataka koje smo vidjeli gore, moramo nekako **izvući** strukturirane podatke. Evo nekoliko primjera:
* Izvlačenje ključnih riječi iz teksta i analiza učestalosti pojavljivanja tih ključnih riječi
* Korištenje neuronskih mreža za izvlačenje informacija o objektima na slici
* Dobivanje informacija o emocijama ljudi na video snimci
## 🚀 Izazov 2: Analiza COVID Radova
## 🚀 Izazov 2: Analiza COVID radova
U ovom izazovu nastavljamo s temom pandemije COVID-a i fokusiramo se na obradu znanstvenih radova o toj temi. Postoji [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) s više od 7000 (u vrijeme pisanja) radova o COVID-u, dostupnih s metapodacima i sažecima (a za otprilike polovicu njih dostupni su i puni tekstovi).
U ovom izazovu nastavljamo s temom pandemije COVID-a i fokusiramo se na obradu znanstvenih radova o toj temi. Postoji [CORD-19 skup podataka](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) s više od 7000 (u vrijeme pisanja) radova o COVID-u, dostupnih s metapodacima i sažecima (a za otprilike polovicu njih dostupni su i puni tekstovi).
Potpuni primjer analize ovog skupa podataka koristeći [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) kognitivnu uslugu opisan je [u ovom blog postu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Razmotrit ćemo pojednostavljenu verziju ove analize.
Potpuni primjer analize ovog skupa podataka koristeći [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) kognitivnu uslugu opisan je [u ovom blog postu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Raspravljat ćemo o pojednostavljenoj verziji ove analize.
> **NOTE**: Ne pružamo kopiju skupa podataka kao dio ovog repozitorija. Možda ćete prvo morati preuzeti datoteku [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) iz [ovog skupa podataka na Kaggleu](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Može biti potrebna registracija na Kaggle. Također možete preuzeti skup podataka bez registracije [odavde](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ali uključivat će sve pune tekstove uz datoteku metapodataka.
> **NOTE**: Ne pružamo kopiju skupa podataka kao dio ovog repozitorija. Možda ćete prvo morati preuzeti datoteku [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) iz [ovog skupa podataka na Kaggleu](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Može biti potrebna registracija na Kaggle. Skup podataka možete preuzeti i bez registracije [ovdje](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ali uključivat će sve pune tekstove uz datoteku metapodataka.
Otvorite [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) i pročitajte ga od početka do kraja. Također možete izvršavati ćelije i riješiti neke izazove koje smo ostavili na kraju.
Otvorite [`notebook-papers.ipynb`](notebook-papers.ipynb) i pročitajte ga od početka do kraja. Također možete izvršavati ćelije i riješiti neke izazove koje smo ostavili na kraju.
![COVID Medicinski Tretman](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medicinski Tretman](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.hr.png)
## Obrada Podataka o Slikama
## Obrada slikovnih podataka
Nedavno su razvijeni vrlo moćni AI modeli koji nam omogućuju razumijevanje slika. Postoji mnogo zadataka koji se mogu riješiti koristeći unaprijed trenirane neuronske mreže ili cloud usluge. Neki primjeri uključuju:
* **Klasifikacija Slika**, koja vam može pomoći kategorizirati sliku u jednu od unaprijed definiranih klasa. Svoj vlastiti klasifikator slika možete lako trenirati koristeći usluge poput [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detekcija Objekata** za otkrivanje različitih objekata na slici. Usluge poput [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) mogu otkriti brojne uobičajene objekte, a možete trenirati [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) model za otkrivanje specifičnih objekata od interesa.
* **Detekcija Lica**, uključujući dob, spol i emocije. Ovo se može učiniti putem [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Klasifikacija slika**, koja vam može pomoći kategorizirati sliku u jednu od unaprijed definiranih klasa. Svoj vlastiti klasifikator slika možete lako trenirati koristeći usluge poput [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detekcija objekata** za otkrivanje različitih objekata na slici. Usluge poput [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) mogu otkriti brojne uobičajene objekte, a možete trenirati [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) model za otkrivanje specifičnih objekata od interesa.
* **Detekcija lica**, uključujući dob, spol i emocije. To se može učiniti putem [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Sve te cloud usluge mogu se pozivati koristeći [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), i stoga se lako mogu uključiti u vaš tijek obrade podataka.
Sve te cloud usluge mogu se pozivati koristeći [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), i stoga se lako mogu uključiti u vaš tijek istraživanja podataka.
Evo nekoliko primjera istraživanja podataka iz izvora slika:
* U blog postu [Kako Naučiti Data Science bez Kodiranja](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) istražujemo Instagram fotografije, pokušavajući razumjeti što ljude potiče da daju više lajkova na fotografiju. Prvo izvlačimo što je više moguće informacija iz slika koristeći [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a zatim koristimo [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) za izradu interpretabilnog modela.
* U [Radionici Studija Lica](https://github.com/CloudAdvocacy/FaceStudies) koristimo [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) za izvlačenje emocija ljudi na fotografijama s događaja, kako bismo pokušali razumjeti što ljude čini sretnima.
Evo nekoliko primjera istraživanja podataka iz slikovnih izvora:
* U blog postu [Kako učiti Data Science bez kodiranja](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) istražujemo Instagram fotografije, pokušavajući razumjeti što ljude potiče da daju više lajkova na fotografiju. Prvo izvlačimo što je više moguće informacija iz slika koristeći [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a zatim koristimo [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) za izradu interpretabilnog modela.
* U [Radionici o studijama lica](https://github.com/CloudAdvocacy/FaceStudies) koristimo [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) za izvlačenje emocija ljudi na fotografijama s događaja, kako bismo pokušali razumjeti što ljude čini sretnima.
## Zaključak
@ -263,28 +263,28 @@ Bez obzira imate li već strukturirane ili nestrukturirane podatke, koristeći P
## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Pregled i Samostalno Učenje
## Pregled i samostalno učenje
**Knjige**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Online Resursi**
* Službeni [10 minuta do Pandasa](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Dokumentacija o Pandas Vizualizaciji](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Online resursi**
* Službeni [10 minuta s Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Dokumentacija o Pandas vizualizaciji](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Učenje Pythona**
* [Naučite Python na Zabavan Način s Turtle Grafikom i Fraktalima](https://github.com/shwars/pycourse)
* [Napravite Prve Korake s Pythonom](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Put učenja na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Naučite Python na zabavan način s Turtle Graphics i fraktalima](https://github.com/shwars/pycourse)
* [Napravite svoje prve korake s Pythonom](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Zadatak
[Provedite detaljniju analizu podataka za gore navedene izazove](assignment.md)
[Provedite detaljniju studiju podataka za gore navedene izazove](assignment.md)
## Zasluge
Ovu lekciju je s ljubavlju napisao [Dmitry Soshnikov](http://soshnikov.com)
Ovu lekciju napisao je s ♥️ [Dmitry Soshnikov](http://soshnikov.com)
---
**Odricanje od odgovornosti**:
Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane ljudskog prevoditelja. Ne preuzimamo odgovornost za nesporazume ili pogrešne interpretacije koje mogu proizaći iz korištenja ovog prijevoda.
Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije proizašle iz korištenja ovog prijevoda.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T17:26:53+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:55:52+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "hu"
}
@ -13,13 +13,13 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Python használata - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![Bevezető videó](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Bevezető videó](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.hu.png)](https://youtu.be/dZjWOGbsN4Y)
Bár az adatbázisok hatékony módot kínálnak az adatok tárolására és lekérdezésére lekérdezési nyelvek segítségével, az adatok feldolgozásának legflexibilisebb módja az, ha saját programot írunk az adatok manipulálására. Sok esetben egy adatbázis-lekérdezés hatékonyabb lehet. Azonban, ha összetettebb adatfeldolgozásra van szükség, azt nem lehet könnyen SQL segítségével elvégezni.
Bár az adatbázisok hatékony módot kínálnak az adatok tárolására és lekérdezésére lekérdezési nyelvek segítségével, az adatok feldolgozásának legflexibilisebb módja az, ha saját programot írunk az adatok manipulálására. Sok esetben egy adatbázis-lekérdezés hatékonyabb megoldás lehet. Azonban, ha összetettebb adatfeldolgozásra van szükség, azt nem lehet könnyen SQL segítségével megvalósítani.
Az adatfeldolgozást bármely programozási nyelven meg lehet valósítani, de vannak olyan nyelvek, amelyek magasabb szintűek az adatokkal való munka szempontjából. Az adatelemzők általában az alábbi nyelvek egyikét részesítik előnyben:
* **[Python](https://www.python.org/)**, egy általános célú programozási nyelv, amelyet gyakran a legjobb választásnak tartanak kezdők számára egyszerűsége miatt. A Python számos kiegészítő könyvtárral rendelkezik, amelyek segítenek gyakorlati problémák megoldásában, például adatok kinyerése ZIP archívumból vagy képek szürkeárnyalatossá alakítása. Az adatelemzés mellett a Python gyakran használatos webfejlesztésre is.
* **[R](https://www.r-project.org/)** egy hagyományos eszköztár, amelyet statisztikai adatfeldolgozásra fejlesztettek ki. Nagy könyvtárgyűjteménnyel (CRAN) rendelkezik, ami jó választássá teszi az adatfeldolgozásra. Azonban az R nem általános célú programozási nyelv, és ritkán használják az adatelemzésen kívül.
* **[Python](https://www.python.org/)**, egy általános célú programozási nyelv, amelyet gyakran a legjobb választásnak tartanak kezdők számára egyszerűsége miatt. A Python számos kiegészítő könyvtárral rendelkezik, amelyek segítenek gyakorlati problémák megoldásában, például adatok kicsomagolása ZIP archívumból vagy képek szürkeárnyalatossá alakítása. Az adatelemzés mellett a Python gyakran használatos webfejlesztésre is.
* **[R](https://www.r-project.org/)** egy hagyományos eszköztár, amelyet statisztikai adatfeldolgozásra fejlesztettek ki. Széles könyvtárgyűjteménnyel (CRAN) rendelkezik, ami jó választássá teszi az adatok feldolgozására. Azonban az R nem általános célú programozási nyelv, és ritkán használják az adatelemzésen kívül.
* **[Julia](https://julialang.org/)** egy másik nyelv, amelyet kifejezetten adatelemzésre fejlesztettek ki. Jobb teljesítményt kínál, mint a Python, így kiváló eszköz tudományos kísérletezéshez.
Ebben a leckében a Python használatára összpontosítunk egyszerű adatfeldolgozási feladatokhoz. Feltételezzük, hogy alapvető ismeretekkel rendelkezik a nyelvről. Ha mélyebb betekintést szeretne kapni a Pythonba, az alábbi forrásokat ajánljuk:
@ -37,13 +37,13 @@ Néhány adatfeldolgozási példára fogunk összpontosítani, ahelyett, hogy te
## Táblázatos adatok és Dataframe-ek
Már találkozott táblázatos adatokkal, amikor a relációs adatbázisokról beszéltünk. Ha sok adatunk van, és az sok különböző, összekapcsolt táblában található, akkor egyértelműen van értelme SQL-t használni az adatok kezelésére. Azonban sok esetben, amikor van egy adatokat tartalmazó táblázatunk, és szeretnénk **megérteni** vagy **következtetéseket levonni** az adatokból, például az eloszlásról, az értékek közötti korrelációról stb., az adatelemzés során gyakran szükség van az eredeti adatok átalakítására, majd vizualizálására. Mindkét lépés könnyen elvégezhető Python segítségével.
Már találkozott táblázatos adatokkal, amikor a relációs adatbázisokról beszéltünk. Ha sok adat van, és az sok különböző, összekapcsolt táblában található, akkor határozottan érdemes SQL-t használni az adatok kezelésére. Azonban sok esetben van egy adatunk táblázat formájában, és szeretnénk **megérteni** vagy **következtetéseket levonni** az adatokból, például az eloszlásról, az értékek közötti korrelációról stb. Az adatelemzés során gyakran szükség van az eredeti adatok átalakítására, majd vizualizálására. Mindkét lépés könnyen elvégezhető Python segítségével.
Két legfontosabb Python könyvtár, amely segíthet a táblázatos adatok kezelésében:
Két legfontosabb Python könyvtár segíthet a táblázatos adatok kezelésében:
* **[Pandas](https://pandas.pydata.org/)** lehetővé teszi az úgynevezett **Dataframe-ek** manipulálását, amelyek analógok a relációs táblákkal. Lehetnek elnevezett oszlopok, és különböző műveleteket végezhetünk sorokon, oszlopokon és általában a Dataframe-eken.
* **[Numpy](https://numpy.org/)** egy könyvtár **tenszorokkal**, azaz többdimenziós **tömbökkel** való munkához. A tömb azonos típusú értékeket tartalmaz, és egyszerűbb, mint a Dataframe, de több matematikai műveletet kínál, és kevesebb erőforrást igényel.
Van néhány más könyvtár is, amelyet érdemes ismerni:
Van néhány további könyvtár, amelyet érdemes ismerni:
* **[Matplotlib](https://matplotlib.org/)** egy könyvtár, amelyet adatvizualizációra és grafikonok rajzolására használnak
* **[SciPy](https://www.scipy.org/)** egy könyvtár további tudományos funkciókkal. Már találkoztunk ezzel a könyvtárral, amikor a valószínűségről és statisztikáról beszéltünk
@ -59,11 +59,12 @@ A Pandas néhány alapvető fogalom köré épül.
### Sorozatok (Series)
A **Series** egy értékek sorozata, hasonló a listához vagy numpy tömbhöz. A fő különbség az, hogy a sorozatnak van egy **indexe**, és amikor műveleteket végzünk a sorozaton (pl. összeadjuk őket), az indexet figyelembe vesszük. Az index lehet egyszerű, mint például az egész számú sorszám (ez az alapértelmezett index, amikor listából vagy tömbből hozunk létre sorozatot), vagy lehet összetett, például dátumintervallum.
A **Series** egy értékek sorozata, hasonlóan a listához vagy numpy tömbhöz. A fő különbség az, hogy a sorozatnak van egy **indexe**, és amikor műveleteket végzünk rajta (pl. összeadjuk őket), az indexet figyelembe vesszük. Az index lehet egyszerű, mint például az egész számú sorszám (ez az alapértelmezett index, amikor listából vagy tömbből hozunk létre sorozatot), vagy lehet összetett, például dátumintervallum.
> **Megjegyzés**: Van néhány bevezető Pandas kód az ehhez tartozó notebookban [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Itt csak néhány példát vázolunk fel, és mindenképpen érdemes megnézni a teljes notebookot.
> **Megjegyzés**: Van néhány bevezető Pandas kód az ehhez tartozó notebookban [`notebook.ipynb`](notebook.ipynb). Itt csak néhány példát vázolunk fel, de mindenképpen érdemes megnézni a teljes notebookot.
Vegyünk egy példát: elemezni szeretnénk fagylaltárusító helyünk eladásait. Generáljunk egy sorozatot az eladási számokkal (naponta eladott tételek száma) egy időszakra:
Vegyünk egy példát: elemezni szeretnénk fagylaltárusító helyünk eladásait. Generáljunk egy sorozatot az eladási számokkal (naponta eladott termékek száma) egy időszakra:
```python
start_date = "Jan 1, 2020"
end_date = "Mar 31, 2020"
@ -72,7 +73,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Idősoros grafikon](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Idősor grafikon](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.hu.png)
Tegyük fel, hogy minden héten szervezünk egy baráti összejövetelt, és további 10 csomag fagylaltot viszünk a bulira. Létrehozhatunk egy másik sorozatot, amelyet hetek szerint indexelünk, hogy ezt bemutassuk:
```python
@ -83,16 +84,16 @@ Amikor összeadjuk a két sorozatot, megkapjuk a teljes számot:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Idősoros grafikon](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Idősor grafikon](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.hu.png)
> **Megjegyzés**: Nem használjuk az egyszerű `total_items+additional_items` szintaxist. Ha ezt tennénk, sok `NaN` (*Not a Number*) értéket kapnánk az eredményül kapott sorozatban. Ennek oka, hogy az `additional_items` sorozatban hiányzó értékek vannak néhány indexpontnál, és ha `NaN`-t adunk hozzá valamihez, az eredmény `NaN` lesz. Ezért meg kell adnunk a `fill_value` paramétert az összeadás során.
> **Megjegyzés**: Nem használjuk az egyszerű `total_items+additional_items` szintaxist. Ha ezt tennénk, sok `NaN` (*Not a Number*) értéket kapnánk az eredményül kapott sorozatban. Ennek oka, hogy az `additional_items` sorozatban hiányzó értékek vannak néhány indexpontnál, és ha `NaN`-t adunk hozzá bármihez, az eredmény `NaN` lesz. Ezért meg kell adnunk a `fill_value` paramétert az összeadás során.
Az idősorokkal különböző időintervallumokkal is **újramintázhatjuk** a sorozatot. Például, ha havi átlagos eladási mennyiséget szeretnénk kiszámítani, használhatjuk a következő kódot:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Havi idősoros átlagok](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Havi idősor átlagok](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.hu.png)
### DataFrame
@ -102,7 +103,7 @@ a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Ez egy vízszintes táblázatot hoz létre, mint ez:
Ez egy vízszintes táblázatot hoz létre, mint például:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
@ -112,7 +113,7 @@ Sorozatokat oszlopként is használhatunk, és megadhatjuk az oszlopneveket szó
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Ez egy ilyen táblázatot eredményez:
Ez egy ilyen táblázatot eredményez:
| | A | B |
| --- | --- | ------ |
@ -126,7 +127,7 @@ Ez egy ilyen táblázatot eredményez:
| 7 | 8 | very |
| 8 | 9 | much |
**Megjegyzés**: Ezt a táblázat-elrendezést úgy is elérhetjük, ha az előző táblázatot transzponáljuk, például az alábbi kód segítségével:
**Megjegyzés**: Ezt a táblázat-elrendezést úgy is elérhetjük, hogy az előző táblázatot transzponáljuk, például az alábbi kóddal:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
@ -136,22 +137,22 @@ Itt a `.T` a DataFrame transzponálásának műveletét jelenti, azaz a sorok é
**Oszlopok kiválasztása**. Egyedi oszlopokat választhatunk ki az `df['A']` írásával - ez a művelet egy sorozatot ad vissza. Az oszlopok egy részhalmazát egy másik DataFrame-be is kiválaszthatjuk az `df[['B','A']]` írásával - ez egy másik DataFrame-et ad vissza.
**Szűrés** bizonyos sorokra kritérium alapján. Például, ha csak azokat a sorokat szeretnénk megtartani, ahol az `A` oszlop értéke nagyobb, mint 5, akkor az `df[df['A']>5]` kódot írhatjuk.
**Szűrés** bizonyos sorokra kritérium alapján. Például, ha csak azokat a sorokat szeretnénk megtartani, ahol az `A` oszlop értéke nagyobb, mint 5, akkor írhatjuk: `df[df['A']>5]`.
> **Megjegyzés**: A szűrés működése a következő. Az `df['A']<5` kifejezés egy logikai sorozatot ad vissza, amely jelzi, hogy a kifejezés `True` vagy `False` az eredeti sorozat `df['A']` minden elemére. Amikor a logikai sorozatot indexként használjuk, az a DataFrame sorainak részhalmazát adja vissza. Ezért nem lehet tetszőleges Python logikai kifejezést használni, például az `df[df['A']>5 and df['A']<7]` írása helytelen lenne. Ehelyett speciális `&` műveletet kell használni a logikai sorozatokon, például az `df[(df['A']>5) & (df['A']<7)]` írásával (*a zárójelek itt fontosak*).
**Új számított oszlopok létrehozása**. Könnyen létrehozhatunk új számított oszlopokat a DataFrame-hez intuitív kifejezések használatával, mint például:
**Új számítható oszlopok létrehozása**. Könnyen létrehozhatunk új számítható oszlopokat a DataFrame-hez intuitív kifejezések használatával, például:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Ez a példa az `A` oszlop eltérését számítja ki az átlagértékétől. Ami valójában történik, az az, hogy egy sorozatot számítunk ki, majd ezt a sorozatot hozzárendeljük a bal oldali oszlophoz, létrehozva egy új oszlopot. Ezért nem használhatunk olyan műveleteket, amelyek nem kompatibilisek a sorozatokkal, például az alábbi kód helytelen:
Ez a példa kiszámítja az `A` eltérését az átlagértékétől. Ami valójában történik, az az, hogy kiszámítunk egy sorozatot, majd ezt a sorozatot hozzárendeljük a bal oldali oszlophoz, létrehozva egy új oszlopot. Ezért nem használhatunk olyan műveleteket, amelyek nem kompatibilisek a sorozatokkal, például az alábbi kód helytelen:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Az utóbbi példa, bár szintaktikailag helyes, rossz eredményt ad, mert a `B` sorozat hosszát rendeli hozzá az oszlop összes értékéhez, nem pedig az egyes elemek hosszát, ahogy azt szándékoztuk.
Az utóbbi példa, bár szintaktikailag helyes, rossz eredményt ad, mert a `B` sorozat hosszát rendeli hozzá az oszlop összes értékéhez, nem pedig az egyes elemek hosszát, ahogy azt szerettük volna.
Ha összetett kifejezéseket kell számítanunk, használhatjuk az `apply` függvényt. Az utolsó példa az alábbi módon írható:
Ha összetett kifejezéseket kell kiszámítanunk, használhatjuk az `apply` függvényt. Az utolsó példa így írható:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -179,9 +180,9 @@ df.iloc[:5]
**Csoportosítás** gyakran használatos olyan eredmények elérésére, amelyek hasonlóak az Excel *pivot tábláihoz*. Tegyük fel, hogy az `A` oszlop átlagértékét szeretnénk kiszámítani az egyes `LenB` értékekhez. Ekkor csoportosíthatjuk a DataFrame-et `LenB` szerint, és meghívhatjuk a `mean` függvényt:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ha az átlagot és az elemek számát szeretnénk kiszámítani a csoportban, akkor használhatunk összetettebb `aggregate` függvényt:
Ha az átlagot és az elemek számát is ki szeretnénk számítani a csoportban, akkor használhatjuk az összetettebb `aggregate` függvényt:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -197,7 +198,7 @@ Ez a következő táblázatot adja:
| 4 | 3 | 6.333333 |
| 6 | 2 | 6.000000 |
### Adatok lekérése
### Adatok beszerzése
Láttuk, milyen egyszerű Series és DataFrame-eket létrehozni Python objektumokból. Azonban az adatok általában szövegfájl vagy Excel-tábla formájában érkeznek. Szerencsére a Pandas egyszerű módot kínál az adatok betöltésére a lemezről. Például, egy CSV fájl beolvasása ilyen egyszerű:
```python
df = pd.read_csv('file.csv')
@ -206,61 +207,61 @@ További példákat fogunk látni az adatok betöltésére, beleértve az adatok
### Nyomtatás és Ábrázolás
Egy adatkutatónak gyakran kell felfedeznie az adatokat, ezért fontos, hogy képes legyen vizualizálni azokat. Ha a DataFrame nagy, sokszor csak meg akarunk győződni arról, hogy mindent helyesen csinálunk, például az első néhány sor kiírásával. Ezt a `df.head()` hívásával tehetjük meg. Ha Jupyter Notebookban futtatjuk, a DataFrame-t szép táblázatos formában fogja megjeleníteni.
Egy adatkutatónak gyakran kell felfedeznie az adatokat, ezért fontos, hogy képes legyen vizualizálni azokat. Ha a DataFrame nagy, sokszor csak meg akarunk győződni arról, hogy mindent helyesen csinálunk, például az első néhány sor kinyomtatásával. Ezt a `df.head()` hívásával tehetjük meg. Ha Jupyter Notebookban futtatjuk, a DataFrame-et szép táblázatos formában fogja megjeleníteni.
Láttuk már a `plot` függvény használatát néhány oszlop vizualizálására. Bár a `plot` nagyon hasznos sok feladathoz, és számos különböző grafikon típust támogat a `kind=` paraméter segítségével, mindig használhatjuk a nyers `matplotlib` könyvtárat valami összetettebb ábrázolásra. Az adatvizualizációt részletesen fogjuk tárgyalni külön tanfolyami leckékben.
Láttuk már a `plot` függvény használatát néhány oszlop vizualizálására. Bár a `plot` nagyon hasznos sok feladathoz, és számos különböző grafikon típust támogat a `kind=` paraméter segítségével, mindig használhatjuk a nyers `matplotlib` könyvtárat valami összetettebb ábrázolására. Az adatvizualizációt részletesen fogjuk tárgyalni külön tanfolyami leckékben.
Ez az áttekintés lefedi a Pandas legfontosabb fogalmait, azonban a könyvtár nagyon gazdag, és nincs határa annak, hogy mit lehet vele elérni! Most alkalmazzuk ezt a tudást egy konkrét probléma megoldására.
## 🚀 Kihívás 1: A COVID terjedésének elemzése
Az első probléma, amire összpontosítunk, a COVID-19 járvány terjedésének modellezése. Ehhez az egyes országokban fertőzött személyek számáról szóló adatokat fogjuk használni, amelyeket a [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) biztosít a [Johns Hopkins University](https://jhu.edu/) keretében. Az adatállomány elérhető [ebben a GitHub repozitóriumban](https://github.com/CSSEGISandData/COVID-19).
Az első probléma, amire összpontosítunk, a COVID-19 járvány terjedésének modellezése. Ehhez az egyes országokban fertőzött személyek számáról szóló adatokat fogjuk használni, amelyeket a [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) biztosít a [Johns Hopkins University](https://jhu.edu/) keretében. Az adatállomány elérhető [ebben a GitHub repóban](https://github.com/CSSEGISandData/COVID-19).
Mivel meg szeretnénk mutatni, hogyan kell az adatokkal dolgozni, arra kérünk, hogy nyisd meg a [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) fájlt, és olvasd el elejétől a végéig. A cellákat is végrehajthatod, és megoldhatod azokat a kihívásokat, amelyeket a végén hagytunk neked.
Mivel meg szeretnénk mutatni, hogyan kell az adatokkal dolgozni, arra kérünk, hogy nyisd meg a [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) fájlt, és olvasd el elejétől a végéig. A cellákat is végrehajthatod, és néhány kihívást is megoldhatsz, amelyeket a végén hagytunk neked.
![COVID Terjedés](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Terjedés](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.hu.png)
> Ha nem tudod, hogyan kell kódot futtatni Jupyter Notebookban, nézd meg [ezt a cikket](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Strukturálatlan adatok kezelése
Bár az adatok gyakran táblázatos formában érkeznek, néhány esetben kevésbé strukturált adatokkal kell dolgoznunk, például szövegekkel vagy képekkel. Ebben az esetben, hogy alkalmazni tudjuk az előbb látott adatfeldolgozási technikákat, valahogy **ki kell nyernünk** a strukturált adatokat. Íme néhány példa:
Bár az adatok gyakran táblázatos formában érkeznek, néhány esetben kevésbé strukturált adatokkal kell dolgoznunk, például szövegekkel vagy képekkel. Ilyenkor, hogy alkalmazni tudjuk az előbb látott adatfeldolgozási technikákat, valahogy **ki kell nyernünk** a strukturált adatokat. Íme néhány példa:
* Kulcsszavak kinyerése szövegből, és annak vizsgálata, hogy ezek a kulcsszavak milyen gyakran fordulnak elő
* Kulcsszavak kinyerése szövegből, és annak vizsgálata, hogy ezek milyen gyakran fordulnak elő
* Neurális hálók használata információ kinyerésére a képen lévő objektumokról
* Információ szerzése emberek érzelmeiről videokamera felvételeken
* Információ szerzése emberek érzelmeiről videokamera felvételek alapján
## 🚀 Kihívás 2: A COVID tanulmányok elemzése
## 🚀 Kihívás 2: A COVID témájú tudományos cikkek elemzése
Ebben a kihívásban folytatjuk a COVID járvány témáját, és a témával kapcsolatos tudományos tanulmányok feldolgozására összpontosítunk. Létezik egy [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge), amely több mint 7000 (az írás idején) COVID-ról szóló tanulmányt tartalmaz, metaadatokkal és absztraktokkal (és körülbelül felükhöz teljes szöveg is elérhető).
Ebben a kihívásban folytatjuk a COVID járvány témáját, és a témával kapcsolatos tudományos cikkek feldolgozására összpontosítunk. Létezik egy [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge), amely több mint 7000 (az írás idején) COVID-ról szóló cikket tartalmaz, metaadatokkal és absztraktokkal (és körülbelül felükhöz teljes szöveg is elérhető).
Egy teljes példa ennek az adatállománynak az elemzésére a [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) kognitív szolgáltatás használatával [ebben a blogbejegyzésben](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) található. Egy egyszerűsített verzióját fogjuk megvitatni ennek az elemzésnek.
A dataset elemzésének teljes példája a [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) kognitív szolgáltatás használatával [ebben a blogbejegyzésben](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) található. Egy egyszerűsített verzióját fogjuk megvitatni ennek az elemzésnek.
> **NOTE**: Az adatállomány másolatát nem biztosítjuk a repozitórium részeként. Először le kell töltened a [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) fájlt [ebből az adatállományból Kaggle-en](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Regisztráció szükséges lehet a Kaggle-en. Az adatállományt regisztráció nélkül is letöltheted [innen](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), de ez tartalmazni fogja az összes teljes szöveget a metaadat fájl mellett.
> **NOTE**: Nem biztosítunk másolatot az adatállományról ebben a repóban. Először le kell töltened a [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) fájlt [ebből a Kaggle datasetből](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Regisztráció szükséges lehet a Kaggle-nél. Regisztráció nélkül is letöltheted az adatállományt [innen](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), de ez tartalmazni fogja az összes teljes szöveget a metaadat fájl mellett.
Nyisd meg a [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) fájlt, és olvasd el elejétől a végéig. A cellákat is végrehajthatod, és megoldhatod azokat a kihívásokat, amelyeket a végén hagytunk neked.
Nyisd meg a [`notebook-papers.ipynb`](notebook-papers.ipynb) fájlt, és olvasd el elejétől a végéig. A cellákat is végrehajthatod, és néhány kihívást is megoldhatsz, amelyeket a végén hagytunk neked.
![Covid Orvosi Kezelés](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Orvosi Kezelés](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.hu.png)
## Képadatok feldolgozása
Az utóbbi időben nagyon erős AI modellek kerültek kifejlesztésre, amelyek lehetővé teszik a képek megértését. Számos feladat megoldható előre betanított neurális hálókkal vagy felhőszolgáltatásokkal. Néhány példa:
Az utóbbi időben nagyon erős AI modellek születtek, amelyek lehetővé teszik a képek megértését. Számos feladat megoldható előre betanított neurális hálókkal vagy felhőszolgáltatásokkal. Néhány példa:
* **Képklasszifikáció**, amely segíthet a képet egy előre meghatározott kategóriába sorolni. Saját képklasszifikátorokat könnyen betaníthatsz olyan szolgáltatásokkal, mint a [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Objektumfelismerés**, amely különböző objektumokat képes felismerni a képen. Olyan szolgáltatások, mint a [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) számos általános objektumot képesek felismerni, és a [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modellel specifikus érdeklődési objektumokat is felismerhetsz.
* **Képklasszifikáció**, amely segíthet a képet egy előre definiált osztályba sorolni. Saját képklasszifikátorokat könnyen betaníthatsz olyan szolgáltatásokkal, mint a [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum).
* **Objektumfelismerés**, amely lehetővé teszi különböző objektumok felismerését a képen. Olyan szolgáltatások, mint a [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) számos általános objektumot felismerhetnek, és a [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modellel specifikus érdeklődési objektumokat is felismerhetsz.
* **Arcészlelés**, beleértve az életkor, nem és érzelem felismerését. Ez megvalósítható a [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) segítségével.
Mindezek a felhőszolgáltatások hívhatók [Python SDK-k](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) segítségével, és így könnyen beépíthetők az adatfeltárási munkafolyamatba.
Íme néhány példa a képadatok forrásainak feltárására:
* A blogbejegyzésben [Hogyan tanulj adatkutatást kódolás nélkül](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) Instagram fotókat vizsgálunk, hogy megértsük, miért kapnak egyes képek több lájkot. Először a lehető legtöbb információt kinyerjük a képekből a [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) segítségével, majd az [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) segítségével értelmezhető modellt építünk.
* A [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) keretében a [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) segítségével érzelmeket nyerünk ki emberek fotóiból eseményeken, hogy megértsük, mi teszi boldoggá az embereket.
* A [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) keretében a [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) segítségével érzelmeket nyerünk ki emberek fotóiból eseményekről, hogy megértsük, mi teszi boldoggá az embereket.
## Összegzés
Akár strukturált, akár strukturálatlan adatokkal rendelkezel, Python segítségével elvégezheted az adatfeldolgozással és megértéssel kapcsolatos összes lépést. Ez valószínűleg a legflexibilisebb módja az adatfeldolgozásnak, és ezért a legtöbb adatkutató a Pythont használja elsődleges eszközként. A Python mélyreható tanulása valószínűleg jó ötlet, ha komolyan gondolod az adatkutatási utadat!
Akár strukturált, akár strukturálatlan adatokkal rendelkezel, Python segítségével elvégezheted az adatfeldolgozással és megértéssel kapcsolatos összes lépést. Ez valószínűleg a legflexibilisebb módja az adatfeldolgozásnak, és ezért az adatkutatók többsége a Pythont használja elsődleges eszközként. A Python mélyebb elsajátítása valószínűleg jó ötlet, ha komolyan veszed az adatkutatási utadat!
## [Utóelőadás kvíz](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Utó-előadás kvíz](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Áttekintés és önálló tanulás
@ -268,12 +269,12 @@ Akár strukturált, akár strukturálatlan adatokkal rendelkezel, Python segíts
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Online források**
* Hivatalos [10 perc Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) oktatóanyag
* Hivatalos [10 perc Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Dokumentáció a Pandas vizualizációról](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Python tanulása**
* [Tanulj Pythont szórakoztató módon Turtle Graphics és Fraktálok segítségével](https://github.com/shwars/pycourse)
* [Tedd meg az első lépéseket Pythonban](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) tanulási útvonal a [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) oldalon
* [Tedd meg az első lépéseket a Pythonnal](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) tanulási útvonal a [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) oldalon
## Feladat
@ -281,9 +282,9 @@ Akár strukturált, akár strukturálatlan adatokkal rendelkezel, Python segíts
## Köszönetnyilvánítás
Ezt a leckét ♥️-vel készítette [Dmitry Soshnikov](http://soshnikov.com).
Ezt a leckét ♥️-vel írta [Dmitry Soshnikov](http://soshnikov.com).
---
**Felelősség kizárása**:
Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.
**Felelősségkizárás**:
Ez a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével készült. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt a professzionális, emberi fordítás igénybevétele. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T23:49:57+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:52:03+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "id"
}
@ -13,14 +13,14 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Bekerja dengan Python - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ |
[![Video Pengantar](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Video Pengantar](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.id.png)](https://youtu.be/dZjWOGbsN4Y)
Meskipun basis data menawarkan cara yang sangat efisien untuk menyimpan data dan melakukan kueri menggunakan bahasa kueri, cara paling fleksibel untuk memproses data adalah dengan menulis program Anda sendiri untuk memanipulasi data. Dalam banyak kasus, melakukan kueri basis data akan lebih efektif. Namun, dalam beberapa kasus di mana pemrosesan data yang lebih kompleks diperlukan, hal tersebut tidak dapat dilakukan dengan mudah menggunakan SQL.
Pemrosesan data dapat diprogram dalam bahasa pemrograman apa pun, tetapi ada beberapa bahasa yang lebih tinggi tingkatannya dalam hal bekerja dengan data. Para ilmuwan data biasanya memilih salah satu dari bahasa berikut:
Pemrosesan data dapat diprogram dalam bahasa pemrograman apa pun, tetapi ada beberapa bahasa yang lebih tinggi tingkatannya dalam hal bekerja dengan data. Para ilmuwan data biasanya lebih memilih salah satu dari bahasa berikut:
* **[Python](https://www.python.org/)**, bahasa pemrograman umum yang sering dianggap sebagai salah satu pilihan terbaik untuk pemula karena kesederhanaannya. Python memiliki banyak pustaka tambahan yang dapat membantu Anda menyelesaikan banyak masalah praktis, seperti mengekstrak data dari arsip ZIP, atau mengonversi gambar menjadi skala abu-abu. Selain untuk ilmu data, Python juga sering digunakan untuk pengembangan web.
* **[Python](https://www.python.org/)**, bahasa pemrograman umum yang sering dianggap sebagai salah satu pilihan terbaik untuk pemula karena kesederhanaannya. Python memiliki banyak pustaka tambahan yang dapat membantu Anda menyelesaikan banyak masalah praktis, seperti mengekstrak data dari arsip ZIP, atau mengonversi gambar menjadi skala abu-abu. Selain ilmu data, Python juga sering digunakan untuk pengembangan web.
* **[R](https://www.r-project.org/)** adalah alat tradisional yang dikembangkan dengan pemrosesan data statistik dalam pikiran. R juga memiliki repositori pustaka yang besar (CRAN), menjadikannya pilihan yang baik untuk pemrosesan data. Namun, R bukanlah bahasa pemrograman umum dan jarang digunakan di luar domain ilmu data.
* **[Julia](https://julialang.org/)** adalah bahasa lain yang dikembangkan khusus untuk ilmu data. Julia dirancang untuk memberikan kinerja yang lebih baik dibandingkan Python, menjadikannya alat yang hebat untuk eksperimen ilmiah.
* **[Julia](https://julialang.org/)** adalah bahasa lain yang dikembangkan khusus untuk ilmu data. Julia dirancang untuk memberikan kinerja yang lebih baik daripada Python, menjadikannya alat yang hebat untuk eksperimen ilmiah.
Dalam pelajaran ini, kita akan fokus menggunakan Python untuk pemrosesan data sederhana. Kami mengasumsikan Anda sudah memiliki pemahaman dasar tentang bahasa ini. Jika Anda ingin mempelajari Python lebih dalam, Anda dapat merujuk ke salah satu sumber berikut:
@ -37,14 +37,14 @@ Kami akan fokus pada beberapa contoh pemrosesan data, alih-alih memberikan gamba
## Data Tabular dan DataFrame
Anda sudah mengenal data tabular saat kita membahas basis data relasional. Ketika Anda memiliki banyak data yang tersimpan dalam banyak tabel yang saling terhubung, menggunakan SQL jelas masuk akal. Namun, ada banyak kasus di mana kita memiliki tabel data, dan kita perlu mendapatkan **pemahaman** atau **wawasan** tentang data tersebut, seperti distribusi, korelasi antar nilai, dll. Dalam ilmu data, sering kali kita perlu melakukan beberapa transformasi pada data asli, diikuti dengan visualisasi. Kedua langkah tersebut dapat dengan mudah dilakukan menggunakan Python.
Anda sudah mengenal data tabular ketika kita membahas tentang basis data relasional. Ketika Anda memiliki banyak data yang tersimpan dalam banyak tabel yang saling terhubung, menggunakan SQL untuk bekerja dengannya adalah pilihan yang masuk akal. Namun, ada banyak kasus di mana kita memiliki tabel data, dan kita perlu mendapatkan **pemahaman** atau **wawasan** tentang data tersebut, seperti distribusi, korelasi antar nilai, dll. Dalam ilmu data, sering kali kita perlu melakukan beberapa transformasi pada data asli, diikuti dengan visualisasi. Kedua langkah tersebut dapat dengan mudah dilakukan menggunakan Python.
Ada dua pustaka paling berguna di Python yang dapat membantu Anda bekerja dengan data tabular:
Ada dua pustaka paling berguna dalam Python yang dapat membantu Anda menangani data tabular:
* **[Pandas](https://pandas.pydata.org/)** memungkinkan Anda memanipulasi **DataFrame**, yang mirip dengan tabel relasional. Anda dapat memiliki kolom bernama, dan melakukan berbagai operasi pada baris, kolom, dan DataFrame secara umum.
* **[Numpy](https://numpy.org/)** adalah pustaka untuk bekerja dengan **tensor**, yaitu **array** multi-dimensi. Array memiliki nilai dengan tipe dasar yang sama, dan lebih sederhana dibandingkan DataFrame, tetapi menawarkan lebih banyak operasi matematika dan menciptakan overhead yang lebih sedikit.
* **[Numpy](https://numpy.org/)** adalah pustaka untuk bekerja dengan **tensor**, yaitu **array** multi-dimensi. Array memiliki nilai dengan tipe dasar yang sama, dan lebih sederhana daripada DataFrame, tetapi menawarkan lebih banyak operasi matematika dan menciptakan overhead yang lebih sedikit.
Ada juga beberapa pustaka lain yang perlu Anda ketahui:
* **[Matplotlib](https://matplotlib.org/)** adalah pustaka untuk visualisasi data dan pembuatan grafik
* **[Matplotlib](https://matplotlib.org/)** adalah pustaka yang digunakan untuk visualisasi data dan pembuatan grafik
* **[SciPy](https://www.scipy.org/)** adalah pustaka dengan beberapa fungsi ilmiah tambahan. Kita sudah pernah membahas pustaka ini saat berbicara tentang probabilitas dan statistik
Berikut adalah potongan kode yang biasanya Anda gunakan untuk mengimpor pustaka-pustaka tersebut di awal program Python Anda:
@ -59,11 +59,11 @@ Pandas berpusat pada beberapa konsep dasar.
### Series
**Series** adalah urutan nilai, mirip dengan daftar atau array numpy. Perbedaan utamanya adalah bahwa Series juga memiliki **index**, dan ketika kita melakukan operasi pada Series (misalnya, menambahkannya), index diperhitungkan. Index dapat sesederhana nomor baris integer (ini adalah index default saat membuat Series dari daftar atau array), atau dapat memiliki struktur yang kompleks, seperti interval tanggal.
**Series** adalah urutan nilai, mirip dengan daftar atau array numpy. Perbedaan utamanya adalah bahwa series juga memiliki **index**, dan ketika kita melakukan operasi pada series (misalnya, menambahkannya), index diperhitungkan. Index dapat sesederhana nomor baris integer (ini adalah index yang digunakan secara default saat membuat series dari daftar atau array), atau dapat memiliki struktur yang kompleks, seperti interval tanggal.
> **Catatan**: Ada beberapa kode pengantar Pandas di notebook pendamping [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Kami hanya menguraikan beberapa contoh di sini, dan Anda sangat disarankan untuk memeriksa notebook lengkapnya.
> **Catatan**: Ada beberapa kode pengantar Pandas di notebook pendamping [`notebook.ipynb`](notebook.ipynb). Kami hanya menguraikan beberapa contoh di sini, dan Anda sangat disarankan untuk memeriksa notebook lengkapnya.
Misalkan kita ingin menganalisis penjualan di toko es krim kita. Mari kita buat Series angka penjualan (jumlah barang yang terjual setiap hari) untuk beberapa periode waktu:
Misalkan kita ingin menganalisis penjualan di toko es krim kita. Mari kita buat series angka penjualan (jumlah barang yang terjual setiap hari) untuk beberapa periode waktu:
```python
start_date = "Jan 1, 2020"
@ -73,31 +73,31 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Grafik Time Series](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Grafik Time Series](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.id.png)
Sekarang misalkan setiap minggu kita mengadakan pesta untuk teman-teman, dan kita mengambil tambahan 10 bungkus es krim untuk pesta. Kita dapat membuat Series lain, diindeks berdasarkan minggu, untuk menunjukkan hal tersebut:
Sekarang misalkan setiap minggu kita mengadakan pesta untuk teman-teman, dan kita mengambil tambahan 10 bungkus es krim untuk pesta. Kita dapat membuat series lain, diindeks berdasarkan minggu, untuk menunjukkan hal itu:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Ketika kita menambahkan dua Series bersama-sama, kita mendapatkan total jumlah:
Ketika kita menambahkan dua series bersama-sama, kita mendapatkan total jumlah:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Grafik Time Series](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Grafik Time Series](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.id.png)
> **Catatan** bahwa kita tidak menggunakan sintaks sederhana `total_items+additional_items`. Jika kita melakukannya, kita akan mendapatkan banyak nilai `NaN` (*Not a Number*) dalam Series hasil. Hal ini karena ada nilai yang hilang untuk beberapa titik index dalam Series `additional_items`, dan menambahkan `NaN` ke apa pun menghasilkan `NaN`. Oleh karena itu, kita perlu menentukan parameter `fill_value` selama penjumlahan.
> **Catatan** bahwa kita tidak menggunakan sintaks sederhana `total_items+additional_items`. Jika kita melakukannya, kita akan mendapatkan banyak nilai `NaN` (*Not a Number*) dalam series hasil. Ini karena ada nilai yang hilang untuk beberapa titik index dalam series `additional_items`, dan menambahkan `NaN` ke apa pun menghasilkan `NaN`. Oleh karena itu, kita perlu menentukan parameter `fill_value` selama penjumlahan.
Dengan time series, kita juga dapat **mengubah sampel ulang** Series dengan interval waktu yang berbeda. Misalnya, misalkan kita ingin menghitung rata-rata volume penjualan bulanan. Kita dapat menggunakan kode berikut:
Dengan time series, kita juga dapat **mengubah sampel ulang** series dengan interval waktu yang berbeda. Misalnya, misalkan kita ingin menghitung rata-rata volume penjualan bulanan. Kita dapat menggunakan kode berikut:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Rata-rata Time Series Bulanan](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Rata-rata Time Series Bulanan](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.id.png)
### DataFrame
DataFrame pada dasarnya adalah kumpulan Series dengan index yang sama. Kita dapat menggabungkan beberapa Series menjadi satu DataFrame:
DataFrame pada dasarnya adalah kumpulan series dengan index yang sama. Kita dapat menggabungkan beberapa series menjadi satu DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -113,7 +113,7 @@ Kita juga dapat menggunakan Series sebagai kolom, dan menentukan nama kolom meng
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Ini akan memberikan kita tabel seperti ini:
Ini akan menghasilkan tabel seperti ini:
| | A | B |
| --- | --- | ------ |
@ -131,26 +131,26 @@ Ini akan memberikan kita tabel seperti ini:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Di sini `.T` berarti operasi mentranspos DataFrame, yaitu mengubah baris menjadi kolom, dan operasi `rename` memungkinkan kita mengganti nama kolom agar sesuai dengan contoh sebelumnya.
Di sini `.T` berarti operasi mentranspos DataFrame, yaitu menukar baris dan kolom, dan operasi `rename` memungkinkan kita mengganti nama kolom agar sesuai dengan contoh sebelumnya.
Berikut adalah beberapa operasi paling penting yang dapat kita lakukan pada DataFrame:
**Pemilihan kolom**. Kita dapat memilih kolom individual dengan menulis `df['A']` - operasi ini mengembalikan Series. Kita juga dapat memilih subset kolom ke DataFrame lain dengan menulis `df[['B','A']]` - ini mengembalikan DataFrame lain.
**Pemilihan kolom**. Kita dapat memilih kolom individual dengan menulis `df['A']` - operasi ini mengembalikan Series. Kita juga dapat memilih subset kolom ke dalam DataFrame lain dengan menulis `df[['B','A']]` - ini mengembalikan DataFrame lain.
**Menyaring** hanya baris tertentu berdasarkan kriteria. Misalnya, untuk hanya menyisakan baris dengan kolom `A` lebih besar dari 5, kita dapat menulis `df[df['A']>5]`.
> **Catatan**: Cara kerja penyaringan adalah sebagai berikut. Ekspresi `df['A']<5` mengembalikan Series boolean, yang menunjukkan apakah ekspresi tersebut `True` atau `False` untuk setiap elemen dari Series asli `df['A']`. Ketika Series boolean digunakan sebagai index, ini mengembalikan subset baris dalam DataFrame. Oleh karena itu, tidak mungkin menggunakan ekspresi boolean Python sembarang, misalnya, menulis `df[df['A']>5 and df['A']<7]` akan salah. Sebagai gantinya, Anda harus menggunakan operasi khusus `&` pada Series boolean, menulis `df[(df['A']>5) & (df['A']<7)]` (*tanda kurung penting di sini*).
> **Catatan**: Cara kerja penyaringan adalah sebagai berikut. Ekspresi `df['A']<5` mengembalikan series boolean, yang menunjukkan apakah ekspresi tersebut `True` atau `False` untuk setiap elemen dari series asli `df['A']`. Ketika series boolean digunakan sebagai index, ini mengembalikan subset baris dalam DataFrame. Oleh karena itu, tidak mungkin menggunakan ekspresi boolean Python sembarang, misalnya, menulis `df[df['A']>5 and df['A']<7]` akan salah. Sebagai gantinya, Anda harus menggunakan operasi khusus `&` pada series boolean, menulis `df[(df['A']>5) & (df['A']<7)]` (*tanda kurung penting di sini*).
**Membuat kolom baru yang dapat dihitung**. Kita dapat dengan mudah membuat kolom baru yang dapat dihitung untuk DataFrame kita dengan menggunakan ekspresi intuitif seperti ini:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Contoh ini menghitung divergensi A dari nilai rata-ratanya. Apa yang sebenarnya terjadi di sini adalah kita menghitung Series, lalu menetapkan Series ini ke sisi kiri, menciptakan kolom baru. Oleh karena itu, kita tidak dapat menggunakan operasi apa pun yang tidak kompatibel dengan Series, misalnya, kode di bawah ini salah:
Contoh ini menghitung deviasi A dari nilai rata-ratanya. Apa yang sebenarnya terjadi di sini adalah kita menghitung series, lalu menetapkan series ini ke sisi kiri, menciptakan kolom baru. Oleh karena itu, kita tidak dapat menggunakan operasi apa pun yang tidak kompatibel dengan series, misalnya, kode di bawah ini salah:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Contoh terakhir, meskipun secara sintaksis benar, memberikan hasil yang salah, karena menetapkan panjang Series `B` ke semua nilai dalam kolom, dan bukan panjang elemen individual seperti yang kita maksudkan.
Contoh terakhir, meskipun secara sintaksis benar, memberikan hasil yang salah, karena menetapkan panjang series `B` ke semua nilai dalam kolom, dan bukan panjang elemen individual seperti yang kita maksudkan.
Jika kita perlu menghitung ekspresi kompleks seperti ini, kita dapat menggunakan fungsi `apply`. Contoh terakhir dapat ditulis sebagai berikut:
```python
@ -173,14 +173,14 @@ Setelah operasi di atas, kita akan mendapatkan DataFrame berikut:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Memilih baris berdasarkan nomor** dapat dilakukan menggunakan konstruk `iloc`. Misalnya, untuk memilih 5 baris pertama dari DataFrame:
**Memilih baris berdasarkan nomor** dapat dilakukan menggunakan konstruksi `iloc`. Misalnya, untuk memilih 5 baris pertama dari DataFrame:
```python
df.iloc[:5]
```
**Pengelompokan** sering digunakan untuk mendapatkan hasil yang mirip dengan *pivot table* di Excel. Misalkan kita ingin menghitung nilai rata-rata kolom `A` untuk setiap jumlah tertentu dari `LenB`. Maka kita dapat mengelompokkan DataFrame kita berdasarkan `LenB`, dan memanggil `mean`:
**Pengelompokan** sering digunakan untuk mendapatkan hasil yang mirip dengan *pivot table* di Excel. Misalkan kita ingin menghitung nilai rata-rata kolom `A` untuk setiap jumlah `LenB` tertentu. Maka kita dapat mengelompokkan DataFrame kita berdasarkan `LenB`, dan memanggil `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Jika kita perlu menghitung rata-rata dan jumlah elemen dalam grup, maka kita dapat menggunakan fungsi `aggregate` yang lebih kompleks:
```python
@ -188,7 +188,7 @@ df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
Ini memberikan kita tabel berikut:
Ini memberikan tabel berikut:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -198,7 +198,7 @@ Ini memberikan kita tabel berikut:
| 4 | 3 | 6.333333 |
| 6 | 2 | 6.000000 |
### Mendapatkan Data
### Mendapatkan Data
Kita telah melihat betapa mudahnya membangun Series dan DataFrames dari objek Python. Namun, data biasanya hadir dalam bentuk file teks atau tabel Excel. Untungnya, Pandas menawarkan cara sederhana untuk memuat data dari disk. Sebagai contoh, membaca file CSV semudah ini:
```python
df = pd.read_csv('file.csv')
@ -207,19 +207,19 @@ Kita akan melihat lebih banyak contoh memuat data, termasuk mengambilnya dari si
### Mencetak dan Memvisualisasikan
Seorang Data Scientist sering kali harus mengeksplorasi data, sehingga penting untuk dapat memvisualisasikannya. Ketika DataFrame besar, sering kali kita hanya ingin memastikan bahwa kita melakukan segalanya dengan benar dengan mencetak beberapa baris pertama. Hal ini dapat dilakukan dengan memanggil `df.head()`. Jika Anda menjalankannya dari Jupyter Notebook, itu akan mencetak DataFrame dalam bentuk tabel yang rapi.
Seorang Data Scientist sering kali harus mengeksplorasi data, sehingga penting untuk dapat memvisualisasikannya. Ketika DataFrame besar, sering kali kita hanya ingin memastikan bahwa kita melakukan semuanya dengan benar dengan mencetak beberapa baris pertama. Hal ini dapat dilakukan dengan memanggil `df.head()`. Jika Anda menjalankannya dari Jupyter Notebook, itu akan mencetak DataFrame dalam bentuk tabel yang rapi.
Kita juga telah melihat penggunaan fungsi `plot` untuk memvisualisasikan beberapa kolom. Meskipun `plot` sangat berguna untuk banyak tugas, dan mendukung berbagai jenis grafik melalui parameter `kind=`, Anda selalu dapat menggunakan pustaka `matplotlib` mentah untuk memplot sesuatu yang lebih kompleks. Kita akan membahas visualisasi data secara mendetail dalam pelajaran kursus terpisah.
Kita juga telah melihat penggunaan fungsi `plot` untuk memvisualisasikan beberapa kolom. Meskipun `plot` sangat berguna untuk banyak tugas, dan mendukung berbagai jenis grafik melalui parameter `kind=`, Anda selalu dapat menggunakan pustaka `matplotlib` mentah untuk membuat sesuatu yang lebih kompleks. Kita akan membahas visualisasi data secara mendetail dalam pelajaran kursus terpisah.
Ikhtisar ini mencakup konsep-konsep terpenting dari Pandas, namun pustaka ini sangat kaya, dan tidak ada batasan untuk apa yang dapat Anda lakukan dengannya! Sekarang mari kita terapkan pengetahuan ini untuk menyelesaikan masalah tertentu.
## 🚀 Tantangan 1: Menganalisis Penyebaran COVID
Masalah pertama yang akan kita fokuskan adalah pemodelan penyebaran epidemi COVID-19. Untuk itu, kita akan menggunakan data tentang jumlah individu yang terinfeksi di berbagai negara, yang disediakan oleh [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) di [Johns Hopkins University](https://jhu.edu/). Dataset tersedia di [Repositori GitHub ini](https://github.com/CSSEGISandData/COVID-19).
Masalah pertama yang akan kita fokuskan adalah pemodelan penyebaran epidemi COVID-19. Untuk melakukan itu, kita akan menggunakan data tentang jumlah individu yang terinfeksi di berbagai negara, yang disediakan oleh [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) di [Johns Hopkins University](https://jhu.edu/). Dataset tersedia di [Repositori GitHub ini](https://github.com/CSSEGISandData/COVID-19).
Karena kita ingin menunjukkan cara menangani data, kami mengundang Anda untuk membuka [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) dan membacanya dari atas ke bawah. Anda juga dapat mengeksekusi sel, dan melakukan beberapa tantangan yang telah kami tinggalkan untuk Anda di akhir.
Karena kita ingin menunjukkan cara menangani data, kami mengundang Anda untuk membuka [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) dan membacanya dari atas ke bawah. Anda juga dapat mengeksekusi sel, dan melakukan beberapa tantangan yang telah kami tinggalkan untuk Anda di akhir.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.id.png)
> Jika Anda tidak tahu cara menjalankan kode di Jupyter Notebook, lihat [artikel ini](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
@ -239,15 +239,15 @@ Contoh lengkap analisis dataset ini menggunakan layanan kognitif [Text Analytics
> **NOTE**: Kami tidak menyediakan salinan dataset sebagai bagian dari repositori ini. Anda mungkin perlu mengunduh file [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) dari [dataset ini di Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Pendaftaran dengan Kaggle mungkin diperlukan. Anda juga dapat mengunduh dataset tanpa pendaftaran [dari sini](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), tetapi itu akan mencakup semua teks lengkap selain file metadata.
Buka [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) dan bacalah dari atas ke bawah. Anda juga dapat mengeksekusi sel, dan melakukan beberapa tantangan yang telah kami tinggalkan untuk Anda di akhir.
Buka [`notebook-papers.ipynb`](notebook-papers.ipynb) dan bacalah dari atas ke bawah. Anda juga dapat mengeksekusi sel, dan melakukan beberapa tantangan yang telah kami tinggalkan untuk Anda di akhir.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.id.png)
## Memproses Data Gambar
## Pemrosesan Data Gambar
Baru-baru ini, model AI yang sangat kuat telah dikembangkan yang memungkinkan kita memahami gambar. Ada banyak tugas yang dapat diselesaikan menggunakan jaringan saraf yang telah dilatih sebelumnya, atau layanan cloud. Beberapa contohnya termasuk:
* **Klasifikasi Gambar**, yang dapat membantu Anda mengkategorikan gambar ke dalam salah satu kelas yang telah ditentukan. Anda dapat dengan mudah melatih pengklasifikasi gambar Anda sendiri menggunakan layanan seperti [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Klasifikasi Gambar**, yang dapat membantu Anda mengategorikan gambar ke dalam salah satu kelas yang telah ditentukan. Anda dapat dengan mudah melatih pengklasifikasi gambar Anda sendiri menggunakan layanan seperti [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Deteksi Objek** untuk mendeteksi berbagai objek dalam gambar. Layanan seperti [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) dapat mendeteksi sejumlah objek umum, dan Anda dapat melatih model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) untuk mendeteksi beberapa objek spesifik yang menarik.
* **Deteksi Wajah**, termasuk deteksi Usia, Jenis Kelamin, dan Emosi. Hal ini dapat dilakukan melalui [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
@ -255,11 +255,11 @@ Semua layanan cloud tersebut dapat dipanggil menggunakan [Python SDKs](https://d
Berikut beberapa contoh eksplorasi data dari sumber data gambar:
* Dalam posting blog [Cara Belajar Data Science Tanpa Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) kita mengeksplorasi foto Instagram, mencoba memahami apa yang membuat orang memberikan lebih banyak suka pada sebuah foto. Kita pertama-tama mengekstrak sebanyak mungkin informasi dari gambar menggunakan [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), dan kemudian menggunakan [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) untuk membangun model yang dapat diinterpretasikan.
* Dalam [Workshop Studi Wajah](https://github.com/CloudAdvocacy/FaceStudies) kita menggunakan [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) untuk mengekstrak emosi orang-orang dalam foto dari acara, untuk mencoba memahami apa yang membuat orang bahagia.
* Dalam [Workshop Studi Wajah](https://github.com/CloudAdvocacy/FaceStudies) kita menggunakan [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) untuk mengekstrak emosi orang dalam foto dari acara, untuk mencoba memahami apa yang membuat orang bahagia.
## Kesimpulan
Baik Anda sudah memiliki data terstruktur atau tidak terstruktur, menggunakan Python Anda dapat melakukan semua langkah terkait pemrosesan dan pemahaman data. Ini mungkin cara paling fleksibel untuk memproses data, dan itulah alasan mengapa mayoritas data scientist menggunakan Python sebagai alat utama mereka. Mempelajari Python secara mendalam mungkin merupakan ide yang baik jika Anda serius dengan perjalanan data science Anda!
Apakah Anda sudah memiliki data terstruktur atau tidak terstruktur, menggunakan Python Anda dapat melakukan semua langkah terkait pemrosesan dan pemahaman data. Ini mungkin cara paling fleksibel untuk pemrosesan data, dan itulah alasan sebagian besar data scientist menggunakan Python sebagai alat utama mereka. Mempelajari Python secara mendalam mungkin merupakan ide yang baik jika Anda serius dengan perjalanan data science Anda!
## [Kuis setelah pelajaran](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -269,11 +269,11 @@ Baik Anda sudah memiliki data terstruktur atau tidak terstruktur, menggunakan Py
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Sumber Daya Online**
* Tutorial resmi [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* Tutorial resmi [10 menit untuk Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Dokumentasi tentang Visualisasi Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Belajar Python**
* [Belajar Python dengan Cara Menyenangkan menggunakan Turtle Graphics dan Fraktal](https://github.com/shwars/pycourse)
* [Belajar Python dengan Cara Menyenangkan menggunakan Turtle Graphics dan Fractals](https://github.com/shwars/pycourse)
* [Ambil Langkah Pertama Anda dengan Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Jalur Pembelajaran di [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Tugas
@ -282,9 +282,9 @@ Baik Anda sudah memiliki data terstruktur atau tidak terstruktur, menggunakan Py
## Kredit
Pelajaran ini telah dibuat dengan ♥️ oleh [Dmitry Soshnikov](http://soshnikov.com)
Pelajaran ini telah ditulis dengan ♥️ oleh [Dmitry Soshnikov](http://soshnikov.com)
---
**Penafian**:
Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa terjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T08:41:54+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:40:37+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "it"
}
@ -13,57 +13,57 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Lavorare con Python - _Sketchnote di [@nitya](https://twitter.com/nitya)_ |
[![Video introduttivo](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Video Introduttivo](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.it.png)](https://youtu.be/dZjWOGbsN4Y)
Mentre i database offrono modi molto efficienti per archiviare i dati e interrogarli utilizzando linguaggi di query, il modo più flessibile per elaborare i dati è scrivere un proprio programma per manipolarli. In molti casi, eseguire una query su un database sarebbe un metodo più efficace. Tuttavia, in alcuni casi, quando è necessaria un'elaborazione dei dati più complessa, non è facilmente realizzabile utilizzando SQL.
L'elaborazione dei dati può essere programmata in qualsiasi linguaggio di programmazione, ma ci sono alcuni linguaggi che sono più adatti per lavorare con i dati. Gli scienziati dei dati solitamente preferiscono uno dei seguenti linguaggi:
Sebbene i database offrano modi molto efficienti per memorizzare i dati e interrogarli utilizzando linguaggi di query, il modo più flessibile per elaborare i dati è scrivere un proprio programma per manipolarli. In molti casi, eseguire una query su un database sarebbe un metodo più efficace. Tuttavia, in alcuni casi in cui è necessaria un'elaborazione dei dati più complessa, non è facilmente realizzabile utilizzando SQL.
L'elaborazione dei dati può essere programmata in qualsiasi linguaggio di programmazione, ma ci sono alcuni linguaggi che sono più adatti per lavorare con i dati. Gli scienziati dei dati di solito preferiscono uno dei seguenti linguaggi:
* **[Python](https://www.python.org/)**, un linguaggio di programmazione generico, spesso considerato una delle migliori opzioni per i principianti grazie alla sua semplicità. Python ha molte librerie aggiuntive che possono aiutarti a risolvere numerosi problemi pratici, come estrarre dati da un archivio ZIP o convertire un'immagine in scala di grigi. Oltre alla scienza dei dati, Python è spesso utilizzato anche per lo sviluppo web.
* **[Python](https://www.python.org/)**, un linguaggio di programmazione generico, spesso considerato una delle migliori opzioni per i principianti grazie alla sua semplicità. Python dispone di molte librerie aggiuntive che possono aiutarti a risolvere numerosi problemi pratici, come estrarre dati da un archivio ZIP o convertire un'immagine in scala di grigi. Oltre alla scienza dei dati, Python è spesso utilizzato anche per lo sviluppo web.
* **[R](https://www.r-project.org/)** è uno strumento tradizionale sviluppato con l'elaborazione statistica dei dati in mente. Contiene anche un ampio repository di librerie (CRAN), rendendolo una buona scelta per l'elaborazione dei dati. Tuttavia, R non è un linguaggio di programmazione generico ed è raramente utilizzato al di fuori del dominio della scienza dei dati.
* **[Julia](https://julialang.org/)** è un altro linguaggio sviluppato specificamente per la scienza dei dati. È progettato per offrire prestazioni migliori rispetto a Python, rendendolo uno strumento eccellente per esperimenti scientifici.
In questa lezione, ci concentreremo sull'utilizzo di Python per una semplice elaborazione dei dati. Presumeremo una conoscenza di base del linguaggio. Se desideri un approfondimento su Python, puoi consultare una delle seguenti risorse:
In questa lezione, ci concentreremo sull'utilizzo di Python per semplici elaborazioni dei dati. Daremo per scontata una conoscenza di base del linguaggio. Se desideri un'introduzione più approfondita a Python, puoi fare riferimento a una delle seguenti risorse:
* [Impara Python in modo divertente con Turtle Graphics e Frattali](https://github.com/shwars/pycourse) - Corso introduttivo rapido su GitHub per la programmazione in Python
* [Fai i tuoi primi passi con Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Percorso di apprendimento su [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Muovi i tuoi primi passi con Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - Percorso di apprendimento su [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
I dati possono presentarsi in molte forme. In questa lezione, considereremo tre forme di dati: **dati tabulari**, **testo** e **immagini**.
I dati possono presentarsi in molte forme. In questa lezione, considereremo tre forme di dati: **dati tabellari**, **testo** e **immagini**.
Ci concentreremo su alcuni esempi di elaborazione dei dati, invece di fornire una panoramica completa di tutte le librerie correlate. Questo ti permetterà di comprendere le possibilità principali e di sapere dove trovare soluzioni ai tuoi problemi quando ne avrai bisogno.
> **Consiglio più utile**. Quando hai bisogno di eseguire un'operazione sui dati che non sai come fare, prova a cercarla su internet. [Stackoverflow](https://stackoverflow.com/) contiene spesso molti esempi di codice utili in Python per numerosi compiti tipici.
> **Il consiglio più utile**. Quando hai bisogno di eseguire un'operazione sui dati che non sai come fare, prova a cercarla su internet. [Stackoverflow](https://stackoverflow.com/) contiene spesso molti esempi di codice utili in Python per numerosi compiti tipici.
## [Quiz pre-lezione](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Dati Tabulari e Dataframe
## Dati Tabellari e Dataframe
Hai già incontrato i dati tabulari quando abbiamo parlato di database relazionali. Quando hai molti dati contenuti in diverse tabelle collegate, ha sicuramente senso utilizzare SQL per lavorarci. Tuttavia, ci sono molti casi in cui abbiamo una tabella di dati e dobbiamo ottenere una certa **comprensione** o **intuizione** su questi dati, come la distribuzione, la correlazione tra valori, ecc. Nella scienza dei dati, ci sono molti casi in cui dobbiamo eseguire alcune trasformazioni sui dati originali, seguite da una visualizzazione. Entrambi questi passaggi possono essere facilmente eseguiti utilizzando Python.
Hai già incontrato i dati tabellari quando abbiamo parlato di database relazionali. Quando hai molti dati contenuti in diverse tabelle collegate, ha sicuramente senso utilizzare SQL per lavorarci. Tuttavia, ci sono molti casi in cui abbiamo una tabella di dati e dobbiamo ottenere una **comprensione** o **intuizioni** su questi dati, come la distribuzione, la correlazione tra i valori, ecc. Nella scienza dei dati, ci sono molti casi in cui dobbiamo eseguire alcune trasformazioni sui dati originali, seguite da una visualizzazione. Entrambi questi passaggi possono essere facilmente eseguiti utilizzando Python.
Ci sono due librerie molto utili in Python che possono aiutarti a gestire i dati tabulari:
Ci sono due librerie più utili in Python che possono aiutarti a gestire i dati tabellari:
* **[Pandas](https://pandas.pydata.org/)** ti consente di manipolare i cosiddetti **Dataframe**, che sono analoghi alle tabelle relazionali. Puoi avere colonne con nomi e eseguire diverse operazioni su righe, colonne e dataframe in generale.
* **[Numpy](https://numpy.org/)** è una libreria per lavorare con **tensori**, ovvero **array** multidimensionali. Gli array hanno valori dello stesso tipo sottostante e sono più semplici dei dataframe, ma offrono più operazioni matematiche e creano meno sovraccarico.
* **[Numpy](https://numpy.org/)** è una libreria per lavorare con **tensori**, ovvero **array** multidimensionali. Gli array contengono valori dello stesso tipo sottostante, sono più semplici dei dataframe, ma offrono più operazioni matematiche e creano meno sovraccarico.
Ci sono anche un paio di altre librerie che dovresti conoscere:
* **[Matplotlib](https://matplotlib.org/)** è una libreria utilizzata per la visualizzazione dei dati e la creazione di grafici
* **[SciPy](https://www.scipy.org/)** è una libreria con alcune funzioni scientifiche aggiuntive. Abbiamo già incontrato questa libreria parlando di probabilità e statistica.
* **[SciPy](https://www.scipy.org/)** è una libreria con alcune funzioni scientifiche aggiuntive. Abbiamo già incontrato questa libreria parlando di probabilità e statistiche.
Ecco un pezzo di codice che normalmente utilizzeresti per importare queste librerie all'inizio del tuo programma Python:
Ecco un pezzo di codice che useresti tipicamente per importare queste librerie all'inizio del tuo programma 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
```
```
Pandas si basa su alcuni concetti fondamentali.
### Serie
**Serie** è una sequenza di valori, simile a una lista o un array numpy. La differenza principale è che le serie hanno anche un **indice**, e quando operiamo sulle serie (ad esempio, sommandole), l'indice viene preso in considerazione. L'indice può essere semplice come il numero di riga intero (è l'indice utilizzato di default quando si crea una serie da una lista o un array), oppure può avere una struttura complessa, come un intervallo di date.
**Serie** è una sequenza di valori, simile a una lista o un array numpy. La differenza principale è che le serie hanno anche un **indice**, e quando operiamo sulle serie (ad esempio, sommandole), l'indice viene preso in considerazione. L'indice può essere semplice come un numero intero che rappresenta il numero di riga (è l'indice utilizzato per impostazione predefinita quando si crea una serie da una lista o un array), oppure può avere una struttura complessa, come un intervallo di date.
> **Nota**: Nel notebook allegato [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) c'è del codice introduttivo su Pandas. Qui delineiamo solo alcuni esempi, ma sei sicuramente invitato a consultare il notebook completo.
> **Nota**: Nel notebook allegato [`notebook.ipynb`](notebook.ipynb) è presente del codice introduttivo su Pandas. Qui riportiamo solo alcuni esempi, ma sei sicuramente invitato a consultare il notebook completo.
Considera un esempio: vogliamo analizzare le vendite del nostro punto vendita di gelati. Generiamo una serie di numeri di vendite (numero di articoli venduti ogni giorno) per un certo periodo di tempo:
Considera un esempio: vogliamo analizzare le vendite del nostro chiosco di gelati. Generiamo una serie di numeri di vendita (numero di articoli venduti ogni giorno) per un certo periodo di tempo:
```python
start_date = "Jan 1, 2020"
@ -73,46 +73,46 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Grafico delle Serie Temporali](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Grafico Serie Temporale](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.it.png)
Ora supponiamo che ogni settimana organizziamo una festa per gli amici e prendiamo 10 confezioni di gelato extra per la festa. Possiamo creare un'altra serie, indicizzata per settimana, per dimostrarlo:
Ora supponiamo che ogni settimana organizziamo una festa per gli amici e prendiamo 10 confezioni di gelato in più per la festa. Possiamo creare un'altra serie, indicizzata per settimana, per dimostrarlo:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Quando sommiamo due serie, otteniamo il numero totale:
```
Quando sommiamo due serie, otteniamo il numero totale:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Grafico delle Serie Temporali](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
```
![Grafico Serie Temporale](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.it.png)
> **Nota** che non stiamo utilizzando la sintassi semplice `total_items+additional_items`. Se lo facessimo, otterremmo molti valori `NaN` (*Not a Number*) nella serie risultante. Questo perché ci sono valori mancanti per alcuni punti dell'indice nella serie `additional_items`, e sommare `NaN` a qualsiasi cosa risulta in `NaN`. Pertanto, dobbiamo specificare il parametro `fill_value` durante l'addizione.
> **Nota** che non stiamo usando la sintassi semplice `total_items+additional_items`. Se lo facessimo, otterremmo molti valori `NaN` (*Not a Number*) nella serie risultante. Questo perché ci sono valori mancanti per alcuni punti dell'indice nella serie `additional_items`, e sommare `NaN` a qualsiasi cosa risulta in `NaN`. Pertanto, dobbiamo specificare il parametro `fill_value` durante l'addizione.
Con le serie temporali, possiamo anche **ricampionare** la serie con intervalli di tempo diversi. Ad esempio, supponiamo di voler calcolare il volume medio di vendite mensile. Possiamo utilizzare il seguente codice:
Con le serie temporali, possiamo anche **ricampionare** la serie con intervalli di tempo diversi. Ad esempio, supponiamo di voler calcolare il volume medio di vendite mensile. Possiamo usare il seguente codice:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Medie Mensili delle Serie Temporali](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
```
![Medie Mensili Serie Temporale](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.it.png)
### DataFrame
Un DataFrame è essenzialmente una raccolta di serie con lo stesso indice. Possiamo combinare diverse serie insieme in un DataFrame:
Un DataFrame è essenzialmente una raccolta di serie con lo stesso indice. Possiamo combinare diverse serie insieme in un DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Questo creerà una tabella orizzontale come questa:
```
Questo creerà una tabella orizzontale come questa:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Possiamo anche utilizzare le Serie come colonne e specificare i nomi delle colonne utilizzando un dizionario:
Possiamo anche usare le Serie come colonne e specificare i nomi delle colonne utilizzando un dizionario:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
```
Questo ci darà una tabella come questa:
| | A | B |
@ -127,32 +127,32 @@ Questo ci darà una tabella come questa:
| 7 | 8 | very |
| 8 | 9 | much |
**Nota** che possiamo ottenere questa disposizione della tabella anche trasponendo la tabella precedente, ad esempio scrivendo
**Nota** che possiamo ottenere questa disposizione della tabella anche trasponendo la tabella precedente, ad esempio scrivendo
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
```
Qui `.T` indica l'operazione di trasposizione del DataFrame, ovvero il cambio di righe e colonne, e l'operazione `rename` ci consente di rinominare le colonne per corrispondere all'esempio precedente.
Ecco alcune delle operazioni più importanti che possiamo eseguire sui DataFrame:
**Selezione delle colonne**. Possiamo selezionare singole colonne scrivendo `df['A']` - questa operazione restituisce una Serie. Possiamo anche selezionare un sottoinsieme di colonne in un altro DataFrame scrivendo `df[['B','A']]` - questo restituisce un altro DataFrame.
**Selezione delle colonne**. Possiamo selezionare colonne individuali scrivendo `df['A']` - questa operazione restituisce una Serie. Possiamo anche selezionare un sottoinsieme di colonne in un altro DataFrame scrivendo `df[['B','A']]` - questo restituisce un altro DataFrame.
**Filtrare** solo alcune righe in base a criteri. Ad esempio, per mantenere solo le righe con la colonna `A` maggiore di 5, possiamo scrivere `df[df['A']>5]`.
**Filtraggio** di determinate righe in base a criteri. Ad esempio, per mantenere solo le righe con la colonna `A` maggiore di 5, possiamo scrivere `df[df['A']>5]`.
> **Nota**: Il modo in cui funziona il filtraggio è il seguente. L'espressione `df['A']<5` restituisce una serie booleana, che indica se l'espressione è `True` o `False` per ciascun elemento della serie originale `df['A']`. Quando la serie booleana viene utilizzata come indice, restituisce un sottoinsieme di righe nel DataFrame. Pertanto, non è possibile utilizzare espressioni booleane Python arbitrarie, ad esempio scrivere `df[df['A']>5 and df['A']<7]` sarebbe errato. Invece, dovresti utilizzare l'operazione speciale `&` sulle serie booleane, scrivendo `df[(df['A']>5) & (df['A']<7)]` (*le parentesi sono importanti qui*).
> **Nota**: Il modo in cui funziona il filtraggio è il seguente. L'espressione `df['A']<5` restituisce una serie booleana, che indica se l'espressione è `True` o `False` per ciascun elemento della serie originale `df['A']`. Quando una serie booleana viene utilizzata come indice, restituisce un sottoinsieme di righe nel DataFrame. Pertanto, non è possibile utilizzare un'espressione booleana Python arbitraria, ad esempio, scrivere `df[df['A']>5 and df['A']<7]` sarebbe sbagliato. Invece, dovresti usare l'operatore speciale `&` sulle serie booleane, scrivendo `df[(df['A']>5) & (df['A']<7)]` (*le parentesi sono importanti qui*).
**Creare nuove colonne calcolabili**. Possiamo facilmente creare nuove colonne calcolabili per il nostro DataFrame utilizzando espressioni intuitive come questa:
**Creazione di nuove colonne calcolabili**. Possiamo facilmente creare nuove colonne calcolabili per il nostro DataFrame utilizzando un'espressione intuitiva come questa:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Questo esempio calcola la divergenza di A dal suo valore medio. Ciò che accade effettivamente qui è che stiamo calcolando una serie e poi assegnando questa serie al lato sinistro, creando un'altra colonna. Pertanto, non possiamo utilizzare operazioni non compatibili con le serie, ad esempio, il codice seguente è errato:
```
Questo esempio calcola la divergenza di A dal suo valore medio. Quello che succede realmente qui è che stiamo calcolando una serie e poi assegnando questa serie al lato sinistro, creando un'altra colonna. Pertanto, non possiamo usare operazioni non compatibili con le serie, ad esempio, il codice seguente è sbagliato:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
L'ultimo esempio, pur essendo sintatticamente corretto, ci dà un risultato errato, perché assegna la lunghezza della serie `B` a tutti i valori nella colonna, e non la lunghezza degli elementi individuali come intendevamo.
```
L'ultimo esempio, pur essendo sintatticamente corretto, ci dà un risultato sbagliato, perché assegna la lunghezza della serie `B` a tutti i valori nella colonna, e non la lunghezza degli elementi individuali come intendevamo.
Se dobbiamo calcolare espressioni complesse come questa, possiamo utilizzare la funzione `apply`. L'ultimo esempio può essere scritto come segue:
Se dobbiamo calcolare espressioni complesse come questa, possiamo usare la funzione `apply`. L'ultimo esempio può essere scritto come segue:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -173,21 +173,21 @@ Dopo le operazioni sopra, otterremo il seguente DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Selezionare righe in base ai numeri** può essere fatto utilizzando il costrutto `iloc`. Ad esempio, per selezionare le prime 5 righe dal DataFrame:
**Selezione delle righe in base ai numeri** può essere fatta usando la struttura `iloc`. Ad esempio, per selezionare le prime 5 righe del DataFrame:
```python
df.iloc[:5]
```
**Raggruppamento** è spesso utilizzato per ottenere un risultato simile alle *tabelle pivot* in Excel. Supponiamo di voler calcolare il valore medio della colonna `A` per ciascun numero dato di `LenB`. Possiamo raggruppare il nostro DataFrame per `LenB` e chiamare `mean`:
**Raggruppamento** è spesso utilizzato per ottenere un risultato simile alle *tabelle pivot* in Excel. Supponiamo di voler calcolare il valore medio della colonna `A` per ciascun numero dato di `LenB`. Possiamo quindi raggruppare il nostro DataFrame per `LenB` e chiamare `mean`:
```python
df.groupby(by='LenB').mean()
```
Se dobbiamo calcolare la media e il numero di elementi nel gruppo, possiamo utilizzare la funzione `aggregate` più complessa:
df.groupby(by='LenB')[['A','DivA']].mean()
```
Se dobbiamo calcolare la media e il numero di elementi nel gruppo, possiamo usare la funzione `aggregate` più complessa:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
```
Questo ci dà la seguente tabella:
| LenB | Count | Mean |
@ -207,7 +207,7 @@ Vedremo più esempi di caricamento dei dati, inclusa la possibilità di recupera
### Stampa e Visualizzazione
Un Data Scientist deve spesso esplorare i dati, quindi è importante essere in grado di visualizzarli. Quando un DataFrame è grande, molte volte vogliamo solo assicurarci di fare tutto correttamente stampando le prime righe. Questo può essere fatto chiamando `df.head()`. Se lo esegui da Jupyter Notebook, stamperà il DataFrame in una forma tabellare ben organizzata.
Un Data Scientist spesso deve esplorare i dati, quindi è importante essere in grado di visualizzarli. Quando un DataFrame è grande, molte volte vogliamo solo assicurarci di fare tutto correttamente stampando le prime righe. Questo può essere fatto chiamando `df.head()`. Se lo esegui da Jupyter Notebook, stamperà il DataFrame in una forma tabellare ben organizzata.
Abbiamo anche visto l'uso della funzione `plot` per visualizzare alcune colonne. Sebbene `plot` sia molto utile per molti compiti e supporti diversi tipi di grafici tramite il parametro `kind=`, puoi sempre utilizzare la libreria `matplotlib` per creare qualcosa di più complesso. Tratteremo la visualizzazione dei dati in dettaglio in lezioni separate del corso.
@ -217,9 +217,9 @@ Questa panoramica copre i concetti più importanti di Pandas, tuttavia, la libre
Il primo problema su cui ci concentreremo è la modellazione della diffusione epidemica del COVID-19. Per farlo, utilizzeremo i dati sul numero di individui infetti in diversi paesi, forniti dal [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) presso la [Johns Hopkins University](https://jhu.edu/). Il dataset è disponibile in [questo repository GitHub](https://github.com/CSSEGISandData/COVID-19).
Poiché vogliamo dimostrare come gestire i dati, ti invitiamo ad aprire [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) e leggerlo dall'inizio alla fine. Puoi anche eseguire le celle e affrontare alcune sfide che abbiamo lasciato per te alla fine.
Poiché vogliamo dimostrare come gestire i dati, ti invitiamo ad aprire [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) e leggerlo dall'inizio alla fine. Puoi anche eseguire le celle e affrontare alcune sfide che abbiamo lasciato per te alla fine.
![Diffusione del COVID](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![Diffusione del COVID](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.it.png)
> Se non sai come eseguire il codice in Jupyter Notebook, dai un'occhiata a [questo articolo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
@ -227,21 +227,21 @@ Poiché vogliamo dimostrare come gestire i dati, ti invitiamo ad aprire [`notebo
Sebbene i dati spesso si presentino in forma tabellare, in alcuni casi dobbiamo gestire dati meno strutturati, ad esempio testo o immagini. In questo caso, per applicare le tecniche di elaborazione dei dati che abbiamo visto sopra, dobbiamo in qualche modo **estrarre** dati strutturati. Ecco alcuni esempi:
* Estrarre parole chiave da un testo e vedere quanto spesso appaiono
* Utilizzare reti neurali per estrarre informazioni sugli oggetti in un'immagine
* Ottenere informazioni sulle emozioni delle persone da un feed video
* Estrarre parole chiave da un testo e vedere con quale frequenza compaiono
* Utilizzare reti neurali per estrarre informazioni sugli oggetti presenti in un'immagine
* Ottenere informazioni sulle emozioni delle persone da un feed video di una telecamera
## 🚀 Sfida 2: Analizzare gli Articoli sul COVID
## 🚀 Sfida 2: Analizzare Articoli sul COVID
In questa sfida, continueremo con il tema della pandemia di COVID, concentrandoci sull'elaborazione degli articoli scientifici sull'argomento. Esiste il [Dataset CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) con più di 7000 (al momento della scrittura) articoli sul COVID, disponibile con metadati e abstract (e per circa metà di essi è fornito anche il testo completo).
In questa sfida, continueremo con il tema della pandemia di COVID, concentrandoci sull'elaborazione di articoli scientifici sull'argomento. Esiste il [Dataset CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) con più di 7000 (al momento della scrittura) articoli sul COVID, disponibile con metadati e abstract (e per circa metà di essi è fornito anche il testo completo).
Un esempio completo di analisi di questo dataset utilizzando il servizio cognitivo [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) è descritto [in questo post sul blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Discuteremo una versione semplificata di questa analisi.
> **NOTE**: Non forniamo una copia del dataset come parte di questo repository. Potresti prima dover scaricare il file [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) da [questo dataset su Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Potrebbe essere necessaria la registrazione su Kaggle. Puoi anche scaricare il dataset senza registrazione [da qui](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ma includerà tutti i testi completi oltre al file dei metadati.
Apri [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) e leggilo dall'inizio alla fine. Puoi anche eseguire le celle e affrontare alcune sfide che abbiamo lasciato per te alla fine.
Apri [`notebook-papers.ipynb`](notebook-papers.ipynb) e leggilo dall'inizio alla fine. Puoi anche eseguire le celle e affrontare alcune sfide che abbiamo lasciato per te alla fine.
![Trattamento Medico COVID](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Trattamento Medico COVID](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.it.png)
## Elaborazione di Dati Immagine
@ -249,13 +249,13 @@ Recentemente, sono stati sviluppati modelli di intelligenza artificiale molto po
* **Classificazione delle Immagini**, che può aiutarti a categorizzare un'immagine in una delle classi predefinite. Puoi facilmente addestrare i tuoi classificatori di immagini utilizzando servizi come [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Rilevamento degli Oggetti** per rilevare diversi oggetti nell'immagine. Servizi come [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) possono rilevare un numero di oggetti comuni, e puoi addestrare un modello [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) per rilevare alcuni oggetti specifici di interesse.
* **Rilevamento del Volto**, inclusi età, genere e rilevamento delle emozioni. Questo può essere fatto tramite [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Rilevamento del Volto**, inclusa l'età, il genere e la rilevazione delle emozioni. Questo può essere fatto tramite [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Tutti questi servizi cloud possono essere chiamati utilizzando [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), e quindi possono essere facilmente incorporati nel tuo flusso di lavoro di esplorazione dei dati.
Ecco alcuni esempi di esplorazione dei dati da fonti di dati immagine:
* Nel post sul blog [Come Imparare Data Science senza Codice](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) esploriamo le foto di Instagram, cercando di capire cosa spinge le persone a mettere più "mi piace" a una foto. Prima estraiamo quante più informazioni possibili dalle immagini utilizzando [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), e poi utilizziamo [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) per costruire un modello interpretabile.
* Nel [Workshop Studi Facciali](https://github.com/CloudAdvocacy/FaceStudies) utilizziamo [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) per estrarre emozioni delle persone nelle fotografie di eventi, al fine di cercare di capire cosa rende le persone felici.
* Nel [Workshop Studi Facciali](https://github.com/CloudAdvocacy/FaceStudies) utilizziamo [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) per estrarre emozioni dalle persone presenti nelle fotografie di eventi, al fine di cercare di capire cosa rende felici le persone.
## Conclusione
@ -287,4 +287,4 @@ Questa lezione è stata scritta con ♥️ da [Dmitry Soshnikov](http://soshniko
---
**Disclaimer**:
Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.
Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale eseguita da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T12:39:12+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:30:09+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "ja"
}
@ -13,41 +13,41 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Pythonでの操作 - _[@nitya](https://twitter.com/nitya) によるスケッチート_ |
[![イントロ動画](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![イントロ動画](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ja.png)](https://youtu.be/dZjWOGbsN4Y)
データベースはデータを効率的に保存し、クエリ言語を使て検索する方法を提供しますが、データ処理の最も柔軟な方法は、自分自身でプログラムを書いてデータを操作することです。多くの場合、データベースクエリを使用する方が効果的です。しかし、より複雑なデータ処理が必要な場合、SQLでは簡単に実できないことがあります。
データベースはデータを効率的に保存し、クエリ言語を使用して検索する方法を提供しますが、データ処理の最も柔軟な方法は、自分自身でプログラムを書いてデータを操作することです。多くの場合、データベースクエリを使用する方が効果的です。しかし、より複雑なデータ処理が必要な場合、SQLでは簡単に実できないことがあります。
データ処理はどのプログラミング言語でもプログラム可能ですが、データ操作に特化した高レベルな言語があります。データサイエンティストは通常、以下の言語のいずれかを好みます:
* **[Python](https://www.python.org/)**: 汎用プログラミング言語であり、そのシンプルさから初心者に最適とされています。Pythonには多くの追加ライブラリがあり、ZIPアーカイブからデータを抽出したり、画像をグレースケールに変換したりといった実用的な問題を解決できます。データサイエンスだけでなく、ウェブ開発にもよく使用されます。
* **[R](https://www.r-project.org/)**: 統計データ処理を目的に開発された伝統的なツールボックスです。大規模なライブラリリポジトリCRANを含んでおり、データ処理に適しています。ただし、Rは汎用プログラミング言語ではなく、データサイエンス以外の分野ではほとんど使用されません。
* **[Julia](https://julialang.org/)**: データサイエンス専用に開発された言語で、Pythonよりも高いパフォーマンスを提供することを目的としています。科学的実験に適したツールです。
* **[R](https://www.r-project.org/)**: 統計データ処理を目的に開発された伝統的なツールボックスです。大規模なライブラリリポジトリCRANを含んでおり、データ処理に適しています。ただし、Rは汎用プログラミング言語ではなく、データサイエンス以外の分野ではあまり使用されません。
* **[Julia](https://julialang.org/)**: データサイエンス専用に開発された言語で、Pythonよりも高いパフォーマンスを提供することを目的としています。科学的実験に適したツールです。
このレッスンでは、Pythonを使た簡単なデータ処理に焦点を当てます。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)の学習パス
* [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) の学習パス
データはさまざまな形式で存在します。このレッスンでは、**表形式データ**、**テキスト**、**画像**の3つの形式を考えます。
関連するすべてのライブラリの概要を提供するのではなく、いくつかのデータ処理の例に焦点を当てます。これにより、可能性の主なアイデアを理解し、必要なときに問題の解決策を見つける方法を学ぶことができます。
> **最も役立つアドバイス**: データに対して特定の操作を行う必要があるが方法がわからない場合、インターネットで検索してみてください。[Stackoverflow](https://stackoverflow.com/)には、Pythonでの典型的なタスクに関する有用なコードサンプルが多数掲載されています。
> **最も役立つアドバイス**: データに対して特定の操作を行う必要があるが方法がわからない場合、インターネットで検索してみてください。[Stackoverflow](https://stackoverflow.com/) には、Pythonでの典型的なタスクに関する有用なコードサンプルが多数掲載されています。
## [講義前のクイズ](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## 表形式データとデータフレーム
リレーショナルデータベースについて話した際に、表形式データにすでに触れました。大量のデータがあり、それが多くの異なるリンクされたテーブルに含まれている場合、SQLを使用して操作するのが理にかなっています。しかし、データの分布や値間の相関など、このデータについて**理解**や**洞察**を得る必要がある場合があります。データサイエンスでは、元のデータの変換とその後の可視化を行う必要があるケースが多くあります。これらのステップはPythonを使用して簡単に実行できます。
リレーショナルデータベースについて話した際に、表形式データにすでに触れました。大量のデータがあり、それが多くの異なるリンクされたテーブルに含まれている場合、SQLを使用して操作するのが理にかなっています。しかし、データの分布や値間の相関など、このデータについて**理解**や**洞察**を得る必要がある場合があります。データサイエンスでは、元のデータの変換とその後の可視化を行う必要があるケースが多くあります。これらのステップはPythonを使用して簡単に実行できます。
Pythonで表形式データを扱う際に役立つ最も重要なライブラリは以下の2つです:
* **[Pandas](https://pandas.pydata.org/)**: **データフレーム**を操作するためのライブラリで、リレーショナルテーブルに類似しています。名前付きの列を持ち、行、列、データフレーム全体に対してさまざまな操作を実行できます。
* **[Numpy](https://numpy.org/)**: **テンソル**、つまり多次元**配列**を操作するためのライブラリです。配列は同じ基礎型の値を持ち、データフレームよりもシンプルですが、より多くの数学的操作を提供し、オーバーヘッドが少なくなります。
また、知っておくべきその他のライブラリもいくつかあります:
また、知っておくべきライブラリがいくつかあります:
* **[Matplotlib](https://matplotlib.org/)**: データの可視化やグラフのプロットに使用されるライブラリ
* **[SciPy](https://www.scipy.org/)**: 追加の科学的関数を含むライブラリ。確率と統計について話した際にすでにこのライブラリに触れました
以下は、Pythonプログラムの冒頭でこれらのライブラリをインポートする際に通常使用するコードの例です:
以下は、Pythonプログラムの冒頭でこれらのライブラリをインポートする際に通常使用されるコードの一例です:
```python
import numpy as np
import pandas as pd
@ -61,9 +61,9 @@ Pandasはいくつかの基本的な概念を中心に構築されています
**Series**は、リストやnumpy配列に似た値のシーケンスです。主な違いは、Seriesには**インデックス**があり、Seriesを操作する際例: 加算する際にインデックスが考慮されることです。インデックスは単純な整数行番号リストや配列からSeriesを作成する際のデフォルトインデックスである場合もあれば、日付間隔のような複雑な構造を持つ場合もあります。
> **注意**: 付属のノートブック [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) にPandasの入門コードが含まれています。ここではいくつかの例を簡単に説明しますが、ぜひ完全なートブックを確認してください。
> **注意**: 付属のノートブック [`notebook.ipynb`](notebook.ipynb) にPandasの入門コードが含まれています。ここではいくつかの例を簡単に説明しますが、ぜひ完全なートブックを確認してください。
例を考えてみましょう: アイスクリームショップの売上を分析したいとします。一定期間の売上数(各日販売されたアイテム数のSeriesを生成します:
例を考えてみましょう: アイスクリームショップの売上を分析したいとします。一定期間の売上数各日販売されたアイテム数のSeriesを生成します:
```python
start_date = "Jan 1, 2020"
@ -73,9 +73,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![時系列プロット](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![時系列プロット](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ja.png)
次に、毎週友人のためパーティーを開催し、パーティー用にアイスクリームを10パック追加で購入するとします。これを示すために、週ごとにインデックス付けされた別のSeriesを作成できます:
次に、毎週友人のためパーティーを開催し、パーティー用にアイスクリームを10パック追加で購入するとします。これを示すために、週ごとにインデックス付けされた別のSeriesを作成できます:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -84,16 +84,16 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![時系列プロット](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![時系列プロット](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ja.png)
> **注意**: 単純な構文 `total_items+additional_items` を使用していないことに注意してください。この場合、結果のSeriesに多くの`NaN`*Not a Number*)値が含まれることになります。これは、`additional_items` Seriesのインデックスポイントの一部に欠損値があり、`NaN`を何かに加算すると`NaN`になるためです。そのため、加算時に`fill_value`パラメータを指定する必要があります。
> **注意**: 単純な構文 `total_items+additional_items` を使用していないことに注意してください。この場合、結果のSeriesに多くの`NaN`*Not a Number*)値が含まれることになります。これは、`additional_items` Seriesのインデックスポイントの一部に欠損値があり、`NaN`を加算すると結果が`NaN`になるためです。そのため、加算時に`fill_value`パラメータを指定する必要があります。
時系列データでは、異なる時間間隔でSeriesを**サンプリング**することもできます。たとえば、月ごとの平均売上量を計算したい場合、以下のコードを使用できます:
時系列データでは、異なる時間間隔でSeriesを**サンプリング**することもできます。たとえば、月ごとの平均売上量を計算したい場合、以下のコードを使用できます:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![月次時系列平均](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![月次時系列平均](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ja.png)
### DataFrame
@ -103,13 +103,13 @@ a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
これにより、以下のような横向のテーブルが作成されます:
これにより、以下のような横向のテーブルが作成されます:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Seriesを列として使用し、辞書を使って列名を指定することもできます:
また、Seriesを列として使用し、辞書を使用して列名を指定することもできます:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -131,7 +131,7 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
ここで`.T`はDataFrameの転置操作を意味し、`rename`操作を使用して列名を前の例に一致させることができます。
ここで`.T`はDataFrameを転置する操作を意味し、`rename`操作を使用して列名を前の例に一致させることができます。
DataFrameで実行できる最も重要な操作をいくつか紹介します:
@ -139,20 +139,20 @@ DataFrameで実行できる最も重要な操作をいくつか紹介します:
**条件に基づく行のフィルタリング**: 例えば、列`A`が5より大きい行のみを残すには、`df[df['A']>5]`と書きます。
> **注意**: フィルタリングの仕組みは次の通りです。式`df['A']<5`はブールSeriesを返し、元のSeries`df['A']`の各要素に対して式が`True`または`False`であるかを示します。ブールSeriesがインデックスとして使用されると、DataFrameの行のサブセットを返します。そのため、任意のPythonブール式を使用することはできません。例えば、`df[df['A']>5 and df['A']<7]`と書くのは間違いです。代わりに、ブールSeriesに対する特別な`&`操作を使用し、`df[(df['A']>5) & (df['A']<7)]`と書く必要があります(*括弧が重要です*)。
> **注意**: フィルタリングの仕組みは次の通りです。式`df['A']<5`はブールSeriesを返し、元のSeries`df['A']`の各要素に対して式が`True`または`False`であるかを示します。ブールSeriesがインデックスとして使用されると、DataFrameの行のサブセットが返されます。そのため、任意のPythonブール式を使用することはできません。例えば、`df[df['A']>5 and df['A']<7]`と書くのは間違いです。代わりに、ブールSeriesに対して特別な`&`操作を使用し、`df[(df['A']>5) & (df['A']<7)]`と書く必要があります(*括弧が重要です*)。
**新しい計算可能な列の作成**: 直感的な式を使用してDataFrameに新しい計算可能な列を簡単に作成できます:
**計算可能な新しい列の作成**: 直感的な式を使用してDataFrameに新しい計算可能な列を簡単に作成できます:
```python
df['DivA'] = df['A']-df['A'].mean()
```
この例では、列`A`の平均値からの乖離を計算しています。ここで実際に行われているのは、Seriesを計算し、それを左辺に割り当てて新しい列を作成することです。そのため、Seriesと互換性のない操作は使用できません。例えば、以下のコードは間違っています:
この例では、列Aの平均値からの乖離を計算しています。ここで実際に行われているのは、Seriesを計算し、それを左辺に割り当てて新しい列を作成することです。そのため、Seriesと互換性のない操作は使用できません。例えば、以下のコードは間違っています:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
後者の例は構文的には正しいですが、意図した結果を得られません。これは、列`B`のSeriesの長さを列のすべての値に割り当ててしまい、個々の要素の長さではないためです。
後者の例は構文的には正しいですが、意図した個々の要素の長さではなく、Series`B`の長さをすべての値に割り当ててしまうため、誤った結果を返します。
このような複雑な式を計算する必要がある場合は、`apply`関数を使用できます。最後の例は以下のように書き換えることができます:
このような複雑な式を計算する必要がある場合は、`apply`関数を使用できます。最後の例はのように書き換えることができます:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -178,9 +178,9 @@ df['LenB'] = df['B'].apply(len)
df.iloc[:5]
```
**グループ化**は、Excelの*ピボットテーブル*に似た結果を得るためによく使用されます。例えば、`LenB`ごとに列`A`の平均値を計算したい場合、DataFrameを`LenB`でグループ化し、`mean`を呼び出します:
**グループ化**は、Excelの*ピボットテーブル*に似た結果を得るためによく使用されます。例えば、`LenB`の各値に対して列`A`の平均値を計算したい場合、DataFrameを`LenB`でグループ化し、`mean`を呼び出します:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
グループ内の平均値と要素数を計算する必要がある場合は、より複雑な`aggregate`関数を使用できます:
```python
@ -199,67 +199,67 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### データの取得
私たちは、Pythonオブジェクトから簡単にSeriesやDataFrameを構築できる方法を見てきました。しかし、データは通常、テキストファイルやExcelテーブルの形式で提供されます。幸いなことに、Pandasはディスクからデータを読み込むための簡単な方法を提供しています。例えば、CSVファイルを読み込むのは以下のように簡単です
PythonオブジェクトからSeriesやDataFrameを構築するのがいかに簡単かを見てきました。しかし、データは通常、テキストファイルやExcelテーブルの形式で提供されます。幸いなことに、Pandasはディスクからデータを読み込むための簡単な方法を提供しています。例えば、CSVファイルを読み込むのは以下のように簡単です
```python
df = pd.read_csv('file.csv')
```
「チャレンジ」セクションでは、外部ウェブサイトからデータを取得する方法を含め、データの読み込みのさらなる例を見ていきます。
「チャレンジ」セクションでは、外部ウェブサイトからデータを取得する例を含め、データの読み込みについてさらに詳しく見ていきます。
### データの表示とプロット
データサイエンティストはデータを探索する必要があるため、データを視覚化できることが重要です。DataFrameが大きい場合、最初の数行を出力して、すべてが正しく行われていることを確認したいことがよくあります。これは、`df.head()`を呼び出すことで実行できます。Jupyter Notebookから実行している場合、DataFrameがきれいな表形式で表示されます。
データサイエンティストはデータを探索する必要があるため、データを視覚化することが重要です。DataFrameが大きい場合、最初の数行を表示してすべてが正しく動作していることを確認したいことがよくあります。これには`df.head()`を呼び出すことで対応できます。Jupyter Notebookで実行している場合、DataFrameがきれいな表形式で表示されます。
また、いくつかの列を視覚化するために`plot`関数を使用する方法も見てきました。`plot`は多くのタスクに非常に便利で、`kind=`パラメータを使用してさまざまなグラフタイプをサポートしていますが、より複雑なものをプロットする必要がある場合は、`matplotlib`ライブラリを直接使用することもできます。データの視覚化については、別のコースレッスンで詳しく説明します。
また、いくつかの列を視覚化するために`plot`関数を使用する方法も見てきました。`plot`は多くのタスクに非常に便利で、`kind=`パラメータを使用してさまざまなグラフタイプをサポートしていますが、より複雑なものをプロットしたい場合は、`matplotlib`ライブラリを直接使用することもできます。データの視覚化については、別のコースレッスンで詳しく説明します。
この概要では、Pandasの最も重要な概念をカバーしましたが、このライブラリは非常に豊富で、できることに限りはありませんそれでは、この知識を使って具体的な問題を解決してみましょう。
この概要ではPandasの重要な概念をほとんど網羅していますが、このライブラリは非常に豊富で、できることに限界はありませんでは、この知識を使って具体的な問題を解決してみましょう。
## 🚀 チャレンジ1: COVIDの拡散を分析する
最初に取り組む問題は、COVID-19の感染拡大のモデル化です。そのために、[ジョンズ・ホプキンス大学](https://jhu.edu/)の[システム科学工学センター](https://systems.jhu.edu/)CSSEが提供する、各国の感染者数に関するデータを使用します。このデータセットは[このGitHubリポジトリ](https://github.com/CSSEGISandData/COVID-19)で利用可能です。
最初に取り組む問題は、COVID-19の流行拡散のモデル化です。そのために、[ジョンズ・ホプキンス大学](https://jhu.edu/)の[システム科学工学センター](https://systems.jhu.edu/) (CSSE)が提供する、各国の感染者数に関するデータを使用します。このデータセットは[このGitHubリポジトリ](https://github.com/CSSEGISandData/COVID-19)で利用可能です。
データの扱い方を示すために、[`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb)を開き、上から下まで読んでみてください。また、セルを実行したり、最後に用意したチャレンジに取り組んだりすることもできます。
データの扱い方を示すために、[`notebook-covidspread.ipynb`](notebook-covidspread.ipynb)を開き、上から下まで読んでみてください。また、セルを実行したり、最後に残しておいたチャレンジに取り組むこともできます。
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ja.png)
> Jupyter Notebookでコードを実行する方法がわからない場合は、[この記事](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)を参照してください。
## 非構造化データの扱い
データは多くの場合、表形式で提供されますが、場合によってはテキストや画像など、あまり構造化されていないデータを扱う必要があります。この場合、上記で見たデータ処理技術を適用するために、何らかの方法で構造化データを**抽出**する必要があります。以下はいくつかの例です:
データは非常に頻繁に表形式で提供されますが、場合によってはテキストや画像など、あまり構造化されていないデータを扱う必要があります。この場合、上記で見たデータ処理技術を適用するために、何らかの方法で構造化データを**抽出**する必要があります。以下はの例です:
* テキストからキーワードを抽出し、それらのキーワードがどのくらい頻繁に出現するかを確認する
* ニューラルネットワークを使用して画像内のオブジェクトに関する情報を抽出する
* ニューラルネットワークを使用して画像内のオブジェクトに関する情報を抽出する
* ビデオカメラのフィードから人々の感情に関する情報を取得する
## 🚀 チャレンジ2: COVID関連論文の分析
このチャレンジでは、COVIDパンデミックに関する科学論文の処理に焦点を当てます。[CORD-19データセット](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge)には、COVIDに関する7000以上執筆時点の論文が、メタデータや要約とともに提供されていますそのうち約半分には全文も含まれています)。
このチャレンジでは、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**: このリポジトリにはデータセットのコピーは含まれていません。まず、[この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)から登録なしでデータセットをダウンロードすることもできますが、メタデータファイルに加えてすべての全文が含まれます。
> **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)からデータセットをダウンロードすることもできますが、メタデータファイルに加えて全文も含まれます。
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb)を開き、上から下まで読んでみてください。また、セルを実行したり、最後に用意したチャレンジに取り組んだりすることもできます。
[`notebook-papers.ipynb`](notebook-papers.ipynb)を開き、上から下まで読んでみてください。また、セルを実行したり、最後に残しておいたチャレンジに取り組むこともできます。
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ja.png)
## 画像データの処理
最近では、画像を理解するための非常に強力なAIモデルが開発されています。これらのモデルを使用すると、事前学習済みのニューラルネットワークやクラウドサービスを利用して多くのタスクを解決できます。以下はいくつかの例です:
最近、画像を理解するための非常に強力なAIモデルが開発されています。事前学習済みのニューラルネットワークやクラウドサービスを使用して解決できるタスクが多数あります。以下はその例です:
* **画像分類**:画像を事前定義されたクラスの1つに分類するのに役立ちます。[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 SDK](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/)というブログ記事では、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を主要なツールとして使用しています。データサイエンスの旅を本格的に進めたい場合は、Pythonを深く学ぶことをお勧めします!
## [講義後のクイズ](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -274,17 +274,17 @@ df = pd.read_csv('file.csv')
**Python学習**
* [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](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)上の学習パス)
* [Take your First Steps with Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learnの学習パス
## 課題
[上記のチャレンジについて、より詳細なデータ研究を行う](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) を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確さが含まれる可能性があります。元の言語で記載された原文を公式な情報源としてご参照ください。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用に起因する誤解や誤訳について、当方は一切の責任を負いません。
この文書は、AI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知ください。元の言語で記載された文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当方は一切の責任を負いません。

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T12:58:58+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:31:08+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "ko"
}
@ -13,39 +13,39 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Python 작업하기 - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![Intro Video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ko.png)](https://youtu.be/dZjWOGbsN4Y)
데이터베이스는 데이터를 저장하고 쿼리 언어를 사용하여 데이터를 조회하는 데 매우 효율적인 방법을 제공하지만, 데이터 처리를 가장 유연하게 수행하는 방법은 직접 프로그램을 작성하여 데이터를 조작하는 것입니다. 많은 경우 데이터베이스 쿼리가 더 효과적일 수 있습니다. 하지만 더 복잡한 데이터 처리가 필요한 경우 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을 사용한 간단한 데이터 처리에 초점을 맞출 것입니다. 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)에서 제공하는 학습 경로
데이터는 다양한 형태로 제공될 수 있습니다. 이번 강의에서는 **표 형식 데이터**, **텍스트**, **이미지**의 세 가지 형태의 데이터를 고려할 것입니다.
우리는 관련 라이브러리 전체를 다루기보다는 데이터 처리의 몇 가지 예에 집중할 것입니다. 이를 통해 가능한 작업의 주요 아이디어를 얻고, 필요할 때 문제 해결 방법을 찾을 수 있는 이해를 제공할 것입니다.
우리는 관련 라이브러리 전체를 다루는 대신 몇 가지 데이터 처리 예에 집중할 것입니다. 이를 통해 가능한 작업의 주요 아이디어를 얻고, 필요할 때 문제 해결 방법을 찾을 수 있는 이해를 제공할 것입니다.
> **가장 유용한 조언**: 데이터를 처리하는 특정 작업을 수행해야 하지만 방법을 모를 경우, 인터넷에서 검색해 보세요. [Stackoverflow](https://stackoverflow.com/)에는 많은 일반적인 작업에 대한 유용한 Python 코드 샘플이 포함되어 있습니다.
> **가장 유용한 조언**: 데이터를 처리하는 특정 작업을 수행해야 하지만 방법을 모를 경우 인터넷에서 검색해 보세요. [Stackoverflow](https://stackoverflow.com/)에는 많은 일반적인 작업에 대한 유용한 Python 코드 샘플이 포함되어 있습니다.
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## 표 형식 데이터와 데이터프레임
관계형 데이터베이스를 논의할 때 이미 표 형식 데이터를 접한 적이 있습니다. 많은 데이터가 있고 여러 개의 연결된 테이블에 포함되어 있다면 SQL을 사용하는 것이 확실히 합리적입니다. 하지만 데이터**분포**나 **값 간의 상관관계**와 같은 데이터를 이해하거나 통찰을 얻어야 하는 경우가 있습니다. 데이터 과학에서는 원본 데이터를 변환한 후 시각화를 수행해야 하는 경우가 많습니다. 이러한 두 단계는 Python을 사용하여 쉽게 수행할 수 있습니다.
관계형 데이터베이스를 논의할 때 이미 표 형식 데이터를 접한 적이 있습니다. 많은 데이터가 있고 여러 개의 연결된 테이블에 포함되어 있다면 SQL을 사용하는 것이 확실히 합리적입니다. 하지만 데이터 과학에서는 데이터의 분포, 값 간의 상관관계 등 데이터를 이해하거나 통찰력을 얻어야 하는 경우가 많습니다. 또한 원본 데이터를 변환한 후 시각화를 수행해야 하는 경우도 많습니다. 이러한 단계는 Python을 사용하여 쉽게 수행할 수 있습니다.
Python에서 표 형식 데이터를 처리하는 데 유용한 두 가지 주요 라이브러리가 있습니다:
* **[Pandas](https://pandas.pydata.org/)**: 관계형 테이블과 유사한 **데이터프레임**을 조작할 수 있니다. 이름이 지정된 열을 가질 수 있으며, 행, 열 및 데이터프레임 전체에 대해 다양한 작업을 수행할 수 있습니다.
* **[Pandas](https://pandas.pydata.org/)**: **데이터프레임**을 조작할 수 있게 해주는 라이브러리로, 관계형 테이블과 유사합니다. 이름이 지정된 열을 가질 수 있으며, 행, 열 및 데이터프레임 전체에 대해 다양한 작업을 수행할 수 있습니다.
* **[Numpy](https://numpy.org/)**: **텐서**, 즉 다차원 **배열**을 처리하는 라이브러리입니다. 배열은 동일한 기본 유형의 값을 가지며 데이터프레임보다 간단하지만 더 많은 수학적 작업을 제공하며 오버헤드가 적습니다.
또한 알아두어야 할 몇 가지 다른 라이브러리가 있습니다:
또한 알아두면 좋은 몇 가지 다른 라이브러리가 있습니다:
* **[Matplotlib](https://matplotlib.org/)**: 데이터 시각화 및 그래프 그리기에 사용되는 라이브러리
* **[SciPy](https://www.scipy.org/)**: 추가적인 과학적 기능을 제공하는 라이브러리. 확률과 통계를 논의할 때 이미 이 라이브러리를 접한 적이 있습니다.
* **[SciPy](https://www.scipy.org/)**: 추가적인 과학적 기능을 제공하는 라이브러리. 확률 및 통계에 대해 논의할 때 이미 이 라이브러리를 접한 적이 있습니다.
다음은 Python 프로그램의 시작 부분에서 이러한 라이브러리를 가져오는 데 일반적으로 사용하는 코드입니다:
```python
@ -59,11 +59,11 @@ Pandas는 몇 가지 기본 개념을 중심으로 구성됩니다.
### 시리즈 (Series)
**시리즈**는 리스트나 numpy 배열과 유사한 값의 시퀀스입니다. 주요 차이점은 시리즈에 **인덱스**가 있다는 점이며, 시리즈를 조작할 때(예: 더하기) 인덱스가 고려됩니다. 인덱스는 리스트나 배열에서 기본적으로 사용되는 정수 행 번호처럼 간단할 수도 있고, 날짜 간격과 같은 복잡한 구조를 가질 수도 있습니다.
**시리즈**는 리스트나 numpy 배열과 유사한 값의 시퀀스입니다. 주요 차이점은 시리즈에 **인덱스**가 있다는 점이며, 시리즈를 조작할 때(예: 더하기) 인덱스가 고려됩니다. 인덱스는 리스트나 배열에서 기본적으로 사용되는 정수 행 번호처럼 간단할 수도 있고, 날짜 간격과 같은 복잡한 구조를 가질 수도 있습니다.
> **참고**: 동반된 노트북 [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb)에 Pandas의 소개 코드가 포함되어 있습니다. 여기에서는 몇 가지 예만 간략히 설명하며, 전체 노트북을 확인하는 것을 권장합니다.
> **참고**: 동반된 노트북 [`notebook.ipynb`](notebook.ipynb)에 Pandas의 소개 코드가 포함되어 있습니다. 여기에서는 몇 가지 예제를 간략히 설명하며, 전체 노트북을 확인해보는 것을 권장합니다.
예를 들어, 아이스크림 가게의 판매를 분석하고 싶다고 가정해 봅시다. 특정 기간 동안 판매량(매일 판매된 아이템 수)의 시리즈를 생성해 보겠습니다:
예를 들어, 아이스크림 가게의 판매 데이터를 분석하고 싶다고 가정해 봅시다. 특정 기간 동안 판매량(매일 판매된 아이템 수)의 시리즈를 생성해 보겠습니다:
```python
start_date = "Jan 1, 2020"
@ -73,9 +73,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Time Series Plot](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ko.png)
이제 매주 친구들과 파티를 열고 추가로 아이스크림 10팩을 가져간다고 가정해 봅시다. 이를 보여주는 또 다른 시리즈를 생성할 수 있습니다:
이제 매주 친구들과 파티를 열고 추가로 아이스크림 10팩을 가져간다고 가정해 봅시다. 이를 나타내는 또 다른 시리즈를 생성할 수 있습니다:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -84,16 +84,16 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Time Series Plot](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ko.png)
> **참고**: 단순한 `total_items+additional_items`을 사용하지 않았습니다. 그렇게 하면 결과 시리즈에서 많은 `NaN`(*Not a Number*) 값을 얻게 됩니다. 이는 `additional_items` 시리즈의 일부 인덱스 포인트에 값이 없기 때문이며, `NaN`을 다른 값에 더하면 결과 `NaN`이 됩니다. 따라서 덧셈 중에 `fill_value` 매개변수를 지정해야 합니다.
> **참고**: 단순한 문 `total_items+additional_items`을 사용하지 않았습니다. 그렇게 하면 결과 시리즈에 많은 `NaN`(*Not a Number*) 값이 생깁니다. 이는 `additional_items` 시리즈의 일부 인덱스 포인트에 값이 없기 때문이며, `NaN`을 다른 값에 더하면 결과 `NaN`이 됩니다. 따라서 덧셈 중에 `fill_value` 매개변수를 지정해야 합니다.
시계열 데이터를 사용하면 다른 시간 간격으로 시리즈를 **재샘플링**할 수도 있습니다. 예를 들어, 월별 평균 판매량을 계산하고 싶다면 다음 코드를 사용할 수 있습니다:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Monthly Time Series Averages](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Monthly Time Series Averages](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ko.png)
### 데이터프레임 (DataFrame)
@ -127,30 +127,30 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**참고**: 이전 테이블을 전치하여 테이블 레이아웃을 얻을 수도 있습니다. 예를 들어,
**참고**: 이전 테이블을 전치하여 동일한 테이블 레이아웃을 얻을 수도 있습니다. 예를 들어, 다음과 같이 작성하면 됩니다:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
여기서 `.T`는 데이터프레임을 전치하는 작업, 즉 행과 열을 바꾸는 작업을 의미하며, `rename` 작업은 이전 예제와 일치하도록 열 이름을 변경할 수 있게 합니다.
여기서 `.T`는 데이터프레임을 전치하는 작업을 의미하며, `rename` 작업을 통해 이전 예제와 일치하도록 열 이름을 변경할 수 있습니다.
다음은 데이터프레임에서 수행할 수 있는 몇 가지 중요한 작업니다:
데이터프레임에서 수행할 수 있는 몇 가지 중요한 작업은 다음과 같습니다:
**열 선택**. `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`는 부울 시리즈를 반환하며, 이는 원래 시리즈 `df['A']`의 각 요소에 대해 표현식이 `True`인지 `False`인지 나타냅니다. 부울 시리즈가 인덱스로 사용되면 데이터프레임의 행 하위 집합을 반환합니다. 따라서 임의의 Python 부울 표현식을 사용할 수 없습니다. 예를 들어, `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'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
후자의 예제는 문적으로는 올바르지만 잘못된 결과를 제공합니다. 이는 시리즈 `B`의 길이를 열의 모든 값에 할당하기 때문이며, 우리가 의도한 개별 요소의 길이가 아닙니다.
후자의 예제는 문적으로는 올바르지만 잘못된 결과를 제공합니다. 이는 시리즈 `B`의 길이를 열의 모든 값에 할당하기 때문이며, 우리가 의도한 개별 요소의 길이가 아닙니다.
이와 같은 복잡한 표현식을 계산해야 하는 경우 `apply` 함수를 사용할 수 있습니다. 마지막 예제는 다음과 같이 작성할 수 있습니다:
```python
@ -180,7 +180,7 @@ df.iloc[:5]
**그룹화**는 종종 Excel의 *피벗 테이블*과 유사한 결과를 얻는 데 사용됩니다. 예를 들어, `LenB`의 각 숫자에 대해 열 `A`의 평균값을 계산하고 싶다면 데이터프레임을 `LenB`로 그룹화한 다음 `mean`을 호출할 수 있습니다:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
그룹의 평균값과 요소 수를 계산해야 하는 경우 더 복잡한 `aggregate` 함수를 사용할 수 있습니다:
```python
@ -188,7 +188,7 @@ df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
이렇게 하면 다음 테이블이 생성됩니다:
이렇게 하면 다음과 같은 테이블이 생성됩니다:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -199,7 +199,7 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### 데이터 가져오기
우리는 Python 객체로부터 Series와 DataFrame을 생성하는 것이 얼마나 쉬운지 살펴보았습니다. 하지만 데이터는 보통 텍스트 파일이나 Excel 테이블 형태로 제공됩니다. 다행히도, Pandas는 디스크에서 데이터를 불러오는 간단한 방법을 제공합니다. 예를 들어, CSV 파일을 읽는 것은 다음과 같이 간단합니다:
우리는 Python 객체로부터 Series와 DataFrame을 생성하는 것이 얼마나 쉬운지 살펴보았습니다. 하지만 데이터는 보통 텍스트 파일이나 Excel 테이블 형태로 제공됩니다. 다행히도 Pandas는 디스크에서 데이터를 로드하는 간단한 방법을 제공합니다. 예를 들어, CSV 파일을 읽는 것은 다음과 같이 간단합니다:
```python
df = pd.read_csv('file.csv')
```
@ -207,74 +207,74 @@ df = pd.read_csv('file.csv')
### 출력 및 시각화
데이터 과학자는 데이터를 탐색해야 할 때가 많으므로, 데이터를 시각화할 수 있는 능력이 중요합니다. 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 확산 분석
우리가 집중할 첫 번째 문제는 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`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb)를 열어 위에서 아래로 읽어보시길 권장합니다. 셀을 실행하고, 마지막에 남겨둔 몇 가지 도전을 시도해볼 수도 있습니다.
데이터를 다루는 방법을 보여주기 위해 [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb)를 열어 처음부터 끝까지 읽어보시길 권장합니다. 셀을 실행하고, 마지막에 남겨둔 몇 가지 도전을 수행할 수도 있습니다.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID 확산](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ko.png)
> Jupyter Notebook에서 코드를 실행하는 방법을 모른다면, [이 기사](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)를 참고하세요.
> Jupyter Notebook에서 코드를 실행하는 방법을 모른다면 [이 기사](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)를 참고하세요.
## 비구조적 데이터 다루기
## 비정형 데이터 작업
데이터는 종종 표 형식으로 제공되지만, 경우에 따라 텍스트나 이미지와 같은 덜 구조화된 데이터를 다뤄야 할 때도 있습니다. 이 경우, 위에서 본 데이터 처리 기술을 적용하려면 구조화된 데이터를 **추출**해야 합니다. 몇 가지 예는 다음과 같습니다:
데이터는 매우 자주 표 형식으로 제공되지만, 경우에 따라 텍스트나 이미지와 같은 덜 구조화된 데이터를 다뤄야 할 때도 있습니다. 이 경우, 위에서 본 데이터 처리 기술을 적용하려면 구조화된 데이터를 **추출**해야 합니다. 몇 가지 예는 다음과 같습니다:
* 텍스트에서 키워드를 추출하고, 해당 키워드가 얼마나 자주 나타나는지 확인하기
* 신경망을 사용하여 이미지에서 객체에 대한 정보 추출하기
* 비디오 카메라 피드에서 사람들의 감정을 파악하
* 텍스트에서 키워드를 추출하고 해당 키워드가 얼마나 자주 나타나는지 확인
* 신경망을 사용하여 사진 속 객체에 대한 정보 추출
* 비디오 카메라 피드에서 사람들의 감정 정보 얻
## 🚀 Challenge 2: COVID 논문 분석
이 도전에서는 COVID 팬데믹 주제를 계속 다루며, 관련 과학 논문을 처리하는 데 초점을 맞춥니다. [CORD-19 데이터셋](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge)은 메타데이터와 초록이 포함된 7000개 이상의 논문(작성 시점 기준)을 제공합니다. 이 중 약 절반은 전체 텍스트도 포함되어 있습니다.
이 도전에서는 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**: 이 저장소에는 데이터셋 사본이 포함되어 있지 않습니다. 먼저 [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)에서 데이터셋을 다운로드할 수도 있지만, 이 경우 메타데이터 파일 외에 모든 전체 텍스트가 포함됩니다.
> **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)에서 데이터셋을 다운로드할 수도 있지만, 메타데이터 파일 외에 모든 전체 텍스트가 포함됩니다.
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb)를 열어 위에서 아래로 읽어보세요. 셀을 실행하고, 마지막에 남겨둔 몇 가지 도전을 시도해볼 수도 있습니다.
[`notebook-papers.ipynb`](notebook-papers.ipynb)를 열어 처음부터 끝까지 읽어보세요. 셀을 실행하고, 마지막에 남겨둔 몇 가지 도전을 수행할 수도 있습니다.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![COVID 의료 치료](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ko.png)
## 이미지 데이터 처리
최근에는 이미지를 이해할 수 있는 매우 강력한 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)를 사용하여 호출할 수 있으며, 따라서 데이터 탐색 워크플로에 쉽게 통합할 수 있습니다.
다음은 이미지 데이터 소스를 탐색하는 몇 가지 예입니다:
* 블로그 글 [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)를 사용하여 이벤트 사진에서 사람들의 감정을 추출하고, 무엇이 사람들을 행복하게 만드는지 이해하려고 합니다.
* 블로그 글 [코딩 없이 데이터 과학 배우기](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)
## 복습 및 자기 학습
**도서**
****
* [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 학습**
* [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의 학습 경로
**Python 배우기**
* [Turtle Graphics와 프랙탈로 Python을 재미있게 배우기](https://github.com/shwars/pycourse)
* [Python 첫걸음 떼기](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn의 학습 경로
## 과제
@ -282,9 +282,9 @@ df = pd.read_csv('file.csv')
## 크레딧
이 강의는 [Dmitry Soshnikov](http://soshnikov.com) ♥️를 담아 작성했습니다.
이 강의는 [Dmitry Soshnikov](http://soshnikov.com) ♥️를 담아 작성했습니다.
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T16:03:09+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T16:07:15+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "lt"
}
@ -13,12 +13,12 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Darbas su Python - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![Intro Video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.lt.png)](https://youtu.be/dZjWOGbsN4Y)
Nors duomenų bazės siūlo labai efektyvius būdus saugoti duomenis ir užklausas vykdyti naudojant užklausų kalbas, lankstiausias duomenų apdorojimo būdas yra rašyti savo programą, kuri manipuliuoja duomenimis. Daugeliu atvejų duomenų bazės užklausa būtų efektyvesnis sprendimas. Tačiau kai kuriais atvejais, kai reikalingas sudėtingesnis duomenų apdorojimas, tai negali būti lengvai atlikta naudojant SQL.
Duomenų apdorojimas gali būti programuojamas bet kuria programavimo kalba, tačiau yra tam tikrų kalbų, kurios yra aukštesnio lygio dirbant su duomenimis. Duomenų mokslininkai dažniausiai renkasi vieną iš šių kalbų:
Nors duomenų bazės siūlo labai efektyvius būdus saugoti duomenis ir užklausas vykdyti naudojant užklausų kalbas, lankstiausias būdas apdoroti duomenis yra rašyti savo programą, kuri manipuliuoja duomenimis. Daugeliu atvejų duomenų bazės užklausa būtų efektyvesnis sprendimas. Tačiau kai kuriais atvejais, kai reikia sudėtingesnio duomenų apdorojimo, tai negali būti lengvai atlikta naudojant SQL.
Duomenų apdorojimas gali būti programuojamas bet kuria programavimo kalba, tačiau yra tam tikrų kalbų, kurios yra aukštesnio lygio dirbant su duomenimis. Duomenų mokslininkai paprastai renkasi vieną iš šių kalbų:
* **[Python](https://www.python.org/)** universali programavimo kalba, kuri dažnai laikoma viena geriausių pasirinkimų pradedantiesiems dėl savo paprastumo. Python turi daugybę papildomų bibliotekų, kurios gali padėti išspręsti daugelį praktinių problemų, pavyzdžiui, išgauti duomenis iš ZIP archyvo ar konvertuoti paveikslėlį į pilką spalvą. Be duomenų mokslo, Python taip pat dažnai naudojama interneto svetainių kūrimui.
* **[Python](https://www.python.org/)** universali programavimo kalba, kuri dažnai laikoma viena geriausių pasirinkimų pradedantiesiems dėl savo paprastumo. Python turi daugybę papildomų bibliotekų, kurios gali padėti išspręsti daugelį praktinių problemų, pvz., išgauti duomenis iš ZIP archyvo ar konvertuoti paveikslėlį į pilką spalvą. Be duomenų mokslo, Python taip pat dažnai naudojamas interneto svetainių kūrimui.
* **[R](https://www.r-project.org/)** tradicinė įrankių dėžė, sukurta statistinių duomenų apdorojimui. Ji taip pat turi didelę bibliotekų saugyklą (CRAN), todėl yra geras pasirinkimas duomenų apdorojimui. Tačiau R nėra universali programavimo kalba ir retai naudojama už duomenų mokslo ribų.
* **[Julia](https://julialang.org/)** kita kalba, sukurta specialiai duomenų mokslui. Ji skirta geresniam našumui nei Python, todėl yra puikus įrankis moksliniams eksperimentams.
@ -39,11 +39,11 @@ Mes sutelksime dėmesį į keletą duomenų apdorojimo pavyzdžių, o ne pateiks
## Lenteliniai duomenys ir duomenų rėmeliai
Jūs jau susipažinote su lenteliniais duomenimis, kai kalbėjome apie reliacines duomenų bazes. Kai turite daug duomenų, kurie yra saugomi skirtingose susietose lentelėse, tikrai verta naudoti SQL darbui su jais. Tačiau yra daug atvejų, kai turime duomenų lentelę ir norime gauti tam tikrą **supratimą** ar **įžvalgas** apie šiuos duomenis, pavyzdžiui, pasiskirstymą, vertybių koreliaciją ir pan. Duomenų moksle dažnai reikia atlikti tam tikras pradinio duomenų transformacijas, po kurių seka vizualizacija. Abi šios užduotys gali būti lengvai atliktos naudojant Python.
Jūs jau susipažinote su lenteliniais duomenimis, kai kalbėjome apie reliacines duomenų bazes. Kai turite daug duomenų, kurie yra saugomi skirtingose susietose lentelėse, tikrai verta naudoti SQL darbui su jais. Tačiau yra daug atvejų, kai turime duomenų lentelę ir norime gauti tam tikrą **supratimą** ar **įžvalgas** apie šiuos duomenis, pvz., pasiskirstymą, vertybių koreliaciją ir pan. Duomenų moksle dažnai reikia atlikti tam tikras originalių duomenų transformacijas, po kurių seka vizualizacija. Abi šios užduotys gali būti lengvai atliktos naudojant Python.
Yra dvi naudingiausios Python bibliotekos, kurios gali padėti dirbti su lenteliniais duomenimis:
* **[Pandas](https://pandas.pydata.org/)** leidžia manipuliuoti vadinamaisiais **duomenų rėmeliais**, kurie yra analogiški reliacinėms lentelėms. Galite turėti pavadintas stulpelius ir atlikti įvairias operacijas su eilutėmis, stulpeliais ir duomenų rėmeliais apskritai.
* **[Numpy](https://numpy.org/)** yra biblioteka, skirta dirbti su **tensoriais**, t. y. daugiamačiais **masyvais**. Masyvas turi tos pačios pagrindinės rūšies vertybes, yra paprastesnis nei duomenų rėmelis, tačiau siūlo daugiau matematinių operacijų ir sukuria mažiau apkrovos.
* **[Numpy](https://numpy.org/)** yra biblioteka, skirta dirbti su **tensoriais**, t. y. daugiamačiais **masyvais**. Masyvas turi vienodo tipo vertybes ir yra paprastesnis nei duomenų rėmelis, tačiau siūlo daugiau matematinių operacijų ir sukuria mažiau papildomų išteklių.
Taip pat yra keletas kitų bibliotekų, kurias verta žinoti:
* **[Matplotlib](https://matplotlib.org/)** biblioteka, naudojama duomenų vizualizacijai ir grafų braižymui
@ -63,9 +63,9 @@ Pandas yra pagrįsta keliais pagrindiniais konceptais.
**Serijos** yra vertybių seka, panaši į sąrašą ar numpy masyvą. Pagrindinis skirtumas yra tas, kad serijos taip pat turi **indeksą**, ir kai atliekame operacijas su serijomis (pvz., jas sudedame), indeksas yra įtraukiamas į skaičiavimus. Indeksas gali būti toks paprastas kaip eilutės numeris (tai yra numatytasis indeksas, kai serija kuriama iš sąrašo ar masyvo), arba jis gali turėti sudėtingą struktūrą, pvz., datos intervalą.
> **Pastaba**: Įvadinis Pandas kodas pateiktas pridedamame užrašų knygelėje [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Čia pateikiame tik keletą pavyzdžių, tačiau tikrai kviečiame peržiūrėti visą užrašų knygelę.
> **Pastaba**: Įvadinis Pandas kodas pateiktas pridedamame užrašų knygelėje [`notebook.ipynb`](notebook.ipynb). Čia pateikiame tik keletą pavyzdžių, tačiau tikrai kviečiame peržiūrėti visą užrašų knygelę.
Pavyzdžiui, norime analizuoti mūsų ledų parduotuvės pardavimus. Sukurkime seriją pardavimų skaičių (kiekvieną dieną parduotų prekių skaičius) tam tikram laikotarpiui:
Pavyzdžiui, norime analizuoti mūsų ledų pardavimo vietos pardavimus. Sukurkime seriją pardavimo skaičių (kiek vienetų parduota kiekvieną dieną) tam tikram laikotarpiui:
```python
start_date = "Jan 1, 2020"
@ -75,9 +75,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Laiko serijos grafikas](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Laiko serijos grafikas](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.lt.png)
Dabar tarkime, kad kiekvieną savaitę organizuojame vakarėlį draugams ir pasiimame papildomus 10 ledų pakuočių vakarėliui. Galime sukurti kitą seriją, indeksuotą pagal savaitę, kad tai parodytume:
Dabar tarkime, kad kiekvieną savaitę organizuojame vakarėlį draugams ir pasiimame papildomus 10 ledų pakuočių vakarėliui. Galime sukurti kitą seriją, indeksuotą savaitėmis, kad tai parodytume:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -86,16 +86,16 @@ Kai sudedame dvi serijas, gauname bendrą skaičių:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Laiko serijos grafikas](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Laiko serijos grafikas](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.lt.png)
> **Pastaba**: Mes nenaudojame paprastos sintaksės `total_items+additional_items`. Jei tai darytume, gautume daug `NaN` (*Not a Number*) reikšmių rezultato serijoje. Taip yra todėl, kad kai kurių indeksų taškų serijoje `additional_items` trūksta reikšmių, o sudėjus `NaN` su bet kuo gaunamas `NaN`. Todėl reikia nurodyti `fill_value` parametrą sudėties metu.
> **Pastaba**: Mes nenaudojame paprastos sintaksės `total_items+additional_items`. Jei tai darytume, gautume daug `NaN` (*Not a Number*) reikšmių rezultato serijoje. Taip yra todėl, kad kai kuriems indeksų taškams serijoje `additional_items` trūksta reikšmių, o sudėjus `NaN` su bet kuo gaunamas `NaN`. Todėl reikia nurodyti `fill_value` parametrą sudėties metu.
Su laiko serijomis taip pat galime **perdaryti** seriją su skirtingais laiko intervalais. Pavyzdžiui, jei norime apskaičiuoti vidutinį pardavimų kiekį mėnesiui, galime naudoti šį kodą:
Su laiko serijomis taip pat galime **perdaryti** seriją su skirtingais laiko intervalais. Pavyzdžiui, tarkime, norime apskaičiuoti vidutinį pardavimų kiekį mėnesiui. Galime naudoti šį kodą:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Mėnesio laiko serijos vidurkiai](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Mėnesio laiko serijos vidurkiai](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.lt.png)
### Duomenų rėmelis
@ -139,15 +139,15 @@ df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
**Stulpelių pasirinkimas**. Galime pasirinkti atskirus stulpelius rašydami `df['A']` ši operacija grąžina seriją. Taip pat galime pasirinkti stulpelių pogrupį į kitą duomenų rėmelį rašydami `df[['B','A']]` tai grąžina kitą duomenų rėmelį.
**Filtravimas** tik tam tikrų eilučių pagal kriterijus. Pavyzdžiui, norėdami palikti tik eilutes, kuriose stulpelis `A` yra didesnis nei 5, galime rašyti `df[df['A']>5]`.
**Filtravimas** tik tam tikrų eilučių pagal kriterijus. Pavyzdžiui, norint palikti tik eilutes, kuriose stulpelis `A` yra didesnis nei 5, galime rašyti `df[df['A']>5]`.
> **Pastaba**: Filtravimas veikia taip. Išraiška `df['A']<5` grąžina loginę seriją, kuri nurodo, ar išraiška yra `True` ar `False` kiekvienam pradiniam serijos `df['A']` elementui. Kai loginė serija naudojama kaip indeksas, ji grąžina eilučių pogrupį duomenų rėmelyje. Todėl negalima naudoti bet kokios Python loginės išraiškos, pavyzdžiui, rašyti `df[df['A']>5 and df['A']<7]` būtų neteisinga. Vietoj to turėtumėte naudoti specialią `&` operaciją loginėms serijoms, rašydami `df[(df['A']>5) & (df['A']<7)]` (*skliaustai čia yra svarbūs*).
> **Pastaba**: Filtravimas veikia taip. Išraiška `df['A']<5` grąžina loginę seriją, kuri nurodo, ar išraiška yra `True` ar `False` kiekvienam originalios serijos `df['A']` elementui. Kai loginė serija naudojama kaip indeksas, ji grąžina eilučių pogrupį duomenų rėmelyje. Todėl negalima naudoti bet kokios Python loginės išraiškos, pvz., rašyti `df[df['A']>5 and df['A']<7]` būtų neteisinga. Vietoj to, turėtumėte naudoti specialią `&` operaciją loginėms serijoms, rašydami `df[(df['A']>5) & (df['A']<7)]` (*skliaustai čia yra svarbūs*).
**Naujų skaičiuojamų stulpelių kūrimas**. Galime lengvai sukurti naujus skaičiuojamus stulpelius savo duomenų rėmelyje naudodami intuityvią išraišką, pvz.:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Šis pavyzdys apskaičiuoja A nukrypimą nuo jo vidutinės vertės. Kas iš tikrųjų vyksta, yra tai, kad mes apskaičiuojame seriją ir tada priskiriame šią seriją kairiajai pusei, sukurdami kitą stulpelį. Todėl negalime naudoti jokių operacijų, kurios nesuderinamos su serijomis, pavyzdžiui, žemiau pateiktas kodas yra neteisingas:
Šis pavyzdys apskaičiuoja A nukrypimą nuo jo vidutinės vertės. Kas iš tikrųjų vyksta čia, yra tai, kad mes apskaičiuojame seriją ir tada priskiriame šią seriją kairiajai pusei, sukurdami kitą stulpelį. Todėl negalime naudoti jokių operacijų, kurios nesuderinamos su serijomis, pvz., žemiau pateiktas kodas yra neteisingas:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
@ -175,14 +175,14 @@ Po aukščiau pateiktų operacijų turėsime tokį duomenų rėmelį:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Eilučių pasirinkimas pagal numerius** gali būti atliekamas naudojant `iloc` konstrukciją. Pavyzdžiui, norėdami pasirinkti pirmas 5 eilutes iš duomenų rėmelio:
**Eilučių pasirinkimas pagal numerius** gali būti atliekamas naudojant `iloc` konstrukciją. Pavyzdžiui, norint pasirinkti pirmas 5 eilutes iš duomenų rėmelio:
```python
df.iloc[:5]
```
**Grupavimas** dažnai naudojamas norint gauti rezultatą, panašų į *pivot lenteles* Excel programoje. Tarkime, kad norime apskaičiuoti vidutinę stulpelio `A` vertę kiekvienam `LenB` skaičiui. Tada galime grupuoti savo duomenų rėmelį pagal `LenB` ir iškviesti `mean`:
**Grupavimas** dažnai naudojamas norint gauti rezultatą, panašų į *pivot lenteles* Excel programoje. Tarkime, norime apskaičiuoti vidutinę stulpelio `A` vertę kiekvienam `LenB` skaičiui. Tada galime grupuoti savo duomenų rėmelį pagal `LenB` ir iškviesti `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Jei reikia apskaičiuoti vidurkį ir elementų skaičių grupėje, tada galime naudoti sudėtingesnę `aggregate` funkciją:
```python
@ -201,33 +201,33 @@ Tai suteikia mums tokią lentelę:
| 6 | 2 | 6.000000 |
### Duomenų gavimas
Mes jau matėme, kaip lengva sukurti Series ir DataFrames iš Python objektų. Tačiau duomenys dažniausiai pateikiami kaip tekstinis failas arba Excel lentelė. Laimei, Pandas siūlo paprastą būdą įkelti duomenis iš disko. Pavyzdžiui, CSV failo skaitymas yra toks paprastas:
Mes jau matėme, kaip lengva sukurti Series ir DataFrames iš Python objektų. Tačiau duomenys dažniausiai būna tekstinio failo arba Excel lentelės formatu. Laimei, Pandas siūlo paprastą būdą įkelti duomenis iš disko. Pavyzdžiui, CSV failo skaitymas yra toks paprastas:
```python
df = pd.read_csv('file.csv')
```
Daugiau duomenų įkėlimo pavyzdžių, įskaitant jų gavimą iš išorinių svetainių, aptarsime „Iššūkio“ skyriuje.
Daugiau duomenų įkėlimo pavyzdžių, įskaitant jų gavimą iš išorinių svetainių, aptarsime „Iššūkių“ skyriuje.
### Spausdinimas ir Vizualizavimas
Duomenų mokslininkas dažnai turi tyrinėti duomenis, todėl svarbu mokėti juos vizualizuoti. Kai DataFrame yra didelis, dažnai norime tiesiog įsitikinti, kad viską darome teisingai, išspausdindami pirmas kelias eilutes. Tai galima padaryti iškviečiant `df.head()`. Jei tai vykdote iš Jupyter Notebook, jis išspausdins DataFrame gražioje lentelės formoje.
Mes taip pat matėme `plot` funkcijos naudojimą kai kurių stulpelių vizualizavimui. Nors `plot` yra labai naudinga daugeliui užduočių ir palaiko daugybę skirtingų grafiko tipų per `kind=` parametrą, visada galite naudoti „matplotlib“ biblioteką, kad sukurtumėte sudėtingesnį grafiką. Duomenų vizualizavimą išsamiai aptarsime atskirose kurso pamokose.
Mes taip pat matėme `plot` funkcijos naudojimą kai kurių stulpelių vizualizavimui. Nors `plot` yra labai naudinga daugeliui užduočių ir palaiko daugybę skirtingų grafiko tipų per `kind=` parametrą, visada galite naudoti „matplotlib“ biblioteką sudėtingesniems grafiniams vaizdams kurti. Duomenų vizualizavimą detaliai aptarsime atskirose kurso pamokose.
Ši apžvalga apima svarbiausias Pandas koncepcijas, tačiau biblioteka yra labai turtinga, ir nėra ribų, ką su ja galite nuveikti! Dabar pritaikykime šias žinias sprendžiant konkrečią problemą.
Ši apžvalga apima svarbiausias Pandas koncepcijas, tačiau biblioteka yra labai turtinga, ir nėra ribų, ką galite su ja nuveikti! Dabar pritaikykime šias žinias sprendžiant konkrečią problemą.
## 🚀 Iššūkis 1: COVID plitimo analizė
Pirmoji problema, į kurią sutelksime dėmesį, yra COVID-19 epidemijos plitimo modeliavimas. Tam naudosime duomenis apie užsikrėtusių asmenų skaičių skirtingose šalyse, kuriuos pateikė [Sistemų mokslo ir inžinerijos centras](https://systems.jhu.edu/) (CSSE) iš [Johns Hopkins universiteto](https://jhu.edu/). Duomenų rinkinys pasiekiamas [šiame GitHub saugykloje](https://github.com/CSSEGISandData/COVID-19).
Pirmoji problema, į kurią sutelksime dėmesį, yra COVID-19 epidemijos plitimo modeliavimas. Tam naudosime duomenis apie užsikrėtusių asmenų skaičių skirtingose šalyse, kuriuos pateikė [Sistemų mokslo ir inžinerijos centras](https://systems.jhu.edu/) (CSSE) iš [Johns Hopkins universiteto](https://jhu.edu/). Duomenų rinkinys yra pasiekiamas [šiame GitHub saugykloje](https://github.com/CSSEGISandData/COVID-19).
Kadangi norime parodyti, kaip dirbti su duomenimis, kviečiame atidaryti [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) ir perskaityti jį nuo pradžios iki pabaigos. Taip pat galite vykdyti langelius ir atlikti keletą iššūkių, kuriuos palikome jums pabaigoje.
Kadangi norime parodyti, kaip dirbti su duomenimis, kviečiame atidaryti [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) ir perskaityti jį nuo pradžios iki pabaigos. Taip pat galite vykdyti langelius ir atlikti keletą iššūkių, kuriuos palikome jums pabaigoje.
![COVID plitimas](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID plitimas](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.lt.png)
> Jei nežinote, kaip vykdyti kodą Jupyter Notebook, peržiūrėkite [šį straipsnį](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Darbas su nestruktūruotais duomenimis
Nors duomenys dažnai pateikiami lentelės forma, kai kuriais atvejais turime dirbti su mažiau struktūruotais duomenimis, pavyzdžiui, tekstu ar vaizdais. Tokiu atveju, norėdami taikyti aukščiau aptartas duomenų apdorojimo technikas, turime kažkaip **išgauti** struktūruotus duomenis. Štai keletas pavyzdžių:
Nors duomenys dažnai būna lentelės formatu, kai kuriais atvejais turime dirbti su mažiau struktūruotais duomenimis, pavyzdžiui, tekstu ar vaizdais. Tokiu atveju, norėdami taikyti aukščiau aptartas duomenų apdorojimo technikas, turime kažkaip **išgauti** struktūruotus duomenis. Štai keletas pavyzdžių:
* Raktažodžių ištraukimas iš teksto ir jų pasirodymo dažnumo analizė
* Neuroninių tinklų naudojimas informacijai apie objektus paveikslėlyje išgauti
@ -239,11 +239,11 @@ Nors duomenys dažnai pateikiami lentelės forma, kai kuriais atvejais turime di
Pilnas šio duomenų rinkinio analizės pavyzdys naudojant [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) kognityvinę paslaugą aprašytas [šiame tinklaraščio įraše](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Aptarsime supaprastintą šios analizės versiją.
> **NOTE**: Mes nepateikiame duomenų rinkinio kopijos kaip šios saugyklos dalies. Pirmiausia gali tekti atsisiųsti [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) failą iš [šio Kaggle duomenų rinkinio](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Gali reikėti registracijos Kaggle. Taip pat galite atsisiųsti duomenų rinkinį be registracijos [iš čia](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), tačiau jis apims visus pilnus tekstus, be metaduomenų failo.
> **NOTE**: Mes nepateikiame duomenų rinkinio kopijos kaip šios saugyklos dalies. Pirmiausia gali tekti atsisiųsti [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) failą iš [šio Kaggle duomenų rinkinio](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Gali reikėti registracijos Kaggle. Taip pat galite atsisiųsti duomenų rinkinį be registracijos [iš čia](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), tačiau jis apims visus pilnus tekstus be metaduomenų failo.
Atidarykite [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) ir perskaitykite jį nuo pradžios iki pabaigos. Taip pat galite vykdyti langelius ir atlikti keletą iššūkių, kuriuos palikome jums pabaigoje.
Atidarykite [`notebook-papers.ipynb`](notebook-papers.ipynb) ir perskaitykite jį nuo pradžios iki pabaigos. Taip pat galite vykdyti langelius ir atlikti keletą iššūkių, kuriuos palikome jums pabaigoje.
![COVID medicininis gydymas](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![COVID medicininis gydymas](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.lt.png)
## Vaizdų duomenų apdorojimas
@ -256,12 +256,12 @@ Pastaruoju metu buvo sukurti labai galingi AI modeliai, leidžiantys suprasti va
Visos šios debesų paslaugos gali būti iškviečiamos naudojant [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), todėl jas lengva įtraukti į jūsų duomenų tyrinėjimo darbo eigą.
Štai keletas pavyzdžių, kaip tyrinėti duomenis iš vaizdų šaltinių:
* Tinklaraščio įraše [Kaip mokytis duomenų mokslo be programavimo](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) mes tyrinėjame Instagram nuotraukas, bandydami suprasti, kas skatina žmones daugiau „patinka“ nuotraukai. Pirmiausia iš paveikslėlių išgauname kuo daugiau informacijos naudodami [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), o tada naudojame [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum), kad sukurtume interpretuojamą modelį.
* Tinklaraščio įraše [Kaip mokytis duomenų mokslo be programavimo](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) mes tyrinėjame Instagram nuotraukas, bandydami suprasti, kas skatina žmones daugiau „patinka“ nuotraukai. Pirmiausia iš paveikslėlių išgauname kuo daugiau informacijos naudodami [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), o tada naudojame [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) interpretuojamam modeliui kurti.
* [Veidų tyrimų dirbtuvėse](https://github.com/CloudAdvocacy/FaceStudies) mes naudojame [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum), kad išgautume emocijas žmonių nuotraukose iš renginių, bandydami suprasti, kas daro žmones laimingus.
## Išvada
Nesvarbu, ar jau turite struktūruotus, ar nestruktūruotus duomenis, naudodami Python galite atlikti visus duomenų apdorojimo ir supratimo veiksmus. Tai turbūt lankstiausias duomenų apdorojimo būdas, todėl dauguma duomenų mokslininkų naudoja Python kaip pagrindinį įrankį. Mokytis Python išsamiai yra gera idėja, jei rimtai žiūrite į savo duomenų mokslo kelionę!
Nesvarbu, ar jau turite struktūruotus, ar nestruktūruotus duomenis, naudodami Python galite atlikti visus su duomenų apdorojimu ir supratimu susijusius veiksmus. Tai turbūt lankstiausias duomenų apdorojimo būdas, todėl dauguma duomenų mokslininkų naudoja Python kaip pagrindinį įrankį. Mokytis Python išsamiai yra gera idėja, jei rimtai žiūrite į savo duomenų mokslo kelionę!
## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -280,7 +280,7 @@ Nesvarbu, ar jau turite struktūruotus, ar nestruktūruotus duomenis, naudodami
## Užduotis
[Atlikite išsamesnį duomenų tyrimą aukščiau pateiktiems iššūkiams](assignment.md)
[Atlikite detalesnį duomenų tyrimą aukščiau pateiktiems iššūkiams](assignment.md)
## Kreditas
@ -289,4 +289,4 @@ Nesvarbu, ar jau turite struktūruotus, ar nestruktūruotus duomenis, naudodami
---
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, atkreipiame dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudotis profesionalių vertėjų paslaugomis. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus aiškinimus, atsiradusius naudojantis šiuo vertimu.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T06:54:00+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:27:16+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "mo"
}
@ -13,58 +13,59 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| 使用 Python - _由 [@nitya](https://twitter.com/nitya) 繪製的速記筆記_ |
[![介紹影片](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![介紹影片](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.mo.png)](https://youtu.be/dZjWOGbsN4Y)
雖然資料庫提供了非常高效的方式來存儲數據並使用查詢語言進行查詢,但最靈活的數據處理方式是編寫自己的程式來操作數據。在許多情況下,使用資料庫查詢可能更有效。然而,在某些需要更複雜數據處理的情況下,使用 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/)**一種通用程式語言因其簡單性常被認為是初學者的最佳選擇。Python 擁有許多額外的庫,可以幫助解決許多實際問題,例如從 ZIP 壓縮檔案中提取數據或將圖片轉換為灰度。除了數據科學Python 也常用於網頁開發。
* **[R](https://www.r-project.org/)**一個傳統工具箱專為統計數據處理而設計。它擁有大量的庫CRAN使其成為數據處理的良好選擇。然而R 不是通用程式語言,通常僅限於數據科學領域使用。
* **[Julia](https://julialang.org/)**另一種專為數據科學設計的語言。它旨在提供比 Python 更好的性能,是科學實驗的理想工具。
在本課程中,我們將重點使用 Python 進行簡單的數據處理。我們假設您已具備基本的 Python 知識。如果您想深入了解 Python可以參考以下資源
在本課程中,我們將重點使用 Python 進行簡單的數據處理。我們假設您已對該語言有基本的熟悉。如果您想深入了解 Python可以參考以下資源
* [使用 Turtle Graphics 和 Fractals 快樂學習 Python](https://github.com/shwars/pycourse) - 基於 GitHub 的快速 Python 程式設計入門課程
* [從 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 Graphics 和 Fractals 以有趣的方式學習 Python](https://github.com/shwars/pycourse) - 基於 GitHub 的 Python 程式快速入門課程
* [從 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) 上的學習路徑
數據可以有多種形式。在本課程中,我們將探討三種數據形式:**表格數據**、**文本**和**圖片**。
數據可以有多種形式。在本課程中,我們將考慮三種數據形式——**表格數據**、**文本**和**圖片**。
我們將專注於一些數據處理的例子,而不是全面介紹所有相關庫。這樣可以幫助您了解主要概念,並在需要時知道如何尋找解決方案
我們將專注於一些數據處理的例子,而不是全面介紹所有相關庫。這樣可以讓您了解主要概念,並在需要時知道如何找到解決問題的方法
> **最有用的建議**:當您需要對數據執行某些操作但不知道如何進行時,嘗試在網路上搜索。[Stackoverflow](https://stackoverflow.com/) 通常包含許多針對常見任務的 Python 範例程式碼
> **最有用的建議**:當您需要對數據執行某些操作但不知道如何進行時,嘗試在網路上搜索。[Stackoverflow](https://stackoverflow.com/) 通常包含許多針對常見任務的 Python 代碼範例。
## [課前測驗](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## 表格數據和 DataFrame
當我們討論關聯式資料庫時,您已經接觸過表格數據。當您擁有大量數據且它包含在許多不同的連結表中時,使用 SQL 來處理它是非常合理的。然而,在許多情況下,我們有一個數據表,並需要對這些數據進行一些**理解**或**洞察**,例如分佈情況、值之間的相關性等。在數據科學中,經常需要對原始數據進行一些轉換,然後進行可視化。這兩個步驟都可以輕鬆地使用 Python 完成。
當我們討論關聯式資料庫時,您已經接觸過表格數據。當您擁有大量數據且它包含在許多不同的連結表中時,使用 SQL 來處理它是非常合理的。然而,在許多情況下,我們有一個數據表,並需要對數據進行一些**理解**或**洞察**,例如分佈、值之間的相關性等。在數據科學中,經常需要對原始數據進行一些轉換,然後進行可視化。這兩個步驟都可以輕鬆地使用 Python 完成。
在 Python 中,有兩個最有用的庫可以幫助您處理表格數據:
* **[Pandas](https://pandas.pydata.org/)**:允許您操作所謂的 **DataFrame**類似於關聯式表格。您可以擁有命名的列,並對行、列以及整個 DataFrame 執行不同的操作。
* **[Numpy](https://numpy.org/)**是一個用於處理 **張量**(即多維**陣列**)的庫。陣列的值具有相同的基礎類型,比 DataFrame 更簡單,但提供了更多的數學操作,並且開銷更少。
* **[Pandas](https://pandas.pydata.org/)** 允許您操作所謂的 **DataFrame**,它類似於關聯式表格。您可以擁有命名的列,並對行、列以及整個 DataFrame 執行不同的操作。
* **[Numpy](https://numpy.org/)** 是一個用於處理 **張量**(即多維**陣列**)的庫。陣列具有相同的基礎類型,比 DataFrame 更簡單,但提供了更多的數學操作,並且開銷更少。
此外,還有幾個您應該了解的庫:
* **[Matplotlib](https://matplotlib.org/)**用於數據可視化和繪製圖表的庫
* **[SciPy](https://www.scipy.org/)**:包含一些額外科學函數的庫。我們在討論概率和統計時已經接觸過這個
* **[Matplotlib](https://matplotlib.org/)** 是一個用於數據可視化和繪製圖表的庫
* **[SciPy](https://www.scipy.org/)** 是一個包含一些額外科學函數的庫。我們在討論概率和統計時已經接觸過該
以下是您通常在 Python 程式開頭用來導入這些庫的程式碼:
以下是您通常在 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
```
```
Pandas 圍繞幾個基本概念進行設計
Pandas 圍繞幾個基本概念構建
### Series
**Series** 是一系列值,類似於列表或 numpy 陣列。主要區別在於 Series 還具有**索引**,當我們對 Series 進行操作(例如相加)時,索引會被考慮。索引可以像整數行號一樣簡單(當從列表或陣列創建 Series 時,默認使用此索引),也可以具有複雜結構,例如日期區間。
**Series** 是一系列值,類似於列表或 numpy 陣列。主要區別在於 Series 還具有**索引**,當我們對 Series 進行操作(例如相加)時,索引會被考慮。索引可以像整數行號一樣簡單(當從列表或陣列創建 Series 時,默認使用此索引),也可以具有複雜結構,例如日期間隔。
> **注意**:在附帶的筆記本 [`notebook.ipynb`](notebook.ipynb) 中有一些 Pandas 的入門代碼。我們僅在此概述一些例子,您可以查看完整的筆記本。
> **注意**:在附帶的筆記本 [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) 中有一些 Pandas 的入門程式碼。我們在此僅列出一些例子,您可以查看完整的筆記本。
舉個例子我們想分析我們冰淇淋店的銷售情況。讓我們生成一段時間內的銷售數字每天售出的商品數量Series
舉個例子:我們想分析冰淇淋店的銷售情況。讓我們生成一段時間內的銷售數據(每天售出的商品數量):
```python
start_date = "Jan 1, 2020"
end_date = "Mar 31, 2020"
@ -73,9 +74,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![時間序列圖](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![時間序列圖](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.mo.png)
假設每週我們都會舉辦一次聚會,並額外準備 10 盒冰淇淋。我們可以創建另一個以週為索引的 Series 來展示這一點:
假設每週我們都會為朋友舉辦派對,並額外準備 10 盒冰淇淋。我們可以創建另一個以週為索引的 Series 來展示這一點:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -84,20 +85,20 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![時間序列圖](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![時間序列圖](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.mo.png)
> **注意**:我們並未使用簡單的語法 `total_items+additional_items`。如果使用此語法,結果 Series 中會有許多 `NaN`*非數值*)值。這是因為在 `additional_items` Series 的某些索引點缺少值,而將 `NaN` 與任何值相加會得到 `NaN`。因此,我們需要在相加時指定 `fill_value` 參數。
> **注意**:我們沒有使用簡單的語法 `total_items+additional_items`。如果使用該語法,我們會在結果 Series 中得到許多 `NaN`*非數值*)值。這是因為在 `additional_items` Series 的某些索引點缺少值,並且將 `NaN` 與任何值相加都會得到 `NaN`。因此,我們需要在相加時指定 `fill_value` 參數。
使用時間序列,我們還可以**重新取樣**不同的時間間隔。例如,假設我們想計算每月的平均銷售量,可以使用以下程式碼:
使用時間序列,我們還可以使用不同的時間間隔對 Series 進行**重採樣**。例如,假設我們想計算每月的平均銷售量。我們可以使用以下代碼:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![每月時間序列平均值](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![每月時間序列平均值](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.mo.png)
### DataFrame
DataFrame 本質上是具有相同索引的多個 Series 集合。我們可以將幾個 Series 組合成一個 DataFrame
DataFrame 本質上是具有相同索引的 Series 集合。我們可以將幾個 Series 組合成一個 DataFrame
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -109,7 +110,7 @@ df = pd.DataFrame([a,b])
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
我們可以使用 Series 作為列,並通過字典指定列名:
我們可以使用 Series 作為列,並通過字典指定列名:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -127,32 +128,32 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**注意**:我們也可以通過轉置前面的表格來獲得此表格佈局,例如
**注意**:我們也可以通過轉置前面的表格來獲得此表格佈局,例如,通過編寫
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
這裡 `.T` 表示轉置 DataFrame 的操作,即交換行和列,而 `rename` 操作允許我們重命名列以匹配前面的例子。
這裡 `.T` 表示轉置 DataFrame 的操作,即更改行和列,而 `rename` 操作允許我們重命名列以匹配前面的例子。
以下是一些我們可以對 DataFrame 執行的重要操作:
以下是我們可以對 DataFrame 執行的一些最重要操作:
**列選擇**。我們可以通過 `df['A']` 選擇單個列,此操作返回一個 Series。我們也可以通過 `df[['B','A']]` 選擇列的子集到另一個 DataFrame此操作返回另一個 DataFrame。
**列選擇**。我們可以通過編寫 `df['A']` 選擇單個列——此操作返回一個 Series。我們還可以通過編寫 `df[['B','A']]` 選擇列的子集到另一個 DataFrame——此操作返回另一個 DataFrame。
**篩選**符合條件的行。例如,要僅保留列 `A` 大於 5 的行,我們可以寫 `df[df['A']>5]`
**篩選**符合條件的行。例如,要僅保留列 `A` 大於 5 的行,我們可以`df[df['A']>5]`
> **注意**:篩選的工作方式如下。表達式 `df['A']<5` 返回一個布林 Series指示原始 Series `df['A']` 中每個元素是否符合條件。當布林 Series 用作索引時,它返回 DataFrame 中的行子集。因此,不能使用任意的 Python 布林表達式,例如,寫 `df[df['A']>5 and df['A']<7]` 是錯誤的。相反,您應使用布林 Series 的特殊 `&` 操作,寫 `df[(df['A']>5) & (df['A']<7)]`*括號很重要*)。
> **注意**:篩選的工作方式如下。表達式 `df['A']<5` 返回一個布林 Series指示原始 Series `df['A']` 的每個元素是否為 `True``False`。當布林 Series 用作索引時,它返回 DataFrame 中的行子集。因此,不能使用任意的 Python 布林表達式,例如,`df[df['A']>5 and df['A']<7]` 是錯誤的。相反,您應使用布林 Series 的特殊 `&` 操作,`df[(df['A']>5) & (df['A']<7)]`*括號在這裡很重要*)。
**創建新的可計算列**。我們可以通過直觀的表達式輕鬆為 DataFrame 創建新的可計算列:
**創建新的可計算列**。我們可以通過使用直觀的表達式輕鬆為 DataFrame 創建新的可計算列:
```python
df['DivA'] = df['A']-df['A'].mean()
```
此例計算列 A 與其平均值的偏差。實際上,我們是在計算一個 Series然後將此 Series 分配給左側,創建另一列。因此,我們不能使用與 Series 不兼容的操作,例如,以下程式碼是錯誤的:
```
此例子計算 A 與其平均值的偏差。實際上,我們正在計算一個 Series然後將此 Series 分配給左側,創建另一列。因此,我們不能使用與 Series 不兼容的任何操作,例如,以下代碼是錯誤的:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
後一個例子雖然語法正確,但結果錯誤,因為它將 Series `B` 的長度分配給列中的所有值,而不是分配給每個元素的長度。
```
後一個例子雖然語法正確,但給出了錯誤的結果,因為它將 Series `B` 的長度分配給列中的所有值,而不是分配給每個元素的長度。
如果需要計算此類複雜表達式,可以使用 `apply` 函數。上述例子可以寫成
如果需要計算此類複雜表達式,我們可以使用 `apply` 函數。最後一個例子可以寫成如下
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -178,11 +179,11 @@ df['LenB'] = df['B'].apply(len)
df.iloc[:5]
```
**分組**通常用於獲得類似 Excel 中 *樞紐分析表* 的結果。例如,我們想計算列 `A` 的平均值,按 `LenB` 的值分組。那麼我們可以按 `LenB` 分組 DataFrame然後調用 `mean`
**分組**通常用於獲得類似於 Excel 中*樞紐分析表*的結果。假設我們想計算列 `A` 的平均值,按 `LenB` 的每個數字分組。然後我們可以按 `LenB` 分組 DataFrame調用 `mean`
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
如果我們需要計算平均值和組中的元素數量,可以使用更複雜的 `aggregate` 函數:
如果我們需要計算平均值和組中的元素數量,那麼我們可以使用更複雜的 `aggregate` 函數:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -199,7 +200,7 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### 獲取數據
我們已經看到如何輕鬆地從 Python 對象構建 Series 和 DataFrames。然而,數據通常以文本文件或 Excel 表格的形式存在。幸運的是Pandas 為我們提供了一種簡單的方法來從磁碟中載入數據。例如,讀取 CSV 文件就像這樣簡單:
我們已經看到如何輕鬆地從 Python 對象構建 Series 和 DataFrame。然而數據通常以文本文件或 Excel 表格的形式存在。幸運的是Pandas 提供了一種簡單的方法來從磁碟中載入數據。例如,讀取 CSV 文件就像這樣簡單:
```python
df = pd.read_csv('file.csv')
```
@ -209,43 +210,43 @@ df = pd.read_csv('file.csv')
數據科學家經常需要探索數據,因此能夠可視化數據非常重要。當 DataFrame 很大時,我們通常只需要打印出前幾行來確保我們的操作是正確的。這可以通過調用 `df.head()` 完成。如果你在 Jupyter Notebook 中運行,它會以漂亮的表格形式打印出 DataFrame。
我們還看到了使用 `plot` 函數來可視化某些列的例子。雖然 `plot` 對許多任務非常有用,並且通過 `kind=` 參數支持多種不同的圖表類型,但你也可以使用原始的 `matplotlib` 庫來繪製更複雜的圖表。我們將在單獨的課程中詳細介紹數據可視化。
我們也已經看到使用 `plot` 函數來可視化某些列。雖然 `plot` 對許多任務非常有用,並且通過 `kind=` 參數支持多種不同的圖表類型,但你也可以使用原始的 `matplotlib` 庫來繪製更複雜的圖表。我們將在單獨的課程中詳細介紹數據可視化。
這個概述涵蓋了 Pandas 的最重要概念,但這個庫非常豐富,幾乎沒有你不能用它完成的事情!現在讓我們應用這些知識來解決具體問題。
## 🚀 挑戰 1分析 COVID 傳播
我們將專注於的第一個問題是 COVID-19 的流行病傳播建模。為了做到這一點,我們將使用由 [約翰霍普金斯大學](https://jhu.edu/) [系統科學與工程中心](https://systems.jhu.edu/) (CSSE) 提供的不同國家感染人數數據。數據集可在 [這個 GitHub 存庫](https://github.com/CSSEGISandData/COVID-19) 中找到。
我們將專注於的第一個問題是 COVID-19 的流行病傳播建模。為了做到這一點,我們將使用由 [約翰霍普金斯大學](https://jhu.edu/) [系統科學與工程中心](https://systems.jhu.edu/) (CSSE) 提供的不同國家感染人數數據。數據集可在 [這個 GitHub 庫](https://github.com/CSSEGISandData/COVID-19) 中找到。
由於我們想展示如何處理數據,我們邀請你打開 [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) 並從頭到尾閱讀。你也可以執行單元格,並完成我們在最後留下的一些挑戰。
由於我們想展示如何處理數據,我們邀請你打開 [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) 並從頭到尾閱讀。你也可以執行單元格,並完成我們在最後留下的一些挑戰。
![COVID 傳播](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID 傳播](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.mo.png)
> 如果你不知道如何在 Jupyter Notebook 中運行代碼,可以查看 [這篇文章](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)。
## 處理非結構化數據
雖然數據通常以表格形式存在,但在某些情況下我們需要處理較少結構化的數據,例如文本或圖像。在這種情況下,為了應用我們上面看到的數據處理技術,我們需要以某種方式**提取**結構化數據。以下是一些例子:
雖然數據通常以表格形式存在,但在某些情況下我們需要處理較少結構化的數據,例如文本或圖像。在這種情況下,應用我們上面看到的數據處理技術,我們需要以某種方式**提取**結構化數據。以下是一些例子:
* 從文本中提取關鍵字,並查看這些關鍵字出現的頻率
* 使用神經網絡從圖片中提取有關物體的信息
* 獲取視頻鏡頭中人的情感信息
* 使用神經網絡提取圖片中物體的信息
* 獲取視頻鏡頭中人的情感信息
## 🚀 挑戰 2分析 COVID 相關論文
在這個挑戰中,我們將繼續探討 COVID 疫情的主題,並專注於處理相關的科學論文。有一個 [CORD-19 數據集](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge),其中包含超過 7000 篇(撰寫時)關於 COVID 的論文,並提供元數據和摘要(其中約一半還提供全文)。
在這個挑戰中,我們將繼續探討 COVID 疫情的主題,並專注於處理相關的科學論文。有一個 [CORD-19 數據集](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge),其中包含超過 7000 篇(撰寫時)關於 COVID 的論文,並提供元數據和摘要(其中約一半還提供全文)。
使用 [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) 無需註冊下載數據集,但它將包括所有全文以及元數據文件。
> **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) 無需註冊下載數據集,但它將包括所有全文以及元數據文件。
打開 [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) 並從頭到尾閱讀。你也可以執行單元格,並完成我們在最後留下的一些挑戰。
打開 [`notebook-papers.ipynb`](notebook-papers.ipynb) 並從頭到尾閱讀。你也可以執行單元格,並完成我們在最後留下的一些挑戰。
![COVID 醫療處理](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![COVID 醫療處理](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.mo.png)
## 處理圖像數據
最近,已經開發出非常強大的 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) 模型來檢測一些特定的感興趣物體。
@ -254,12 +255,12 @@ df = pd.read_csv('file.csv')
所有這些雲服務都可以通過 [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) 調用,因此可以輕鬆地集成到你的數據探索工作流程中。
以下是一些探索圖像數據源的例子:
* 在博客文章 [如何在無需編碼的情況下學習數據科學](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) 從活動照片中提取人們的情感,試圖了解什麼使人們感到快樂。
* 在博客文章 [如何在無需編碼的情況下學習數據科學](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 可能是一個好主意!
## [課後測驗](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -273,8 +274,8 @@ df = pd.read_csv('file.csv')
* [Pandas 可視化文檔](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**學習 Python**
* [用 Turtle Graphics 和分形以有趣的方式學習 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) 上的學習路徑
* [用 Turtle Graphics 和分形以有趣的方式學習 Python](https://github.com/shwars/pycourse)
* [在 Microsoft Learn 上開始你的 Python 第一步](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum)
## 作業
@ -287,4 +288,4 @@ df = pd.read_csv('file.csv')
---
**免責聲明**
本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。
本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T07:26:10+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:34:10+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "mr"
}
@ -13,23 +13,23 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Python सोबत काम करणे - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![Intro Video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.mr.png)](https://youtu.be/dZjWOGbsN4Y)
डेटाबेस डेटा साठवण्यासाठी आणि क्वेरी भाषांचा वापर करून त्यावर क्वेरी करण्यासाठी अत्यंत कार्यक्षम मार्ग प्रदान करतात, परंतु डेटा प्रक्रिया करण्याचा सर्वात लवचिक मार्ग म्हणजे स्वतःचा प्रोग्राम लिहून डेटा हाताळणे. अनेक वेळा, डेटाबेस क्वेरी करणे अधिक प्रभावी ठरे. परंतु काही वेळा जेव्हा अधिक जटिल डेटा प्रक्रिया आवश्यक असते, तेव्हा ती SQL वापरून सहजपणे करता येत नाही.
डेटा प्रक्रिया कोणत्याही प्रोग्रामिंग भाषेत प्रोग्राम केली जाऊ शकते, परंतु काही भाषा डेटा सोबत काम करण्याच्या संदर्भात उच्च स्तरावर असतात. डेटा वैज्ञानिक सामान्यतः खालील भाषांपैकी एक निवडतात:
डेटाबेस डेटा साठवण्यासाठी आणि क्वेरी भाषांचा वापर करून त्यावर क्वेरी करण्यासाठी अत्यंत कार्यक्षम पद्धती प्रदान करतात, परंतु डेटा प्रक्रिया करण्याचा सर्वात लवचिक मार्ग म्हणजे स्वतःचा प्रोग्राम लिहून डेटा हाताळणे. अनेक वेळा, डेटाबेस क्वेरी करणे अधिक प्रभावी ठरे. परंतु काही वेळा जेव्हा अधिक जटिल डेटा प्रक्रिया आवश्यक असते, तेव्हा ती SQL वापरून सहजपणे करता येत नाही.
डेटा प्रक्रिया कोणत्याही प्रोग्रामिंग भाषेत प्रोग्राम केली जाऊ शकते, परंतु काही भाषा डेटा सोबत काम करण्याच्या दृष्टीने उच्च स्तरावर असतात. डेटा वैज्ञानिक सामान्यतः खालील भाषांपैकी एक निवडतात:
* **[Python](https://www.python.org/)**, एक सामान्य-उद्देश प्रोग्रामिंग भाषा, जी तिच्या साधेपणामुळे सुरुवातीसाठी सर्वोत्तम पर्याय मानली जाते. Python मध्ये अनेक अतिरिक्त लायब्ररी आहेत ज्या तुम्हाला अनेक व्यावहारिक समस्या सोडवण्यास मदत करू शकतात, जसे की तुमचा डेटा ZIP आर्काइव्हमधून काढणे किंवा चित्र ग्रेस्केलमध्ये रूपांतरित करणे. डेटा विज्ञानाशिवाय, Python वेब विकासासाठी देखील मोठ्या प्रमाणावर वापरली जाते.
* **[Python](https://www.python.org/)**, एक सामान्य-उद्देश प्रोग्रामिंग भाषा, जी तिच्या साधेपणामुळे सुरुवातीसाठी सर्वोत्तम पर्याय मानली जाते. Python मध्ये अनेक अतिरिक्त लायब्ररी आहेत ज्या तुम्हाला अनेक व्यावहारिक समस्या सोडवण्यास मदत करू शकतात, जसे की ZIP आर्काइव्हमधून डेटा काढणे किंवा चित्र ग्रेस्केलमध्ये रूपांतरित करणे. डेटा विज्ञानाशिवाय, Python वेब विकासासाठी देखील मोठ्या प्रमाणावर वापरली जाते.
* **[R](https://www.r-project.org/)** ही पारंपरिक टूलबॉक्स आहे जी सांख्यिकीय डेटा प्रक्रिया लक्षात घेऊन विकसित केली गेली आहे. यात मोठ्या प्रमाणात लायब्ररींचा संग्रह (CRAN) आहे, ज्यामुळे डेटा प्रक्रिया करण्यासाठी हा एक चांगला पर्याय बनतो. तथापि, R ही सामान्य-उद्देश प्रोग्रामिंग भाषा नाही आणि डेटा विज्ञानाच्या क्षेत्राबाहेर क्वचितच वापरली जाते.
* **[Julia](https://julialang.org/)** ही आणखी एक भाषा आहे जी विशेषतः डेटा विज्ञानासाठी विकसित केली गेली आहे. Python पेक्षा चांगली कार्यक्षमता देण्याच्या उद्देशाने विकसित केली गेली आहे, ज्यामुळे ती वैज्ञानिक प्रयोगांसाठी एक उत्कृष्ट साधन बनते.
या धड्यात, आम्ही साध्या डेटा प्रक्रियेसाठी Python वापरण्यावर लक्ष केंद्रित करू. आम्ही भाषेची मूलभूत ओळख गृहीत धरू. जर तुम्हाला Python चा सखोल अभ्यास करायचा असेल, तर तुम्ही खालील संसाधनांचा संदर्भ घेऊ शकता:
या धड्यात, आपण साध्या डेटा प्रक्रियेसाठी Python वापरण्यावर लक्ष केंद्रित करू. आम्ही भाषेची मूलभूत ओळख गृहीत धरू. जर तुम्हाला Python चा सखोल अभ्यास करायचा असेल, तर तुम्ही खालील संसाधनांचा संदर्भ घेऊ शकता:
* [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 वर [Learning Path](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [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 वरील [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) शिक्षण मार्ग
डेटा अनेक स्वरूपात येऊ शकतो. या धड्यात, आम्ही तीन प्रकारच्या डेटाचा विचार करू - **टॅब्युलर डेटा**, **टेक्स्ट** आणि **प्रतिमा**.
डेटा अनेक स्वरूपात येऊ शकतो. या धड्यात, आपण तीन प्रकारच्या डेटाचा विचार करू - **टॅब्युलर डेटा**, **टेक्स्ट** आणि **प्रतिमा**.
म्ही संबंधित लायब्ररींचा संपूर्ण आढावा देण्याऐवजी डेटा प्रक्रियेच्या काही उदाहरणांवर लक्ष केंद्रित करू. यामुळे तुम्हाला काय शक्य आहे याची मुख्य कल्पना मिळेल आणि जेव्हा तुम्हाला गरज असेल तेव्हा तुमच्या समस्यांचे समाधान कुठे शोधायचे याची समज मिळेल.
पण संबंधित लायब्ररींचा संपूर्ण आढावा देण्याऐवजी डेटा प्रक्रियेच्या काही उदाहरणांवर लक्ष केंद्रित करू. यामुळे तुम्हाला काय शक्य आहे याची मुख्य कल्पना मिळेल आणि जेव्हा तुम्हाला गरज असेल तेव्हा तुमच्या समस्यांचे समाधान कुठे सापडेल याची समज मिळेल.
> **सर्वात उपयुक्त सल्ला**. जेव्हा तुम्हाला डेटावर विशिष्ट ऑपरेशन करायचे असते आणि ते कसे करायचे हे माहित नसते, तेव्हा इंटरनेटवर शोधण्याचा प्रयत्न करा. [Stackoverflow](https://stackoverflow.com/) वर अनेक सामान्य कार्यांसाठी Python मधील उपयुक्त कोड नमुने असतात.
@ -37,17 +37,17 @@ CO_OP_TRANSLATOR_METADATA:
## टॅब्युलर डेटा आणि डेटा फ्रेम्स
तुम्ही आधीच टॅब्युलर डेटाशी परिचित आहात जेव्हा आपण रिलेशनल डेटाबेसबद्दल बोललो होतो. जेव्हा तुमच्याकडे खूप डेटा असतो आणि तो अनेक वेगवेगळ्या लिंक केलेल्या टेबल्समध्ये असतो, तेव्हा त्यावर काम करण्यासाठी SQL वापरणे नक्कीच योग्य ठरते. तथापि, अनेक वेळा जेव्हा आपल्याकडे डेटा टेबल असतो आणि आपल्याला या डेटाबद्दल काही **समज** किंवा **अंतर्दृष्टी** मिळवायची असते, जसे की वितरण, मूल्यांमधील संबंध इत्यादी. डेटा विज्ञाना, अनेक वेळा आपल्याला मूळ डेटाचे काही रूपांतरण करावे लागते, त्यानंतर व्हिज्युअलायझेशन करावे लागते. Python वापरून दोन्ही टप्पे सहजपणे करता येतात.
तुम्ही टॅब्युलर डेटा आधीच पाहिला आहे जेव्हा आपण रिलेशनल डेटाबेसबद्दल बोललो होतो. जेव्हा तुमच्याकडे मोठ्या प्रमाणात डेटा असतो आणि तो अनेक वेगवेगळ्या लिंक केलेल्या टेबल्समध्ये असतो, तेव्हा त्यावर काम करण्यासाठी SQL वापरणे निश्चितच योग्य ठरते. तथापि, अनेक वेळा आपल्याकडे डेटा टेबल असतो आणि आपल्याला या डेटाबद्दल काही **समज** किंवा **अंतर्दृष्टी** मिळवायची असते, जसे की वितरण, मूल्यांमधील संबंध इत्यादी. डेटा विज्ञानामध्ये, अनेक वेळा आपल्याला मूळ डेटाचे काही रूपांतरण करावे लागते, त्यानंतर व्हिज्युअलायझेशन करावे लागते. Python वापरून दोन्ही टप्पे सहजपणे करता येतात.
Python मध्ये टॅब्युलर डेटा हाताळण्यासाठी दोन सर्वात उपयुक्त लायब्ररी आहेत:
* **[Pandas](https://pandas.pydata.org/)** तुम्हाला **Dataframes** हाताळण्याची परवानगी देते, जे रिलेशनल टेबल्ससारखे असतात. तुम्ही नामांकित कॉलम असू शकता आणि पंक्ती, कॉलम आणि डेटा फ्रेम्सवर सामान्यतः विविध ऑपरेशन्स करू शकता.
* **[Pandas](https://pandas.pydata.org/)** तुम्हाला **Dataframes** हाताळण्याची परवानगी देते, जे रिलेशनल टेबल्ससारखे असतात. तुम्ही नाव दिलेले कॉलम असू शकता आणि पंक्ती, कॉलम आणि डेटा फ्रेम्सवर सामान्यतः वेगवेगळ्या ऑपरेशन्स करू शकता.
* **[Numpy](https://numpy.org/)** ही **tensors**, म्हणजेच बहु-आयामी **arrays** सोबत काम करण्यासाठी लायब्ररी आहे. Array मध्ये समान अंतर्निहित प्रकाराचे मूल्य असते आणि ते डेटा फ्रेमपेक्षा सोपे असते, परंतु ते अधिक गणितीय ऑपरेशन्स ऑफर करते आणि कमी ओव्हरहेड तयार करते.
तुम्हाला खालील लायब्ररींबद्दल देखील माहिती असणे आवश्यक आहे:
* **[Matplotlib](https://matplotlib.org/)** ही डेटा व्हिज्युअलायझेशन आणि ग्राफ्स प्लॉट करण्यासाठी वापरली जाणारी लायब्ररी आहे
* **[SciPy](https://www.scipy.org/)** ही काही अतिरिक्त वैज्ञानिक फंक्शन्ससह लायब्ररी आहे. आपण आधीच संभाव्यता आणि सांख्यिकीबद्दल बोलताना या लायब्ररीचा उल्लेख केला आहे
Python प्रोग्रामच्या सुरुवातीला तुम्ही सामान्यतः या लायब्ररी आयात करण्यासाठी वापरणारा कोड येथे आहे:
Python प्रोग्रामच्या सुरुवातीला तुम्ही सामान्यतः या लायब्ररी आयात करण्यासाठी खालील कोड वापराल:
```python
import numpy as np
import pandas as pd
@ -59,9 +59,9 @@ Pandas काही मूलभूत संकल्पनांवर के
### Series
**Series** ही मूल्यांची अनुक्रम आहे, जी सूची किंवा numpy array सारखी आहे. मुख्य फरक म्हणजे series मध्ये **index** देखील असतो, आणि जेव्हा आपण series वर ऑपरेशन करतो (उदा., त्यांना जोडतो), तेव्हा index विचारात घेतला जातो. Index साधा पूर्णांक पंक्ती क्रमांक असू शकतो (जेव्हा सूची किंवा array मधून series तयार केली जाते तेव्हा वापरलेला index हा default असतो), किंवा त्यात date interval सारखी जटिल रचना असू शकते.
**Series** ही मूल्यांची अनुक्रम आहे, जी सूची किंवा numpy array सारखी आहे. मुख्य फरक म्हणजे series मध्ये **index** देखील असतो, आणि जेव्हा आपण series वर ऑपरेशन करतो (उदा., त्यांना जोडतो), तेव्हा index विचारात घेतला जातो. Index साधा पूर्णांक पंक्ती क्रमांक असू शकतो (जेव्हा सूची किंवा array मधून series तयार केली जाते तेव्हा वापरला जाणारा index), किंवा त्यात date interval सारखी जटिल रचना असू शकते.
> **टीप**: Pandas चा काही परिचयात्मक कोड सोबतच्या नोटबुकमध्ये [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) आहे. आम्ही येथे काही उदाहरणे outline करतो, आणि तुम्ही पूर्ण नोटबुक तपासण्यासाठी नक्कीच स्वागत आहे.
> **Note**: Pandas चा काही परिचयात्मक कोड सोबतच्या नोटबुकमध्ये [`notebook.ipynb`](notebook.ipynb) मध्ये आहे. आम्ही येथे काही उदाहरणे outline करतो, आणि तुम्ही पूर्ण नोटबुक तपासण्यासाठी नक्कीच स्वागत आहे.
उदाहरण विचार करा: आम्हाला आमच्या ice-cream spot च्या विक्रीचे विश्लेषण करायचे आहे. काही कालावधीसाठी विक्रीच्या संख्येची (प्रत्येक दिवशी विकल्या गेलेल्या वस्तूंची संख्या) series तयार करूया:
@ -73,27 +73,27 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Time Series Plot](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.mr.png)
आता समजा प्रत्येक आठवड्यात आम्ही मित्रांसाठी पार्टी आयोजित करतो आणि पार्टीसाठी अतिरिक्त 10 ice-cream पॅक्स घेतो. आम्ही हे दाखवण्यासाठी आठवड्याने index केलेली आणखी एक series तयार करू शकतो:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
जेव्हा आम्ही दोन series एकत्र जोडतो, तेव्हा आपल्याला एकूण संख्या मिळते:
जेव्हा आपण दोन series एकत्र जोडतो, तेव्हा आपल्याला एकूण संख्या मिळते:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Time Series Plot](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.mr.png)
> **टीप** की आम्ही साधी syntax `total_items+additional_items` वापरत नाही. जर आम्ही तसे केले असते, तर आम्हाला resulting series मध्ये अनेक `NaN` (*Not a Number*) मूल्ये मिळाली असती. याचे कारण म्हणजे `additional_items` series मध्ये काही index point साठी missing values आहेत, आणि `NaN` कशाशीही जोडल्यास `NaN` मिळते. त्यामुळे addition दरम्यान `fill_value` parameter specify करणे आवश्यक आहे.
> **Note** की आम्ही साधी syntax `total_items+additional_items` वापरत नाही. जर आम्ही तसे केले असते, तर आम्हाला resulting series मध्ये अनेक `NaN` (*Not a Number*) मूल्ये मिळाली असती. कारण `additional_items` series मध्ये काही index point साठी missing values आहेत, आणि `NaN` कशाशीही जोडल्यास `NaN` मिळते. त्यामुळे addition दरम्यान `fill_value` parameter specify करणे आवश्यक आहे.
Time series सोबत, आपण वेगवेगळ्या time intervals सह series **resample** करू शकतो. उदाहरणार्थ, समजा आपल्याला मासिक mean sales volume गणना करायची आहे. आपण खालील कोड वापरू शकतो:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Monthly Time Series Averages](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Monthly Time Series Averages](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.mr.png)
### DataFrame
@ -109,11 +109,11 @@ df = pd.DataFrame([a,b])
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
आपण Series कॉलम म्हणून वापरू शकतो आणि dictionary वापरून कॉलम नाव specify करू शकतो:
आपण Series कॉलम म्हणून वापरू शकतो आणि dictionary वापरून कॉलमचे नाव specify करू शकतो:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
यामुळे आपल्याला खालीलप्रमाणे टेबल मिळेल:
यामुळे खालीलप्रमाणे एक टेबल मिळेल:
| | A | B |
| --- | --- | ------ |
@ -127,30 +127,30 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**टीप** की आपण `.T` वापरून मागील टेबल transpose करून देखील ही टेबल लेआउट मिळवू शकतो, उदा.
**Note** की आपण `.T` वापरून मागील टेबल transpose करून देखील ही टेबल लेआउट मिळवू शकतो, उदा.
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
येथे `.T` म्हणजे DataFrame transpose करण्याची operation, म्हणजेच पंक्ती आणि कॉलम बदलणे, आणि `rename` operation आपल्याला मागील उदाहरणाशी जुळण्यासाठी कॉलमचे नाव बदलण्याची परवानगी देते.
येथे `.T` म्हणजे DataFrame transpose करण्याची operation, म्हणजेच rows आणि columns बदलणे, आणि `rename` operation आम्हाला कॉलमचे नाव बदलण्याची परवानगी देते जेणेकरून ते मागील उदाहरणाशी जुळेल.
DataFrames वर आपण करू शकणाऱ्या काही महत्त्वाच्या ऑपरेशन्स येथे आहेत:
DataFrames वर आपण काही महत्त्वाच्या ऑपरेशन्स करू शकतो:
**कॉलम निवड**. आपण `df['A']` लिहून individual कॉलम निवडू शकतो - ही operation Series परत करते. आपण `df[['B','A']]` लिहून कॉलम subset दुसऱ्या DataFrame मध्ये निवडू शकतो - हे दुसरे DataFrame परत करते.
**Column selection**. आपण `df['A']` लिहून individual कॉलम निवडू शकतो - ही operation Series परत करते. आपण `df[['B','A']]` लिहून कॉलम subset दुसऱ्या DataFrame मध्ये निवडू शकतो - हे दुसरे DataFrame परत करते.
**फिल्टरिंग** विशिष्ट निकषांनुसार फक्त काही पंक्ती. उदाहरणार्थ, कॉलम `A` 5 पेक्षा जास्त असलेल्या पंक्ती ठेवण्यासाठी आपण `df[df['A']>5]` लिहू शकतो.
**Filtering** विशिष्ट criteria नुसार फक्त काही rows. उदाहरणार्थ, कॉलम `A` 5 पेक्षा जास्त असलेल्या rows ठेवण्यासाठी आपण `df[df['A']>5]` लिहू शकतो.
> **टीप**: फिल्टरिंग कसे कार्य करते ते खालीलप्रमाणे आहे. expression `df['A']<5` एक boolean series परत करते, जी मूळ series `df['A']` च्या प्रत्येक घटकासाठी expression `True` किंवा `False` आहे का हे दर्शवते. जेव्हा boolean series index म्हणून वापरली जाते, तेव्हा ती DataFrame मधील पंक्तींचा subset परत करते. त्यामुळे कोणत्याही arbitrary Python boolean expression वापरणे शक्य नाही, उदाहरणार्थ, `df[df['A']>5 and df['A']<7]` लिहिणे चुकीचे ठरेल. त्याऐवजी, तुम्ही boolean series वर विशेष `&` operation वापरून लिहा, उदा. `df[(df['A']>5) & (df['A']<7)]` (*brackets येथे महत्त्वाचे आहेत*).
> **Note**: Filtering कसे कार्य करते ते खालीलप्रमाणे आहे. Expression `df['A']<5` एक boolean series परत करते, जी मूळ series `df['A']` च्या प्रत्येक element साठी expression `True` किंवा `False` आहे का हे दर्शवते. Boolean series index म्हणून वापरली जाते तेव्हा ती DataFrame मधील rows subset परत करते. त्यामुळे arbitrary Python boolean expression वापरणे शक्य नाही, उदाहरणार्थ, `df[df['A']>5 and df['A']<7]` लिहिणे चुकीचे ठरेल. त्याऐवजी, तुम्ही boolean series वर विशेष `&` operation वापरून लिहा, उदा. `df[(df['A']>5) & (df['A']<7)]` (*brackets येथे महत्त्वाचे आहेत*).
**नवीन computable कॉलम तयार करणे**. आपण सहजपणे खालीलप्रमाणे intuitive expression वापरून DataFrame साठी नवीन computable कॉलम तयार करू शकतो:
```python
df['DivA'] = df['A']-df['A'].mean()
```
हे उदाहरण A च्या mean value पासून divergence गणना करते. येथे प्रत्यक्षात काय होते ते म्हणजे आपण series गणना करतो आणि नंतर ही series left-hand-side ला assign करतो, नवीन कॉलम तयार करतो. त्यामुळे, आपण series सोबत compatible नसलेल्या कोणत्याही ऑपरेशन्स वापरू शकत नाही, उदाहरणार्थ, खालील कोड चुकीचा आहे:
हे उदाहरण A च्या mean value पासून divergence गणना करते. येथे प्रत्यक्षात काय होते ते म्हणजे आपण एक series गणना करतो आणि नंतर ही series left-hand-side ला assign करतो, नवीन कॉलम तयार करतो. त्यामुळे, आपण series सोबत compatible नसलेल्या कोणत्याही ऑपरेशन्स वापरू शकत नाही, उदाहरणार्थ, खालील कोड चुकीचा आहे:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
मागील उदाहरण, syntactically योग्य असले तरी, चुकीचा परिणाम देते, कारण ते series `B` ची लांबी कॉलममधील सर्व मूल्यांना assign करते, आणि intended individual elements ची लांबी नाही.
मागील उदाहरण, syntactically योग्य असले तरी, चुकीचा परिणाम देते, कारण ते series `B` ची लांबी कॉलममधील सर्व values ला assign करते, आणि intended individual elements ची लांबी नाही.
जर आपल्याला अशा complex expressions गणना करायच्या असतील, तर आपण `apply` function वापरू शकतो. मागील उदाहरण खालीलप्रमाणे लिहिले जाऊ शकते:
```python
@ -173,14 +173,14 @@ df['LenB'] = df['B'].apply(len)
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**नंबरवर आधारित पंक्ती निवडणे** `iloc` construct वापरून करता येते. उदाहरणार्थ, DataFrame मधील पहिल्या 5 पंक्ती निवडण्यासाठी:
**नंबरवर आधारित rows निवडणे** `iloc` construct वापरून करता येते. उदाहरणार्थ, DataFrame मधील पहिल्या 5 rows निवडण्यासाठी:
```python
df.iloc[:5]
```
**Grouping** अनेकदा Excel मधील *pivot tables* सारखा परिणाम मिळवण्यासाठी वापरला जातो. समजा आपल्याला `LenB` च्या प्रत्येक दिलेल्या नंबरसाठी कॉलम `A` चे mean value गणना करायचे आहे. मग आपण `LenB` द्वारे DataFrame group करू शकतो आणि `mean` कॉल करू शकतो:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
जर आपल्याला group मधील mean आणि elements ची संख्या गणना करायची असेल, तर आपण अधिक complex `aggregate` function वापरू शकतो:
```python
@ -199,7 +199,7 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### डेटा मिळवणे
आम्ही पाहिले आहे की Python ऑब्जेक्ट्समधून Series आणि DataFrames तयार करणे किती सोपे आहे. मात्र, डेटा सहसा टेक्स्ट फाइल किंवा Excel टेबलच्या स्वरूपात येतो. सुदैवाने, Pandas आपल्याला डिस्कवरून डेटा लोड करण्याचा सोपा मार्ग प्रदान करते. उदाहरणार्थ, CSV फाइल वाचणे इतके सोपे आहे:
आम्ही पाहिले आहे की Python ऑब्जेक्ट्समधून Series आणि DataFrames तयार करणे किती सोपे आहे. मात्र, डेटा सामान्यतः टेक्स्ट फाइल किंवा Excel टेबलच्या स्वरूपात येतो. सुदैवाने, Pandas आपल्याला डिस्कवरून डेटा लोड करण्याचा सोपा मार्ग देते. उदाहरणार्थ, CSV फाइल वाचणे इतके सोपे आहे:
```python
df = pd.read_csv('file.csv')
```
@ -207,59 +207,59 @@ df = pd.read_csv('file.csv')
### प्रिंटिंग आणि प्लॉटिंग
डेटा सायंटिस्टला अनेकदा डेटा एक्सप्लोर करावा लागतो, त्यामुळे त्याला व्हिज्युअलाइझ करण्याची क्षमता असणे महत्त्वाचे आहे. जेव्हा DataFrame मोठा असतो, तेव्हा अनेकदा आपल्याला फक्त काही रांगा प्रिंट करून सर्वकाही योग्य प्रकारे चालू आहे याची खात्री करायची असते. हे `df.head()` कॉल करून करता येते. जर तुम्ही Jupyter Notebook वरून हे चालवत असाल, तर ते DataFrame चा सुंदर टेबल स्वरूपात प्रिंट करेल.
डेटा सायंटिस्टला अनेकदा डेटा एक्सप्लोर करावा लागतो, त्यामुळे डेटा व्हिज्युअलाइझ करणे महत्त्वाचे आहे. जेव्हा DataFrame मोठा असतो, तेव्हा अनेकदा आपल्याला फक्त काही रांगा प्रिंट करून सर्वकाही योग्य प्रकारे चालू आहे याची खात्री करायची असते. हे `df.head()` कॉल करून करता येते. जर तुम्ही Jupyter Notebook वरून हे चालवत असाल, तर ते DataFrame चा सुंदर टेबल स्वरूपात प्रिंट करेल.
आम्ही काही कॉलम्स व्हिज्युअलाइझ करण्यासाठी `plot` फंक्शनचा वापर कसा करायचा ते पाहिले आहे. `plot` अनेक कामांसाठी उपयुक्त आहे आणि `kind=` पॅरामीटरद्वारे अनेक वेगवेगळ्या ग्राफ प्रकारांना समर्थन देते, परंतु तुम्ही नेहमीच अधिक जटिल गोष्टी प्लॉट करण्यासाठी raw `matplotlib` लायब्ररी वापरू शकता. आम्ही डेटा व्हिज्युअलायझेशनचा सविस्तर अभ्यास स्वतंत्र कोर्स लेसनमध्ये करू.
आम्ही `plot` फंक्शनचा वापर करून काही कॉलम्स व्हिज्युअलाइझ करण्याचा उपयोग देखील पाहिला आहे. `plot` अनेक कामांसाठी उपयुक्त आहे आणि `kind=` पॅरामीटरद्वारे अनेक वेगवेगळ्या ग्राफ प्रकारांना समर्थन देते, परंतु तुम्ही नेहमीच अधिक जटिल गोष्टी प्लॉट करण्यासाठी raw `matplotlib` लायब्ररी वापरू शकता. आम्ही डेटा व्हिज्युअलायझेशनचा सविस्तर अभ्यास स्वतंत्र कोर्स लेसनमध्ये करू.
या ओव्हरव्ह्यूमध्ये Pandas चे सर्वात महत्त्वाचे संकल्पना समाविष्ट आहेत, परंतु लायब्ररी खूप समृद्ध आहे आणि तुम्ही त्यासह काय करू शकता याला मर्यादा नाही! आता आपण विशिष्ट समस्येचे निराकरण करण्यासाठी हे ज्ञान लागू करूया.
## 🚀 Challenge 1: COVID प्रसाराच विश्लेषण
## 🚀 Challenge 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 Repository](https://github.com/CSSEGISandData/COVID-19) मध्ये उपलब्ध आहे.
आम्ही डेटा कसा हाताळायचा े दाखवायचे असल्याने, आम्ही तुम्हाला [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) उघडून वरून खाली वाचण्याचे आमंत्रण देतो. तुम्ही सेल्स चालवू शकता आणि शेवटी आम्ही तुमच्यासाठी ठेवलेल्या काही आव्हाने पूर्ण करू शकता.
आम्ही डेटा कसा हाताळायचा े दाखवायचे असल्याने, आम्ही तुम्हाला [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) उघडून वरपासून खालपर्यंत वाचण्याचे आमंत्रण देतो. तुम्ही सेल्स चालवू शकता आणि शेवटी आम्ही तुमच्यासाठी ठेवलेल्या काही आव्हाने पूर्ण करू शकता.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.mr.png)
> जर तुम्हाला Jupyter Notebook मध्ये कोड कसा चालवायचा माहित नसेल, तर [या लेखाचा](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) अभ्यास करा.
## असंरचित डेटासोबत काम करणे
डेटा अनेकदा टेबल स्वरूपात येतो, परंतु काही प्रकरणांमध्ये आपल्याला कमी संरचित डेटा हाताळावा लागतो, उदाहरणार्थ, टेक्स्ट किंवा प्रतिमा. अशा परिस्थितीत, वर पाहिलेल्या डेटा प्रोसेसिंग तंत्रांचा उपयोग करण्यासाठी, आपल्याला **संरचित डेटा** काढावा लागतो. येथे काही उदाहरणे आहेत:
डेटा अनेकदा टेबल स्वरूपात येतो, परंतु काही प्रकरणांमध्ये आपल्याला कमी संरचित डेटा, उदाहरणार्थ, टेक्स्ट किंवा प्रतिमा हाताळावी लागते. अशा परिस्थितीत, वर पाहिलेल्या डेटा प्रोसेसिंग तंत्रांचा उपयोग करण्यासाठी, आपल्याला संरचित डेटा **काढणे** आवश्यक आहे. काही उदाहरणे येथे दिली आहेत:
* टेक्स्टमधून कीवर्ड्स काढणे आणि ते कीवर्ड्स किती वेळा दिसतात ते पाहणे
* चित्रातील वस्तूंबद्दल माहिती काढण्यासाठी न्यूरल नेटवर्क्सचा वापर करणे
* व्हिडिओ कॅमेरा फीडवर लोकांच्या भावना जाणून घेणे
## 🚀 Challenge 2: COVID पेपर्सच विश्लेषण
## 🚀 Challenge 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) मध्ये 7000 हून अधिक (लेखनाच्या वेळी) COVID वर पेपर्स उपलब्ध आहेत, ज्यामध्ये मेटाडेटा आणि अब्स्ट्रॅक्ट्स (आणि त्यापैकी सुमारे अर्ध्या पेपर्ससाठी पूर्ण टेक्स्ट देखील प्रदान केले आहे).
[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) डेटासेट डाउनलोड करू शकता, परंतु त्यात मेटाडेटा फाइलसह सर्व पूर्ण टेक्स्ट्स समाविष्ट असतील.
> **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) डेटासेट डाउनलोड करू शकता, परंतु त्यात मेटाडेटा फाइलसह सर्व पूर्ण टेक्स्ट्स समाविष्ट असतील.
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) उघडा आणि वरून खाली वाचा. तुम्ही सेल्स चालवू शकता आणि शेवटी आम्ही तुमच्यासाठी ठेवलेल्या काही आव्हाने पूर्ण करू शकता.
[`notebook-papers.ipynb`](notebook-papers.ipynb) उघडा आणि वरपासून खालपर्यंत वाचा. तुम्ही सेल्स चालवू शकता आणि शेवटी आम्ही तुमच्यासाठी ठेवलेल्या काही आव्हाने पूर्ण करू शकता.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.mr.png)
## प्रतिमा डेटाचे प्रोसेसिंग
अलीकडे, खूप शक्तिशाली 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) द्वारे करता येते.
* **ऑब्जेक्ट डिटेक्शन** प्रतिमेमध्ये वेगवेगळ्या वस्तू शोधण्यासाठी. [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/) या ब्लॉग पोस्टमध्ये आम्ही 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 सखोल शिकणे कदाचित चांगली कल्पना आहे!
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -287,4 +287,4 @@ df = pd.read_csv('file.csv')
---
**अस्वीकरण**:
हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T00:05:12+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:52:57+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "ms"
}
@ -11,25 +11,25 @@ CO_OP_TRANSLATOR_METADATA:
| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Bekerja Dengan Python - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ |
| Bekerja dengan Python - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ |
[![Video Pengenalan](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Video Pengenalan](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ms.png)](https://youtu.be/dZjWOGbsN4Y)
Walaupun pangkalan data menawarkan cara yang sangat efisien untuk menyimpan data dan membuat pertanyaan menggunakan bahasa pertanyaan, cara yang paling fleksibel untuk memproses data adalah dengan menulis program anda sendiri untuk memanipulasi data. Dalam banyak kes, membuat pertanyaan pangkalan data mungkin lebih berkesan. Namun, dalam beberapa kes di mana pemprosesan data yang lebih kompleks diperlukan, ia tidak dapat dilakukan dengan mudah menggunakan SQL.
Pemprosesan data boleh diprogramkan dalam mana-mana bahasa pengaturcaraan, tetapi terdapat bahasa tertentu yang lebih tinggi tahapnya dalam bekerja dengan data. Saintis data biasanya memilih salah satu daripada bahasa berikut:
Walaupun pangkalan data menawarkan cara yang sangat efisien untuk menyimpan data dan membuat pertanyaan menggunakan bahasa pertanyaan, cara yang paling fleksibel untuk memproses data adalah dengan menulis program anda sendiri untuk memanipulasi data. Dalam banyak kes, membuat pertanyaan pangkalan data mungkin lebih berkesan. Namun, dalam beberapa kes apabila pemprosesan data yang lebih kompleks diperlukan, ia tidak dapat dilakukan dengan mudah menggunakan SQL.
Pemprosesan data boleh diprogramkan dalam mana-mana bahasa pengaturcaraan, tetapi terdapat beberapa bahasa yang lebih tinggi tahapnya dalam bekerja dengan data. Saintis data biasanya memilih salah satu daripada bahasa berikut:
* **[Python](https://www.python.org/)**, bahasa pengaturcaraan serba guna, yang sering dianggap sebagai salah satu pilihan terbaik untuk pemula kerana kesederhanaannya. Python mempunyai banyak perpustakaan tambahan yang boleh membantu anda menyelesaikan banyak masalah praktikal, seperti mengekstrak data daripada arkib ZIP, atau menukar gambar kepada skala kelabu. Selain sains data, Python juga sering digunakan untuk pembangunan web.
* **[R](https://www.r-project.org/)** adalah alat tradisional yang dibangunkan dengan pemprosesan data statistik dalam fikiran. Ia juga mengandungi repositori perpustakaan yang besar (CRAN), menjadikannya pilihan yang baik untuk pemprosesan data. Walau bagaimanapun, R bukan bahasa pengaturcaraan serba guna, dan jarang digunakan di luar domain sains data.
* **[Python](https://www.python.org/)**, bahasa pengaturcaraan serba guna, yang sering dianggap sebagai salah satu pilihan terbaik untuk pemula kerana kesederhanaannya. Python mempunyai banyak perpustakaan tambahan yang boleh membantu anda menyelesaikan banyak masalah praktikal, seperti mengekstrak data anda daripada arkib ZIP, atau menukar gambar kepada skala kelabu. Selain sains data, Python juga sering digunakan untuk pembangunan web.
* **[R](https://www.r-project.org/)** adalah alat tradisional yang dibangunkan dengan pemprosesan data statistik dalam fikiran. Ia juga mengandungi repositori perpustakaan yang besar (CRAN), menjadikannya pilihan yang baik untuk pemprosesan data. Walau bagaimanapun, R bukanlah bahasa pengaturcaraan serba guna, dan jarang digunakan di luar domain sains data.
* **[Julia](https://julialang.org/)** adalah bahasa lain yang dibangunkan khusus untuk sains data. Ia bertujuan memberikan prestasi yang lebih baik daripada Python, menjadikannya alat yang hebat untuk eksperimen saintifik.
Dalam pelajaran ini, kita akan memberi tumpuan kepada penggunaan Python untuk pemprosesan data yang mudah. Kami akan mengandaikan anda mempunyai pemahaman asas tentang bahasa ini. Jika anda ingin penerokaan yang lebih mendalam tentang Python, anda boleh merujuk kepada salah satu sumber berikut:
Dalam pelajaran ini, kita akan memberi tumpuan kepada penggunaan Python untuk pemprosesan data yang mudah. Kami akan mengandaikan anda sudah mempunyai pengetahuan asas tentang bahasa ini. Jika anda ingin mendalami Python, anda boleh merujuk kepada salah satu sumber berikut:
* [Belajar Python dengan Cara yang Menyeronokkan menggunakan Turtle Graphics dan Fractals](https://github.com/shwars/pycourse) - Kursus pengenalan pantas berasaskan GitHub ke dalam Pengaturcaraan Python
* [Belajar Python dengan Cara Menarik menggunakan Grafik Turtle dan Fraktal](https://github.com/shwars/pycourse) - Kursus pengenalan pantas berasaskan GitHub ke dalam Pengaturcaraan Python
* [Ambil Langkah Pertama Anda dengan Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Laluan Pembelajaran di [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Data boleh datang dalam pelbagai bentuk. Dalam pelajaran ini, kita akan mempertimbangkan tiga bentuk data - **data tabular**, **teks**, dan **imej**.
Kami akan memberi tumpuan kepada beberapa contoh pemprosesan data, bukannya memberikan anda gambaran keseluruhan penuh tentang semua perpustakaan berkaitan. Ini akan membolehkan anda memahami idea utama tentang apa yang mungkin, dan meninggalkan anda dengan pemahaman tentang di mana untuk mencari penyelesaian kepada masalah anda apabila anda memerlukannya.
Kami akan memberi tumpuan kepada beberapa contoh pemprosesan data, bukannya memberikan gambaran penuh tentang semua perpustakaan berkaitan. Ini akan membolehkan anda memahami idea utama tentang apa yang mungkin dilakukan, dan meninggalkan anda dengan pemahaman tentang di mana untuk mencari penyelesaian kepada masalah anda apabila anda memerlukannya.
> **Nasihat paling berguna**. Apabila anda perlu melakukan operasi tertentu pada data yang anda tidak tahu bagaimana untuk melakukannya, cuba cari di internet. [Stackoverflow](https://stackoverflow.com/) biasanya mengandungi banyak contoh kod berguna dalam Python untuk banyak tugas biasa.
@ -39,17 +39,17 @@ Kami akan memberi tumpuan kepada beberapa contoh pemprosesan data, bukannya memb
## Data Tabular dan Dataframe
Anda telah bertemu dengan data tabular apabila kita bercakap tentang pangkalan data relasi. Apabila anda mempunyai banyak data, dan ia terkandung dalam banyak jadual yang saling berkaitan, memang masuk akal untuk menggunakan SQL untuk bekerja dengannya. Walau bagaimanapun, terdapat banyak kes di mana kita mempunyai jadual data, dan kita perlu mendapatkan beberapa **pemahaman** atau **wawasan** tentang data ini, seperti taburan, korelasi antara nilai, dan sebagainya. Dalam sains data, terdapat banyak kes di mana kita perlu melakukan beberapa transformasi data asal, diikuti dengan visualisasi. Kedua-dua langkah ini boleh dilakukan dengan mudah menggunakan Python.
Anda sudah bertemu dengan data tabular apabila kita bercakap tentang pangkalan data relasi. Apabila anda mempunyai banyak data, dan ia terkandung dalam banyak jadual yang saling berkaitan, ia sememangnya masuk akal untuk menggunakan SQL untuk bekerja dengannya. Walau bagaimanapun, terdapat banyak kes apabila kita mempunyai jadual data, dan kita perlu mendapatkan beberapa **pemahaman** atau **wawasan** tentang data ini, seperti taburan, korelasi antara nilai, dan sebagainya. Dalam sains data, terdapat banyak kes apabila kita perlu melakukan beberapa transformasi pada data asal, diikuti dengan visualisasi. Kedua-dua langkah ini boleh dilakukan dengan mudah menggunakan Python.
Terdapat dua perpustakaan paling berguna dalam Python yang boleh membantu anda menangani data tabular:
* **[Pandas](https://pandas.pydata.org/)** membolehkan anda memanipulasi apa yang dipanggil **Dataframe**, yang serupa dengan jadual relasi. Anda boleh mempunyai lajur bernama, dan melakukan pelbagai operasi pada baris, lajur, dan dataframe secara umum.
* **[Numpy](https://numpy.org/)** adalah perpustakaan untuk bekerja dengan **tensor**, iaitu **array** pelbagai dimensi. Array mempunyai nilai jenis asas yang sama, dan ia lebih mudah daripada dataframe, tetapi ia menawarkan lebih banyak operasi matematik, dan menghasilkan kurang overhead.
* **[Pandas](https://pandas.pydata.org/)** membolehkan anda memanipulasi **Dataframe**, yang serupa dengan jadual relasi. Anda boleh mempunyai lajur bernama, dan melakukan pelbagai operasi pada baris, lajur, dan dataframe secara umum.
* **[Numpy](https://numpy.org/)** adalah perpustakaan untuk bekerja dengan **tensor**, iaitu **array** berbilang dimensi. Array mempunyai nilai jenis asas yang sama, dan ia lebih mudah daripada dataframe, tetapi ia menawarkan lebih banyak operasi matematik, dan menghasilkan kurang overhead.
Terdapat juga beberapa perpustakaan lain yang anda patut tahu:
Terdapat juga beberapa perpustakaan lain yang anda perlu tahu:
* **[Matplotlib](https://matplotlib.org/)** adalah perpustakaan yang digunakan untuk visualisasi data dan melukis graf
* **[SciPy](https://www.scipy.org/)** adalah perpustakaan dengan beberapa fungsi saintifik tambahan. Kita telah menemui perpustakaan ini semasa bercakap tentang kebarangkalian dan statistik
* **[SciPy](https://www.scipy.org/)** adalah perpustakaan dengan beberapa fungsi saintifik tambahan. Kami telah menemui perpustakaan ini semasa bercakap tentang kebarangkalian dan statistik
Berikut adalah sekeping kod yang biasanya anda gunakan untuk mengimport perpustakaan ini pada permulaan program Python anda:
Berikut adalah sekeping kod yang biasanya anda gunakan untuk mengimport perpustakaan tersebut pada permulaan program Python anda:
```python
import numpy as np
import pandas as pd
@ -61,11 +61,11 @@ Pandas berpusat pada beberapa konsep asas.
### Siri
**Siri** adalah urutan nilai, serupa dengan senarai atau array numpy. Perbezaan utama ialah siri juga mempunyai **indeks**, dan apabila kita beroperasi pada siri (contohnya, menambahnya), indeks diambil kira. Indeks boleh sesederhana nombor baris integer (ia adalah indeks yang digunakan secara lalai apabila mencipta siri daripada senarai atau array), atau ia boleh mempunyai struktur yang kompleks, seperti selang tarikh.
**Siri** adalah urutan nilai, serupa dengan senarai atau array numpy. Perbezaan utama ialah siri juga mempunyai **indeks**, dan apabila kita beroperasi pada siri (contohnya, menambahnya), indeks diambil kira. Indeks boleh semudah nombor baris integer (ia adalah indeks yang digunakan secara lalai apabila mencipta siri daripada senarai atau array), atau ia boleh mempunyai struktur kompleks, seperti selang tarikh.
> **Nota**: Terdapat beberapa kod pengenalan Pandas dalam buku nota yang disertakan [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Kami hanya menggariskan beberapa contoh di sini, dan anda dialu-alukan untuk menyemak buku nota penuh.
> **Nota**: Terdapat beberapa kod pengenalan Pandas dalam buku nota yang disertakan [`notebook.ipynb`](notebook.ipynb). Kami hanya menggariskan beberapa contoh di sini, dan anda dialu-alukan untuk melihat buku nota penuh.
Pertimbangkan contoh: kita mahu menganalisis jualan kedai aiskrim kita. Mari kita hasilkan siri nombor jualan (bilangan item yang dijual setiap hari) untuk beberapa tempoh masa:
Pertimbangkan contoh: kita ingin menganalisis jualan kedai ais krim kita. Mari kita hasilkan siri nombor jualan (bilangan item yang dijual setiap hari) untuk tempoh masa tertentu:
```python
start_date = "Jan 1, 2020"
@ -75,9 +75,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Plot Siri Masa](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Plot Siri Masa](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ms.png)
Sekarang anggap setiap minggu kita menganjurkan pesta untuk rakan-rakan, dan kita mengambil tambahan 10 pek aiskrim untuk pesta. Kita boleh mencipta siri lain, diindeks mengikut minggu, untuk menunjukkan itu:
Sekarang katakan setiap minggu kita menganjurkan pesta untuk rakan-rakan, dan kita mengambil tambahan 10 pek ais krim untuk pesta. Kita boleh mencipta siri lain, diindeks mengikut minggu, untuk menunjukkan itu:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -86,16 +86,16 @@ Apabila kita menambah dua siri bersama-sama, kita mendapat jumlah keseluruhan:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Plot Siri Masa](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Plot Siri Masa](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ms.png)
> **Nota** bahawa kita tidak menggunakan sintaks mudah `total_items+additional_items`. Jika kita melakukannya, kita akan mendapat banyak nilai `NaN` (*Not a Number*) dalam siri hasil. Ini kerana terdapat nilai yang hilang untuk beberapa titik indeks dalam siri `additional_items`, dan menambah `NaN` kepada apa-apa menghasilkan `NaN`. Oleh itu, kita perlu menentukan parameter `fill_value` semasa penambahan.
> **Nota** bahawa kita tidak menggunakan sintaks mudah `total_items+additional_items`. Jika kita melakukannya, kita akan menerima banyak nilai `NaN` (*Not a Number*) dalam siri hasil. Ini kerana terdapat nilai yang hilang untuk beberapa titik indeks dalam siri `additional_items`, dan menambah `NaN` kepada apa-apa menghasilkan `NaN`. Oleh itu, kita perlu menentukan parameter `fill_value` semasa penambahan.
Dengan siri masa, kita juga boleh **menyampel semula** siri dengan selang masa yang berbeza. Sebagai contoh, anggap kita mahu mengira purata jumlah jualan bulanan. Kita boleh menggunakan kod berikut:
Dengan siri masa, kita juga boleh **menyampel semula** siri dengan selang masa yang berbeza. Sebagai contoh, katakan kita ingin mengira purata jumlah jualan bulanan. Kita boleh menggunakan kod berikut:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Purata Siri Masa Bulanan](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Purata Siri Masa Bulanan](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ms.png)
### DataFrame
@ -129,19 +129,19 @@ Ini akan memberikan kita jadual seperti ini:
| 7 | 8 | very |
| 8 | 9 | much |
**Nota** bahawa kita juga boleh mendapatkan susun atur jadual ini dengan mentransposkan jadual sebelumnya, contohnya dengan menulis
**Nota** bahawa kita juga boleh mendapatkan susun atur jadual ini dengan menukar jadual sebelumnya, contohnya dengan menulis
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Di sini `.T` bermaksud operasi mentransposkan DataFrame, iaitu menukar baris dan lajur, dan operasi `rename` membolehkan kita menamakan semula lajur untuk sepadan dengan contoh sebelumnya.
Di sini `.T` bermaksud operasi menukar DataFrame, iaitu menukar baris dan lajur, dan operasi `rename` membolehkan kita menamakan semula lajur untuk sepadan dengan contoh sebelumnya.
Berikut adalah beberapa operasi paling penting yang boleh kita lakukan pada DataFrame:
**Pemilihan lajur**. Kita boleh memilih lajur individu dengan menulis `df['A']` - operasi ini mengembalikan Siri. Kita juga boleh memilih subset lajur ke dalam DataFrame lain dengan menulis `df[['B','A']]` - ini mengembalikan DataFrame lain.
**Penapisan** hanya baris tertentu berdasarkan kriteria. Sebagai contoh, untuk meninggalkan hanya baris dengan lajur `A` lebih besar daripada 5, kita boleh menulis `df[df['A']>5]`.
**Penapisan** hanya baris tertentu mengikut kriteria. Sebagai contoh, untuk meninggalkan hanya baris dengan lajur `A` lebih besar daripada 5, kita boleh menulis `df[df['A']>5]`.
> **Nota**: Cara penapisan berfungsi adalah seperti berikut. Ungkapan `df['A']<5` mengembalikan siri boolean, yang menunjukkan sama ada ungkapan itu `True` atau `False` untuk setiap elemen siri asal `df['A']`. Apabila siri boolean digunakan sebagai indeks, ia mengembalikan subset baris dalam DataFrame. Oleh itu, tidak mungkin menggunakan ungkapan boolean Python sewenang-wenangnya, contohnya, menulis `df[df['A']>5 and df['A']<7]` adalah salah. Sebaliknya, anda harus menggunakan operasi khas `&` pada siri boolean, menulis `df[(df['A']>5) & (df['A']<7)]` (*kurungan adalah penting di sini*).
> **Nota**: Cara penapisan berfungsi adalah seperti berikut. Ungkapan `df['A']<5` mengembalikan siri boolean, yang menunjukkan sama ada ungkapan adalah `True` atau `False` untuk setiap elemen siri asal `df['A']`. Apabila siri boolean digunakan sebagai indeks, ia mengembalikan subset baris dalam DataFrame. Oleh itu, tidak mungkin menggunakan ungkapan boolean Python sewenang-wenangnya, contohnya, menulis `df[df['A']>5 and df['A']<7]` adalah salah. Sebaliknya, anda harus menggunakan operasi khas `&` pada siri boolean, menulis `df[(df['A']>5) & (df['A']<7)]` (*kurungan adalah penting di sini*).
**Mencipta lajur boleh kira baru**. Kita boleh dengan mudah mencipta lajur boleh kira baru untuk DataFrame kita dengan menggunakan ungkapan intuitif seperti ini:
```python
@ -152,7 +152,7 @@ Contoh ini mengira perbezaan A daripada nilai puratanya. Apa yang sebenarnya ber
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Contoh terakhir ini, walaupun secara sintaksis betul, memberikan kita hasil yang salah, kerana ia menetapkan panjang siri `B` kepada semua nilai dalam lajur, dan bukan panjang elemen individu seperti yang kita maksudkan.
Contoh terakhir, walaupun secara sintaks betul, memberikan kita hasil yang salah, kerana ia menetapkan panjang siri `B` kepada semua nilai dalam lajur, dan bukan panjang elemen individu seperti yang kita inginkan.
Jika kita perlu mengira ungkapan kompleks seperti ini, kita boleh menggunakan fungsi `apply`. Contoh terakhir boleh ditulis seperti berikut:
```python
@ -180,9 +180,9 @@ Selepas operasi di atas, kita akan berakhir dengan DataFrame berikut:
df.iloc[:5]
```
**Pengelompokan** sering digunakan untuk mendapatkan hasil yang serupa dengan *jadual pangsi* dalam Excel. Anggap kita mahu mengira nilai purata lajur `A` untuk setiap nombor tertentu `LenB`. Kemudian kita boleh mengelompokkan DataFrame kita mengikut `LenB`, dan memanggil `mean`:
**Pengelompokan** sering digunakan untuk mendapatkan hasil yang serupa dengan *jadual pangsi* dalam Excel. Katakan kita ingin mengira nilai purata lajur `A` untuk setiap nombor tertentu `LenB`. Kemudian kita boleh mengelompokkan DataFrame kita mengikut `LenB`, dan memanggil `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Jika kita perlu mengira purata dan bilangan elemen dalam kumpulan, maka kita boleh menggunakan fungsi `aggregate` yang lebih kompleks:
```python
@ -217,11 +217,11 @@ Gambaran keseluruhan ini merangkumi konsep paling penting dalam Pandas, namun, p
## 🚀 Cabaran 1: Menganalisis Penyebaran COVID
Masalah pertama yang akan kita fokuskan ialah pemodelan penyebaran wabak COVID-19. Untuk melakukannya, kita akan menggunakan data mengenai bilangan individu yang dijangkiti di pelbagai negara, yang disediakan oleh [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) di [Johns Hopkins University](https://jhu.edu/). Dataset ini tersedia di [Repositori GitHub ini](https://github.com/CSSEGISandData/COVID-19).
Masalah pertama yang akan kita fokuskan ialah pemodelan penyebaran wabak COVID-19. Untuk melakukannya, kita akan menggunakan data tentang bilangan individu yang dijangkiti di pelbagai negara, yang disediakan oleh [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) di [Johns Hopkins University](https://jhu.edu/). Dataset ini tersedia di [Repositori GitHub ini](https://github.com/CSSEGISandData/COVID-19).
Oleh kerana kita ingin menunjukkan cara menangani data, kami mengajak anda untuk membuka [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) dan membacanya dari atas ke bawah. Anda juga boleh melaksanakan sel-sel, dan melakukan beberapa cabaran yang telah kami tinggalkan untuk anda di penghujungnya.
Oleh kerana kita ingin menunjukkan cara menangani data, kami mengajak anda untuk membuka [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) dan membacanya dari atas ke bawah. Anda juga boleh melaksanakan sel-sel, dan melakukan beberapa cabaran yang telah kami tinggalkan untuk anda di penghujungnya.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ms.png)
> Jika anda tidak tahu cara menjalankan kod dalam Jupyter Notebook, lihat [artikel ini](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
@ -237,31 +237,31 @@ Walaupun data sering datang dalam bentuk jadual, dalam beberapa kes kita perlu m
Dalam cabaran ini, kita akan meneruskan topik pandemik COVID, dan fokus pada pemprosesan kertas saintifik mengenai subjek ini. Terdapat [Dataset CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) dengan lebih daripada 7000 (pada masa penulisan) kertas mengenai COVID, tersedia dengan metadata dan abstrak (dan untuk kira-kira separuh daripadanya juga disediakan teks penuh).
Contoh penuh menganalisis dataset ini menggunakan perkhidmatan kognitif [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) diterangkan [dalam catatan blog ini](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Kita akan membincangkan versi analisis yang dipermudahkan.
Contoh penuh menganalisis dataset ini menggunakan perkhidmatan kognitif [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) diterangkan [dalam blog post ini](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Kita akan membincangkan versi analisis yang dipermudahkan.
> **NOTE**: Kami tidak menyediakan salinan dataset sebagai sebahagian daripada repositori ini. Anda mungkin perlu memuat turun fail [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) daripada [dataset ini di Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Pendaftaran dengan Kaggle mungkin diperlukan. Anda juga boleh memuat turun dataset tanpa pendaftaran [di sini](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), tetapi ia akan termasuk semua teks penuh selain daripada fail metadata.
Buka [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) dan bacalah dari atas ke bawah. Anda juga boleh melaksanakan sel-sel, dan melakukan beberapa cabaran yang telah kami tinggalkan untuk anda di penghujungnya.
Buka [`notebook-papers.ipynb`](notebook-papers.ipynb) dan bacalah dari atas ke bawah. Anda juga boleh melaksanakan sel-sel, dan melakukan beberapa cabaran yang telah kami tinggalkan untuk anda di penghujungnya.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ms.png)
## Memproses Data Imej
Baru-baru ini, model AI yang sangat berkuasa telah dibangunkan yang membolehkan kita memahami imej. Terdapat banyak tugas yang boleh diselesaikan menggunakan rangkaian neural yang telah dilatih, atau perkhidmatan awan. Beberapa contoh termasuk:
* **Pengelasan Imej**, yang boleh membantu anda mengkategorikan imej ke dalam salah satu kelas yang telah ditentukan. Anda boleh melatih pengelas imej anda sendiri dengan mudah menggunakan perkhidmatan seperti [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Pengelasan Imej**, yang boleh membantu anda mengkategorikan imej ke dalam salah satu kelas yang telah ditetapkan. Anda boleh melatih pengelasan imej anda sendiri dengan mudah menggunakan perkhidmatan seperti [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Pengesanan Objek** untuk mengesan objek yang berbeza dalam imej. Perkhidmatan seperti [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) boleh mengesan sejumlah objek biasa, dan anda boleh melatih model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) untuk mengesan beberapa objek tertentu yang menarik.
* **Pengesanan Wajah**, termasuk umur, jantina dan pengesanan emosi. Ini boleh dilakukan melalui [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Pengesanan Wajah**, termasuk pengesanan Umur, Jantina dan Emosi. Ini boleh dilakukan melalui [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Semua perkhidmatan awan ini boleh dipanggil menggunakan [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), dan dengan itu boleh dengan mudah dimasukkan ke dalam aliran kerja penerokaan data anda.
Berikut adalah beberapa contoh penerokaan data daripada sumber data imej:
* Dalam catatan blog [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) kita meneroka foto Instagram, cuba memahami apa yang membuatkan orang memberikan lebih banyak suka kepada foto. Kita mula-mula mengekstrak sebanyak mungkin maklumat daripada gambar menggunakan [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), dan kemudian menggunakan [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) untuk membina model yang boleh ditafsirkan.
* Dalam [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) kita menggunakan [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) untuk mengekstrak emosi orang dalam foto dari acara, untuk cuba memahami apa yang membuatkan orang gembira.
* Dalam blog post [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) kita meneroka foto Instagram, cuba memahami apa yang membuatkan orang memberikan lebih banyak suka kepada foto. Kita mula-mula mengekstrak sebanyak mungkin maklumat daripada gambar menggunakan [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), dan kemudian menggunakan [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) untuk membina model yang boleh ditafsirkan.
* Dalam [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) kita menggunakan [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) untuk mengekstrak emosi orang dalam gambar dari acara, untuk cuba memahami apa yang membuatkan orang gembira.
## Kesimpulan
Sama ada anda sudah mempunyai data berstruktur atau tidak berstruktur, menggunakan Python anda boleh melaksanakan semua langkah berkaitan pemprosesan dan pemahaman data. Ia mungkin cara paling fleksibel untuk pemprosesan data, dan itulah sebabnya majoriti saintis data menggunakan Python sebagai alat utama mereka. Mempelajari Python secara mendalam mungkin idea yang baik jika anda serius tentang perjalanan sains data anda!
Sama ada anda sudah mempunyai data berstruktur atau tidak berstruktur, menggunakan Python anda boleh melakukan semua langkah berkaitan pemprosesan dan pemahaman data. Ia mungkin cara paling fleksibel untuk pemprosesan data, dan itulah sebabnya majoriti saintis data menggunakan Python sebagai alat utama mereka. Mempelajari Python secara mendalam mungkin idea yang baik jika anda serius tentang perjalanan sains data anda!
## [Kuiz selepas kuliah](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -289,4 +289,4 @@ Pelajaran ini telah ditulis dengan ♥️ oleh [Dmitry Soshnikov](http://soshnik
---
**Penafian**:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T20:11:04+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T16:05:05+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "my"
}
@ -13,58 +13,59 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Python နှင့်အလုပ်လုပ်ခြင်း - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![Intro Video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.my.png)](https://youtu.be/dZjWOGbsN4Y)
ဒေတာများကို သိမ်းဆည်းရန်နှင့် query languages အသုံးပြု၍ ရှာဖွေရန်အတွက် databases သည် အလွန်ထိရောက်သောနည်းလမ်းများပေးနိုင်သော်လည်း၊ ဒေတာကို ကိုယ်တိုင်ရေးသားထားသော program ဖြင့် ပြုပြင်ရန်သည် အလွန် flexible ဖြစ်သည်။ အချို့သောအခြေအနေများတွင် database query သည် ပိုထိရောက်နိုင်သော်လည်း၊ SQL ဖြင့် လွယ်ကူစွာလုပ်ဆောင်၍မရသော အဆင့်မြင့်ဒေတာလုပ်ငန်းများအတွက် program ရေးသားခြင်းသည် မဖြစ်မနေလိုအပ်သည်။
ဒေတာလုပ်ငန်းများကို programming language မည်သည့်အမျိုးအစားဖြင့်မဆို ရေးသားနိုင်သော်လည်း၊ ဒေတာနှင့်အလုပ်လုပ်ရန်အထူးသင့်လျော်သော programming languages ရှိသည်။ ဒေတာသိပ္ပံပညာရှင်များသည် အောက်ပါဘာသာစကားများကို အများအားဖြင့်နှစ်သက်ကြသည်-
ဒေတာများကို သိမ်းဆည်းရန်နှင့် query languages အသုံးပြု၍ ရှာဖွေရန်အတွက် databases သည် အလွန်ထိရောက်သောနည်းလမ်းများပေးနိုင်သော်လည်း၊ ဒေတာကို ကိုယ်တိုင်ရေးသားထားသော program ဖြင့် ပြုပြင်ရန် flexibility အများဆုံးရှိသည်။ အချို့သောအခြေအနေများတွင် database query သည် ပိုထိရောက်နိုင်သော်လည်း၊ SQL ဖြင့် လွယ်ကူစွာလုပ်ဆောင်၍မရသော ဒေတာကို ရှုပ်ထွေးစွာ ပြုပြင်ရန်လိုအပ်သောအခါများရှိသည်။
ဒေတာကို programming language မည်သည့်အမျိုးအစားဖြင့်မဆို ပြုပြင်နိုင်သော်လည်း၊ ဒေတာနှင့်အလုပ်လုပ်ရန်အတွက် အဆင့်မြင့်သော programming languages ရှိသည်။ ဒေတာသိပ္ပံပညာရှင်များသည် အောက်ပါဘာသာစကားများကို အများအားဖြင့်နှစ်သက်ကြသည်-
* **[Python](https://www.python.org/)** သည် general-purpose programming language ဖြစ်ပြီး၊ ရိုးရှင်းမှုကြောင့် beginner များအတွက် အကောင်းဆုံးရွေးချယ်မှုတစ်ခုအဖြစ် သတ်မှတ်ခံရသည်။ Python တွင် practical ပြဿနာများကို ဖြေရှင်းရန်အတွက် အထောက်အကူပြု library များစွာပါဝင်သည်။ ဥပမာ- ZIP archive မှ ဒေတာကို extract လုပ်ခြင်း၊ သို့မဟုတ် ပုံကို grayscale သို့ပြောင်းခြင်း။ ဒေတာသိပ္ပံအပြင် Python သည် web development အတွက်လည်း အသုံးများသည်။
* **[R](https://www.r-project.org/)** သည် statistical data processing အတွက် အထူးထုတ်လုပ်ထားသော traditional toolbox ဖြစ်သည်။ CRAN library များစွာပါဝင်သောကြောင့် ဒေတာလုပ်ငန်းများအတွက် ရွေးချယ်ရန်ကောင်းသည်။ သို့သော် R သည် general-purpose programming language မဟုတ်သည့်အပြင် ဒေတာသိပ္ပံနယ်ပယ်အပြင် အခြားနယ်ပယ်များတွင် အသုံးမများပါ။
* **[Julia](https://julialang.org/)** သည် ဒေတာသိပ္ပံအတွက် အထူးထုတ်လုပ်ထားသော programming language တစ်ခုဖြစ်သည်။ Python ထက် performance ပိုကောင်းစေရန် ရည်ရွယ်ထားသောကြောင့် သိပ္ပံလေ့လာမှုများအတွက် tool ကောင်းတစ်ခုဖြစ်သည်။
* **[Python](https://www.python.org/)** သည် general-purpose programming language ဖြစ်ပြီး၊ ရိုးရှင်းမှုကြောင့် စတင်လေ့လာသူများအတွက် အကောင်းဆုံးရွေးချယ်မှုတစ်ခုအဖြစ် သတ်မှတ်ခံရသည်။ Python တွင် ZIP archive မှ ဒေတာကို ထုတ်ယူခြင်း၊ သို့မဟုတ် ပုံကို grayscale သို့ ပြောင်းခြင်းကဲ့သို့သော အများအပြားသော အကူအညီပေးနိုင်သော libraries ရှိသည်။ ဒေတာသိပ္ပံပညာအပြင် Python ကို web development အတွက်လည်း အသုံးပြုကြသည်။
* **[R](https://www.r-project.org/)** သည် statistical data processing အတွက် ထုတ်လုပ်ထားသော traditional toolbox ဖြစ်သည်။ CRAN libraries များပါဝင်သောကြောင့် ဒေတာကို ပြုပြင်ရန်အတွက် ရွေးချယ်ရန်ကောင်းသောအရာဖြစ်သည်။ သို့သော် R သည် general-purpose programming language မဟုတ်သည့်အပြင် ဒေတာသိပ္ပံပညာနယ်ပယ်အပြင် အခြားနယ်ပယ်များတွင် ရှားရှားပါးပါးသာ အသုံးပြုသည်။
* **[Julia](https://julialang.org/)** သည် ဒေတာသိပ္ပံပညာအတွက် အထူးထုတ်လုပ်ထားသော programming language ဖြစ်သည်။ Python ထက် performance ပိုကောင်းစေရန် ရည်ရွယ်ထားသောကြောင့် သိပ္ပံလေ့လာမှုများအတွက် ကောင်းမွန်သောကိရိယာတစ်ခုဖြစ်သည်။
ဒီသင်ခန်းစာတွင် Python ကို simple data processing အတွက် အသုံးပြုခြင်းကို အဓိကထားမည်ဖြစ်သည်။ Python ဘာသာစကားနှင့် အခြေခံကျွမ်းကျင်မှုရှိသည်ဟု သတ်မှတ်ထားမည်။ Python ကို ပိုမိုနက်ရှိုင်းစွာလေ့လာလိုပါက အောက်ပါ resources များကို ရည်ညွှန်းနိုင်သည်-
ဒီသင်ခန်းစာတွင် Python ကို အသုံးပြု၍ ရိုးရှင်းသော ဒေတာပြုပြင်ခြင်းကို အဓိကထားမည်ဖြစ်သည်။ Python ဘာသာစကားနှင့် အခြေခံကျွမ်းကျင်မှုရှိသည်ဟု သတ်မှတ်ထားမည်။ Python ကို ပိုမိုနက်နက်ရှိုင်းရှိုင်းလေ့လာလိုပါက အောက်ပါ resources များကို ရည်ညွှန်းနိုင်သည်-
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - GitHub-based Python Programming အကျဉ်းသင်တန်း
* [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 တွင် Learning Path
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - GitHub-based Python Programming အကျဉ်းချုပ်သင်တန်း
* [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 တွင် Learning Path
ဒေတာသည် အမျိုးအစားများစွာရှိနိုင်သည်။ ဒီသင်ခန်းစာတွင် **tabular data**, **text** နှင့် **images** ဆိုသည့် ဒေတာအမျိုးအစား ၃ မျိုးကို လေ့လာမည်ဖြစ်သည်။
ဒေတာသည် အမျိုးမျိုးသောပုံစံများဖြင့် ရှိနိုင်သည်။ ဒီသင်ခန်းစာတွင် **tabular data**, **text** နှင့် **images** ဆိုသည့် ဒေတာပုံစံသုံးမျိုးကို စဉ်းစားမည်ဖြစ်သည်။
ီသင်ခန်းစာတွင် library အားလုံးကို အပြည့်အစုံမဖော်ပြဘဲ၊ ဒေတာလုပ်ငန်းများ၏ အဓိကအချက်များကို နားလည်စေရန်အတွက် ဥပမာအချို့ကိုသာ အဓိကထားမည်ဖြစ်သည်။ ဒါက သင်၏ပြဿနာများကို ဖြေရှင်းရန်အတွက် လိုအပ်သော solution များကို ရှာဖွေတတ်စေရန် အထောက်အကူပြုမည်။
ေတာပြုပြင်ခြင်းနှင့်ပတ်သက်သော libraries အားလုံးကို အပြည့်အစုံမဖော်ပြဘဲ၊ အချို့သော ဥပမာများကိုသာ အဓိကထားမည်ဖြစ်သည်။ ဒါက သင်ကို အဓိကအကြောင်းအရာကို နားလည်စေပြီး၊ လိုအပ်သောအခါတွင် သင့်ပြဿနာများအတွက် ဖြေရှင်းချက်များကို ရှာဖွေရန် နားလည်မှုရရှိစေမည်ဖြစ်သည်။
> **အရေးကြီးသောအကြံပေးချက်**: သင်မသိသော ဒေတာလုပ်ငန်းတစ်ခုကို လုပ်ဆောင်ရန်လိုအပ်ပါက၊ အင်တာနက်တွင် ရှာဖွေကြည့်ပါ။ [Stackoverflow](https://stackoverflow.com/) တွင် Python ဖြင့် လုပ်ဆောင်နိုင်သော typical task များအတွက် code sample များစွာပါဝင်သည်။
> **အရေးကြီးသောအကြံပေးချက်**။ သင်မသိသော ဒေတာအပေါ်လုပ်ဆောင်ရန်လိုအပ်သော operation ကို ရှာဖွေရန်အခါတွင် အင်တာနက်တွင် ရှာဖွေကြည့်ပါ။ [Stackoverflow](https://stackoverflow.com/) တွင် Python ဖြင့် အများအပြားသော ရိုးရှင်းသောအလုပ်များအတွက် အသုံးဝင်သော code samples ရှိလေ့ရှိသည်။
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabular Data နှင့် Dataframes
Relational databases အကြောင်းပြောခဲ့သောအခါတွင် သင်သည် tabular data ကို ရင်းနှီးပြီးဖြစ်သည်။ ဒေတာများစွာရှိပြီး၊ အမျိုးမျိုးသော tables များတွင် ချိတ်ဆက်ထားသောအခါ SQL ကို အသုံးပြုရန် make sense ဖြစ်သည်။ သို့သော် တစ်ခါတစ်ရံတွင် table တစ်ခုသာရှိပြီး၊ ဒေတာ၏ **distribution** သို့မဟုတ် **correlation** စသည်တို့ကို နားလည်ရန်လိုအပ်သည်။ ဒေတာသိပ္ပံတွင် original data ကို transformation လုပ်ပြီး visualization ပြုလုပ်ရန်လိုအပ်သောအခါများစွာရှိသည်။ Python သုံးခြင်းဖြင့် အလွယ်တကူလုပ်ဆောင်နိုင်သည်။
Relational databases အကြောင်းပြောသောအခါတွင် သင်သည် tabular data ကို ရင်းနှီးပြီးဖြစ်သည်။ ဒေတာများစွာရှိပြီး၊ အမျိုးမျိုးသော tables များတွင် ချိတ်ဆက်ထားသောအခါတွင် SQL ကို အသုံးပြု၍ အလုပ်လုပ်ရန် make sense ဖြစ်သည်။ သို့သော် အချို့သောအခြေအနေများတွင် table တစ်ခုရှိသော ဒေတာကို **နားလည်မှု** သို့မဟုတ် **insights** ရရှိရန်လိုအပ်သည်။ ဥပမာအားဖြင့် distribution, correlation between values စသည်ဖြင့်။ ဒေတာသိပ္ပံပညာတွင် original data ကို ပြုပြင်ပြီး visualization ပြုလုပ်ရန်လိုအပ်သောအခါများရှိသည်။ Python ကို အသုံးပြု၍ အလွယ်တကူလုပ်ဆောင်နိုင်သည်။
Python တွင် tabular data ကို handle လုပ်ရန် အထောက်အကူပြု library ၂ ခုအရေးကြီးဆုံးဖြစ်သည်-
* **[Pandas](https://pandas.pydata.org/)** သည် **Dataframes** ကို manipulate လုပ်ရန်အထောက်အကူပြု library ဖြစ်သည်။ Dataframes သည် relational tables နှင့် ဆင်တူသည်။ Named columns ရှိပြီး၊ rows, columns နှင့် dataframes အပေါ်တွင် အမျိုးမျိုးသော operations လုပ်နိုင်သည်။
* **[Numpy](https://numpy.org/)** သည် **tensors** (multi-dimensional **arrays**) ကို handle လုပ်ရန် library ဖြစ်သည်။ Array သည် တူညီသော underlying type ရှိသော values များပါဝင်ပြီး၊ dataframe ထက် ရိုးရှင်းသော်လည်း mathematical operations ပိုမိုလုပ်ဆောင်နိုင်သည်။
Python တွင် tabular data ကို handle လုပ်ရန် အထောက်အကူပြုသော libraries နှစ်ခုအများဆုံးအသုံးဝင်သည်-
အခြား library အချို့ကိုလည်း သိထားသင့်သည်-
* **[Matplotlib](https://matplotlib.org/)** သည် data visualization နှင့် graph plotting အတွက် အသုံးပြုသော library
* **[SciPy](https://www.scipy.org/)** သည် probability နှင့် statistics အကြောင်းပြောခဲ့သောအခါ တွေ့ရှိခဲ့သော additional scientific functions ပါဝင်သော library
* **[Pandas](https://pandas.pydata.org/)** သည် **Dataframes** ကို manipulate လုပ်ရန် အထောက်အကူပြုသည်။ Dataframes သည် relational tables နှင့် ဆင်တူသည်။ Named columns ရှိပြီး၊ rows, columns နှင့် dataframes အပေါ် operation များကို ပြုလုပ်နိုင်သည်။
* **[Numpy](https://numpy.org/)** သည် **tensors** (multi-dimensional **arrays**) နှင့်အလုပ်လုပ်ရန် library ဖြစ်သည်။ Array တွင် တူညီသော underlying type ရှိပြီး၊ dataframe ထက် ရိုးရှင်းသော်လည်း mathematical operations ပိုမိုလုပ်ဆောင်နိုင်ပြီး overhead ပိုမိုလျော့နည်းသည်။
Python program ရဲ့အစမှာ library များကို import လုပ်ရန် typical code:
အခြားသိထားသင့်သော libraries များမှာ-
* **[Matplotlib](https://matplotlib.org/)** သည် data visualization နှင့် graph plotting အတွက် အသုံးပြုသော library ဖြစ်သည်။
* **[SciPy](https://www.scipy.org/)** သည် အပိုသော သိပ္ပံ functions များပါဝင်သော library ဖြစ်သည်။ Probability နှင့် statistics အကြောင်းပြောသောအခါတွင် library ကို ရင်းနှီးပြီးဖြစ်သည်။
Python program ရဲ့အစမှာ libraries များကို import လုပ်ရန် အသုံးပြုသော code:
```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
```
```
Pandas သည် အခြေခံ concepts အချို့ကို အဓိကထားသည်။
### Series
### Series
**Series** သည် list သို့မဟုတ် numpy array နှင့် ဆင်တူသော values များ၏ အစဉ်ဖြစ်သည်။ အဓိကကွာခြားချက်မှာ series တွင် **index** ပါဝင်ပြီး၊ series အပေါ်တွင် operation လုပ်သောအခါ index ကို အရေးထားသည်။ Index သည် integer row number (list သို့မဟုတ် array မှ series တစ်ခုဖန်တီးသောအခါ default index) လိုရိုးရှင်းနိုင်သလို၊ date interval လို complex structure ရှိနိုင်သည်။
**Series** သည် list သို့မဟုတ် numpy array နှင့် ဆင်တူသော values များ၏ အစဉ်လိုက်ဖြစ်သည်။ အဓိကကွာခြားချက်မှာ series တွင် **index** ရှိပြီး၊ series အပေါ် operation (ဥပမာ- add) ပြုလုပ်သောအခါ index ကို အရေးထားသည်။ Index သည် list သို့မဟုတ် array မှ default အနေဖြင့် integer row number ဖြစ်နိုင်သလို၊ date interval ကဲ့သို့သော ရှုပ်ထွေးသော structure ဖြစ်နိုင်သည်။
> **Note**: Pandas code အချို့ကို notebook [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) တွင်ပါဝင်သည်။ ဤနေရာတွင် ဥပမာအချို့ကို outline လုပ်ထားပြီး၊ notebook အပြည့်အစုံကို ကြည့်ရှုရန်လည်း ကြိုဆိုပါသည်။
ဥပမာ- ကျွန်ုပ်တို့၏ ice-cream spot ရဲ့ရောင်းအားကို analysis လုပ်လိုသည်။ sales numbers (နေ့စဉ်ရောင်းအား) series တစ်ခုကို generate လုပ်မည်:
> **Note**: Pandas code အချို့ကို notebook [`notebook.ipynb`](notebook.ipynb) တွင်ပါဝင်သည်။ ဤနေရာတွင် အချို့သောဥပမာများကို outline လုပ်ထားပြီး၊ notebook အပြည့်အစုံကို ကြည့်ရှုရန် လွတ်လပ်သည်။
ဥပမာအားဖြင့်- ice-cream spot ရဲ့ sales ကို analysis လုပ်လိုပါက sales numbers (နေ့စဉ်ရောင်းချသော items အရေအတွက်) series ကို generate လုပ်မည်:
```python
start_date = "Jan 1, 2020"
end_date = "Mar 31, 2020"
@ -73,47 +74,47 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Time Series Plot](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.my.png)
အပတ်စဉ် ကျွန်ုပ်တို့သည် party တစ်ခုကို စီစဉ်ပြီး၊ party အတွက် ice-cream 10 packs ထပ်ယူသည်။ အပတ်အလိုက် index ရှိသော series တစ်ခုကို ဖန်တီးနိုင်သည်:
အပတ်စဉ်တွင် party အတွက် ice-cream packs 10 ခုကို ထပ်မံယူသည့်အခါ series တစ်ခုကို week အဖြစ် index လုပ်၍ ဖော်ပြနိုင်သည်:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
series နှစ်ခုကို ပေါင်းလိုက်သောအခါ total number ရရှိမည်:
Series နှစ်ခုကို ပေါင်းလိုက်သောအခါ total number ရရှိမည်:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Time Series Plot](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.my.png)
> **Note**: `total_items+additional_items` syntax ကို ရိုးရိုးမသုံးပါ။ သုံးခဲ့လျှင် `NaN` (*Not a Number*) values များစွာရရှိမည်။ ဒါဟာ `additional_items` series ရဲ့ index point အချို့တွင် missing values ရှိသောကြောင့်ဖြစ်ပြီး၊ `NaN` ကို အခြား value နှင့်ပေါင်းလိုက်လျှင် `NaN` ဖြစ်သွားသည်။ ထို့ကြောင့် addition လုပ်သောအခါ `fill_value` parameter ကို သတ်မှတ်ရန်လိုအပ်သည်။
> **Note**: `total_items+additional_items` syntax ကို ရိုးရှင်းစွာမသုံးပါ။ သုံးပါက `NaN` (*Not a Number*) values များကို ရရှိမည်။ ဒါကြောင့် `fill_value` parameter ကို addition အတွင်း specify လုပ်ရန်လိုအပ်သည်။
Time series တွင် **resample** လုပ်၍ time interval များကို ပြောင်းနိုင်သည်။ ဥပမာ- monthly mean sales volume ကိုတွက်လိုပါက အောက်ပါ code ကို အသုံးပြုနိုင်သည်:
Time series တွင် **resample** လုပ်၍ time interval များကို ပြောင်းနိုင်သည်။ ဥပမာအားဖြင့် monthly mean sales volume ကို ရှာလိုပါက:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Monthly Time Series Averages](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Monthly Time Series Averages](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.my.png)
### DataFrame
DataFrame သည် index တူညီသော series များ၏ collection ဖြစ်သည်။ Series များကို DataFrame အဖြစ်ပေါင်းစည်းနိုင်သည်:
DataFrame သည် index တူသော series များ၏ collection ဖြစ်သည်။ Series များကို DataFrame အဖြစ်ပေါင်းစည်းနိုင်သည်:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
ဤအရာသည် အောက်ပါ table ကို ဖန်တီးမည်:
ဤအခါ horizontal table တစ်ခုရရှိမည်:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Series များကို columns အဖြစ်အသုံးပြုပြီး၊ dictionary အသုံးပြု၍ column names သတ်မှတ်နိုင်သည်:
Series များကို columns အဖြစ်အသုံးပြု၍ dictionary ဖြင့် column names ကို specify လုပ်နိုင်သည်:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
ဤအရာသည် အောက်ပါ table ကို ဖန်တီးမည်:
ဤအခါ table ကို အောက်ပါပုံစံရရှိမည်:
| | A | B |
| --- | --- | ------ |
@ -127,64 +128,44 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**Note**: `.T` သည် DataFrame ကို transpose လုပ်ခြင်းဖြစ်ပြီး၊ rows နှင့် columns ကို ပြောင်းလဲသည်။ `rename` operation သည် column names ကို ပြောင်းလဲရန်အတွက် အသုံးပြုသည်။
**Note**: `.T` သည် DataFrame ကို transpose လုပ်ခြင်းဖြစ်ပြီး၊ `rename` operation သည် column names ကို ပြောင်းရန် အသုံးပြုသည်။
DataFrame အပေါ်တွင် လုပ်ဆောင်နိုင်သော အရေးကြီးဆုံး operations အချို့မှာ-
DataFrame အပေါ်လုပ်ဆောင်နိုင်သော အရေးကြီးသော operations များမှာ-
**Column selection**. Individual columns ကို `df['A']` ဖြင့် ရွေးနိုင်သည်။ Subset of columns ကို `df[['B','A']]` ဖြင့် DataFrame အသစ်တစ်ခုအဖြစ် ရွေးနိုင်သည်။
**Column selection**. Individual columns ကို `df['A']` ဖြင့် ရွေးနိုင်သည်။ Subset of columns ကို `df[['B','A']]` ဖြင့် DataFrame အခြားတစ်ခုအဖြစ် ရွေးနိုင်သည်။
**Filtering**. Row များကို criteria အပေါ်မူတည်၍ ရွေးနိုင်သည်။ ဥပမာ- column `A` > 5 ဖြစ်သော rows များကို ရွေးရန် `df[df['A']>5]` ကို အသုံးပြုနိုင်သည်။
**Filtering**. ဥပမာအားဖြင့် column `A` > 5 ဖြစ်သော rows များကို `df[df['A']>5]` ဖြင့် ရွေးနိုင်သည်။
> **Note**: Filtering သည် boolean series ကို အသုံးပြုသည်။ Boolean series သည် original series `df['A']` ရဲ့ element တစ်ခုချင်းစီအတွက် `True` သို့မဟုတ် `False` ဖြစ်သည်ကို ပြသည်။ Boolean series ကို index အဖြစ်အသုံးပြုသောအခါ DataFrame ရဲ့ subset rows ကို ပြန်ပေးသည်။ Python boolean expression များကို ရိုးရိုးအသုံးပြု၍မရပါ။ ဥပမာ- `df[df['A']>5 and df['A']<7]` မှားသည်။ `&` operation ကို boolean series အပေါ်အသုံးပြု၍ `df[(df['A']>5) & (df['A']<7)]` ရေးရန်လိုအပ်သည် (*brackets အရေးကြီးသည်*).
> **Note**: Filtering သည် boolean series ကို index အဖြစ်အသုံးပြု၍ rows များကို ရွေးသည်။ Boolean expression များကို Python syntax ဖြင့် ရိုးရှင်းစွာရေးမရပါ။ `&` operation ကို boolean series အပေါ်အသုံးပြုရမည်။
**Creating new computable columns**. DataFrame အတွက် computable columns အသစ်များကို ရိုးရှင်းသော expression ဖြင့် ဖန်တီးနိုင်သည်:
```python
df['DivA'] = df['A']-df['A'].mean()
```
ဤဥပမာသည် A ရဲ့ mean value မှ divergence ကိုတွက်ချက်သည်။ Series တစ်ခုကို left-hand-side တွင် assign လုပ်ပြီး၊ column အသစ်တစ်ခုကို ဖန်တီးသည်။ Series နှင့်မကိုက်ညီသော operations များကို အသုံးပြု၍မရပါ။ ဥပမာ- အောက်ပါ code မှားသည်:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
ဤဥပမာသည် syntactically မှန်သော်လည်း၊ `B` series ရဲ့ length ကို column value အားလုံးတွင် assign လုပ်သွားသည်။
Series ကို left-hand-side သို့ assign လုပ်၍ column အသစ်ကို ဖန်တီးသည်။
Complex expressions တွက်ရန် `apply` function ကို အသုံးပြုနိုင်သည်။ အောက်ပါအတိုင်းရေးနိုင်သည်:
Complex expressions များကို `apply` function ဖြင့် ရေးနိုင်သည်:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
df['LenB'] = df['B'].apply(len)
```
အထက်ပါ operations များပြီးဆုံးသောအခါ DataFrame သည် အောက်ပါအတိုင်းဖြစ်မည်:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
| 0 | 1 | I | -4.0 | 1 |
| 1 | 2 | like | -3.0 | 4 |
| 2 | 3 | to | -2.0 | 2 |
| 3 | 4 | use | -1.0 | 3 |
| 4 | 5 | Python | 0.0 | 6 |
| 5 | 6 | and | 1.0 | 3 |
| 6 | 7 | Pandas | 2.0 | 6 |
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Selecting rows based on numbers**. `iloc` ကိုအသုံးပြု၍ row များကို ရွေးနိုင်သည်။ ဥပမာ- ပထမ ၅ rows ကို ရွေးရန်:
**Selecting rows based on numbers**. `iloc` ကို အသုံးပြု၍ rows များကို ရွေးနိုင်သည်:
```python
df.iloc[:5]
```
**Grouping**. Excel ရဲ့ *pivot tables* နှင့်ဆင်တူသော result ရရှိရန် Grouping ကို အသုံးပြုနိုင်သည်။ ဥပမာ- `LenB` တစ်ခုချင်းစီအတွက် column `A` ရဲ့ mean value ကိုတွက်ရန် `LenB` ဖြင့် group လုပ်ပြီး `mean` ကိုခေါ်နိုင်သည်:
**Grouping**. Pivot tables ကဲ့သို့သောအကျိုးအမြတ်ရရှိရန် group လုပ်နိုင်သည်:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Mean နှင့် group ရဲ့ element အရေအတွက်ကိုတွက်ရန် `aggregate` function ကို အသုံးပြုနိုင်သည်:
Mean နှင့် group အတွင်း elements အရေအတွက်ကို `aggregate` function ဖြင့် ရေးနိုင်သည်:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
ဤအရာသည် အောက်ပါ table ကို ဖန်တီးမည်:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -195,69 +176,69 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### ဒေတာရယူခြင်း
### Series နှင့် DataFrames ဖန်တီးခြင်း
### Series နှင့် DataFrames တည်ဆောက်ခြင်း
Python object တွေကို အသုံးပြုပြီး Series နဲ့ DataFrames ဖန်တီးတာ ဘယ်လောက်လွယ်ကူတယ်ဆိုတာကို ကြည့်ပြီးသားဖြစ်ပါတယ်။ သို့သော် အချက်အလက်တွေဟာ အများအားဖြင့် text file သို့မဟုတ် Excel table အနေနဲ့ ရှိတတ်ပါတယ်။ ကံကောင်းစွာ Pandas က disk မှ အချက်အလက်တွေကို load လုပ်ဖို့ လွယ်ကူတဲ့နည်းလမ်းတစ်ခုကို ပေးထားပါတယ်။ ဥပမာ CSV file ကို ဖတ်ရှုဖို့ အလွန်လွယ်ကူပါတယ်:
Python object တွေကို အသုံးပြုပြီး Series နဲ့ DataFrames တည်ဆောက်တာ ဘယ်လောက်လွယ်ကူတယ်ဆိုတာကို ကြည့်ပြီးသားဖြစ်ပါတယ်။ သို့သော် အချက်အလက်တွေဟာ အများအားဖြင့် text file တစ်ခု၊ ဒါမှမဟုတ် Excel table အနေနဲ့ ရှိတတ်ပါတယ်။ ကံကောင်းစွာ Pandas က disk မှ အချက်အလက်တွေကို load လုပ်ဖို့ လွယ်ကူတဲ့နည်းလမ်းတစ်ခုကို ပေးထားပါတယ်။ ဥပမာ CSV file ကို ဖတ်ရှုဖို့ အလွန်လွယ်ကူပါတယ်:
```python
df = pd.read_csv('file.csv')
```
"Challenge" အပိုင်းမှာ အခြားသော အချက်အလက်တွေကို load လုပ်နည်းနဲ့ အပြင်မှာ website တွေကနေ fetch လုပ်နည်းကို ပိုမိုကြည့်ရှုနိုင်ပါမယ်။
"Challenge" အပိုင်းမှာ အခြားသော data loading နမူနာများ၊ အပြင်မှာရှိတဲ့ website တွေမှ data ကို ရယူခြင်းအပါအဝင်၊ တွေ့ရပါမယ်။
### Printing နှင့် Plotting
Data Scientist တစ်ဦးအနေနဲ့ အချက်အလက်တွေကို လေ့လာဖို့လိုအပ်တာကြောင့် visualization လုပ်နိုင်ဖို့ အရေးကြီးပါတယ်။ DataFrame ကြီးတစ်ခုကို handle လုပ်တဲ့အခါမှာ အစပိုင်း row အနည်းငယ်ကို print လုပ်ပြီး အားလုံးမှန်ကန်နေမလား စစ်ဆေးဖို့လိုတတ်ပါတယ်။ ဒါကို `df.head()` ကို ခေါ်ပြီး လုပ်နိုင်ပါတယ်။ Jupyter Notebook မှာ run လုပ်ရင် DataFrame ကို tabular form လှပလှပနဲ့ ပြသပေးပါမယ်။
Data Scientist တစ်ဦးအနေနဲ့ အချက်အလက်တွေကို ရှာဖွေဖို့ လုပ်ရတတ်ပါတယ်၊ ဒါကြောင့် visualization လုပ်နိုင်ဖို့ အရေးကြီးပါတယ်။ DataFrame ကြီးတစ်ခုရှိတဲ့အခါမှာ အများအားဖြင့် ပထမဆုံးအတန်းတွေကို print ထုတ်ပြီး အားလုံးကို မှန်ကန်စွာလုပ်နေတယ်လို့ သေချာချင်တတ်ပါတယ်။ ဒါကို `df.head()` ကို ခေါ်ပြီး လုပ်နိုင်ပါတယ်။ Jupyter Notebook မှာ run လုပ်ရင် DataFrame ကို tabular ပုံစံလှလှပပနဲ့ ပြသပါလိမ့်မယ်။
`plot` function ကို အသုံးပြုပြီး column တချို့ကို visualize လုပ်နည်းကို ကြည့်ပြီးသားဖြစ်ပါတယ်။ `plot` ဟာ အလုပ်အတော်များများအတွက် အသုံးဝင်ပြီး `kind=` parameter ကို အသုံးပြုပြီး graph အမျိုးအစားများစွာကို support လုပ်ပေးနိုင်ပါတယ်။ သို့သော် `matplotlib` library ကို raw အနေနဲ့ အသုံးပြုပြီး ပိုမိုရှုပ်ထွေးတဲ့ graph တွေကို plot လုပ်နိုင်ပါတယ်။ Data visualization ကို သီးသန့်သင်ခန်းစာတွေမှာ အသေးစိတ်လေ့လာပါမယ်။
`plot` function ကို အသုံးပြုပြီး column တချို့ကို visualize လုပ်တာကို ကြည့်ပြီးသားဖြစ်ပါတယ်။ `plot` ဟာ အလုပ်အတော်များစွာအတွက် အသုံးဝင်ပြီး `kind=` parameter ကို အသုံးပြုပြီး graph အမျိုးအစားများစွာကို ပံ့ပိုးပေးနိုင်ပါတယ်။ သို့သော် `matplotlib` library ကို အသုံးပြုပြီး ပိုမိုရှုပ်ထွေးတဲ့အရာတွေကို plot လုပ်နိုင်ပါတယ်။ Data visualization ကို သီးသန့်သင်ခန်းစာတွေမှာ အသေးစိတ်လေ့လာပါမယ်။
ဒီအကျဉ်းချုပ်မှာ Pandas ရဲ့ အရေးကြီးဆုံး concept တွေကို ဖော်ပြထားပါတယ်။ သို့သော် library ဟာ အလွန်ချောမောပြီး မလုပ်နိုင်တာမရှိလို့ ပြောလို့ရပါတယ်။ အခုတော့ ဒီအတတ်ပညာကို အသုံးပြုပြီး အထူးပြဿနာတွေကို ဖြေရှင်းကြပါစို့။
ဒီအကျဉ်းချုပ်မှာ Pandas ရဲ့ အရေးကြီးဆုံး concept တွေကို ဖော်ပြထားပါတယ်၊ သို့သော် library ဟာ အလွန်ချောမွေ့ပြီး မိမိလုပ်နိုင်တဲ့အရာတွေမှာ အကန့်အသတ်မရှိပါဘူး! အခုတော့ ဒီအတတ်ပညာကို အသုံးပြုပြီး အထူးပြဿနာကို ဖြေရှင်းကြပါစို့။
## 🚀 Challenge 1: COVID-19 ကူးစက်မှုကို ခွဲခြမ်းစိတ်ဖြာခြင်း
## 🚀 Challenge 1: COVID-19 ပျံ့နှံ့မှုကို ခွဲခြမ်းစိတ်ဖြာခြင်း
ပထမပြဿနာမှာ COVID-19 ရောဂါကူးစက်မှုကို မော်ဒယ်တစ်ခုအနေနဲ့ ဖော်ပြဖို့ အာရုံစိုက်ပါမယ်။ ဒါကို ပြုလုပ်ဖို့ [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) မှ [Johns Hopkins University](https://jhu.edu/) က ပေးထားတဲ့ အမျိုးသားစုံကူးစက်သူအရေအတွက်အချက်အလက်တွေကို အသုံးပြုပါမယ်။ Dataset ကို [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/) က ပေးထားတဲ့ အမျိုးမျိုးသောနိုင်ငံများမှ ကူးစက်ခံရသူအရေအတွက်အချက်အလက်တွေကို အသုံးပြုပါမယ်။ Dataset ကို [ဒီ GitHub Repository](https://github.com/CSSEGISandData/COVID-19) မှာ ရနိုင်ပါတယ်။
အချက်အလက်တွေကို handle လုပ်နည်းကို ပြသဖို့ [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) ကို ဖွင့်ပြီး အစမှအဆုံးဖတ်ရှုဖို့ ဖိတ်ခေါ်ပါတယ်။ Cell တွေကို run လုပ်နိုင်ပြီး အဆုံးမှာ ကျွန်တော်တို့ထားခဲ့တဲ့ challenge တွေကို လုပ်ဆောင်နိုင်ပါတယ်။
အချက်အလက်တွေကို ဘယ်လိုကိုင်တွယ်ရမလဲဆိုတာကို ပြသဖို့ [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) ကို ဖွင့်ပြီး အပေါ်မှ အောက်သို့ ဖတ်ရှုပါ။ Cell တွေကို run လုပ်နိုင်ပြီး အဆုံးမှာ ကျွန်တော်တို့ထားခဲ့တဲ့ challenge တွေကို လုပ်နိုင်ပါတယ်။
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.my.png)
> Jupyter Notebook မှာ code run လုပ်နည်းကို မသိသေးရင် [ဒီဆောင်းပါး](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) ကို ကြည့်ပါ။
> Jupyter Notebook မှာ code ကို ဘယ်လို run လုပ်ရမလဲ မသိရင် [ဒီဆောင်းပါး](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) ကို ကြည့်ပါ။
## Unstructured Data ကို Handle လုပ်ခြင်း
## Unstructured Data ကို ကိုင်တွယ်ခြင်း
အချက်အလက်တွေဟာ tabular form အနေနဲ့ ရှိတတ်ပေမယ့် တချို့အခါမှာ text သို့မဟုတ် image အနေနဲ့ ရှိတတ်ပါတယ်။ ဒီအခါမှာ အပေါ်မှာ ပြထားတဲ့ data processing နည်းလမ်းတွေကို အသုံးပြုဖို့ structured data ကို **extract** လုပ်ဖို့လိုအပ်ပါတယ်။ ဥပမာအချို့မှာ:
အချက်အလက်တွေဟာ tabular ပုံစံနဲ့ ရှိတတ်ပေမယ့် တချို့အခါမှာ ပုံစံမရှိတဲ့ အချက်အလက်တွေ၊ ဥပမာ text ဒါမှမဟုတ် image တွေကို ကိုင်တွယ်ရတတ်ပါတယ်။ ဒီအခါမှာ အပေါ်မှာ ပြထားတဲ့ data processing နည်းလမ်းတွေကို အသုံးပြုဖို့ structured data ကို **extract** လုပ်ဖို့ လိုအပ်ပါတယ်။ ဥပမာအချို့မှာ:
* Text မှ keyword တွေကို extract လုပ်ပြီး keyword တွေ ဘယ်လောက်ကြိမ်တွေ့ရလဲ စစ်ဆေးခြင်း
* Neural networks ကို အသုံးပြုပြီး ပုံထဲမှာ object တွေကို extract လုပ်ခြင်း
* Video camera feed မှ လူတွေရဲ့ စိတ်ခံစားမှုကို သိရှိခြင်း
* Text မှ keyword တွေကို extract လုပ်ပြီး keyword တွေ ဘယ်လောက်ကြိမ်တွေ့ရလဲဆိုတာ ကြည့်ခြင်း
* Neural networks ကို အသုံးပြုပြီး ပုံထဲမှာရှိတဲ့ object တွေကို အချက်အလက်ရယူခြင်း
* Video camera feed မှ လူတွေ့ရဲ့ခံစားချက်အချက်အလက်ရယူခြင်း
## 🚀 Challenge 2: COVID Papers ကို ခွဲခြမ်းစိတ်ဖြာခြင်း
ဒီ challenge မှာ COVID pandemic နဲ့ ဆက်စပ်တဲ့ သိပ္ပံစာတမ်းတွေကို process လုပ်ခြင်းအပေါ် အာရုံစိုက်ပါမယ်။ [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) မှာ metadata နဲ့ abstract တွေပါဝင်တဲ့ COVID အကြောင်းစာတမ်း 7000 ကျော် (ရေးသားချိန်အတိုင်း) ရှိပါတယ်။ အချို့စာတမ်းတွေအတွက် full text ပါဝင်ပါတယ်။
ဒီ challenge မှာ COVID pandemic နဲ့ ဆက်စပ်တဲ့ သိပ္ပံစာတမ်းတွေကို ကိုင်တွယ်ပါမယ်။ [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) မှာ metadata နဲ့ abstract တွေပါဝင်တဲ့ COVID ပေါ်မှာ စာတမ်း ၇၀၀၀ ကျော် (ရေးသားချိန်အချိန်မှာ) ရနိုင်ပါတယ်။ အချို့စာတမ်းတွေအတွက် full text ပါဝင်ပါတယ်။
[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) cognitive service ကို အသုံးပြုပြီး dataset ကို ခွဲခြမ်းစိတ်ဖြာနည်းကို [ဒီ blog post](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) မှာ ဖော်ပြထားပါတယ်။ simplified version ကို ဆွေးနွေးပါမယ်။
[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) cognitive service ကို အသုံးပြုပြီး dataset ကို ခွဲခြမ်းစိတ်ဖြာထားတဲ့ နမူနာကို [ဒီ blog post](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) မှာ ဖော်ပြထားပါတယ်။ ကျွန်တော်တို့ ဒီ analysis ရဲ့ ရိုးရှင်းတဲ့ version ကို ဆွေးနွေးပါမယ်။
> **NOTE**: Dataset ကို repository မှာ မပါဝင်ပါဘူး။ [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) ကို download လုပ်ဖို့လိုအပ်နိုင်ပါတယ်။ Kaggle မှာ registration လုပ်ဖို့လိုအပ်နိုင်ပါတယ်။ [ဒီနေရာ](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) မှာ registration မလိုအပ်ဘဲ dataset ကို download လုပ်နိုင်ပါတယ်။
> **NOTE**: Dataset ကို repository မှာ မပါဝင်ပါဘူး။ [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) ကို download လုပ်ဖို့လိုအပ်နိုင်ပါတယ်။ Kaggle မှာ registration လုပ်ဖို့လိုအပ်နိုင်ပါတယ်။ [ဒီနေရာ](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) မှာ registration မလိုအပ်ဘဲ dataset ကို download လုပ်နိုင်ပါတယ်၊ ဒါပေမယ့် metadata file အပြင် full texts အားလုံးပါဝင်ပါမယ်
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) ကို ဖွင့်ပြီး အစမှအဆုံးဖတ်ရှုပါ။ Cell တွေကို run လုပ်နိုင်ပြီး ကျွန်တော်တို့ထားခဲ့တဲ့ challenge တွေကို လုပ်ဆောင်နိုင်ပါတယ်။
[`notebook-papers.ipynb`](notebook-papers.ipynb) ကို ဖွင့်ပြီး အပေါ်မှ အောက်သို့ ဖတ်ရှုပါ။ Cell တွေကို run လုပ်နိုင်ပြီး အဆုံးမှာ ကျွန်တော်တို့ထားခဲ့တဲ့ challenge တွေကို လုပ်နိုင်ပါတယ်။
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.my.png)
## Image Data ကို Process လုပ်ခြင်း
## Image Data ကို ကိုင်တွယ်ခြင်း
လတ်တလောမှာ AI model တွေက ပုံတွေကို နားလည်နိုင်ဖို့ အလွန်အစွမ်းထက်လာပါတယ်။ Pre-trained neural networks သို့မဟုတ် cloud services ကို အသုံးပြုပြီး အလုပ်အမျိုးမျိုးကို ဖြေရှင်းနိုင်ပါတယ်။ ဥပမာအချို့မှာ:
လတ်တလောမှာ ပုံတွေကို နားလည်နိုင်တဲ့ အလွန်အစွမ်းထက်တဲ့ AI model တွေ ဖွံ့ဖြိုးလာပါတယ်။ Pre-trained neural networks ဒါမှမဟုတ် cloud services ကို အသုံးပြုပြီး အလုပ်အမျိုးမျိုးကို ဖြေရှင်းနိုင်ပါတယ်။ ဥပမာအချို့မှာ:
* **Image Classification** - ပုံကို pre-defined class တစ်ခုမှာ categorize လုပ်နိုင်ပါတယ်။ [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုပြီး ကိုယ်ပိုင် image classifier တွေကို လွယ်ကူစွာ train လုပ်နိုင်ပါတယ်။
* **Object Detection** - ပုံထဲမှာ object တွေကို detect လုပ်နိုင်ပါတယ်။ [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) က common object တွေကို detect လုပ်နိုင်ပြီး [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုပြီး specific object တွေကို detect လုပ်နိုင်ပါတယ်။
* **Face Detection** - အသက်, ကျား/မ, စိတ်ခံစားမှု detection ပါဝင်ပါတယ်။ [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုနိုင်ပါတယ်။
* **Image Classification** - ပုံကို pre-defined class တစ်ခုမှာ categorize လုပ်နိုင်ပါတယ်။ [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုပြီး ကိုယ်ပိုင် image classifier တွေကို training လုပ်နိုင်ပါတယ်။
* **Object Detection** - ပုံထဲမှာ object တွေကို detect လုပ်နိုင်ပါတယ်။ [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) က အများအားဖြင့် object တွေကို detect လုပ်နိုင်ပြီး [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) ကို training လုပ်ပြီး အထူး object တွေကို detect လုပ်နိုင်ပါတယ်။
* **Face Detection** - အသက်၊ ကျား/မ၊ ခံစားချက် detection ပါဝင်ပါတယ်။ [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုနိုင်ပါတယ်။
Python SDK တွေကို အသုံးပြုပြီး cloud services တွေကို ခေါ်နိုင်ပြီး data exploration workflow မှာ ထည့်သွင်းနိုင်ပါတယ်။
Python SDK တွေကို အသုံးပြုပြီး [cloud services](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) တွေကို ခေါ်နိုင်ပြီး data exploration workflow မှာ ပေါင်းစပ်နိုင်ပါတယ်။
ဥပမာအချို့:
* [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) blog post မှာ Instagram ပုံတွေကို လေ့လာပြီး ပုံတစ်ပုံကို ဘယ်လို likes ပိုရနိုင်မလဲ စစ်ဆေးပါတယ်။ [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုပြီး ပုံတွေကနေ အချက်အလက်တွေကို extract လုပ်ပြီး [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုပြီး model တစ်ခုကို တည်ဆောက်ပါတယ်။
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) မှာ [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုပြီး ပုံထဲမှာ လူတွေရဲ့ စိတ်ခံစားမှုကို extract လုပ်ပြီး လူတွေကို ဘယ်လို ပျော်ရွှင်စေမလဲ စစ်ဆေးပါတယ်။
Image data source တွေကို explore လုပ်တဲ့ နမူနာအချို့မှာ:
* [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) blog post မှာ Instagram ပုံတွေကို explore လုပ်ပြီး ပုံတစ်ပုံကို ဘယ်လိုလူတွေ like ပေးတယ်ဆိုတာ နားလည်ဖို့ ကြိုးစားပါတယ်။ [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုပြီး ပုံတွေကနေ အချက်အလက်တွေကို extract လုပ်ပြီး [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုပြီး model တစ်ခုကို တည်ဆောက်ပါတယ်။
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) မှာ [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) ကို အသုံးပြုပြီး ပုံထဲမှာရှိတဲ့ လူတွေ့ရဲ့ခံစားချက်ကို extract လုပ်ပြီး လူတွေကို ဘယ်လိုပျော်ရွှင်စေတယ်ဆိုတာ နားလည်ဖို့ ကြိုးစားပါတယ်။
## နိဂုံး
Structured data ဖြစ်ဖြစ်၊ unstructured data ဖြစ်ဖြစ် Python ကို အသုံးပြုပြီး data processing နဲ့ data ကို နားလည်ဖို့ လုပ်ဆောင်နိုင်ပါတယ်။ Python ဟာ data processing အတွက် အ flexibilty အများဆုံးရှိတဲ့ နည်းလမ်းဖြစ်ပြီး Data Scientist အများစုက Python ကို အဓိက tool အနေနဲ့ အသုံးပြုကြပါတယ်။ Data Science ကို အလေးထားပြီး လေ့လာချင်ရင် Python ကို နက်နက်ရှိုင်းရှိုင်း လေ့လာဖို့ အကြံပေးပါတယ်။
Structured ဒါမှမဟုတ် unstructured data ရှိနေပါက Python ကို အသုံးပြုပြီး data processing နဲ့ နားလည်မှုနဲ့ ပတ်သက်တဲ့ အဆင့်အားလုံးကို လုပ်နိုင်ပါတယ်။ Python ဟာ data processing အတွက် အလွန် flexible ဖြစ်ပြီး ဒါကြောင့် Data Scientist အများစုက Python ကို အဓိက tool အနေနဲ့ အသုံးပြုကြပါတယ်။ Data science ကို အလေးထားပြီး လေ့လာချင်ရင် Python ကို နက်နက်ရှိုင်းရှိုင်း လေ့လာဖို့ အကြံပေးပါတယ်။
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -284,5 +265,5 @@ Structured data ဖြစ်ဖြစ်၊ unstructured data ဖြစ်ဖြ
---
**အကြောင်းကြားချက်**:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူက ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ဆိုမှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူသားပညာရှင်များ၏ ပရော်ဖက်ရှင်နယ်ဘာသာပြန်ဆိုမှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ဆိုမှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T07:43:00+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:35:09+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "ne"
}
@ -13,42 +13,42 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| पाइथन संग काम गर्ने - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![परिचय भिडियो](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![परिचय भिडियो](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ne.png)](https://youtu.be/dZjWOGbsN4Y)
डाटाबेसहरूले डाटा भण्डारण गर्न र क्वेरी भाषाहरू प्रयोग गरेर तिनीहरूलाई सोधपुछ गर्न धेरै प्रभावकारी तरिका प्रदान गर्छन्। तर, डाटा प्रशोधनको सबैभन्दा लचिलो तरिका भनेको आफ्नो प्रोग्राम लेखेर डाटालाई हेरफेर गर्नु हो। धेरै अवस्थामा, डाटाबेस क्वेरी गर्नु अझ प्रभावकारी हुन्छ। तर, कहिलेकाहीँ जटिल डाटा प्रशोधन आवश्यक पर्दा, SQL प्रयोग गरेर सजिलै गर्न सकिँदैन।
डाटा प्रशोधन कुनै पनि प्रोग्रामिङ भाषामा गर्न सकिन्छ, तर केही भाषाहरू डाटासँग काम गर्न उच्च स्तरका हुन्छन्। डाटा वैज्ञानिकहरूले प्रायः निम्न भाषाहरू मध्ये एकलाई प्राथमिकता दिन्छन्:
डाटा प्रशोधन कुनै पनि प्रोग्रामिङ भाषामा गर्न सकिन्छ, तर केही भाषाहरू डाटासँग काम गर्न उच्च स्तरका हुन्छन्। डाटा वैज्ञानिकहरूले प्रायः निम्न भाषाहरू प्रयोग गर्न रुचाउँछन्:
* **[Python](https://www.python.org/)**, एक सामान्य-उद्देश्यीय प्रोग्रामिङ भाषा, जसलाई यसको सरलताका कारण प्रायः शुरुआतीहरूको लागि उत्कृष्ट विकल्प मानिन्छ। पाइथनसँग धेरै अतिरिक्त लाइब्रेरीहरू छन् जसले तपाईंलाई व्यावहारिक समस्याहरू समाधान गर्न मद्दत गर्न सक्छ, जस्तै ZIP आर्काइभबाट डाटा निकाल्ने, वा तस्बिरलाई ग्रेस्केलमा रूपान्तरण गर्ने। डाटा विज्ञान बाहेक, पाइथन वेब विकासक लागि पनि प्रायः प्रयोग गरिन्छ।
* **[R](https://www.r-project.org/)**, एक परम्परागत उपकरण हो, जुन विशेष गरी सांख्यिकीय डाटा प्रशोधनको लागि विकास गरिएको हो। यसमा ठूलो लाइब्रेरी भण्डार (CRAN) छ, जसले यसलाई डाटा प्रशोधनको लागि राम्रो विकल्प बनाउँछ। तर, R सामान्य-उद्देश्यीय प्रोग्रामिङ भाषा होइन, र डाटा विज्ञानको क्षेत्र बाहिर कमै प्रयोग गरिन्छ।
* **[Julia](https://julialang.org/)**, अर्को भाषा हो, जुन विशेष गरी डाटा विज्ञानको लागि विकास गरिएको हो। यसले पाइथनभन्दा राम्रो प्रदर्शन दिनको लागि बनाइएको हो, जसले यसलाई वैज्ञानिक प्रयोगहरूको लागि उत्कृष्ट उपकरण बनाउँछ।
* **[Python](https://www.python.org/)**: यो सामान्य उद्देश्यको प्रोग्रामिङ भाषा हो, जसलाई यसको सरलताका कारण प्रायः सुरुवातकर्ताहरूका लागि उत्कृष्ट विकल्प मानिन्छ। पाइथनसँग धेरै अतिरिक्त लाइब्रेरीहरू छन् जसले तपाईंलाई व्यावहारिक समस्याहरू समाधान गर्न मद्दत गर्न सक्छ, जस्तै ZIP आर्काइभबाट डाटा निकाल्ने, वा तस्बिरलाई ग्रेस्केलमा रूपान्तरण गर्ने। डाटा विज्ञान बाहेक, पाइथन वेब विकासक लागि पनि प्रायः प्रयोग गरिन्छ।
* **[R](https://www.r-project.org/)**: यो सांख्यिकीय डाटा प्रशोधनको लागि विकास गरिएको परम्परागत उपकरण हो। यसमा ठूलो लाइब्रेरी भण्डार (CRAN) छ, जसले यसलाई डाटा प्रशोधनको लागि राम्रो विकल्प बनाउँछ। तर, R सामान्य उद्देश्यको प्रोग्रामिङ भाषा होइन, र डाटा विज्ञानको क्षेत्र बाहिर कमै प्रयोग गरिन्छ।
* **[Julia](https://julialang.org/)**: यो डाटा विज्ञानका लागि विशेष रूपमा विकास गरिएको अर्को भाषा हो। यसले पाइथनभन्दा राम्रो प्रदर्शन दिनको लागि बनाइएको हो, जसले यसलाई वैज्ञानिक प्रयोगका लागि उत्कृष्ट उपकरण बनाउँछ।
यस पाठमा, हामी पाइथन प्रयोग गरेर साधारण डाटा प्रशोधनमा केन्द्रित हुनेछौं। हामीले भाषाको आधारभूत ज्ञान भएको मान्नेछौं। यदि तपाईं पाइथनको गहिरो अध्ययन गर्न चाहनुहुन्छ भने, निम्न स्रोतहरू हेर्न सक्नुहुन्छ:
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - पाइथन प्रोग्रामिङको लागि 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) मा उपलब्ध पाठ
* [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) मा उपलब्ध लर्निङ पाथ
डाटा धेरै प्रकारका हुन सक्छ। यस पाठमा, हामी तीन प्रकारका डाटालाई विचार गर्नेछौं - **तालिकात्मक डाटा**, **पाठ** र **तस्बिरहरू**।
हामी सबै सम्बन्धित लाइब्रेरीहरूको पूर्ण अवलोकन दिनुको सट्टा, डाटा प्रशोधनका केही उदाहरणहरूमा केन्द्रित हुनेछौं। यसले तपाईंलाई के सम्भव छ भन्ने मुख्य विचार दिन्छ, र तपाईंलाई आवश्यक पर्दा समस्याहरूको समाधान कहाँ खोज्ने भन्ने बुझाइ दिन्छ।
हामी सबै सम्बन्धित लाइब्रेरीहरूको पूर्ण अवलोकन दिनुको सट्टा डाटा प्रशोधनका केही उदाहरणहरूमा केन्द्रित हुनेछौं। यसले तपाईंलाई के सम्भव छ भन्ने मुख्य विचार दिन्छ, र तपाईंलाई आवश्यक पर्दा समस्याहरूको समाधान कहाँ खोज्ने भन्ने बुझाइ दिन्छ।
> **सबैभन्दा उपयोगी सल्लाह**। जब तपाईंलाई कुनै डाटामा कुनै विशेष अपरेशन गर्न आवश्यक पर्छ, तर तपाईंलाई कसरी गर्ने थाहा छैन, इन्टरनेटमा खोज्ने प्रयास गर्नुहोस्। [Stackoverflow](https://stackoverflow.com/) मा पाइथना धेरै सामान्य कार्यहरूको लागि उपयोगी कोड नमूनाहरू पाइन्छ।
> **सबैभन्दा उपयोगी सल्लाह**: जब तपाईंलाई डाटामा कुनै निश्चित अपरेशन गर्न आवश्यक पर्छ, तर तपाईंलाई कसरी गर्ने थाहा छैन, इन्टरनेटमा खोज्ने प्रयास गर्नुहोस्। [Stackoverflow](https://stackoverflow.com/) मा पाइथना धेरै सामान्य कार्यहरूको लागि उपयोगी कोड नमूनाहरू पाइन्छ।
## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [पाठपूर्व क्विज](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## तालिकात्मक डाटा र डाटाफ्रेमहरू
तपाईंले तालिकात्मक डाटासँग पहिले नै भेट गर्नुभएको छ, जब हामीले सम्बन्धित डाटाबेसहरूको बारेमा कुरा गर्यौं। जब तपाईंसँग धेरै डाटा हुन्छ, र यो धेरै फरक-फरक तालिकाहरूमा जोडिएको हुन्छ, SQL प्रयोग गरेर काम गर्नु उपयुक्त हुन्छ। तर, धेरै अवस्थामा, हामीसँग एउटा तालिका हुन्छ, र हामीलाई यस डाटाको बारेमा केही **बुझाइ** वा **अन्तर्दृष्टि** चाहिन्छ, जस्तै वितरण, मानहरू बीचको सम्बन्ध, आदि। डाटा विज्ञानमा, धेरै अवस्थामा, हामीले मूल डाटाको केही रूपान्तरण गर्नुपर्ने हुन्छ, त्यसपछि भिजुअलाइजेसन। यी दुवै चरणहरू पाइथन प्रयोग गरेर सजिलै गर्न सकिन्छ।
तपाईंले तालिकात्मक डाटासँग पहिले नै भेट गर्नुभएको छ जब हामीले सम्बन्धित डाटाबेसहरूको बारेमा कुरा गर्यौं। जब तपाईंसँग धेरै डाटा हुन्छ, र यो धेरै फरक-फरक तालिकाहरूमा जोडिएको हुन्छ, SQL प्रयोग गरेर काम गर्नु उपयुक्त हुन्छ। तर, धेरै अवस्थामा, हामीसँग एउटा तालिका हुन्छ, र हामील यस डाटाको बारेमा केही **बुझाइ** वा **अन्तर्दृष्टि** प्राप्त गर्न आवश्यक पर्छ, जस्तै वितरण, मानहरू बीचको सम्बन्ध, आदि। डाटा विज्ञानमा, धेरै अवस्थामा हामीले मूल डाटाको केही रूपान्तरण गर्न आवश्यक पर्छ, त्यसपछि भिजुअलाइजेसन। यी दुवै चरणहरू पाइथन प्रयोग गरेर सजिलै गर्न सकिन्छ।
पाइथनमा तालिकात्मक डाटासँग काम गर्न मद्दत गर्ने दुई सबैभन्दा उपयोगी लाइब्रेरीहरू छन्:
* **[Pandas](https://pandas.pydata.org/)**, जसले तथाकथित **डाटाफ्रेमहरू** हेरफेर गर्न अनुमति दिन्छ, जुन सम्बन्धित तालिकाहरूको समानान्तर हुन्छ। तपाईंले नामित स्तम्भहरू राख्न सक्नुहुन्छ, र पङ्क्ति, स्तम्भ र डाटाफ्रेमहरूमा विभिन्न अपरेशनहरू गर्न सक्नुहुन्छ।
* **[Numpy](https://numpy.org/)**, **टेन्सरहरू**, अर्थात् बहु-आयामिक **एरेहरू**सँग काम गर्नको लागि लाइब्रेरी हो। एरेमा एउटै प्रकारका मानहरू हुन्छन्, र यो डाटाफ्रेमभन्दा सरल हुन्छ, तर यसले थप गणितीय अपरेशनहरू प्रदान गर्दछ, र कम ओभरहेड सिर्जना गर्दछ।
* **[Pandas](https://pandas.pydata.org/)**: यसले तथाकथित **डाटाफ्रेमहरू** हेरफेर गर्न अनुमति दिन्छ, जुन सम्बन्धित तालिकाहरूको समानान्तर हुन्छ। तपाईंले नाम दिइएका स्तम्भहरू राख्न सक्नुहुन्छ, र पङ्क्ति, स्तम्भ र डाटाफ्रेमहरूमा विभिन्न अपरेशनहरू गर्न सक्नुहुन्छ।
* **[Numpy](https://numpy.org/)**: यो **टेन्सरहरू**, अर्थात् बहु-आयामिक **एरेहरू**सँग काम गर्नको लागि लाइब्रेरी हो। एरेमा एउटै प्रकारका मानहरू हुन्छन्, र यो डाटाफ्रेमभन्दा सरल हुन्छ, तर यसले थप गणितीय अपरेशनहरू प्रदान गर्दछ, र कम ओभरहेड सिर्जना गर्दछ।
त्यसैगरी, तपाईंले जान्नुपर्ने अन्य केही लाइब्रेरीहरू छन्:
* **[Matplotlib](https://matplotlib.org/)**, डाटा भिजुअलाइजेसन र ग्राफहरू बनाउने लाइब्रेरी हो
* **[SciPy](https://www.scipy.org/)**, केही अतिरिक्त वैज्ञानिक कार्यहरू भएको लाइब्रेरी हो। हामीले यस लाइब्रेरीलाई सम्भाव्यता र तथ्यांकको बारेमा कुरा गर्दा पहिले नै भेट गरेका छौं।
* **[Matplotlib](https://matplotlib.org/)**: यो डाटा भिजुअलाइजेसन र ग्राफहरू बनाउने लाइब्रेरी हो
* **[SciPy](https://www.scipy.org/)**: यो केही अतिरिक्त वैज्ञानिक कार्यहरू भएको लाइब्रेरी हो। हामीले यस लाइब्रेरीलाई सम्भाव्यता र तथ्यांकको बारेमा कुरा गर्दा पहिले नै भेट गरेका छौं।
यहाँ एउटा कोडको टुक्रा छ, जुन तपाईंले आफ्नो पाइथन प्रोग्रामको सुरुवातमा यी लाइब्रेरीहरू आयात गर्न प्रयोग गर्नुहुनेछ:
यहाँ तपाईंले आफ्नो पाइथन प्रोग्रामको सुरुवातमा यी लाइब्रेरीहरू आयात गर्न प्रयोग गर्ने कोडको टुक्रा छ:
```python
import numpy as np
import pandas as pd
@ -62,9 +62,9 @@ from scipy import ... # you need to specify exact sub-packages that you need
**सिरिज** भनेको मानहरूको अनुक्रम हो, जुन सूची वा नम्पाइ एरेसँग मिल्दोजुल्दो हुन्छ। मुख्य भिन्नता भनेको सिरिजसँग **इन्डेक्स** पनि हुन्छ, र जब हामी सिरिजमा अपरेशन गर्छौं (जस्तै, तिनीहरूलाई जोड्छौं), इन्डेक्सलाई ध्यानमा राखिन्छ। इन्डेक्स साधारण पूर्णांक पङ्क्ति नम्बर (सूची वा एरेबाट सिरिज सिर्जना गर्दा प्रयोग गरिने डिफल्ट इन्डेक्स) जत्तिकै सरल हुन सक्छ, वा यसले जटिल संरचना, जस्तै मिति अन्तराल, लिन सक्छ।
> **नोट**: पाण्डासको केही प्रारम्भिक कोड संग्लग्न नोटबुक [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) मा छ। हामी यहाँ केही उदाहरणहरू मात्र उल्लेख गर्छौं, र तपाईंलाई पूर्ण नोटबुक हेर्न स्वागत छ।
> **नोट**: पाण्डासको केही प्रारम्भिक कोड संग्लग्न नोटबुक [`notebook.ipynb`](notebook.ipynb) मा छ। हामी यहाँ केही उदाहरणहरू मात्र उल्लेख गर्छौं, र तपाईंलाई पूर्ण नोटबुक हेर्न स्वागत छ।
उदाहरणको रूपमा विचार गर्नुहोस्: हामी हाम्रो आइसक्रिम पसलको बिक्री विश्लेषण गर्न चाहन्छौं। केही समय अवधिको लागि बिक्री सङ्ख्याहरू (प्रत्येक दिन बेचिएका वस्तुहरूको सङ्ख्या) को सिरिज सिर्जना गरौं:
उदाहरणको रूपमा विचार गर्नुहोस्: हामी हाम्रो आइसक्रिम पसलको बिक्री विश्लेषण गर्न चाहन्छौं। केही समय अवधिको लागि बिक्री सङ्ख्याहरू (प्रत्येक दिन बेचिएका वस्तुहरूको सङ्ख्या) को सिरिज उत्पन्न गरौं:
```python
start_date = "Jan 1, 2020"
@ -74,9 +74,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![समय सिरिज प्लट](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![समय सिरिज प्लट](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ne.png)
अब कल्पना गर्नुहोस् कि प्रत्येक हप्ता हामी साथीहरूको लागि पार्टी आयोजना गर्छौं, र पार्टीको लागि थप १० प्याक आइसक्रिम लिन्छौं। हामी अर्को सिरिज सिर्जना गर्न सक्छौं, जुन हप्ताद्वारा इन्डेक्स गरिएको, यो देखाउनका लागि:
अब कल्पना गर्नुहोस् कि प्रत्येक हप्ता हामी साथीहरूको लागि पार्टी आयोजना गर्छौं, र पार्टीको लागि १० प्याक आइसक्रिम थप्छौं। हामी अर्को सिरिज सिर्जना गर्न सक्छौं, हप्ताद्वारा इन्डेक्स गरिएको, यो देखाउन:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -85,7 +85,7 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![समय सिरिज प्लट](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![समय सिरिज प्लट](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ne.png)
> **नोट** कि हामीले साधारण `total_items+additional_items` सिन्ट्याक्स प्रयोग गरेका छैनौं। यदि हामीले त्यसो गरेका भए, हामीले परिणामस्वरूप धेरै `NaN` (*Not a Number*) मानहरू पाउने थियौं। यो किनभने `additional_items` सिरिजमा केही इन्डेक्स बिन्दुहरूको लागि मानहरू हराइरहेका छन्, र `NaN` लाई कुनै पनि चीजमा जोड्दा `NaN` परिणाम दिन्छ। त्यसैले हामीले थप गर्दा `fill_value` प्यारामिटर निर्दिष्ट गर्न आवश्यक छ।
@ -94,7 +94,7 @@ total_items.plot()
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![मासिक समय सिरिज औसत](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![मासिक समय सिरिज औसत](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ne.png)
### डाटाफ्रेम
@ -104,7 +104,7 @@ a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
यसले यस्तो क्षैतिज तालिका सिर्जना गर्नेछ:
यसले यस्तो तेर्सो तालिका सिर्जना गर्नेछ:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
@ -114,7 +114,7 @@ df = pd.DataFrame([a,b])
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
यसले यस्तो तालिका दिनेछ:
यसले हामीलाई यस्तो तालिका दिनेछ:
| | A | B |
| --- | --- | ------ |
@ -128,32 +128,32 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**नोट** कि हामीले अघिल्लो तालिकालाई ट्रान्सपोज गरेर पनि यो तालिका लेआउट प्राप्त गर्न सक्छौं, जस्तै
**नोट** कि हामीले `.T` लेखेर अघिल्लो तालिकालाई ट्रान्सपोज गरेर पनि यो तालिका लेआउट प्राप्त गर्न सक्छौं:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
यहाँ `.T` ले डाटाफ्रेमलाई ट्रान्सपोज गर्ने अपरेशनलाई जनाउँछ, अर्थात् पङ्क्ति र स्तम्भहरू परिवर्तन गर्ने, र `rename` अपरेशनले अघिल्लो उदाहरणसँग मिल्न स्तम्भहरूको नाम परिवर्तन गर्न अनुमति दिन्छ।
यहाँ `.T` ले डाटाफ्रेमलाई ट्रान्सपोज गर्ने अपरेशनलाई जनाउँछ, अर्थात् पङ्क्ति र स्तम्भहरू परिवर्तन गर्ने, र `rename` अपरेशनले स्तम्भहरूलाई अघिल्लो उदाहरणसँग मिलाउन नाम परिवर्तन गर्न अनुमति दिन्छ।
यहाँ डाटाफ्रेमहरूमा गर्न सकिने केही सबैभन्दा महत्त्वपूर्ण अपरेशनहरू छन्:
डाटाफ्रेमहरूमा गर्न सकिने केही सबैभन्दा महत्त्वपूर्ण अपरेशनहरू यहाँ छन्:
**स्तम्भ चयन**। हामी `df['A']` लेखेर व्यक्तिगत स्तम्भहरू चयन गर्न सक्छौं - यो अपरेशनले सिरिज फर्काउँछ। हामी `df[['B','A']]` लेखेर अर्को डाटाफ्रेममा स्तम्भहरूको उपसमेत चयन गर्न सक्छौं - यसले अर्को डाटाफ्रेम फर्काउँछ।
**स्तम्भ चयन**। हामी `df['A']` लेखेर व्यक्तिगत स्तम्भहरू चयन गर्न सक्छौं - यो अपरेशनले सिरिज फर्काउँछ। हामी `df[['B','A']]` लेखेर अर्को डाटाफ्रेममा स्तम्भहरूको उपसमूह चयन गर्न सक्छौं - यसले अर्को डाटाफ्रेम फर्काउँछ।
**केवल निश्चित पङ्क्तिहरू फिल्टर गर्ने**। उदाहरणका लागि, स्तम्भ `A` ५ भन्दा ठूलो भएका पङ्क्तिहरू मात्र छोड्न, हामी `df[df['A']>5]` लेख्न सक्छौं।
**केवल निश्चित पङ्क्तिहरू फिल्टर गर्ने**। उदाहरणका लागि, स्तम्भ `A` ५ भन्दा ठूलो भएका पङ्क्तिहरू मात्र राख्न, हामी `df[df['A']>5]` लेख्न सक्छौं।
> **नोट**: फिल्टरिङ्गले काम गर्ने तरिका यस्तो छ। अभिव्यक्ति `df['A']<5` ले बूलियन सिरिज फर्काउँछ, जसले मूल सिरिज `df['A']` को प्रत्येक तत्त्वको लागि अभिव्यक्ति `True` वा `False` छ कि छैन भनेर जनाउँछ। जब बूलियन सिरिजलाई इन्डेक्सको रूपमा प्रयोग गरिन्छ, यसले डाटाफ्रेममा पङ्क्तिहरूको उपसमेत फर्काउँछ। त्यसैले मनपर्ने पाइथन बूलियन अभिव्यक्ति प्रयोग गर्न सम्भव छैन, उदाहरणका लागि, `df[df['A']>5 and df['A']<7]` लेख्नु गलत हुनेछ। यसको सट्टा, तपाईंले बूलियन सिरिजमा विशेष `&` अपरेशन प्रयोग गर्नुपर्छ, जस्तै `df[(df['A']>5) & (df['A']<7)]` (*ब्र्याकेटहरू यहाँ महत्त्वपूर्ण छन्*)।
> **नोट**: फिल्टरिङ्गले काम गर्ने तरिका यस्तो छ। `df['A']<5` अभिव्यक्तिले बूलियन सिरिज फर्काउँछ, जसले मूल सिरिज `df['A']` को प्रत्येक तत्त्वको लागि अभिव्यक्ति `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'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
पछिल्लो उदाहरण, जबकि वाक्यविन्यासमा सही छ, हामीलाई गलत परिणाम दिन्छ, किनभने यसले स्तम्भमा सबै मानहरूलाई सिरिज `B` को लम्बाइ असाइन गर्दछ, र हामीले चाहेको व्यक्तिगत तत्त्वहरूको लम्बाइ होइन।
अन्तिम उदाहरण, जबकि वाक्यविन्यासमा सही छ, हामीलाई गलत परिणाम दिन्छ, किनभने यसले स्तम्भमा सिरिज `B` को लम्बाइलाई सबै मानहरूमा असाइन गर्दछ, र हामीले चाहेको जस्तो व्यक्तिगत तत्त्वहरूको लम्बाइ होइन।
यदि हामीलाई यस्तो जटिल अभिव्यक्तिहरू गणना गर्न आवश्यक छ भने, हामी `apply` फङ्क्न प्रयोग गर्न सक्छौं। अन्तिम उदाहरणलाई निम्नानुसार लेख्न सकिन्छ:
यदि हामीलाई यस्तो जटिल अभिव्यक्ति गणना गर्न आवश्यक छ भने, हामी `apply` फङ्क्न प्रयोग गर्न सक्छौं। अन्तिम उदाहरणलाई निम्नानुसार लेख्न सकिन्छ:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -181,15 +181,15 @@ df.iloc[:5]
**समूह बनाउने** प्रायः *पिभट तालिकाहरू* जस्तै परिणाम प्राप्त गर्न प्रयोग गरिन्छ। मानौं हामी `LenB` को प्रत्येक संख्याको लागि स्तम्भ `A` को औसत मान गणना गर्न चाहन्छौं। त्यसपछि हामी हाम्रो डाटाफ्रेमलाई `LenB` द्वारा समूहबद्ध गर्न सक्छौं, र `mean` कल गर्न सक्छौं:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
यदि हामीलाई समूहमा औसत र तत्त्वहरूको सङ्ख्या गणना गर्न आवश्यक छ भने, हामी थप जटिल `aggregate` फङ्क्न प्रयोग गर्न सक्छौं:
यदि हामीलाई समूहमा औसत र तत्त्वहरूको सङ्ख्या गणना गर्न आवश्यक छ भने, हामी थप जटिल `aggregate` फङ्क्न प्रयोग गर्न सक्छौं:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
यसले हामीलाई निम्न तालिका दिनछ:
यसले हामीलाई निम्न तालिका दिनछ:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -206,63 +206,63 @@ df = pd.read_csv('file.csv')
```
हामी "Challenge" खण्डमा बाह्य वेबसाइटहरूबाट डाटा ल्याउने सहित लोड गर्ने थप उदाहरणहरू हेर्नेछौं।
### प्रिन्टिङ र प्लटिङ
### प्रिन्टिंग र प्लटिंग
एक Data Scientist ले प्रायः डाटालाई अन्वेषण गर्नुपर्छ, त्यसैले यसलाई दृश्यात्मक बनाउन सक्षम हुनु महत्त्वपूर्ण छ। जब DataFrame ठूलो हुन्छ, धेरै पटक हामी केवल सुनिश्चित गर्न चाहन्छौं कि हामी सबै कुरा सही गरिरहेका छौं, त्यसका लागि पहिलो केही पङ्क्तिहरू प्रिन्ट गर्न चाहन्छौं। यो `df.head()` कल गरेर गर्न सकिन्छ। यदि तपाईंले यो Jupyter Notebook बाट चलाउनु भएको छ भने, यो DataFrame लाई राम्रो टेबलको रूपमा प्रिन्ट गर्नेछ।
एक Data Scientist ले प्रायः डाटालाई अन्वेषण गर्नुपर्छ, त्यसैले यसलाई दृश्यात्मक बनाउन सक्षम हुनु महत्त्वपूर्ण छ। जब DataFrame ठूलो हुन्छ, धेरै पटक हामी केवल सुनिश्चित गर्न चाहन्छौं कि हामी सबै कुरा सही गरिरहेका छौं, त्यसका लागि पहिलो केही पङ्क्तिहरू प्रिन्ट गर्न चाहन्छौं। यो `df.head()` कल गरेर गर्न सकिन्छ। यदि तपाईंले यसलाई Jupyter Notebook बाट चलाउनुहुन्छ भने, यो DataFrame लाई राम्रो टेबलर रूपमा प्रिन्ट गर्नेछ।
हामीले `plot` फङ्क्शनको प्रयोग गरेर केही स्तम्भहरूलाई दृश्यात्मक बनाउने कुरा पनि देखेका छौं। जबकि `plot` धेरै कार्यहरूको लागि उपयोगी छ, र `kind=` प्यारामिटर मार्फत विभिन्न प्रकारका ग्राफहरू समर्थन गर्दछ, तपाईं सधैं कच्चा `matplotlib` लाइब्रेरी प्रयोग गरेर थप जटिल कुरा प्लट गर्न सक्नुहुन्छ। हामी अलग पाठहरूमा डाटा दृश्यात्मकता विस्तारमा कभर गर्नेछौं।
हामीले केही स्तम्भहरूलाई दृश्यात्मक बनाउन `plot` फङ्क्शनको प्रयोग पनि देखेका छौं। जबकि `plot` धेरै कार्यहरूको लागि उपयोगी छ, र `kind=` प्यारामिटर मार्फत धेरै प्रकारका ग्राफहरू समर्थन गर्दछ, तपाईं सधैं कच्चा `matplotlib` लाइब्रेरी प्रयोग गरेर केही जटिल कुरा प्लट गर्न सक्नुहुन्छ। हामी अलग पाठहरूमा डाटा दृश्यात्मकता विस्तारमा कभर गर्नेछौं।
यो अवलोकनले Pandas का सबैभन्दा महत्त्वपूर्ण अवधारणाहरू समेट्छ, तर लाइब्रेरी धेरै समृद्ध छ, र तपाईंले यसबाट गर्न सक्ने कुराको कुनै सीमा छैन! अब हामी यो ज्ञानलाई विशिष्ट समस्याहरू समाधान गर्न प्रयोग गरौं।
यो अवलोकनले Pandas का सबैभन्दा महत्त्वपूर्ण अवधारणाहरू समेट्छ, तर लाइब्रेरी धेरै समृद्ध छ, र तपाईंले यसबाट गर्न सक्ने कुराको कुनै सीमा छैन! अब हामी यो ज्ञानलाई विशिष्ट समस्याहरू समाधान गर्न लागू गरौं।
## 🚀 Challenge 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/) मा प्रदान गरिएको छ। Dataset [यस GitHub Repository](https://github.com/CSSEGISandData/COVID-19) मा उपलब्ध छ।
हामीले डाटासँग कसरी व्यवहार गर्ने देखाउन चाहन्छौं, त्यसैले कृपया [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) खोल्नुहोस् र माथिदेखि तलसम्म पढ्नुहोस्। तपाईंले सेलहरू चलाउन सक्नुहुन्छ, र अन्त्यमा हामीले तपाईंका लागि छोडेका केही चुनौतीहरू गर्न सक्नुहुन्छ।
हामी डाटासँग कसरी व्यवहार गर्ने देखाउन चाहन्छौं, त्यसैले कृपया [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) खोल्नुहोस् र माथिदेखि तलसम्म पढ्नुहोस्। तपाईंले सेलहरू चलाउन सक्नुहुन्छ, र अन्त्यमा हामीले तपाईंका लागि छोडेका केही चुनौतीहरू गर्न सक्नुहुन्छ।
![COVID फैलावट](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID फैलावट](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ne.png)
> यदि तपाईंलाई Jupyter Notebook मा कोड कसरी चलाउने थाहा छैन भने, [यस लेख](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) हेर्नुहोस्।
## असंरचित डाटासँग काम गर्ने
डाटा प्रायः टेबलको रूपमा आउँछ, तर केही अवस्थामा हामी कम संरचित डाटासँग व्यवहार गर्नुपर्छ, जस्तै पाठ वा छविहरू। यस अवस्थामा, माथि देखिएका डाटा प्रशोधन प्रविधिहरू लागू गर्न, हामीले कुनै प्रकारको **संरचित डाटा निकाल्न** आवश्यक छ। यहाँ केही उदाहरणहरू छन्:
डाटा प्रायः टेबल रूपमा आउँछ, तर केही अवस्थामा हामी कम संरचित डाटासँग व्यवहार गर्नुपर्छ, जस्तै पाठ वा छविहरू। यस अवस्थामा, माथि देखिएका डाटा प्रशोधन प्रविधिहरू लागू गर्न, हामीले कुनै प्रकारको **संरचित डाटा निकाल्न** आवश्यक छ। यहाँ केही उदाहरणहरू छन्:
* पाठबाट कुञ्जी शब्दहरू निकाल्ने, र ती कुञ्जी शब्दहरू कति पटक देखा परेका छन् हेर्ने
* तस्बिरमा वस्तुहरूको बारेमा जानकारी निकाल्न न्यरल नेटवर्क प्रयोग गर्ने
* भिडियो क्यामेरा फिडमा व्यक्तिहरूको भावनाको जानकारी प्राप्त गर्ने
* पाठबाट मुख्य शब्दहरू निकाल्ने, र ती शब्दहरू कति पटक देखा परेका छन् हेर्ने
* तस्बिरमा वस्तुहरूको बारेमा जानकारी निकाल्न न्यरल नेटवर्क प्रयोग गर्ने
* भिडियो क्यामेरा फिडमा व्यक्तिहरूको भावनाको जानकारी प्राप्त गर्ने
## 🚀 Challenge 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) मा 7000 भन्दा बढी (लेखनको समयमा) COVID सम्बन्धी कागजातहरू उपलब्ध छन्, जसमा मेटाडाटा र सारांशहरू छन् (र लगभग आधा कागजातहरूको पूर्ण पाठ पनि प्रदान गरिएको छ)।
[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**: हामी यस रिपोजिटरीको भागको रूपमा डटासेटको प्रतिलिपि प्रदान गर्दैनौं। तपाईंले पहिले [`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) डटासेट डाउनलोड गर्न सक्नुहुन्छ, तर यसमा मेटाडाटा फाइलको अतिरिक्त सबै पूर्ण पाठहरू समावेश हुनेछ।
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) खोल्नुहोस् र माथिदेखि तलसम्म पढ्नुहोस्। तपाईंले सेलहरू चलाउन सक्नुहुन्छ, र अन्त्यमा हामीले तपाईंका लागि छोडेका केही चुनौतीहरू गर्न सक्नुहुन्छ।
[`notebook-papers.ipynb`](notebook-papers.ipynb) खोल्नुहोस् र माथिदेखि तलसम्म पढ्नुहोस्। तपाईंले सेलहरू चलाउन सक्नुहुन्छ, र अन्त्यमा हामीले तपाईंका लागि छोडेका केही चुनौतीहरू गर्न सक्नुहुन्छ।
![Covid चिकित्सा उपचार](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid मेडिकल उपचार](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ne.png)
## छवि डाटा प्रशोधन
हालै, धेरै शक्तिशाली 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) प्रयोग गरेर कल गर्न सकिन्छ, र यसैले तपाईंको डाटा अन्वेषण कार्यप्रवाहमा सजिलै समावेश गर्न सकिन्छ।
यहाँ छवि डाटा स्रोतहरूबाट डाटा अन्वेषण गर्ने केही उदाहरणहरू छन्:
* ब्लग पोस्ट [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/) मा हामी 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 गहिरो रूपमा सिक्नु राम्रो विचार हो!
## [पाठपछिको क्विज](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [पाठपश्चात क्विज](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## समीक्षा र आत्म अध्ययन
@ -270,22 +270,22 @@ df = pd.read_csv('file.csv')
* [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) ट्यटोरियल
* आधिकारिक [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) ट्यटोरियल
* [Pandas Visualization सम्बन्धी दस्तावेज](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](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) मा सिक्ने मार्ग
* [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)
## क्रेडिट
## क्रेडिट्स
यो पाठ [Dmitry Soshnikov](http://soshnikov.com) द्वारा ♥️ सहित लेखिएको छ।
---
**अस्वीकरण**:
यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T22:56:27+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:49:22+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "nl"
}
@ -13,55 +13,55 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Werken met Python - _Sketchnote door [@nitya](https://twitter.com/nitya)_ |
[![Introductievideo](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.nl.png)](https://youtu.be/dZjWOGbsN4Y)
Hoewel databases zeer efficiënte manieren bieden om gegevens op te slaan en op te vragen met behulp van querytalen, is de meest flexibele manier van gegevensverwerking het schrijven van je eigen programma om gegevens te manipuleren. In veel gevallen is een databasequery een effectievere manier. Maar in sommige gevallen, wanneer complexere gegevensverwerking nodig is, kan dit niet eenvoudig met SQL worden gedaan.
Gegevensverwerking kan in elke programmeertaal worden geprogrammeerd, maar er zijn bepaalde talen die een hoger niveau bieden voor het werken met gegevens. Datawetenschappers geven meestal de voorkeur aan een van de volgende talen:
Hoewel databases zeer efficiënte manieren bieden om gegevens op te slaan en te raadplegen met behulp van querytalen, is de meest flexibele manier van gegevensverwerking het schrijven van je eigen programma om gegevens te manipuleren. In veel gevallen is een databasequery een effectievere aanpak. Maar in sommige gevallen, wanneer complexere gegevensverwerking nodig is, kan dit niet eenvoudig met SQL worden gedaan.
Gegevensverwerking kan worden geprogrammeerd in elke programmeertaal, maar er zijn bepaalde talen die beter geschikt zijn voor het werken met data. Datawetenschappers geven meestal de voorkeur aan een van de volgende talen:
* **[Python](https://www.python.org/)**, een algemene programmeertaal, die vaak wordt beschouwd als een van de beste opties voor beginners vanwege de eenvoud. Python heeft veel extra bibliotheken die je kunnen helpen bij het oplossen van praktische problemen, zoals het extraheren van gegevens uit een ZIP-archief of het converteren van een afbeelding naar grijstinten. Naast datawetenschap wordt Python ook vaak gebruikt voor webontwikkeling.
* **[R](https://www.r-project.org/)** is een traditionele toolbox die is ontwikkeld met statistische gegevensverwerking in gedachten. Het bevat ook een grote bibliotheekrepository (CRAN), wat het een goede keuze maakt voor gegevensverwerking. R is echter geen algemene programmeertaal en wordt zelden buiten het domein van datawetenschap gebruikt.
* **[Julia](https://julialang.org/)** is een andere taal die specifiek is ontwikkeld voor datawetenschap. Het is bedoeld om betere prestaties te leveren dan Python, wat het een geweldig hulpmiddel maakt voor wetenschappelijke experimenten.
* **[Python](https://www.python.org/)**, een algemene programmeertaal die vaak wordt beschouwd als een van de beste opties voor beginners vanwege de eenvoud. Python heeft veel extra bibliotheken die je kunnen helpen bij het oplossen van praktische problemen, zoals het extraheren van gegevens uit een ZIP-archief of het converteren van een afbeelding naar grijswaarden. Naast datawetenschap wordt Python ook vaak gebruikt voor webontwikkeling.
* **[R](https://www.r-project.org/)** is een traditionele toolbox die is ontwikkeld met statistische gegevensverwerking in gedachten. Het bevat ook een grote bibliotheekrepository (CRAN), waardoor het een goede keuze is voor gegevensverwerking. R is echter geen algemene programmeertaal en wordt zelden buiten het domein van datawetenschap gebruikt.
* **[Julia](https://julialang.org/)** is een andere taal die specifiek is ontwikkeld voor datawetenschap. Het is bedoeld om betere prestaties te leveren dan Python, waardoor het een geweldig hulpmiddel is voor wetenschappelijke experimenten.
In deze les richten we ons op het gebruik van Python voor eenvoudige gegevensverwerking. We gaan ervan uit dat je enige basiskennis van de taal hebt. Als je een diepere kennismaking met Python wilt, kun je een van de volgende bronnen raadplegen:
In deze les richten we ons op het gebruik van Python voor eenvoudige gegevensverwerking. We gaan ervan uit dat je basiskennis hebt van de taal. Als je een diepgaandere kennismaking met Python wilt, kun je een van de volgende bronnen raadplegen:
* [Leer Python op een leuke manier met Turtle Graphics en Fractals](https://github.com/shwars/pycourse) - Een snelle introductiecursus in Python-programmeren op GitHub
* [Zet je eerste stappen met Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - Leerpad op [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Leer Python op een leuke manier met Turtle Graphics en Fractals](https://github.com/shwars/pycourse) - GitHub-gebaseerde snelle introductiecursus in Python-programmering
* [Zet je eerste stappen met Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Leerpad op [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Gegevens kunnen in veel vormen voorkomen. In deze les behandelen we drie vormen van gegevens: **tabulaire gegevens**, **tekst** en **afbeeldingen**.
Gegevens kunnen in veel vormen voorkomen. In deze les behandelen we drie vormen van gegevens - **tabulaire gegevens**, **tekst** en **afbeeldingen**.
We richten ons op een paar voorbeelden van gegevensverwerking in plaats van een volledig overzicht te geven van alle gerelateerde bibliotheken. Dit stelt je in staat om het belangrijkste idee te begrijpen van wat mogelijk is en laat je zien waar je oplossingen kunt vinden voor je problemen wanneer je ze nodig hebt.
We richten ons op een paar voorbeelden van gegevensverwerking, in plaats van een volledig overzicht te geven van alle gerelateerde bibliotheken. Dit stelt je in staat om het belangrijkste idee te begrijpen van wat mogelijk is en laat je zien waar je oplossingen kunt vinden voor je problemen wanneer je ze nodig hebt.
> **Meest bruikbare advies**. Als je een bepaalde bewerking op gegevens wilt uitvoeren en niet weet hoe, probeer er dan naar te zoeken op internet. [Stackoverflow](https://stackoverflow.com/) bevat meestal veel nuttige codevoorbeelden in Python voor veelvoorkomende taken.
> **Meest nuttige advies**. Wanneer je een bepaalde bewerking op gegevens moet uitvoeren waarvan je niet weet hoe je dit moet doen, probeer er dan naar te zoeken op internet. [Stackoverflow](https://stackoverflow.com/) bevat vaak veel nuttige codevoorbeelden in Python voor veel typische taken.
## [Quiz voorafgaand aan de les](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabulaire gegevens en DataFrames
## Tabulaire gegevens en Dataframes
Je hebt al kennisgemaakt met tabulaire gegevens toen we het hadden over relationele databases. Wanneer je veel gegevens hebt die in verschillende gekoppelde tabellen zijn opgeslagen, is het zeker logisch om SQL te gebruiken om ermee te werken. Maar er zijn veel gevallen waarin we een tabel met gegevens hebben en we **inzicht** of **begrip** willen krijgen van deze gegevens, zoals de verdeling, correlatie tussen waarden, enzovoort. In datawetenschap zijn er veel gevallen waarin we enkele transformaties van de oorspronkelijke gegevens moeten uitvoeren, gevolgd door visualisatie. Beide stappen kunnen eenvoudig worden uitgevoerd met Python.
Je hebt al kennisgemaakt met tabulaire gegevens toen we het hadden over relationele databases. Wanneer je veel gegevens hebt die in verschillende gekoppelde tabellen zijn opgeslagen, is het zeker zinvol om SQL te gebruiken om ermee te werken. Er zijn echter veel gevallen waarin we een tabel met gegevens hebben en we **inzicht** of **begrip** willen krijgen over deze gegevens, zoals de verdeling, correlatie tussen waarden, enz. In datawetenschap zijn er veel gevallen waarin we enkele transformaties van de oorspronkelijke gegevens moeten uitvoeren, gevolgd door visualisatie. Beide stappen kunnen eenvoudig worden uitgevoerd met Python.
Er zijn twee zeer nuttige bibliotheken in Python die je kunnen helpen bij het werken met tabulaire gegevens:
* **[Pandas](https://pandas.pydata.org/)** stelt je in staat om zogenaamde **DataFrames** te manipuleren, die analoog zijn aan relationele tabellen. Je kunt benoemde kolommen hebben en verschillende bewerkingen uitvoeren op rijen, kolommen en DataFrames in het algemeen.
* **[Numpy](https://numpy.org/)** is een bibliotheek voor het werken met **tensors**, oftewel multidimensionale **arrays**. Een array heeft waarden van hetzelfde onderliggende type en is eenvoudiger dan een DataFrame, maar biedt meer wiskundige bewerkingen en creëert minder overhead.
Er zijn twee meest bruikbare bibliotheken in Python die je kunnen helpen bij het werken met tabulaire gegevens:
* **[Pandas](https://pandas.pydata.org/)** stelt je in staat om zogenaamde **Dataframes** te manipuleren, die analoog zijn aan relationele tabellen. Je kunt benoemde kolommen hebben en verschillende bewerkingen uitvoeren op rijen, kolommen en dataframes in het algemeen.
* **[Numpy](https://numpy.org/)** is een bibliotheek voor het werken met **tensors**, oftewel multidimensionale **arrays**. Een array heeft waarden van hetzelfde onderliggende type en is eenvoudiger dan een dataframe, maar biedt meer wiskundige bewerkingen en creëert minder overhead.
Er zijn ook een paar andere bibliotheken die je moet kennen:
* **[Matplotlib](https://matplotlib.org/)** is een bibliotheek die wordt gebruikt voor gegevensvisualisatie en het plotten van grafieken
* **[SciPy](https://www.scipy.org/)** is een bibliotheek met enkele aanvullende wetenschappelijke functies. We zijn deze bibliotheek al tegengekomen toen we het hadden over waarschijnlijkheid en statistiek
* **[Matplotlib](https://matplotlib.org/)** is een bibliotheek die wordt gebruikt voor gegevensvisualisatie en het plotten van grafieken
* **[SciPy](https://www.scipy.org/)** is een bibliotheek met enkele aanvullende wetenschappelijke functies. We zijn deze bibliotheek al tegengekomen toen we het hadden over kansberekening en statistiek
Hier is een stukje code dat je meestal gebruikt om deze bibliotheken aan het begin van je Python-programma te importeren:
Hier is een stukje code dat je meestal gebruikt om deze bibliotheken aan het begin van je Python-programma te importeren:
```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
```
```
Pandas draait om een paar basisconcepten.
### Series
### Series
**Series** is een reeks waarden, vergelijkbaar met een lijst of numpy-array. Het belangrijkste verschil is dat een Series ook een **index** heeft, en wanneer we bewerkingen uitvoeren op Series (bijv. optellen), wordt rekening gehouden met de index. De index kan zo eenvoudig zijn als een geheel getal (dit is de standaardindex wanneer je een Series maakt van een lijst of array), of het kan een complexe structuur hebben, zoals een datumbereik.
**Series** is een reeks waarden, vergelijkbaar met een lijst of numpy-array. Het belangrijkste verschil is dat een series ook een **index** heeft, en wanneer we bewerkingen uitvoeren op series (bijv. optellen), wordt rekening gehouden met de index. De index kan zo eenvoudig zijn als een geheel getal (dit is de standaardindex bij het maken van een series vanuit een lijst of array), of het kan een complexe structuur hebben, zoals een datumbereik.
> **Opmerking**: Er is wat inleidende Pandas-code in het bijbehorende notebook [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). We schetsen hier slechts enkele voorbeelden, maar je bent van harte welkom om het volledige notebook te bekijken.
> **Opmerking**: Er is wat introductiecode voor Pandas in het bijbehorende notebook [`notebook.ipynb`](notebook.ipynb). We schetsen hier slechts enkele voorbeelden, en je bent zeker welkom om het volledige notebook te bekijken.
Laten we een voorbeeld bekijken: we willen de verkoop van onze ijssalon analyseren. Laten we een reeks verkoopcijfers genereren (aantal verkochte items per dag) voor een bepaalde periode:
@ -72,47 +72,47 @@ idx = pd.date_range(start_date,end_date)
print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Tijdreeksplot](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
```
![Time Series Plot](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.nl.png)
Stel nu dat we elke week een feestje organiseren voor vrienden en we nemen extra 10 pakken ijs mee voor het feestje. We kunnen een andere Series maken, geïndexeerd per week, om dat te laten zien:
Stel nu dat we elke week een feestje organiseren voor vrienden en we nemen 10 extra pakken ijs mee voor het feest. We kunnen een andere series maken, geïndexeerd per week, om dat te laten zien:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Wanneer we twee Series optellen, krijgen we het totaal:
```
Wanneer we twee series bij elkaar optellen, krijgen we het totaal:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Tijdreeksplot](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
```
![Time Series Plot](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.nl.png)
> **Opmerking** dat we niet de eenvoudige syntax `total_items+additional_items` gebruiken. Als we dat deden, zouden we veel `NaN` (*Not a Number*)-waarden in de resulterende Series krijgen. Dit komt omdat er ontbrekende waarden zijn voor sommige indexpunten in de `additional_items`-reeks, en het optellen van `NaN` met iets resulteert in `NaN`. Daarom moeten we de parameter `fill_value` specificeren tijdens het optellen.
> **Opmerking** dat we niet de eenvoudige syntaxis `total_items+additional_items` gebruiken. Als we dat deden, zouden we veel `NaN` (*Not a Number*) waarden krijgen in de resulterende series. Dit komt omdat er ontbrekende waarden zijn voor sommige indexpunten in de `additional_items` series, en het optellen van `NaN` met iets resulteert in `NaN`. Daarom moeten we de parameter `fill_value` specificeren tijdens het optellen.
Met tijdreeksen kunnen we ook **herbemonsteren** met verschillende tijdsintervallen. Stel bijvoorbeeld dat we het gemiddelde verkoopvolume per maand willen berekenen. We kunnen de volgende code gebruiken:
Met tijdreeksen kunnen we ook **herbemonsteren** met verschillende tijdsintervallen. Stel bijvoorbeeld dat we het gemiddelde verkoopvolume maandelijks willen berekenen. We kunnen de volgende code gebruiken:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Maandelijkse tijdreeks gemiddelden](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
```
![Monthly Time Series Averages](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.nl.png)
### DataFrame
Een DataFrame is in wezen een verzameling Series met dezelfde index. We kunnen meerdere Series combineren tot een DataFrame:
Een DataFrame is in wezen een verzameling series met dezelfde index. We kunnen meerdere series combineren tot een DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Dit zal een horizontale tabel maken zoals deze:
```
Dit zal een horizontale tabel creëren zoals deze:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
We kunnen ook Series gebruiken als kolommen en kolomnamen specificeren met behulp van een woordenboek:
We kunnen ook series gebruiken als kolommen en kolomnamen specificeren met behulp van een dictionary:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
```
Dit geeft ons een tabel zoals deze:
| | A | B |
@ -127,37 +127,37 @@ Dit geeft ons een tabel zoals deze:
| 7 | 8 | very |
| 8 | 9 | much |
**Opmerking** dat we deze tabelindeling ook kunnen krijgen door de vorige tabel te transponeren, bijvoorbeeld door te schrijven
**Opmerking** dat we deze tabelindeling ook kunnen krijgen door de vorige tabel te transponeren, bijvoorbeeld door te schrijven
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
```
Hier betekent `.T` de operatie van het transponeren van het DataFrame, d.w.z. het wisselen van rijen en kolommen, en de `rename`-operatie stelt ons in staat om kolommen te hernoemen om overeen te komen met het vorige voorbeeld.
Hier zijn enkele van de belangrijkste bewerkingen die we kunnen uitvoeren op DataFrames:
Hier zijn een paar van de belangrijkste bewerkingen die we kunnen uitvoeren op DataFrames:
**Kolomselectie**. We kunnen individuele kolommen selecteren door `df['A']` te schrijven - deze operatie retourneert een Series. We kunnen ook een subset van kolommen selecteren in een ander DataFrame door `df[['B','A']]` te schrijven - dit retourneert een ander DataFrame.
**Filteren** van bepaalde rijen op basis van criteria. Bijvoorbeeld, om alleen rijen met kolom `A` groter dan 5 over te houden, kunnen we schrijven `df[df['A']>5]`.
**Filteren** van alleen bepaalde rijen op basis van criteria. Bijvoorbeeld, om alleen rijen met kolom `A` groter dan 5 te behouden, kunnen we schrijven `df[df['A']>5]`.
> **Opmerking**: De manier waarop filteren werkt, is als volgt. De expressie `df['A']<5` retourneert een booleaanse Series, die aangeeft of de expressie `True` of `False` is voor elk element van de oorspronkelijke Series `df['A']`. Wanneer een booleaanse Series wordt gebruikt als index, retourneert deze een subset van rijen in het DataFrame. Het is dus niet mogelijk om willekeurige Python-booleaanse expressies te gebruiken, bijvoorbeeld `df[df['A']>5 and df['A']<7]` zou fout zijn. In plaats daarvan moet je de speciale `&`-bewerking gebruiken op booleaanse Series, bijvoorbeeld `df[(df['A']>5) & (df['A']<7)]` (*haakjes zijn hier belangrijk*).
> **Opmerking**: De manier waarop filteren werkt is als volgt. De expressie `df['A']<5` retourneert een booleaanse series, die aangeeft of de expressie `True` of `False` is voor elk element van de oorspronkelijke series `df['A']`. Wanneer een booleaanse series wordt gebruikt als index, retourneert het een subset van rijen in het DataFrame. Het is dus niet mogelijk om willekeurige Python-booleaanse expressies te gebruiken, bijvoorbeeld door `df[df['A']>5 and df['A']<7]` te schrijven, wat fout zou zijn. In plaats daarvan moet je een speciale `&`-operatie gebruiken op booleaanse series, door `df[(df['A']>5) & (df['A']<7)]` te schrijven (*haakjes zijn hier belangrijk*).
**Nieuwe berekenbare kolommen maken**. We kunnen eenvoudig nieuwe berekenbare kolommen maken voor ons DataFrame door intuïtieve expressies te gebruiken zoals:
**Nieuwe berekenbare kolommen maken**. We kunnen eenvoudig nieuwe berekenbare kolommen maken voor ons DataFrame door intuïtieve expressies te gebruiken zoals deze:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Dit voorbeeld berekent de afwijking van A ten opzichte van de gemiddelde waarde. Wat hier eigenlijk gebeurt, is dat we een Series berekenen en deze vervolgens toewijzen aan de linkerzijde, waardoor een nieuwe kolom wordt gemaakt. Daarom kunnen we geen bewerkingen gebruiken die niet compatibel zijn met Series, bijvoorbeeld de onderstaande code is fout:
```
Dit voorbeeld berekent de afwijking van A ten opzichte van de gemiddelde waarde. Wat hier eigenlijk gebeurt, is dat we een series berekenen en deze vervolgens toewijzen aan de linkerzijde, waardoor een nieuwe kolom wordt gemaakt. Daarom kunnen we geen bewerkingen gebruiken die niet compatibel zijn met series, bijvoorbeeld de onderstaande code is fout:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Het laatste voorbeeld, hoewel syntactisch correct, geeft ons een verkeerd resultaat, omdat het de lengte van de Series `B` toewijst aan alle waarden in de kolom, en niet de lengte van individuele elementen zoals we bedoelden.
```
Het laatste voorbeeld, hoewel syntactisch correct, geeft ons een verkeerd resultaat, omdat het de lengte van series `B` toewijst aan alle waarden in de kolom, en niet de lengte van individuele elementen zoals we bedoeld hadden.
Als we complexe expressies zoals deze moeten berekenen, kunnen we de `apply`-functie gebruiken. Het laatste voorbeeld kan als volgt worden geschreven:
Als we complexe expressies zoals deze moeten berekenen, kunnen we de functie `apply` gebruiken. Het laatste voorbeeld kan als volgt worden geschreven:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
df['LenB'] = df['B'].apply(len)
```
```
Na bovenstaande bewerkingen eindigen we met het volgende DataFrame:
@ -173,21 +173,21 @@ Na bovenstaande bewerkingen eindigen we met het volgende DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Rijen selecteren op basis van nummers** kan worden gedaan met behulp van de `iloc`-constructie. Bijvoorbeeld, om de eerste 5 rijen van het DataFrame te selecteren:
**Rijen selecteren op basis van nummers** kan worden gedaan met behulp van de `iloc`-constructie. Bijvoorbeeld, om de eerste 5 rijen van het DataFrame te selecteren:
```python
df.iloc[:5]
```
```
**Groeperen** wordt vaak gebruikt om een resultaat te krijgen dat lijkt op *draaitabellen* in Excel. Stel dat we de gemiddelde waarde van kolom `A` willen berekenen voor elk gegeven aantal `LenB`. Dan kunnen we ons DataFrame groeperen op `LenB` en `mean` aanroepen:
**Groeperen** wordt vaak gebruikt om een resultaat te krijgen dat lijkt op *draaitabellen* in Excel. Stel dat we de gemiddelde waarde van kolom `A` willen berekenen voor elk gegeven aantal `LenB`. Dan kunnen we ons DataFrame groeperen op `LenB` en `mean` aanroepen:
```python
df.groupby(by='LenB').mean()
```
Als we het gemiddelde en het aantal elementen in de groep willen berekenen, kunnen we de meer complexe `aggregate`-functie gebruiken:
df.groupby(by='LenB')[['A','DivA']].mean()
```
Als we het gemiddelde en het aantal elementen in de groep willen berekenen, kunnen we een meer complexe `aggregate`-functie gebruiken:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
```
Dit geeft ons de volgende tabel:
| LenB | Count | Mean |
@ -199,67 +199,67 @@ Dit geeft ons de volgende tabel:
| 6 | 2 | 6.000000 |
### Gegevens verkrijgen
We hebben gezien hoe eenvoudig het is om Series en DataFrames te maken vanuit Python-objecten. Data komt echter meestal in de vorm van een tekstbestand of een Excel-tabel. Gelukkig biedt Pandas ons een eenvoudige manier om data vanaf de schijf te laden. Bijvoorbeeld, het lezen van een CSV-bestand is zo simpel als dit:
We hebben gezien hoe eenvoudig het is om Series en DataFrames te maken vanuit Python-objecten. Data komt echter meestal in de vorm van een tekstbestand of een Excel-tabel. Gelukkig biedt Pandas ons een eenvoudige manier om data van de schijf te laden. Bijvoorbeeld, het lezen van een CSV-bestand is zo simpel als dit:
```python
df = pd.read_csv('file.csv')
```
We zullen meer voorbeelden zien van het laden van data, waaronder het ophalen van data van externe websites, in de sectie "Challenge".
We zullen meer voorbeelden zien van het laden van data, inclusief het ophalen van externe websites, in de sectie "Challenge".
### Printen en Plotten
Een Data Scientist moet vaak data verkennen, dus het is belangrijk om deze te kunnen visualiseren. Wanneer een DataFrame groot is, willen we vaak alleen controleren of we alles correct doen door de eerste paar rijen af te drukken. Dit kan worden gedaan door `df.head()` aan te roepen. Als je dit uitvoert vanuit Jupyter Notebook, wordt het DataFrame weergegeven in een mooie tabelvorm.
We hebben ook het gebruik van de `plot`-functie gezien om enkele kolommen te visualiseren. Hoewel `plot` erg nuttig is voor veel taken en verschillende grafiektypen ondersteunt via de parameter `kind=`, kun je altijd de ruwe `matplotlib`-bibliotheek gebruiken om iets complexers te plotten. We zullen data-visualisatie uitgebreid behandelen in aparte cursuslessen.
We hebben ook het gebruik van de `plot`-functie gezien om enkele kolommen te visualiseren. Hoewel `plot` erg nuttig is voor veel taken en verschillende grafiektypen ondersteunt via de `kind=`-parameter, kun je altijd de ruwe `matplotlib`-bibliotheek gebruiken om iets complexers te plotten. We zullen data-visualisatie uitgebreid behandelen in aparte cursuslessen.
Dit overzicht behandelt de belangrijkste concepten van Pandas, maar de bibliotheek is zeer uitgebreid en er zijn geen grenzen aan wat je ermee kunt doen! Laten we nu deze kennis toepassen om een specifiek probleem op te lossen.
## 🚀 Challenge 1: Analyse van COVID-verspreiding
Het eerste probleem waarop we ons zullen richten is het modelleren van de epidemische verspreiding van COVID-19. Om dat te doen, gebruiken we de gegevens over het aantal geïnfecteerde personen in verschillende landen, verstrekt door het [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) van [Johns Hopkins University](https://jhu.edu/). De dataset is beschikbaar in [deze GitHub-repository](https://github.com/CSSEGISandData/COVID-19).
Het eerste probleem waarop we ons zullen richten is het modelleren van de epidemische verspreiding van COVID-19. Om dit te doen, gebruiken we de gegevens over het aantal geïnfecteerde personen in verschillende landen, verstrekt door het [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) van [Johns Hopkins University](https://jhu.edu/). De dataset is beschikbaar in [deze GitHub-repository](https://github.com/CSSEGISandData/COVID-19).
Omdat we willen demonstreren hoe je met data omgaat, nodigen we je uit om [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) te openen en deze van boven naar beneden te lezen. Je kunt ook cellen uitvoeren en enkele uitdagingen aangaan die we aan het einde voor je hebben achtergelaten.
Omdat we willen demonstreren hoe je met data omgaat, nodigen we je uit om [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) te openen en deze van boven naar beneden te lezen. Je kunt ook cellen uitvoeren en enkele uitdagingen aangaan die we aan het einde voor je hebben achtergelaten.
![COVID-verspreiding](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.nl.png)
> Als je niet weet hoe je code uitvoert in Jupyter Notebook, bekijk dan [dit artikel](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Werken met ongestructureerde data
Hoewel data vaak in tabelvorm komt, moeten we in sommige gevallen werken met minder gestructureerde data, zoals tekst of afbeeldingen. In dat geval moeten we, om de dataverwerkingstechnieken die we hierboven hebben gezien toe te passen, op de een of andere manier **gestructureerde** data **extraheren**. Hier zijn enkele voorbeelden:
Hoewel data vaak in tabelvorm komt, moeten we in sommige gevallen omgaan met minder gestructureerde data, zoals tekst of afbeeldingen. In dit geval, om de dataverwerkingstechnieken toe te passen die we hierboven hebben gezien, moeten we op de een of andere manier **gestructureerde** data **extraheren**. Hier zijn enkele voorbeelden:
* Het extraheren van trefwoorden uit tekst en bekijken hoe vaak die trefwoorden voorkomen
* Het gebruik van neurale netwerken om informatie over objecten op een afbeelding te extraheren
* Het verkrijgen van informatie over emoties van mensen via een videofeed van een camera
## 🚀 Challenge 2: Analyse van COVID-papers
## 🚀 Challenge 2: Analyse van COVID-artikelen
In deze uitdaging blijven we bij het onderwerp van de COVID-pandemie en richten we ons op het verwerken van wetenschappelijke papers over het onderwerp. Er is een [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) met meer dan 7000 (op het moment van schrijven) papers over COVID, beschikbaar met metadata en samenvattingen (en voor ongeveer de helft is ook de volledige tekst beschikbaar).
In deze uitdaging blijven we bij het onderwerp van de COVID-pandemie en richten we ons op het verwerken van wetenschappelijke artikelen over het onderwerp. Er is een [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) met meer dan 7000 (op het moment van schrijven) artikelen over COVID, beschikbaar met metadata en samenvattingen (en voor ongeveer de helft is ook de volledige tekst beschikbaar).
Een volledig voorbeeld van het analyseren van deze dataset met behulp van de [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) cognitieve service wordt beschreven [in deze blogpost](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). We zullen een vereenvoudigde versie van deze analyse bespreken.
> **NOTE**: We bieden geen kopie van de dataset als onderdeel van deze repository. Je moet mogelijk eerst het bestand [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) downloaden van [deze dataset op Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registratie bij Kaggle kan vereist zijn. Je kunt de dataset ook zonder registratie downloaden [van hier](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), maar deze bevat alle volledige teksten naast het metadata-bestand.
Open [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) en lees deze van boven naar beneden. Je kunt ook cellen uitvoeren en enkele uitdagingen aangaan die we aan het einde voor je hebben achtergelaten.
Open [`notebook-papers.ipynb`](notebook-papers.ipynb) en lees deze van boven naar beneden. Je kunt ook cellen uitvoeren en enkele uitdagingen aangaan die we aan het einde voor je hebben achtergelaten.
![COVID medische behandeling](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.nl.png)
## Verwerken van afbeeldingsdata
Recent zijn zeer krachtige AI-modellen ontwikkeld die ons in staat stellen afbeeldingen te begrijpen. Er zijn veel taken die kunnen worden opgelost met behulp van vooraf getrainde neurale netwerken of clouddiensten. Enkele voorbeelden zijn:
* **Afbeeldingsclassificatie**, waarmee je een afbeelding kunt categoriseren in een van de vooraf gedefinieerde klassen. Je kunt eenvoudig je eigen afbeeldingsclassificators trainen met diensten zoals [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum).
* **Objectdetectie** om verschillende objecten in een afbeelding te detecteren. Diensten zoals [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kunnen een aantal veelvoorkomende objecten detecteren, en je kunt een [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)-model trainen om specifieke objecten van interesse te detecteren.
* **Objectdetectie** om verschillende objecten in de afbeelding te detecteren. Diensten zoals [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kunnen een aantal veelvoorkomende objecten detecteren, en je kunt een [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) model trainen om specifieke objecten van interesse te detecteren.
* **Gezichtsdetectie**, inclusief leeftijd-, geslacht- en emotiedetectie. Dit kan worden gedaan via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Al deze clouddiensten kunnen worden aangeroepen met behulp van [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) en kunnen dus eenvoudig worden geïntegreerd in je data-exploratieworkflow.
Al deze clouddiensten kunnen worden aangeroepen met [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) en kunnen dus eenvoudig worden geïntegreerd in je data-exploratieworkflow.
Hier zijn enkele voorbeelden van het verkennen van data uit afbeeldingsbronnen:
* In de blogpost [Hoe Data Science leren zonder te coderen](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) verkennen we Instagram-foto's om te begrijpen wat mensen ertoe brengt meer likes te geven aan een foto. We extraheren eerst zoveel mogelijk informatie uit afbeeldingen met behulp van [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) en gebruiken vervolgens [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) om een interpreteerbaar model te bouwen.
* In de blogpost [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) verkennen we Instagram-foto's, waarbij we proberen te begrijpen wat mensen ertoe brengt meer likes te geven aan een foto. We extraheren eerst zoveel mogelijk informatie uit afbeeldingen met behulp van [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) en gebruiken vervolgens [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) om een interpreteerbaar model te bouwen.
* In [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) gebruiken we [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) om emoties van mensen op foto's van evenementen te extraheren, om te proberen te begrijpen wat mensen gelukkig maakt.
## Conclusie
Of je nu gestructureerde of ongestructureerde data hebt, met Python kun je alle stappen uitvoeren die verband houden met dataverwerking en -begrip. Het is waarschijnlijk de meest flexibele manier van dataverwerking, en daarom gebruiken de meeste data scientists Python als hun primaire tool. Python diepgaand leren is waarschijnlijk een goed idee als je serieus bent over je reis in data science!
Of je nu al gestructureerde of ongestructureerde data hebt, met Python kun je alle stappen uitvoeren die verband houden met dataverwerking en -begrip. Het is waarschijnlijk de meest flexibele manier van dataverwerking, en daarom gebruiken de meeste data scientists Python als hun primaire tool. Python diepgaand leren is waarschijnlijk een goed idee als je serieus bent over je reis in data science!
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -269,12 +269,12 @@ Of je nu gestructureerde of ongestructureerde data hebt, met Python kun je alle
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Online bronnen**
* Officiële [10 minuten naar Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* Officiële [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Documentatie over Pandas-visualisatie](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Python leren**
* [Leer Python op een leuke manier met Turtle Graphics en fractals](https://github.com/shwars/pycourse)
* [Zet je eerste stappen met Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Leerpad op [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Zet je eerste stappen met Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) leerpad op [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Opdracht
@ -287,4 +287,4 @@ Deze les is met ♥️ geschreven door [Dmitry Soshnikov](http://soshnikov.com)
---
**Disclaimer**:
Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T22:16:41+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:47:35+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "no"
}
@ -13,57 +13,59 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Arbeide med Python - _Sketchnote av [@nitya](https://twitter.com/nitya)_ |
[![Introduksjonsvideo](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Introduksjonsvideo](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.no.png)](https://youtu.be/dZjWOGbsN4Y)
Mens databaser tilbyr svært effektive måter å lagre data og hente dem ved hjelp av spørringsspråk, er den mest fleksible måten å bearbeide data på å skrive ditt eget program for å manipulere data. I mange tilfeller vil en databasespørring være en mer effektiv løsning. Men i noen tilfeller, når mer kompleks databehandling er nødvendig, kan det ikke enkelt gjøres med SQL.
Databehandling kan programmeres i hvilket som helst programmeringsspråk, men det finnes visse språk som er mer høy-nivå med hensyn til arbeid med data. Dataforskere foretrekker vanligvis ett av følgende språk:
Mens databaser tilbyr svært effektive måter å lagre data og hente dem ved hjelp av spørringsspråk, er den mest fleksible måten å behandle data på å skrive ditt eget program for å manipulere data. I mange tilfeller vil en databasespørring være en mer effektiv løsning. Men i noen tilfeller, når mer kompleks databehandling er nødvendig, kan det ikke enkelt gjøres med SQL.
Databehandling kan programmeres i hvilket som helst programmeringsspråk, men det finnes visse språk som er mer tilpasset arbeid med data. Dataforskere foretrekker vanligvis ett av følgende språk:
* **[Python](https://www.python.org/)**, et allsidig programmeringsspråk, som ofte anses som et av de beste alternativene for nybegynnere på grunn av sin enkelhet. Python har mange tilleggslibrier som kan hjelpe deg med å løse praktiske problemer, som å hente data fra en ZIP-arkiv eller konvertere et bilde til gråtoner. I tillegg til dataforskning brukes Python også ofte til webutvikling.
* **[R](https://www.r-project.org/)** er en tradisjonell verktøykasse utviklet med statistisk databehandling i tankene. Det inneholder også et stort bibliotek (CRAN), som gjør det til et godt valg for databehandling. R er imidlertid ikke et allsidig programmeringsspråk og brukes sjelden utenfor dataforskningsområdet.
* **[Julia](https://julialang.org/)** er et annet språk utviklet spesielt for dataforskning. Det er ment å gi bedre ytelse enn Python, noe som gjør det til et flott verktøy for vitenskapelige eksperimenter.
* **[Python](https://www.python.org/)**, et allsidig programmeringsspråk, som ofte anses som et av de beste alternativene for nybegynnere på grunn av sin enkelhet. Python har mange tilleggslibrier som kan hjelpe deg med å løse praktiske problemer, som å hente data fra en ZIP-fil eller konvertere et bilde til gråtoner. I tillegg til dataforskning brukes Python også ofte til webutvikling.
* **[R](https://www.r-project.org/)** er en tradisjonell verktøykasse utviklet med statistisk databehandling i tankene. Det inneholder også et stort bibliotek (CRAN), som gjør det til et godt valg for databehandling. R er imidlertid ikke et allsidig programmeringsspråk og brukes sjelden utenfor dataforskningsområdet.
* **[Julia](https://julialang.org/)** er et annet språk utviklet spesielt for dataforskning. Det er ment å gi bedre ytelse enn Python, noe som gjør det til et flott verktøy for vitenskapelige eksperimenter.
I denne leksjonen vil vi fokusere på å bruke Python for enkel databehandling. Vi antar grunnleggende kjennskap til språket. Hvis du ønsker en dypere innføring i Python, kan du referere til en av følgende ressurser:
I denne leksjonen vil vi fokusere på å bruke Python for enkel databehandling. Vi antar grunnleggende kjennskap til språket. Hvis du ønsker en dypere innføring i Python, kan du se på en av følgende ressurser:
* [Lær Python på en morsom måte med Turtle Graphics og Fractals](https://github.com/shwars/pycourse) - GitHub-basert introduksjonskurs i Python-programmering
* [Ta dine første steg med Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Læringssti på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Lær Python på en morsom måte med Turtle Graphics og Fractals](https://github.com/shwars/pycourse) - GitHub-basert introduksjonskurs i Python-programmering
* [Ta dine første steg med Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Læringssti på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Data kan komme i mange former. I denne leksjonen vil vi se på tre former for data - **tabulære data**, **tekst** og **bilder**.
Vi vil fokusere på noen få eksempler på databehandling, i stedet for å gi deg en fullstendig oversikt over alle relaterte biblioteker. Dette vil gi deg en idé om hva som er mulig, og gi deg forståelse for hvor du kan finne løsninger på dine problemer når du trenger dem.
> **Det mest nyttige rådet**. Når du trenger å utføre en bestemt operasjon på data som du ikke vet hvordan du skal gjøre, prøv å søke etter det på internett. [Stackoverflow](https://stackoverflow.com/) inneholder ofte mange nyttige kodeeksempler i Python for mange typiske oppgaver.
> **Det mest nyttige rådet**. Når du trenger å utføre en operasjon på data som du ikke vet hvordan du skal gjøre, prøv å søke etter det på internett. [Stackoverflow](https://stackoverflow.com/) inneholder ofte mange nyttige kodeeksempler i Python for mange typiske oppgaver.
## [Quiz før leksjonen](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabulære data og Dataframes
Du har allerede møtt tabulære data da vi snakket om relasjonsdatabaser. Når du har mye data, og det er inneholdt i mange forskjellige koblede tabeller, gir det definitivt mening å bruke SQL for å arbeide med det. Men det er mange tilfeller der vi har en tabell med data, og vi trenger å få en **forståelse** eller **innsikt** om disse dataene, som fordeling, korrelasjon mellom verdier, osv. I dataforskning er det mange tilfeller der vi trenger å utføre noen transformasjoner av de opprinnelige dataene, etterfulgt av visualisering. Begge disse trinnene kan enkelt gjøres ved hjelp av Python.
Du har allerede møtt tabulære data da vi snakket om relasjonsdatabaser. Når du har mye data, og det er lagret i mange forskjellige koblede tabeller, gir det definitivt mening å bruke SQL for å arbeide med det. Men det finnes mange tilfeller der vi har en tabell med data, og vi trenger å få en **forståelse** eller **innsikt** om disse dataene, som fordeling, korrelasjon mellom verdier, osv. Innen dataforskning er det mange tilfeller der vi må utføre noen transformasjoner av de opprinnelige dataene, etterfulgt av visualisering. Begge disse trinnene kan enkelt gjøres med Python.
Det finnes to mest nyttige biblioteker i Python som kan hjelpe deg med å håndtere tabulære data:
* **[Pandas](https://pandas.pydata.org/)** lar deg manipulere såkalte **Dataframes**, som er analoge med relasjonstabeller. Du kan ha navngitte kolonner og utføre forskjellige operasjoner på rader, kolonner og dataframes generelt.
* **[Numpy](https://numpy.org/)** er et bibliotek for å arbeide med **tensorer**, dvs. flerdimensjonale **arrays**. Arrays har verdier av samme underliggende type, og det er enklere enn dataframe, men det tilbyr flere matematiske operasjoner og skaper mindre overhead.
* **[Pandas](https://pandas.pydata.org/)** lar deg manipulere såkalte **Dataframes**, som er analoge med relasjonstabeller. Du kan ha navngitte kolonner og utføre forskjellige operasjoner på rader, kolonner og dataframes generelt.
* **[Numpy](https://numpy.org/)** er et bibliotek for å arbeide med **tensorer**, dvs. flerdimensjonale **arrays**. Arrays har verdier av samme underliggende type, og det er enklere enn dataframe, men det tilbyr flere matematiske operasjoner og skaper mindre overhead.
Det finnes også et par andre biblioteker du bør kjenne til:
* **[Matplotlib](https://matplotlib.org/)** er et bibliotek som brukes til datavisualisering og graftegning
* **[SciPy](https://www.scipy.org/)** er et bibliotek med noen ekstra vitenskapelige funksjoner. Vi har allerede kommet over dette biblioteket da vi snakket om sannsynlighet og statistikk
* **[Matplotlib](https://matplotlib.org/)** er et bibliotek som brukes til datavisualisering og graftegning
* **[SciPy](https://www.scipy.org/)** er et bibliotek med noen ekstra vitenskapelige funksjoner. Vi har allerede kommet over dette biblioteket da vi snakket om sannsynlighet og statistikk
Her er et stykke kode som du vanligvis vil bruke for å importere disse bibliotekene i begynnelsen av ditt Python-program:
Her er et stykke kode som du vanligvis vil bruke for å importere disse bibliotekene i begynnelsen av ditt Python-program:
```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
```
```
Pandas er sentrert rundt noen få grunnleggende konsepter.
### Series
### Series
**Series** er en sekvens av verdier, lik en liste eller numpy-array. Den viktigste forskjellen er at series også har en **indeks**, og når vi opererer på series (f.eks. legger dem sammen), tas indeksen i betraktning. Indeksen kan være så enkel som et heltall radnummer (det er indeksen som brukes som standard når du oppretter en series fra liste eller array), eller den kan ha en kompleks struktur, som datointervall.
**Series** er en sekvens av verdier, lik en liste eller numpy-array. Den største forskjellen er at series også har en **indeks**, og når vi opererer på series (f.eks. legger dem sammen), tas indeksen med i betraktning. Indeksen kan være så enkel som et heltall radnummer (det er standardindeksen når man oppretter en series fra en liste eller array), eller den kan ha en kompleks struktur, som et datointervall.
> **Merk**: Det finnes noe innledende Pandas-kode i den medfølgende notatboken [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Vi skisserer bare noen av eksemplene her, og du er definitivt velkommen til å sjekke ut hele notatboken.
> **Merk**: Det finnes noe innledende Pandas-kode i den medfølgende notatboken [`notebook.ipynb`](notebook.ipynb). Vi skisserer bare noen av eksemplene her, og du er definitivt velkommen til å sjekke ut hele notatboken.
Tenk på et eksempel: vi ønsker å analysere salget av vår iskrembutikk. La oss generere en series med salgsnumre (antall solgte varer hver dag) for en tidsperiode:
Tenk på et eksempel: vi ønsker å analysere salget fra vår iskrembutikk. La oss generere en series med salgstall (antall solgte varer hver dag) for en tidsperiode:
```python
start_date = "Jan 1, 2020"
@ -72,47 +74,47 @@ idx = pd.date_range(start_date,end_date)
print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Tidsserieplott](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
```
![Tidsserieplott](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.no.png)
Nå antar vi at vi hver uke arrangerer en fest for venner, og vi tar med oss 10 ekstra pakker med iskrem til festen. Vi kan lage en annen series, indeksert etter uke, for å demonstrere det:
Nå antar vi at vi hver uke arrangerer en fest for venner, og vi tar med oss 10 ekstra pakker med iskrem til festen. Vi kan lage en annen series, indeksert etter uke, for å demonstrere dette:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Når vi legger sammen to series, får vi totalt antall:
```
Når vi legger sammen to series, får vi totalt antall:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Tidsserieplott](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
```
![Tidsserieplott](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.no.png)
> **Merk** at vi ikke bruker enkel syntaks `total_items+additional_items`. Hvis vi gjorde det, ville vi fått mange `NaN` (*Not a Number*) verdier i den resulterende series. Dette er fordi det mangler verdier for noen av indeksene i `additional_items`-serien, og å legge til `NaN` til noe resulterer i `NaN`. Derfor må vi spesifisere `fill_value`-parameteren under addisjonen.
> **Merk** at vi ikke bruker enkel syntaks `total_items+additional_items`. Hvis vi gjorde det, ville vi fått mange `NaN` (*Not a Number*) verdier i den resulterende serien. Dette skyldes at det mangler verdier for noen av indeksene i `additional_items`-serien, og å legge til `NaN` til noe resulterer i `NaN`. Derfor må vi spesifisere `fill_value`-parameteren under addisjonen.
Med tidsserier kan vi også **resample** serien med forskjellige tidsintervaller. For eksempel, anta at vi ønsker å beregne gjennomsnittlig salgsvolum månedlig. Vi kan bruke følgende kode:
Med tidsserier kan vi også **resample** serien med forskjellige tidsintervaller. For eksempel, hvis vi ønsker å beregne gjennomsnittlig salgsvolum månedlig, kan vi bruke følgende kode:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Månedlige tidsserie-gjennomsnitt](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
```
![Månedlige tidsserie-gjennomsnitt](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.no.png)
### DataFrame
En DataFrame er i hovedsak en samling av series med samme indeks. Vi kan kombinere flere series sammen til en DataFrame:
En DataFrame er i hovedsak en samling av series med samme indeks. Vi kan kombinere flere series sammen til en DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Dette vil lage en horisontal tabell som denne:
```
Dette vil lage en horisontal tabell som denne:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Vi kan også bruke Series som kolonner og spesifisere kolonnenavn ved hjelp av dictionary:
Vi kan også bruke Series som kolonner og spesifisere kolonnenavn ved hjelp av en ordbok:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
```
Dette vil gi oss en tabell som denne:
| | A | B |
@ -127,10 +129,10 @@ Dette vil gi oss en tabell som denne:
| 7 | 8 | very |
| 8 | 9 | much |
**Merk** at vi også kan få denne tabelloppsettet ved å transponere den forrige tabellen, f.eks. ved å skrive
**Merk** at vi også kan få denne tabelloppsettet ved å transponere den forrige tabellen, f.eks. ved å skrive
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
```
Her betyr `.T` operasjonen med å transponere DataFrame, dvs. bytte rader og kolonner, og `rename`-operasjonen lar oss gi nytt navn til kolonner for å matche det forrige eksemplet.
Her er noen av de viktigste operasjonene vi kan utføre på DataFrames:
@ -139,25 +141,25 @@ Her er noen av de viktigste operasjonene vi kan utføre på DataFrames:
**Filtrering** av kun visse rader basert på kriterier. For eksempel, for å beholde kun rader med kolonne `A` større enn 5, kan vi skrive `df[df['A']>5]`.
> **Merk**: Måten filtrering fungerer på er følgende. Uttrykket `df['A']<5` returnerer en boolsk series, som indikerer om uttrykket er `True` eller `False` for hvert element i den opprinnelige serien `df['A']`. Når boolsk series brukes som indeks, returnerer det et delsett av rader i DataFrame. Derfor er det ikke mulig å bruke vilkårlige Python boolske uttrykk, for eksempel, å skrive `df[df['A']>5 and df['A']<7]` ville være feil. I stedet bør du bruke spesialoperasjonen `&` på boolske series, ved å skrive `df[(df['A']>5) & (df['A']<7)]` (*parentesene er viktige her*).
> **Merk**: Måten filtrering fungerer på er som følger. Uttrykket `df['A']<5` returnerer en boolsk series, som indikerer om uttrykket er `True` eller `False` for hvert element i den opprinnelige serien `df['A']`. Når boolsk series brukes som indeks, returnerer det et delsett av rader i DataFrame. Derfor er det ikke mulig å bruke vilkårlige Python boolske uttrykk, for eksempel, å skrive `df[df['A']>5 and df['A']<7]` ville være feil. I stedet bør du bruke spesialoperasjonen `&` på boolske serier, ved å skrive `df[(df['A']>5) & (df['A']<7)]` (*parenteser er viktige her*).
**Opprette nye beregnbare kolonner**. Vi kan enkelt opprette nye beregnbare kolonner for vår DataFrame ved å bruke intuitive uttrykk som dette:
**Opprette nye beregnbare kolonner**. Vi kan enkelt opprette nye beregnbare kolonner for vår DataFrame ved å bruke intuitive uttrykk som dette:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Dette eksemplet beregner avviket til A fra gjennomsnittsverdien. Det som faktisk skjer her er at vi beregner en series, og deretter tilordner denne serien til venstre side, og oppretter en ny kolonne. Derfor kan vi ikke bruke operasjoner som ikke er kompatible med series, for eksempel, koden nedenfor er feil:
```
Dette eksemplet beregner avviket til A fra gjennomsnittsverdien. Det som faktisk skjer her er at vi beregner en series, og deretter tilordner denne serien til venstre side, og oppretter en ny kolonne. Derfor kan vi ikke bruke operasjoner som ikke er kompatible med series, for eksempel, koden nedenfor er feil:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
```
Det siste eksemplet, selv om det er syntaktisk korrekt, gir oss feil resultat, fordi det tilordner lengden på serien `B` til alle verdier i kolonnen, og ikke lengden på individuelle elementer som vi hadde tenkt.
Hvis vi trenger å beregne komplekse uttrykk som dette, kan vi bruke `apply`-funksjonen. Det siste eksemplet kan skrives som følger:
Hvis vi trenger å beregne komplekse uttrykk som dette, kan vi bruke `apply`-funksjonen. Det siste eksemplet kan skrives som følger:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
df['LenB'] = df['B'].apply(len)
```
```
Etter operasjonene ovenfor, vil vi ende opp med følgende DataFrame:
@ -173,21 +175,21 @@ Etter operasjonene ovenfor, vil vi ende opp med følgende DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Velge rader basert på nummer** kan gjøres ved hjelp av `iloc`-konstruksjonen. For eksempel, for å velge de første 5 radene fra DataFrame:
**Velge rader basert på nummer** kan gjøres ved hjelp av `iloc`-konstruksjonen. For eksempel, for å velge de første 5 radene fra DataFrame:
```python
df.iloc[:5]
```
```
**Gruppering** brukes ofte for å få et resultat som ligner på *pivot-tabeller* i Excel. Anta at vi ønsker å beregne gjennomsnittsverdien av kolonnen `A` for hver gitt verdi av `LenB`. Da kan vi gruppere vår DataFrame etter `LenB`, og kalle `mean`:
**Gruppering** brukes ofte for å få et resultat som ligner på *pivot-tabeller* i Excel. Anta at vi ønsker å beregne gjennomsnittsverdien av kolonnen `A` for hver gitt verdi av `LenB`. Da kan vi gruppere vår DataFrame etter `LenB`, og kalle `mean`:
```python
df.groupby(by='LenB').mean()
```
Hvis vi trenger å beregne gjennomsnittet og antall elementer i gruppen, kan vi bruke den mer komplekse `aggregate`-funksjonen:
df.groupby(by='LenB')[['A','DivA']].mean()
```
Hvis vi trenger å beregne gjennomsnitt og antall elementer i gruppen, kan vi bruke en mer kompleks `aggregate`-funksjon:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
```
Dette gir oss følgende tabell:
| LenB | Count | Mean |
@ -199,49 +201,49 @@ Dette gir oss følgende tabell:
| 6 | 2 | 6.000000 |
### Hente Data
Vi har sett hvor enkelt det er å konstruere Series og DataFrames fra Python-objekter. Men data kommer vanligvis i form av en tekstfil eller en Excel-tabell. Heldigvis tilbyr Pandas oss en enkel måte å laste inn data fra disk. For eksempel, å lese en CSV-fil er så enkelt som dette:
Vi har sett hvor enkelt det er å konstruere Series og DataFrames fra Python-objekter. Imidlertid kommer data vanligvis i form av en tekstfil eller en Excel-tabell. Heldigvis tilbyr Pandas oss en enkel måte å laste inn data fra disk. For eksempel, å lese en CSV-fil er så enkelt som dette:
```python
df = pd.read_csv('file.csv')
```
Vi vil se flere eksempler på å laste inn data, inkludert å hente det fra eksterne nettsteder, i "Utfordring"-seksjonen.
Vi vil se flere eksempler på hvordan man laster inn data, inkludert å hente det fra eksterne nettsteder, i "Utfordring"-seksjonen.
### Utskrift og Visualisering
En Data Scientist må ofte utforske data, og det er derfor viktig å kunne visualisere det. Når en DataFrame er stor, ønsker vi ofte bare å forsikre oss om at vi gjør alt riktig ved å skrive ut de første radene. Dette kan gjøres ved å kalle `df.head()`. Hvis du kjører det fra Jupyter Notebook, vil det skrive ut DataFrame i en fin tabellform.
En Data Scientist må ofte utforske dataene, og derfor er det viktig å kunne visualisere dem. Når en DataFrame er stor, ønsker vi ofte bare å forsikre oss om at vi gjør alt riktig ved å skrive ut de første radene. Dette kan gjøres ved å kalle `df.head()`. Hvis du kjører det fra Jupyter Notebook, vil det skrive ut DataFrame i en fin tabellform.
Vi har også sett bruken av `plot`-funksjonen for å visualisere noen kolonner. Mens `plot` er veldig nyttig for mange oppgaver og støtter mange forskjellige grafetyper via `kind=`-parameteren, kan du alltid bruke det rå `matplotlib`-biblioteket for å lage noe mer komplekst. Vi vil dekke datavisualisering i detalj i separate kursleksjoner.
Vi har også sett bruken av `plot`-funksjonen for å visualisere noen kolonner. Selv om `plot` er veldig nyttig for mange oppgaver og støtter mange forskjellige grafetyper via `kind=`-parameteren, kan du alltid bruke det rå `matplotlib`-biblioteket for å lage noe mer komplekst. Vi vil dekke datavisualisering i detalj i separate kursleksjoner.
Denne oversikten dekker de viktigste konseptene i Pandas, men biblioteket er veldig rikt, og det er ingen grenser for hva du kan gjøre med det! La oss nå bruke denne kunnskapen til å løse et spesifikt problem.
Denne oversikten dekker de viktigste konseptene i Pandas, men biblioteket er veldig rikt, og det er ingen grenser for hva du kan gjøre med det! La oss nå bruke denne kunnskapen til å løse spesifikke problemer.
## 🚀 Utfordring 1: Analysere COVID-spredning
Det første problemet vi vil fokusere på er modellering av epidemisk spredning av COVID-19. For å gjøre dette, vil vi bruke data om antall smittede individer i forskjellige land, levert av [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) ved [Johns Hopkins University](https://jhu.edu/). Datasettet er tilgjengelig i [denne GitHub-repositorien](https://github.com/CSSEGISandData/COVID-19).
Det første problemet vi skal fokusere på er modellering av epidemisk spredning av COVID-19. For å gjøre dette, vil vi bruke data om antall smittede individer i forskjellige land, levert av [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) ved [Johns Hopkins University](https://jhu.edu/). Datasettet er tilgjengelig i [denne GitHub-repositorien](https://github.com/CSSEGISandData/COVID-19).
Siden vi ønsker å demonstrere hvordan man håndterer data, inviterer vi deg til å åpne [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) og lese det fra topp til bunn. Du kan også kjøre cellene og gjøre noen utfordringer som vi har lagt igjen til deg på slutten.
Siden vi ønsker å demonstrere hvordan man håndterer data, inviterer vi deg til å åpne [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) og lese det fra topp til bunn. Du kan også kjøre cellene og gjøre noen utfordringer som vi har lagt igjen til deg på slutten.
![COVID-spredning](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID-spredning](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.no.png)
> Hvis du ikke vet hvordan du kjører kode i Jupyter Notebook, ta en titt på [denne artikkelen](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Arbeide med Ustrukturert Data
Mens data ofte kommer i tabellform, må vi i noen tilfeller håndtere mindre strukturert data, for eksempel tekst eller bilder. I slike tilfeller, for å bruke databehandlingsteknikker vi har sett ovenfor, må vi på en eller annen måte **ekstrahere** strukturert data. Her er noen eksempler:
Selv om data ofte kommer i tabellform, må vi i noen tilfeller håndtere mindre strukturert data, for eksempel tekst eller bilder. I slike tilfeller, for å bruke databehandlingsteknikker vi har sett ovenfor, må vi på en eller annen måte **ekstrahere** strukturert data. Her er noen eksempler:
* Ekstrahere nøkkelord fra tekst og se hvor ofte disse nøkkelordene vises
* Bruke nevrale nettverk for å ekstrahere informasjon om objekter på et bilde
* Bruke nevrale nettverk for å hente informasjon om objekter på et bilde
* Få informasjon om følelsene til mennesker på videokamera-feed
## 🚀 Utfordring 2: Analysere COVID-artikler
I denne utfordringen vil vi fortsette med temaet COVID-pandemien og fokusere på behandling av vitenskapelige artikler om emnet. Det finnes [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mer enn 7000 (på tidspunktet for skriving) artikler om COVID, tilgjengelig med metadata og sammendrag (og for omtrent halvparten av dem er også fulltekst tilgjengelig).
I denne utfordringen fortsetter vi med temaet COVID-pandemien og fokuserer på behandling av vitenskapelige artikler om emnet. Det finnes [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mer enn 7000 (på tidspunktet for skriving) artikler om COVID, tilgjengelig med metadata og sammendrag (og for omtrent halvparten av dem er også fulltekst tilgjengelig).
Et fullstendig eksempel på analyse av dette datasettet ved bruk av [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) kognitive tjeneste er beskrevet [i denne bloggposten](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vi vil diskutere en forenklet versjon av denne analysen.
> **NOTE**: Vi gir ikke en kopi av datasettet som en del av denne repositorien. Du må kanskje først laste ned [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv)-filen fra [dette datasettet på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan være nødvendig. Du kan også laste ned datasettet uten registrering [herfra](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det vil inkludere alle fulltekster i tillegg til metadata-filen.
> **NOTE**: Vi gir ikke en kopi av datasettet som en del av denne repositorien. Du må kanskje først laste ned [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv)-filen fra [dette datasettet på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan være nødvendig. Du kan også laste ned datasettet uten registrering [herfra](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det vil inkludere alle fulltekster i tillegg til metadatafilen.
Åpne [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) og les det fra topp til bunn. Du kan også kjøre cellene og gjøre noen utfordringer som vi har lagt igjen til deg på slutten.
Åpne [`notebook-papers.ipynb`](notebook-papers.ipynb) og les det fra topp til bunn. Du kan også kjøre cellene og gjøre noen utfordringer som vi har lagt igjen til deg på slutten.
![Covid Medisinsk Behandling](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medisinsk Behandling](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.no.png)
## Behandling av Bildedata
@ -278,13 +280,13 @@ Enten du allerede har strukturert eller ustrukturert data, kan du ved bruk av Py
## Oppgave
[Utfør mer detaljert datastudie for utfordringene ovenfor](assignment.md)
[Utfør en mer detaljert datastudie for utfordringene ovenfor](assignment.md)
## Kreditering
Denne leksjonen er laget med ♥️ av [Dmitry Soshnikov](http://soshnikov.com)
Denne leksjonen er skrevet med ♥️ av [Dmitry Soshnikov](http://soshnikov.com)
---
**Ansvarsfraskrivelse**:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi tilstreber nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.

@ -1,53 +1,53 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T08:05:16+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:37:41+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "pa"
}
-->
# ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨਾ: ਪਾਇਥਨ ਅਤੇ ਪੈਂਡਾਸ ਲਾਇਬ੍ਰੇਰੀ
| ![ [(@sketchthedocs)] ਦੁਆਰਾ ਸਕੈਚਨੋਟ](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| ਪਾਇਥਨ ਨਾਲ ਕੰਮ ਕਰਨਾ - _[@nitya](https://twitter.com/nitya) ਦੁਆਰਾ ਸਕੈਚਨੋਟ_ |
| ![ [(@sketchthedocs)](https://sketchthedocs.dev) ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਸਕੈਚਨੋਟ ](../../sketchnotes/07-WorkWithPython.png) |
| :---------------------------------------------------------------------------------------------------------------: |
| ਪਾਇਥਨ ਨਾਲ ਕੰਮ ਕਰਨਾ - _[@nitya](https://twitter.com/nitya) ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਸਕੈਚਨੋਟ_ |
[![ਜਾਣ-ਪਛਾਣ ਵੀਡੀਓ](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![ਜਾਣ-ਪਛਾਣ ਵੀਡੀਓ](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.pa.png)](https://youtu.be/dZjWOGbsN4Y)
ਜਦੋਂ ਕਿ ਡਾਟਾਬੇਸ ਡਾਟਾ ਨੂੰ ਸਟੋਰ ਕਰਨ ਅਤੇ ਕਵੈਰੀ ਲੈਂਗਵੇਜਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਵੈਰੀ ਕਰਨ ਦੇ ਬਹੁਤ ਹੀ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਤਰੀਕੇ ਪੇਸ਼ ਕਰਦੇ ਹਨ, ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦਾ ਸਭ ਤੋਂ ਲਚਕਦਾਰ ਤਰੀਕਾ ਆਪਣਾ ਪ੍ਰੋਗਰਾਮ ਲਿਖਣਾ ਹੈ। ਕਈ ਕੇਸਾਂ ਵਿੱਚ, ਡਾਟਾਬੇਸ ਕਵੈਰੀ ਕਰਨਾ ਜ਼ਿਆਦਾ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੋਵੇਗਾ। ਹਾਲਾਂਕਿ, ਕੁਝ ਕੇਸਾਂ ਵਿੱਚ ਜਦੋਂ ਜ਼ਿਆਦਾ ਜਟਿਲ ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਇਹ SQL ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਸਾਨੀ ਨਾਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।
ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਕਿਸੇ ਵੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਵਿੱਚ ਪ੍ਰੋਗਰਾਮ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਪਰ ਕੁਝ ਭਾਸ਼ਾਵਾਂ ਹਨ ਜੋ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨ ਦੇ ਸੰਦਰਭ ਵਿੱਚ ਉੱਚ ਪੱਧਰ ਦੀਆਂ ਹਨ। ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਆਮ ਤੌਰ 'ਤੇ ਹੇਠ ਲਿਖੀਆਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੇ ਹਨ:
ਜਦੋਂ ਕਿ ਡਾਟਾਬੇਸ ਡਾਟਾ ਨੂੰ ਸਟੋਰ ਕਰਨ ਅਤੇ ਕਵੈਰੀ ਲੈਂਗਵੇਜਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਵੈਰੀ ਕਰਨ ਦੇ ਲਈ ਬਹੁਤ ਕੁਸ਼ਲ ਤਰੀਕੇ ਪੇਸ਼ ਕਰਦੇ ਹਨ, ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦਾ ਸਭ ਤੋਂ ਲਚਕਦਾਰ ਤਰੀਕਾ ਆਪਣਾ ਪ੍ਰੋਗਰਾਮ ਲਿਖਣਾ ਹੈ ਜੋ ਡਾਟਾ ਨੂੰ ਮੋੜ ਸਕੇ। ਕਈ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਡਾਟਾਬੇਸ ਕਵੈਰੀ ਕਰਨਾ ਜ਼ਿਆਦਾ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੋਵੇਗਾ। ਹਾਲਾਂਕਿ ਕੁਝ ਮਾਮਲਿਆਂ ਵਿੱਚ ਜਦੋਂ ਜ਼ਿਆਦਾ ਜਟਿਲ ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਇਹ SQL ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਸਾਨੀ ਨਾਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।
ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਕਿਸੇ ਵੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਵਿੱਚ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਪਰ ਕੁਝ ਭਾਸ਼ਾਵਾਂ ਹਨ ਜੋ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨ ਦੇ ਹਿਸਾਬ ਨਾਲ ਉੱਚ ਪੱਧਰ ਦੀਆਂ ਹਨ। ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਆਮ ਤੌਰ 'ਤੇ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੇ ਹਨ:
* **[Python](https://www.python.org/)**, ਇੱਕ ਜਨਰਲ-ਪਰਪਜ਼ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ, ਜੋ ਅਕਸਰ ਇਸਦੀ ਸਾਦਗੀ ਦੇ ਕਾਰਨ ਸ਼ੁਰੂਆਤ ਕਰਨ ਵਾਲਿਆਂ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਕਲਪਾਂ ਵਿੱਚੋਂ ਇੱਕ ਮੰਨੀ ਜਾਂਦੀ ਹੈ। ਪਾਇਥਨ ਵਿੱਚ ਕਈ ਵਾਧੂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਕਈ ਵਿਆਵਹਾਰਿਕ ਸਮੱਸਿਆਵਾਂ ਹੱਲ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ZIP ਆਰਕਾਈਵ ਤੋਂ ਡਾਟਾ ਕੱਢਣਾ ਜਾਂ ਤਸਵੀਰ ਨੂੰ ਗ੍ਰੇਸਕੇਲ ਵਿੱਚ ਬਦਲਣਾ। ਡਾਟਾ ਸਾਇੰਸ ਤੋਂ ਇਲਾਵਾ, ਪਾਇਥਨ ਅਕਸਰ ਵੈੱਬ ਵਿਕਾਸ ਲਈ ਵੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
* **[R](https://www.r-project.org/)** ਇੱਕ ਪਰੰਪਰਾਗਤ ਟੂਲਬਾਕਸ ਹੈ ਜੋ ਸਾਂਖੇਕੀ ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖ ਕੇ ਵਿਕਸਿਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਸ ਵਿੱਚ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦਾ ਵੱਡਾ ਰਿਪੋਜ਼ਟਰੀ (CRAN) ਸ਼ਾਮਲ ਹੈ, ਜਿਸ ਨਾਲ ਇਹ ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਇੱਕ ਚੰਗਾ ਚੋਣ ਬਣ ਜਾਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, R ਇੱਕ ਜਨਰਲ-ਪਰਪਜ਼ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਨਹੀਂ ਹੈ, ਅਤੇ ਡਾਟਾ ਸਾਇੰਸ ਡੋਮੇਨ ਤੋਂ ਬਾਹਰ ਕਦਾਚਿਤ ਹੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
* **[Julia](https://julialang.org/)** ਇੱਕ ਹੋਰ ਭਾਸ਼ਾ ਹੈ ਜੋ ਖਾਸ ਤੌਰ 'ਤੇ ਡਾਟਾ ਸਾਇੰਸ ਲਈ ਵਿਕਸਿਤ ਕੀਤੀ ਗਈ ਹੈ। ਇਹ ਪਾਇਥਨ ਨਾਲੋਂ ਬਿਹਤਰ ਪ੍ਰਦਰਸ਼ਨ ਦੇਣ ਲਈ ਤਿਆਰ ਕੀਤੀ ਗਈ ਹੈ, ਜਿਸ ਨਾਲ ਇਹ ਵਿਗਿਆਨਕ ਪ੍ਰਯੋਗਾਂ ਲਈ ਇੱਕ ਸ਼ਾਨਦਾਰ ਸੰਦ ਬਣ ਜਾਂਦਾ ਹੈ।
* **[ਪਾਇਥਨ](https://www.python.org/)**, ਇੱਕ ਜਨਰਲ-ਪਰਪਜ਼ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ, ਜੋ ਅਕਸਰ ਇਸਦੀ ਸਧਾਰਨਤਾ ਦੇ ਕਾਰਨ ਸ਼ੁਰੂਆਤ ਕਰਨ ਵਾਲਿਆਂ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਕਲਪ ਮੰਨੀ ਜਾਂਦੀ ਹੈ। ਪਾਇਥਨ ਵਿੱਚ ਕਈ ਵਾਧੂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਕਈ ਵਿਆਵਹਾਰਿਕ ਸਮੱਸਿਆਵਾਂ ਦਾ ਹੱਲ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ZIP ਆਰਕਾਈਵ ਤੋਂ ਤੁਹਾਡਾ ਡਾਟਾ ਕੱਢਣਾ, ਜਾਂ ਤਸਵੀਰ ਨੂੰ ਗ੍ਰੇਸਕੇਲ ਵਿੱਚ ਬਦਲਣਾ। ਡਾਟਾ ਸਾਇੰਸ ਤੋਂ ਇਲਾਵਾ, ਪਾਇਥਨ ਅਕਸਰ ਵੈੱਬ ਵਿਕਾਸ ਲਈ ਵੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
* **[R](https://www.r-project.org/)** ਇੱਕ ਪਰੰਪਰਾਗਤ ਟੂਲਬਾਕਸ ਹੈ ਜੋ ਅੰਕੜੇਵਾਰ ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖ ਕੇ ਵਿਕਸਿਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਸ ਵਿੱਚ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦਾ ਵੱਡਾ ਸੰਗ੍ਰਹਿ (CRAN) ਸ਼ਾਮਲ ਹੈ, ਜਿਸ ਕਰਕੇ ਇਹ ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਇੱਕ ਚੰਗਾ ਚੋਣ ਹੈ। ਹਾਲਾਂਕਿ, R ਇੱਕ ਜਨਰਲ-ਪਰਪਜ਼ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਨਹੀਂ ਹੈ, ਅਤੇ ਡਾਟਾ ਸਾਇੰਸ ਖੇਤਰ ਤੋਂ ਬਾਹਰ ਕਦਾਚਿਤ ਹੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
* **[ਜੂਲੀਆ](https://julialang.org/)** ਇੱਕ ਹੋਰ ਭਾਸ਼ਾ ਹੈ ਜੋ ਖਾਸ ਤੌਰ 'ਤੇ ਡਾਟਾ ਸਾਇੰਸ ਲਈ ਵਿਕਸਿਤ ਕੀਤੀ ਗਈ ਹੈ। ਇਹ ਪਾਇਥਨ ਨਾਲੋਂ ਬਿਹਤਰ ਪ੍ਰਦਰਸ਼ਨ ਦੇਣ ਲਈ ਤਿਆਰ ਕੀਤੀ ਗਈ ਹੈ, ਜਿਸ ਕਰਕੇ ਇਹ ਵਿਗਿਆਨਕ ਪ੍ਰਯੋਗਾਂ ਲਈ ਇੱਕ ਸ਼ਾਨਦਾਰ ਸਾਧਨ ਹੈ।
ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਸਧਾਰਨ ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਪਾਇਥਨ ਦੀ ਵਰਤੋਂ 'ਤੇ ਧਿਆਨ ਦੇਵਾਂਗੇ। ਅਸੀਂ ਭਾਸ਼ਾ ਨਾਲ ਮੂਲ ਜਾਣੂ ਹੋਣ ਦੀ ਧਾਰਨਾ ਕਰਦੇ ਹਾਂ। ਜੇ ਤੁਸੀਂ ਪਾਇਥਨ ਦਾ ਡੂੰਘਾ ਦੌਰਾ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਹੇਠ ਲਿਖੇ ਸਰੋਤਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਨੂੰ ਦੇਖ ਸਕਦੇ ਹੋ:
ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਸਧਾਰਨ ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਪਾਇਥਨ ਦੀ ਵਰਤੋਂ 'ਤੇ ਧਿਆਨ ਦੇਵਾਂਗੇ। ਅਸੀਂ ਭਾਸ਼ਾ ਨਾਲ ਮੂਲ ਜਾਣੂ ਹੋਣ ਦੀ ਧਾਰਨਾ ਕਰਦੇ ਹਾਂ। ਜੇ ਤੁਸੀਂ ਪਾਇਥਨ ਦਾ ਗਹਿਰਾ ਦੌਰਾ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਸਾਧਨਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਨੂੰ ਦੇਖ ਸਕਦੇ ਹੋ:
* [Turtle Graphics ਅਤੇ Fractals ਨਾਲ ਮਜ਼ੇਦਾਰ ਤਰੀਕੇ ਨਾਲ ਪਾਇਥਨ ਸਿੱਖੋ](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) 'ਤੇ ਲਰਨਿੰਗ ਪਾ
* [ਪਾਇਥਨ ਨਾਲ ਆਪਣੇ ਪਹਿਲੇ ਕਦਮ ਚੁੱਕੋ](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/) ਅਕਸਰ ਕਈ ਆਮ ਕੰਮਾਂ ਲਈ ਪਾਇਥਨ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਉਪਯੋਗ ਕੋਡ ਨਮੂਨੇ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ।
> **ਸਭ ਤੋਂ ਉਪਯੋਗ ਸਲਾਹ**। ਜਦੋਂ ਤੁਹਾਨੂੰ ਡਾਟਾ 'ਤੇ ਕੋਈ ਖਾਸ ਕਾਰਵਾਈ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇ ਜਿਸ ਬਾਰੇ ਤੁਹਾਨੂੰ ਪਤਾ ਨਹੀਂ ਕਿ ਕਿਵੇਂ ਕਰਨਾ ਹੈ, ਤਾਂ ਇਸ ਨੂੰ ਇੰਟਰਨੈਟ 'ਤੇ ਖੋਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। [Stackoverflow](https://stackoverflow.com/) ਅਕਸਰ ਕਈ ਆਮ ਕੰਮਾਂ ਲਈ ਪਾਇਥਨ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਉਪਯੋਗ ਕੋਡ ਨਮੂਨੇ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ।
## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## ਟੇਬੂਲਰ ਡਾਟਾ ਅਤੇ ਡਾਟਾਫਰੇਮ
## ਟੇਬੂਲਰ ਡਾਟਾ ਅਤੇ ਡਾਟਾਫਰੇਮ
ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਟੇਬੂਲਰ ਡਾਟਾ ਨਾਲ ਮਿਲ ਚੁੱਕੇ ਹੋ ਜਦੋਂ ਅਸੀਂ ਰਿਲੇਸ਼ਨਲ ਡਾਟਾਬੇਸਾਂ ਬਾਰੇ ਗੱਲ ਕੀਤੀ ਸੀ। ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਬਹੁਤ ਸਾਰਾ ਡਾਟਾ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਇਹ ਕਈ ਵੱਖ-ਵੱਖ ਜੁੜੇ ਹੋਏ ਟੇਬਲਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਸ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ SQL ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਬਿਲਕੁਲ ਸਹੀ ਹੁੰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਕਈ ਕੇਸਾਂ ਵਿੱਚ ਜਦੋਂ ਸਾਡੇ ਕੋਲ ਡਾਟਾ ਦੀ ਇੱਕ ਸਧਾਰਨ ਟੇਬਲ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਸਾਨੂੰ ਇਸ ਡਾਟਾ ਬਾਰੇ ਕੁਝ **ਸਮਝ** ਜਾਂ **ਅੰਦਰੂਨੀ ਜਾਣਕਾਰੀ** ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਵੰਡ, ਮੁੱਲਾਂ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧ, ਆਦਿ। ਡਾਟਾ ਸਾਇੰਸ ਵਿੱਚ, ਕਈ ਕੇਸਾਂ ਵਿੱਚ ਸਾਨੂੰ ਮੂਲ ਡਾਟਾ ਦੇ ਕੁਝ ਰੂਪਾਂਤਰਨ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਸਦੇ ਬਾਅਦ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਹੁੰਦੀ ਹੈ। ਇਹ ਦੋਵੇਂ ਕਦਮ ਪਾਇਥਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਸਾਨੀ ਨਾਲ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ।
ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਟੇਬੂਲਰ ਡਾਟਾ ਨਾਲ ਮਿਲ ਚੁੱਕੇ ਹੋ ਜਦੋਂ ਅਸੀਂ ਰਿਲੇਸ਼ਨਲ ਡਾਟਾਬੇਸਾਂ ਬਾਰੇ ਗੱਲ ਕੀਤੀ ਸੀ। ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਬਹੁਤ ਸਾਰਾ ਡਾਟਾ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਇਹ ਕਈ ਵੱਖ-ਵੱਖ ਜੁੜੇ ਹੋਏ ਟੇਬਲਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਸ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ SQL ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਬਿਲਕੁਲ ਸਹੀ ਹੁੰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਕਈ ਮਾਮਲਿਆਂ ਵਿੱਚ ਜਦੋਂ ਸਾਡੇ ਕੋਲ ਡਾਟਾ ਦੀ ਇੱਕ ਸਧਾਰਨ ਟੇਬਲ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਸਾਨੂੰ ਇਸ ਡਾਟਾ ਬਾਰੇ ਕੁਝ **ਸਮਝ** ਜਾਂ **ਅੰਦਰੂਨੀ ਜਾਣਕਾਰੀ** ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਵੰਡ, ਮੁੱਲਾਂ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧ, ਆਦਿ। ਡਾਟਾ ਸਾਇੰਸ ਵਿੱਚ, ਕਈ ਮਾਮਲਿਆਂ ਵਿੱਚ ਸਾਨੂੰ ਮੂਲ ਡਾਟਾ ਦੇ ਕੁਝ ਰੂਪਾਂਤਰਨ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਸ ਤੋਂ ਬਾਅਦ ਵਿਜ਼ੁਅਲਾਈਜ਼ੇਸ਼ਨ ਹੁੰਦੀ ਹੈ। ਇਹ ਦੋਵੇਂ ਕਦਮ ਪਾਇਥਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਸਾਨੀ ਨਾਲ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ।
ਪਾਇਥਨ ਵਿੱਚ ਟੇਬੂਲਰ ਡਾਟਾ ਨਾਲ ਨਿਪਟਣ ਵਿੱਚ ਮਦਦ ਕਰਨ ਵਾਲੀਆਂ ਦੋ ਸਭ ਤੋਂ ਉਪਯੋਗ ਲਾਇਬ੍ਰੇਰੀਆਂ ਹਨ:
* **[Pandas](https://pandas.pydata.org/)** ਤੁਹਾਨੂੰ **ਡਾਟਾਫਰੇਮ** ਮੈਨੇਜ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਜੋ ਰਿਲੇਸ਼ਨਲ ਟੇਬਲਾਂ ਦੇ ਸਮਾਨ ਹਨ। ਤੁਸੀਂ ਨਾਮਿਤ ਕਾਲਮ ਰੱਖ ਸਕਦੇ ਹੋ, ਅਤੇ ਰੋਜ਼, ਕਾਲਮ ਅਤੇ ਡਾਟਾਫਰੇਮ 'ਤੇ ਵੱਖ-ਵੱਖ ਕਾਰਵਾਈਆਂ ਕਰ ਸਕਦੇ ਹੋ।
* **[Numpy](https://numpy.org/)** **ਟੈਂਸਰ**, ਜ਼ਿਆਦਾ-ਮਾਤਰਾ ਵਾਲੇ **ਐਰੇ** ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਹੈ। ਐਰੇ ਵਿੱਚ ਇੱਕੋ ਜਿਹੇ ਅਧਾਰਤ ਕਿਸਮ ਦੇ ਮੁੱਲ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਇਹ ਡਾਟਾਫਰੇਮ ਨਾਲੋਂ ਸਧਾਰਨ ਹੁੰਦਾ ਹੈ, ਪਰ ਇਹ ਵਧੇਰੇ ਗਣਿਤੀ ਕਾਰਵਾਈਆਂ ਪੇਸ਼ ਕਰਦਾ ਹੈ, ਅਤੇ ਘੱਟ ਓਵਰਹੈੱਡ ਪੈਦਾ ਕਰਦਾ ਹੈ।
* **[Pandas](https://pandas.pydata.org/)** ਤੁਹਾਨੂੰ **ਡਾਟਾਫ੍ਰੇਮ** ਮੋੜਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਜੋ ਰਿਲੇਸ਼ਨਲ ਟੇਬਲਾਂ ਦੇ ਸਮਾਨ ਹਨ। ਤੁਸੀਂ ਨਾਮਿਤ ਕਾਲਮ ਰੱਖ ਸਕਦੇ ਹੋ, ਅਤੇ ਪੰਗਤਾਂ, ਕਾਲਮਾਂ ਅਤੇ ਡਾਟਾਫ੍ਰੇਮਾਂ 'ਤੇ ਵੱਖ-ਵੱਖ ਕਾਰਵਾਈਆਂ ਕਰ ਸਕਦੇ ਹੋ।
* **[Numpy](https://numpy.org/)** **ਟੈਂਸਰ**, ਜ਼ਿਆਦਾ-ਮਾਤਰਾ **ਐਰੇ** ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਹੈ। ਐਰੇ ਵਿੱਚ ਇੱਕੋ ਜਿਹੇ ਅਧਾਰਤ ਕਿਸਮ ਦੇ ਮੁੱਲ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਇਹ ਡਾਟਾਫਰੇਮ ਨਾਲੋਂ ਸਧਾਰਨ ਹੁੰਦਾ ਹੈ, ਪਰ ਇਹ ਵਧੇਰੇ ਗਣਿਤੀ ਕਾਰਵਾਈਆਂ ਪੇਸ਼ ਕਰਦਾ ਹੈ, ਅਤੇ ਘੱਟ ਓਵਰਹੈੱਡ ਬਣਾਉਂਦਾ ਹੈ।
ਇਸ ਤੋਂ ਇਲਾਵਾ ਕੁਝ ਹੋਰ ਲਾਇਬ੍ਰੇਰੀਆਂ ਹਨ ਜਿਨ੍ਹਾਂ ਬਾਰੇ ਤੁਹਾਨੂੰ ਪਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ:
* **[Matplotlib](https://matplotlib.org/)** ਡਾਟਾ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਅਤੇ ਗ੍ਰਾਫ ਪਲਾਟ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਣ ਵਾਲੀ ਲਾਇਬ੍ਰੇਰੀ ਹੈ
* **[SciPy](https://www.scipy.org/)** ਕੁਝ ਵਾਧੂ ਵਿਗਿਆਨਕ ਫੰਕਸ਼ਨਾਂ ਵਾਲੀ ਲਾਇਬ੍ਰੇਰੀ ਹੈ। ਅਸੀਂ ਪਹਿਲਾਂ ਹੀ ਸੰਭਾਵਨਾ ਅਤੇ ਸਾਂਖੇਕੀ ਬਾਰੇ ਗੱਲ ਕਰਦੇ ਹੋਏ ਇਸ ਲਾਇਬ੍ਰੇਰੀ ਨਾਲ ਮਿਲ ਚੁੱਕੇ ਹਾਂ
* **[Matplotlib](https://matplotlib.org/)** ਡਾਟਾ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਅਤੇ ਗ੍ਰਾਫ ਪਲਾਟ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਣ ਵਾਲੀ ਲਾਇਬ੍ਰੇਰੀ ਹੈ
* **[SciPy](https://www.scipy.org/)** ਕੁਝ ਵਾਧੂ ਵਿਗਿਆਨਕ ਫੰਕਸ਼ਨਾਂ ਵਾਲੀ ਲਾਇਬ੍ਰੇਰੀ ਹੈ। ਅਸੀਂ ਪਹਿਲਾਂ ਹੀ ਸੰਭਾਵਨਾ ਅਤੇ ਅੰਕੜੇਵਾਰਤਾ ਬਾਰੇ ਗੱਲ ਕਰਦੇ ਹੋਏ ਇਸ ਲਾਇਬ੍ਰੇਰੀ ਨਾਲ ਮਿਲ ਚੁੱਕੇ ਹਾਂ
ਇਹاں ਇੱਕ ਕੋਡ ਦਾ ਟੁਕੜਾ ਹੈ ਜੋ ਤੁਸੀਂ ਆਮ ਤੌਰ 'ਤੇ ਆਪਣੇ ਪਾਇਥਨ ਪ੍ਰੋਗਰਾਮ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਉਹਨਾਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਵਰਤਦੇ ਹੋ:
ਇਹ ਹੈ ਇੱਕ ਕੋਡ ਦਾ ਟੁਕੜਾ ਜੋ ਤੁਸੀਂ ਆਮ ਤੌਰ 'ਤੇ ਆਪਣੇ ਪਾਇਥਨ ਪ੍ਰੋਗਰਾਮ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਉਹਨਾਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਵਰਤਦੇ ਹੋ:
```python
import numpy as np
import pandas as pd
@ -59,11 +59,11 @@ Pandas ਕੁਝ ਮੂਲ ਧਾਰਨਾਵਾਂ 'ਤੇ ਕੇਂਦਰਿ
### ਸਿਰੀਜ਼
**ਸਿਰੀਜ਼** ਮੁੱਲਾਂ ਦੀ ਇੱਕ ਲੜੀ ਹੈ, ਜੋ ਲਿਸਟ ਜਾਂ numpy ਐਰੇ ਦੇ ਸਮਾਨ ਹੈ। ਮੁੱਖ ਅੰਤਰ ਇਹ ਹੈ ਕਿ ਸਿਰੀਜ਼ ਵਿੱਚ ਇੱਕ **ਇੰਡੈਕਸ** ਵੀ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਜਦੋਂ ਅਸੀਂ ਸਿਰੀਜ਼ 'ਤੇ ਕਾਰਵਾਈ ਕਰਦੇ ਹਾਂ (ਜਿਵੇਂ ਕਿ ਉਹਨਾਂ ਨੂੰ ਜੋੜਨਾ), ਤਾਂ ਇੰਡੈਕਸ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ। ਇੰਡੈਕਸ ਸਧਾਰਨ ਪੰਗਤ ਨੰਬਰ (ਜਦੋਂ ਸਿਰੀਜ਼ ਨੂੰ ਲਿਸਟ ਜਾਂ ਐਰੇ ਤੋਂ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਇਹ ਡਿਫਾਲਟ ਦੁਆਰਾ ਵਰਤਿਆ ਜਾਂਦਾ ਇੰਡੈਕਸ ਹੈ) ਜਿੰਨਾ ਸਧਾਰਨ ਹੋ ਸਕਦਾ ਹੈ, ਜਾਂ ਇਸ ਵਿੱਚ ਜਟਿਲ ਬਣਤਰ ਹੋ ਸਕਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਮਿਤੀ ਅੰਤਰਾਲ।
**ਸਿਰੀਜ਼** ਮੁੱਲਾਂ ਦੀ ਇੱਕ ਲੜੀ ਹੈ, ਜੋ ਸੂਚੀ ਜਾਂ numpy ਐਰੇ ਦੇ ਸਮਾਨ ਹੈ। ਮੁੱਖ ਅੰਤਰ ਇਹ ਹੈ ਕਿ ਸਿਰੀਜ਼ ਵਿੱਚ ਇੱਕ **ਸੂਚਕ** ਵੀ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਜਦੋਂ ਅਸੀਂ ਸਿਰੀਜ਼ 'ਤੇ ਕਾਰਵਾਈ ਕਰਦੇ ਹਾਂ (ਜਿਵੇਂ ਕਿ ਉਹਨਾਂ ਨੂੰ ਜੋੜਨਾ), ਤਾਂ ਸੂਚਕ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ। ਸੂਚਕ ਸਧਾਰਨ ਪੰਗਤ ਨੰਬਰ (ਜਦੋਂ ਸੂਚੀ ਜਾਂ ਐਰੇ ਤੋਂ ਸਿਰੀਜ਼ ਬਣਾਈ ਜਾਂਦੀ ਹੈ ਤਾਂ ਇਹ ਡਿਫਾਲਟ ਸੂਚਕ ਹੁੰਦਾ ਹੈ) ਜਿਵੇਂ ਸਧਾਰਨ ਹੋ ਸਕਦਾ ਹੈ, ਜਾਂ ਇਸ ਵਿੱਚ ਜਟਿਲ ਬਣਤਰ ਹੋ ਸਕਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਮਿਤੀ ਅੰਤਰਾਲ।
> **ਨੋਟ**: ਸਾਥੀ ਨੋਟਬੁੱਕ [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) ਵਿੱਚ ਕੁਝ ਸ਼ੁਰੂਆਤੀ Pandas ਕੋਡ ਸ਼ਾਮਲ ਹੈ। ਅਸੀਂ ਇੱਥੇ ਕੁਝ ਉਦਾਹਰਣ outline ਕਰਦੇ ਹਾਂ, ਅਤੇ ਤੁਸੀਂ ਪੂਰੀ ਨੋਟਬੁੱਕ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਸਵਾਗਤ ਕਰਦੇ ਹੋ।
> **ਨੋਟ**: Pandas ਦੇ ਕੁਝ ਸ਼ੁਰੂਆਤੀ ਕੋਡ ਸਾਥੀ ਨੋਟਬੁੱਕ [`notebook.ipynb`](notebook.ipynb) ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ। ਅਸੀਂ ਇੱਥੇ ਕੁਝ ਉਦਾਹਰਣ outline ਕਰਦੇ ਹਾਂ, ਅਤੇ ਤੁਸੀਂ ਪੂਰੀ ਨੋਟਬੁੱਕ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਸਵਾਗਤ ਕਰਦੇ ਹੋ।
ਇੱਕ ਉਦਾਹਰਣ 'ਤੇ ਵਿਚਾਰ ਕਰੋ: ਅਸੀਂ ਆਪਣੇ ਆਈਸ-ਕ੍ਰੀਮ ਸਪਾਟ ਦੀ ਵਿਕਰੀ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਆਓ ਕੁਝ ਸਮਾਂ ਅੰਤਰਾਲ ਲਈ ਵਿਕਰੀ ਦੇ ਨੰਬਰਾਂ ਦੀ ਇੱਕ ਸਿਰੀਜ਼ ਬਣਾਈਏ (ਹਰ ਦਿਨ ਵੇਚੇ ਗਏ ਆਈਟਮਾਂ ਦੀ ਗਿਣਤੀ):
ਇੱਕ ਉਦਾਹਰਣ 'ਤੇ ਵਿਚਾਰ ਕਰੋ: ਅਸੀਂ ਆਪਣੇ ਆਈਸ-ਕ੍ਰੀਮ ਸਪਾਟ ਦੀ ਵਿਕਰੀ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਆਓ ਕੁਝ ਸਮੇਂ ਦੀ ਮਿਆਦ ਲਈ ਵਿਕਰੀ ਦੇ ਨੰਬਰਾਂ ਦੀ ਇੱਕ ਸਿਰੀਜ਼ ਬਣਾਈਏ (ਹਰ ਦਿਨ ਵੇਚੇ ਗਏ ਆਈਟਮਾਂ ਦੀ ਗਿਣਤੀ):
```python
start_date = "Jan 1, 2020"
@ -73,9 +73,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![ਟਾਈਮ ਸਿਰੀਜ਼ ਪਲਾਟ](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![ਟਾਈਮ ਸਿਰੀਜ਼ ਪਲਾਟ](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.pa.png)
ਹੁਣ ਮੰਨ ਲਓ ਕਿ ਹਰ ਹਫ਼ਤੇ ਅਸੀਂ ਦੋਸਤਾਂ ਲਈ ਇੱਕ ਪਾਰਟੀ ਦਾ ਆਯੋਜਨ ਕਰਦੇ ਹਾਂ, ਅਤੇ ਪਾਰਟੀ ਲਈ 10 ਪੈਕ ਆਈਸ-ਕ੍ਰੀਮ ਵਾਧੂ ਲੈਂਦੇ ਹਾਂ। ਅਸੀਂ ਇਹ ਦਿਖਾਉਣ ਲਈ ਹਫ਼ਤੇ ਦੁਆਰਾ ਇੰਡੈਕਸ ਕੀਤੀ ਹੋਈ ਇੱਕ ਹੋਰ ਸਿਰੀਜ਼ ਬਣਾਉਣ ਲਈ ਸਕਦੇ ਹਾਂ:
ਹੁਣ ਮੰਨ ਲਓ ਕਿ ਹਰ ਹਫ਼ਤੇ ਅਸੀਂ ਦੋਸਤਾਂ ਲਈ ਇੱਕ ਪਾਰਟੀ ਦਾ ਆਯੋਜਨ ਕਰਦੇ ਹਾਂ, ਅਤੇ ਪਾਰਟੀ ਲਈ 10 ਪੈਕ ਆਈਸ-ਕ੍ਰੀਮ ਵਾਧੂ ਲੈਂਦੇ ਹਾਂ। ਅਸੀਂ ਹਫ਼ਤੇ ਦੇ ਸੂਚਕ ਦੁਆਰਾ ਇੱਕ ਹੋਰ ਸਿਰੀਜ਼ ਬਣਾਉਣ ਲਈ ਇਹ ਦਿਖਾ ਸਕਦੇ ਹਾਂ:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -84,26 +84,26 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![ਟਾਈਮ ਸਿਰੀਜ਼ ਪਲਾਟ](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![ਟਾਈਮ ਸਿਰੀਜ਼ ਪਲਾਟ](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.pa.png)
> **ਨੋਟ** ਕਿ ਅਸੀਂ ਸਧਾਰਨ syntax `total_items+additional_items` ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਰਹੇ। ਜੇ ਅਸੀਂ ਕਰਦੇ, ਤਾਂ ਸਾਨੂੰ resulting ਸਿਰੀਜ਼ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ `NaN` (*Not a Number*) ਮੁੱਲ ਮਿਲਦੇ। ਇਹ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ `additional_items` ਸਿਰੀਜ਼ ਵਿੱਚ ਕੁਝ ਇੰਡੈਕਸ ਪਾਇੰਟਾਂ ਲਈ ਮੁੱਲ ਗੁੰਮ ਹਨ, ਅਤੇ `Nan` ਨੂੰ ਕਿਸੇ ਵੀ ਚੀਜ਼ ਨਾਲ ਜੋੜਨਾ `NaN` ਦੇ ਨਤੀਜੇ ਵਿੱਚ ਹੁੰਦਾ ਹੈ। ਇਸ ਲਈ ਅਸੀਂ ਜੋੜਦੇ ਸਮੇਂ `fill_value` ਪੈਰਾਮੀਟਰ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
> **ਨੋਟ** ਕਿ ਅਸੀਂ ਸਧਾਰਨ syntax `total_items+additional_items` ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਰਹੇ। ਜੇ ਅਸੀਂ ਕਰਦੇ, ਤਾਂ ਸਾਨੂੰ resulting ਸਿਰੀਜ਼ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ `NaN` (*Not a Number*) ਮੁੱਲ ਮਿਲਦੇ। ਇਹ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ `additional_items` ਸਿਰੀਜ਼ ਵਿੱਚ ਕੁਝ ਸੂਚਕ ਬਿੰਦੂਆਂ ਲਈ ਮੁੱਲ ਗੁੰਮ ਹਨ, ਅਤੇ `Nan` ਨੂੰ ਕਿਸੇ ਵੀ ਚੀਜ਼ ਵਿੱਚ ਜੋੜਨਾ `NaN` ਦੇ ਨਤੀਜੇ ਵਿੱਚ ਹੁੰਦਾ ਹੈ। ਇਸ ਲਈ ਅਸੀਂ ਜੋੜਦੇ ਸਮੇਂ `fill_value` ਪੈਰਾਮੀਟਰ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਟਾਈਮ ਸਿਰੀਜ਼ ਨਾਲ, ਅਸੀਂ ਵੱਖ-ਵੱਖ ਸਮਾਂ ਅੰਤਰਾਲਾਂ ਨਾਲ ਸਿਰੀਜ਼ ਨੂੰ **resample** ਵੀ ਕਰ ਸਕਦੇ ਹਾਂ। ਉਦਾਹਰਣ ਲਈ, ਮੰਨ ਲਓ ਕਿ ਅਸੀਂ ਮਹੀਨਾਵਾਰ ਵਿਕਰੀ ਦੀ ਮੀਨ ਮਾਤਰਾ ਦੀ ਗਣਨਾ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹਾਂ। ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ:
ਟਾਈਮ ਸਿਰੀਜ਼ ਨਾਲ, ਅਸੀਂ ਵੱਖ-ਵੱਖ ਸਮੇਂ ਦੇ ਅੰਤਰਾਲਾਂ ਨਾਲ ਸਿਰੀਜ਼ ਨੂੰ **resample** ਵੀ ਕਰ ਸਕਦੇ ਹਾਂ। ਉਦਾਹਰਣ ਲਈ, ਮੰਨ ਲਓ ਕਿ ਅਸੀਂ ਮਹੀਨਾਵਾਰ mean ਵਿਕਰੀ ਦੀ ਮਾਤਰਾ ਗਣਨਾ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![ਮਹੀਨਾਵਾਰ ਟਾਈਮ ਸਿਰੀਜ਼ ਐਵਰੇਜ](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![ਮਹੀਨਾਵਾਰ ਟਾਈਮ ਸਿਰੀਜ਼ ਐਵਰੇਜ](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.pa.png)
### ਡਾਟਾਫਰੇਮ
### ਡਾਟਾਫਰੇਮ
ਡਾਟਾਫਰੇਮ ਅਸਲ ਵਿੱਚ ਇੱਕੋ ਜਿਹੇ ਇੰਡੈਕਸ ਵਾਲੀਆਂ ਸਿਰੀਜ਼ਾਂ ਦਾ ਇੱਕ ਸੰਗ੍ਰਹਿ ਹੈ। ਅਸੀਂ ਕਈ ਸਿਰੀਜ਼ਾਂ ਨੂੰ ਇਕੱਠੇ ਕਰਕੇ ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਜੋੜ ਸਕਦੇ ਹਾਂ:
ਡਾਟਾਫਰੇਮ ਅਸਲ ਵਿੱਚ ਇੱਕੋ ਸੂਚਕ ਵਾਲੀਆਂ ਕਈ ਸਿਰੀਜ਼ਾਂ ਦਾ ਸੰਗ੍ਰਹਿ ਹੈ। ਅਸੀਂ ਕਈ ਸਿਰੀਜ਼ਾਂ ਨੂੰ ਇਕੱਠੇ ਕਰਕੇ ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਜੋੜ ਸਕਦੇ ਹਾਂ:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਇੱਕ ਹੋਰਿਜ਼ਾਂਟਲ ਟੇਬਲ ਬਣਾਏਗਾ:
ਇਹ ਹੇਠਾਂ ਦਿੱਤੇ ਜਿਵੇਂ ਇੱਕ ਹੋਰਿਜ਼ਾਂਟਲ ਟੇਬਲ ਬਣਾਏਗਾ:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
@ -113,7 +113,7 @@ df = pd.DataFrame([a,b])
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
ਇਹ ਸਾਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਇੱਕ ਟੇਬਲ ਦੇਵੇਗਾ:
ਇਹ ਸਾਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਜਿਵੇਂ ਇੱਕ ਟੇਬਲ ਦੇਵੇਗਾ:
| | A | B |
| --- | --- | ------ |
@ -127,80 +127,78 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**ਨੋਟ** ਕਿ ਅਸੀਂ ਪਿਛਲ ਟੇਬਲ ਨੂੰ ਟ੍ਰਾਂਸਪੋਜ਼ ਕਰਕੇ ਵੀ ਇਹ ਟੇਬਲ ਲੇਆਉਟ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਲਿਖ ਕੇ
**ਨੋਟ** ਕਿ ਅਸੀਂ ਪਿਛਲ ਟੇਬਲ ਨੂੰ ਟ੍ਰਾਂਸਪੋਜ਼ ਕਰਕੇ ਵੀ ਇਹ ਟੇਬਲ ਲੇਆਉਟ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਲਿਖ ਕੇ
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
ਇੱਥੇ `.T` ਦਾ ਮਤਲਬ ਹੈ ਡਾਟਾਫਰੇਮ ਨੂੰ ਟ੍ਰਾਂਸਪੋਜ਼ ਕਰਨ ਦੀ ਕਾਰਵਾਈ, ਯਾਨੀ ਰੋਜ਼ ਅਤੇ ਕਾਲਮਾਂ ਨੂੰ ਬਦਲਣਾ, ਅਤੇ `rename` ਕਾਰਵਾਈ ਸਾਨੂੰ ਪਿਛਲੇ ਉਦਾਹਰਣ ਨਾਲ ਮੇਲ ਖਾਣ ਲਈ ਕਾਲਮਾਂ ਦੇ ਨਾਮ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ।
ਇੱਥੇ `.T` ਦਾ ਮਤਲਬ ਹੈ ਡਾਟਾਫਰੇਮ ਨੂੰ ਟ੍ਰਾਂਸਪੋਜ਼ ਕਰਨ ਦੀ ਕਾਰਵਾਈ, ਯਾਨੀ ਪੰਗਤਾਂ ਅਤੇ ਕਾਲਮਾਂ ਨੂੰ ਬਦਲਣਾ, ਅਤੇ `rename` ਕਾਰਵਾਈ ਸਾਨੂੰ ਕਾਲਮਾਂ ਨੂੰ ਪਿਛਲੇ ਉਦਾਹਰਣ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਨਾਮ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ।
ਇੱਥੇ ਕੁਝ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਕਾਰਵਾਈਆਂ ਹਨ ਜੋ ਅਸੀਂ ਡਾਟਾਫਰੇਮ 'ਤੇ ਕਰ ਸਕਦੇ ਹਾਂ:
ਇੱਥੇ ਕੁਝ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਕਾਰਵਾਈਆਂ ਹਨ ਜੋ ਅਸੀਂ ਡਾਟਾਫਰੇਮ 'ਤੇ ਕਰ ਸਕਦੇ ਹਾਂ:
**ਕਾਲਮ ਚੋਣ**। ਅਸੀਂ `df['A']` ਲਿਖ ਕੇ ਵਿਅਕਤੀਗਤ ਕਾਲਮਾਂ ਦੀ ਚੋਣ ਕਰ ਸਕਦੇ ਹਾਂ - ਇਹ ਕਾਰਵਾਈ ਇੱਕ ਸਿਰੀਜ਼ ਨੂੰ ਵਾਪਸ ਕਰਦੀ ਹੈ। ਅਸੀਂ `df[['B','A']]` ਲਿਖ ਕੇ ਕਾਲਮਾਂ ਦੇ ਇੱਕ subset ਨੂੰ ਇੱਕ ਹੋਰ ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਚੁਣ ਸਕਦੇ ਹਾਂ - ਇਹ ਇੱਕ ਹੋਰ ਡਾਟਾਫਰੇਮ ਵਾਪਸ ਕਰਦਾ ਹੈ।
**ਕਾਲਮ ਚੋਣ**। ਅਸੀਂ `df['A']` ਲਿਖ ਕੇ ਵਿਅਕਤੀਗਤ ਕਾਲਮ ਚੁਣ ਸਕਦੇ ਹਾਂ - ਇਹ ਕਾਰਵਾਈ ਇੱਕ ਸਿਰੀਜ਼ ਨੂੰ ਵਾਪਸ ਕਰਦੀ ਹੈ। ਅਸੀਂ `df[['B','A']]` ਲਿਖ ਕੇ ਕਾਲਮਾਂ ਦੇ ਇੱਕ subset ਨੂੰ ਇੱਕ ਹੋਰ ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਚੁਣ ਸਕਦੇ ਹਾਂ - ਇਹ ਇੱਕ ਹੋਰ ਡਾਟਾਫਰੇਮ ਵਾਪਸ ਕਰਦਾ ਹੈ।
**ਕੇਵਲ ਕੁਝ ਰੋਜ਼ ਨੂੰ ਫਿਲਟਰ ਕਰਨਾ**। ਉਦਾਹਰਣ ਲਈ, ਕੇਵਲ ਉਹ ਰੋਜ਼ ਛੱਡਣ ਲਈ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਕਾਲਮ `A` 5 ਤੋਂ ਵੱਧ ਹੈ, ਅਸੀਂ `df[df['A']>5]` ਲਿਖ ਸਕਦੇ ਹਾਂ।
> **ਨੋਟ**: ਫਿਲਟਰਿੰਗ ਦਾ ਤਰੀ
ਸਾਨੂੰ ਵੇਖਿਆ ਕਿ Python ਦੇ objects ਤੋਂ Series ਅਤੇ DataFrames ਬਣਾਉਣਾ ਕਿੰਨਾ ਆਸਾਨ ਹੈ। ਹਾਲਾਂਕਿ, ਡਾਟਾ ਆਮ ਤੌਰ 'ਤੇ ਟੈਕਸਟ ਫਾਈਲ ਜਾਂ Excel ਟੇਬਲ ਦੇ ਰੂਪ ਵਿੱਚ ਆਉਂਦਾ ਹੈ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, Pandas ਸਾਨੂੰ ਡਿਸਕ ਤੋਂ ਡਾਟਾ ਲੋਡ ਕਰਨ ਦਾ ਸਧਾਰਨ ਤਰੀਕਾ ਦਿੰਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, CSV ਫਾਈਲ ਪੜ੍ਹਨਾ ਇਸ ਤਰ੍ਹਾਂ ਆਸਾਨ ਹੈ:
**ਕੇਵਲ ਕੁਝ ਪੰਗਤਾਂ ਨੂੰ ਫਿਲਟਰ ਕਰਨਾ**। ਉਦਾਹਰਣ ਲਈ, ਕੇਵਲ ਉਹ ਪੰਗਤਾਂ ਛੱਡਣ ਲਈ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਕਾਲਮ `A` 5 ਤੋਂ ਵੱਧ ਹੈ, ਅਸੀਂ ਲ
ਅਸੀਂ ਵੇਖਿਆ ਹੈ ਕਿ Python ਆਬਜੈਕਟਾਂ ਤੋਂ Series ਅਤੇ DataFrames ਬਣਾਉਣਾ ਕਿੰਨਾ ਆਸਾਨ ਹੈ। ਹਾਲਾਂਕਿ, ਡਾਟਾ ਆਮ ਤੌਰ 'ਤੇ ਟੈਕਸਟ ਫਾਈਲ ਜਾਂ Excel ਟੇਬਲ ਦੇ ਰੂਪ ਵਿੱਚ ਆਉਂਦਾ ਹੈ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, Pandas ਸਾਨੂੰ ਡਿਸਕ ਤੋਂ ਡਾਟਾ ਲੋਡ ਕਰਨ ਦਾ ਇੱਕ ਸਧਾਰਨ ਤਰੀਕਾ ਦਿੰਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, CSV ਫਾਈਲ ਪੜ੍ਹਨਾ ਇਸ ਤਰ੍ਹਾਂ ਆਸਾਨ ਹੈ:
```python
df = pd.read_csv('file.csv')
```
ਅਸੀਂ ਡਾਟਾ ਲੋਡ ਕਰਨ ਦੇ ਹੋਰ ਉਦਾਹਰਣ ਵੇਖਾਂਗੇ, ਜਿਸ ਵਿੱਚ ਬਾਹਰੀ ਵੈਬਸਾਈਟਾਂ ਤੋਂ ਡਾਟਾ ਲੈਣਾ ਵੀ ਸ਼ਾਮਲ ਹੈ, "Challenge" ਸੈਕਸ਼ਨ ਵਿੱਚ।
ਅਸੀਂ ਡਾਟਾ ਲੋਡ ਕਰਨ ਦੇ ਹੋਰ ਉਦਾਹਰਣ ਵੇਖਾਂਗੇ, ਜਿਸ ਵਿੱਚ ਬਾਹਰੀ ਵੈਬਸਾਈਟਾਂ ਤੋਂ ਡਾਟਾ ਲੈਣਾ ਸ਼ਾਮਲ ਹੈ, "Challenge" ਸੈਕਸ਼ਨ ਵਿੱਚ।
### ਪ੍ਰਿੰਟਿੰਗ ਅਤੇ ਪਲੌਟਿੰਗ
ਇੱਕ Data Scientist ਨੂੰ ਅਕਸਰ ਡਾਟਾ ਦੀ ਜਾਂਚ ਕਰਨੀ ਪੈਂਦੀ ਹੈ, ਇਸ ਲਈ ਇਸਨੂੰ ਵਿਜੁਅਲਾਈਜ਼ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਜਦੋਂ DataFrame ਵੱਡਾ ਹੁੰਦਾ ਹੈ, ਅਕਸਰ ਸਾਨੂੰ ਸਿਰਫ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਹੁੰਦਾ ਹੈ ਕਿ ਅਸੀਂ ਸਭ ਕੁਝ ਠੀਕ ਕਰ ਰਹੇ ਹਾਂ, ਪਹਿਲੀਆਂ ਕੁਝ ਲਾਈਨਾਂ ਪ੍ਰਿੰਟ ਕਰਕੇ। ਇਹ `df.head()` ਕਾਲ ਕਰਕੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਇਸਨੂੰ Jupyter Notebook ਤੋਂ ਚਲਾ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ DataFrame ਨੂੰ ਸੁੰਦਰ ਟੇਬਲਰ ਰੂਪ ਵਿੱਚ ਪ੍ਰਿੰਟ ਕਰੇਗਾ।
ਇੱਕ Data Scientist ਨੂੰ ਅਕਸਰ ਡਾਟਾ ਦੀ ਜਾਂਚ ਕਰਨੀ ਪੈਂਦੀ ਹੈ, ਇਸ ਲਈ ਇਸਨੂੰ ਵਿਜੁਅਲਾਈਜ਼ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਜਦੋਂ DataFrame ਵੱਡਾ ਹੁੰਦਾ ਹੈ, ਅਕਸਰ ਅਸੀਂ ਸਿਰਫ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਅਸੀਂ ਸਭ ਕੁਝ ਠੀਕ ਕਰ ਰਹੇ ਹਾਂ, ਪਹਿਲੀਆਂ ਕੁਝ ਲਾਈਨਾਂ ਪ੍ਰਿੰਟ ਕਰਕੇ। ਇਹ `df.head()` ਕਾਲ ਕਰਕੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਇਸਨੂੰ Jupyter Notebook ਤੋਂ ਚਲਾ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ DataFrame ਨੂੰ ਇੱਕ ਸੁੰਦਰ ਟੇਬਲਰ ਰੂਪ ਵਿੱਚ ਪ੍ਰਿੰਟ ਕਰੇਗਾ।
ਅਸੀਂ ਕੁਝ ਕਾਲਮਾਂ ਨੂੰ ਵਿਜੁਅਲਾਈਜ਼ ਕਰਨ ਲਈ `plot` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਵੀ ਵੇਖੀ ਹੈ। ਜਦੋਂ ਕਿ `plot` ਕਈ ਕੰਮਾਂ ਲਈ ਬਹੁਤ ਹੀ ਲਾਭਦਾਇਕ ਹੈ ਅਤੇ `kind=` ਪੈਰਾਮੀਟਰ ਰਾਹੀਂ ਕਈ ਵੱਖ-ਵੱਖ ਗ੍ਰਾਫ ਕਿਸਮਾਂ ਨੂੰ ਸਹਾਰਾ ਦਿੰਦਾ ਹੈ, ਤੁਸੀਂ ਹਮੇਸ਼ਾ ਕੁਝ ਹੋਰ ਜਟਿਲ ਪਲੌਟ ਕਰਨ ਲਈ raw `matplotlib` ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ। ਅਸੀਂ ਡਾਟਾ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਨੂੰ ਵਿਸਥਾਰ ਵਿੱਚ ਵੱਖਰੇ ਕੋਰਸ ਪਾਠਾਂ ਵਿੱਚ ਕਵਰ ਕਰਾਂਗੇ।
ਅਸੀਂ ਕੁਝ ਕਾਲਮਾਂ ਨੂੰ ਵਿਜੁਅਲਾਈਜ਼ ਕਰਨ ਲਈ `plot` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਵੀ ਵੇਖੀ ਹੈ। ਜਦੋਂ ਕਿ `plot` ਕਈ ਕੰਮਾਂ ਲਈ ਬਹੁਤ ਹੀ ਲਾਭਦਾਇਕ ਹੈ ਅਤੇ `kind=` ਪੈਰਾਮੀਟਰ ਰਾਹੀਂ ਕਈ ਵੱਖ-ਵੱਖ ਗ੍ਰਾਫ ਕਿਸਮਾਂ ਨੂੰ ਸਹਾਰਾ ਦਿੰਦਾ ਹੈ, ਤੁਸੀਂ ਹਮੇਸ਼ਾ ਕੁਝ ਹੋਰ ਜਟਿਲ ਪਲੌਟ ਕਰਨ ਲਈ ਕੱਚੀ `matplotlib` ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ। ਅਸੀਂ ਡਾਟਾ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਨੂੰ ਵਿਸਥਾਰ ਵਿੱਚ ਵੱਖਰੇ ਕੋਰਸ ਪਾਠਾਂ ਵਿੱਚ ਕਵਰ ਕਰਾਂਗੇ।
ਇਹ ਝਲਕ Pandas ਦੇ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਸੰਕਲਪਾਂ ਨੂੰ ਕਵਰ ਕਰਦੀ ਹੈ, ਹਾਲਾਂਕਿ, ਲਾਇਬ੍ਰੇਰੀ ਬਹੁਤ ਹੀ ਸਮਰੱਥ ਹੈ, ਅਤੇ ਤੁਸੀਂ ਇਸ ਨਾਲ ਕੀ ਕਰ ਸਕਦੇ ਹੋ ਇਸ ਦੀ ਕੋਈ ਸੀਮਾ ਨਹੀਂ ਹੈ! ਆਓ ਹੁਣ ਇਸ ਗਿਆਨ ਨੂੰ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਲਾਗੂ ਕਰੀਏ।
## 🚀 ਚੁਣੌਤੀ 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 Repository](https://github.com/CSSEGISandData/COVID-19) ਵਿੱਚ ਉਪਲਬਧ ਹੈ।
ਜਦੋਂ ਕਿ ਅਸੀਂ ਡਾਟਾ ਨਾਲ ਨਿਪਟਣ ਦਾ ਤਰੀਕਾ ਦਿਖਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਅਸੀਂ ਤੁਹਾਨੂੰ ਸਲਾਹ ਦਿੰਦੇ ਹਾਂ ਕਿ [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) ਖੋਲ੍ਹੋ ਅਤੇ ਇਸਨੂੰ ਸ਼ੁਰੂ ਤੋਂ ਅੰਤ ਤੱਕ ਪੜ੍ਹੋ। ਤੁਸੀਂ ਸੈੱਲ ਚਲਾ ਸਕਦੇ ਹੋ ਅਤੇ ਕੁਝ ਚੁਣੌਤੀਆਂ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਅਸੀਂ ਤੁਹਾਡੇ ਲਈ ਅੰਤ ਵਿੱਚ ਛੱਡੀਆਂ ਹਨ।
ਜਦੋਂ ਕਿ ਅਸੀਂ ਡਾਟਾ ਨਾਲ ਨਿਪਟਣ ਦਾ ਪ੍ਰਦਰਸ਼ਨ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਅਸੀਂ ਤੁਹਾਨੂੰ ਸਲਾਹ ਦਿੰਦੇ ਹਾਂ ਕਿ [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) ਖੋਲ੍ਹੋ ਅਤੇ ਇਸਨੂੰ ਉੱਪਰ ਤੋਂ ਹੇਠਾਂ ਪੜ੍ਹੋ। ਤੁਸੀਂ ਸੈੱਲ ਚਲਾ ਸਕਦੇ ਹੋ ਅਤੇ ਕੁਝ ਚੁਣੌਤੀਆਂ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਅਸੀਂ ਤੁਹਾਡੇ ਲਈ ਅੰਤ ਵਿੱਚ ਛੱਡੀਆਂ ਹਨ।
![COVID ਫੈਲਾਅ](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID ਫੈਲਾਅ](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.pa.png)
> ਜੇ ਤੁਹਾਨੂੰ 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 ਪੇਪਰਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ
ਇਸ ਚੁਣੌਤੀ ਵਿੱਚ, ਅਸੀਂ COVID ਮਹਾਂਮਾਰੀ ਦੇ ਵਿਸ਼ੇ ਨੂੰ ਜਾਰੀ ਰੱਖਾਂਗੇ ਅਤੇ ਇਸ ਵਿਸ਼ੇ 'ਤੇ ਵਿਗਿਆਨਕ ਪੇਪਰਾਂ ਦ ਪ੍ਰੋਸੈਸਿੰਗ 'ਤੇ ਧਿਆਨ ਦੇਵਾਂਗੇ। [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) ਵਿੱਚ COVID 'ਤੇ 7000 ਤੋਂ ਵੱਧ (ਇਸ ਲੇਖਨ ਦੇ ਸਮੇਂ) ਪੇਪਰਾਂ ਉਪਲਬਧ ਹਨ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਮੈਟਾਡਾਟਾ ਅਤੇ ਐਬਸਟਰੈਕਟ ਸ਼ਾਮਲ ਹਨ (ਅਤੇ ਲਗਭਗ ਅੱਧੇ ਪੇਪਰਾਂ ਲਈ ਪੂਰਾ ਟੈਕਸਟ ਵੀ ਉਪਲਬਧ ਹੈ)।
ਇਸ ਚੁਣੌਤੀ ਵਿੱਚ, ਅਸੀਂ 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**: ਅਸੀਂ ਇਸ ਰਿਪੋਜ਼ਟਰੀ ਦੇ ਹਿੱਸੇ ਵਜੋਂ ਡਾਟਾਸੈਟ ਦੀ ਕਾਪੀ ਪ੍ਰਦਾਨ ਨਹੀਂ ਕਰਦੇ। ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ [`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) ਡਾਟਾਸੈਟ ਡਾਊਨਲੋਡ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ ਇਸ ਵਿੱਚ ਮੈਟਾਡਾਟਾ ਫਾਈਲ ਦੇ ਨਾਲ ਸਾਰੇ ਪੂਰੇ ਟੈਕਸਟ ਸ਼ਾਮਲ ਹੋਣਗੇ।
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) ਖੋਲ੍ਹੋ ਅਤੇ ਇਸਨੂੰ ਸ਼ੁਰੂ ਤੋਂ ਅੰਤ ਤੱਕ ਪੜ੍ਹੋ। ਤੁਸੀਂ ਸੈੱਲ ਚਲਾ ਸਕਦੇ ਹੋ ਅਤੇ ਕੁਝ ਚੁਣੌਤੀਆਂ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਅਸੀਂ ਤੁਹਾਡੇ ਲਈ ਅੰਤ ਵਿੱਚ ਛੱਡੀਆਂ ਹਨ।
[`notebook-papers.ipynb`](notebook-papers.ipynb) ਖੋਲ੍ਹੋ ਅਤੇ ਇਸਨੂੰ ਉੱਪਰ ਤੋਂ ਹੇਠਾਂ ਪੜ੍ਹੋ। ਤੁਸੀਂ ਸੈੱਲ ਚਲਾ ਸਕਦੇ ਹੋ ਅਤੇ ਕੁਝ ਚੁਣੌਤੀਆਂ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਅਸੀਂ ਤੁਹਾਡੇ ਲਈ ਅੰਤ ਵਿੱਚ ਛੱਡੀਆਂ ਹਨ।
![Covid ਮੈਡੀਕਲ ਇਲਾਜ](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid ਮੈਡੀਕਲ ਇਲਾਜ](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.pa.png)
## ਚਿੱਤਰ ਡਾਟਾ ਦੀ ਪ੍ਰੋਸੈਸਿੰਗ
ਹਾਲ ਹੀ ਵਿੱਚ, ਬਹੁਤ ਹੀ ਸ਼ਕਤੀਸ਼ਾਲੀ 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/) ਬਲੌਗ ਪੋਸਟ ਵਿੱਚ ਅਸੀਂ 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 ਨੂੰ ਗਹਿਰਾਈ ਨਾਲ ਸਿੱਖਣਾ ਸ਼ਾਇਦ ਇੱਕ ਚੰਗਾ ਵਿਚਾਰ ਹੈ!
## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -228,4 +226,4 @@ df = pd.read_csv('file.csv')
---
**ਅਸਵੀਕਾਰਨਾ**:
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਨਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼, ਜੋ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਹੈ, ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T14:31:40+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:41:36+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "pl"
}
@ -13,39 +13,39 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------------: |
| Praca z Pythonem - _Sketchnote autorstwa [@nitya](https://twitter.com/nitya)_ |
[![Wideo wprowadzające](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Wideo wprowadzające](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.pl.png)](https://youtu.be/dZjWOGbsN4Y)
Bazy danych oferują bardzo efektywne sposoby przechowywania danych i ich przeszukiwania za pomocą języków zapytań, ale najbardziej elastycznym sposobem przetwarzania danych jest napisanie własnego programu do ich manipulacji. W wielu przypadkach zapytanie do bazy danych byłoby bardziej efektywne. Jednak w sytuacjach, gdy potrzebne jest bardziej złożone przetwarzanie danych, SQL może nie być wystarczający.
Przetwarzanie danych można zaprogramować w dowolnym języku programowania, ale istnieją języki, które są bardziej zaawansowane w pracy z danymi. Specjaliści od danych zazwyczaj preferują jeden z następujących języków:
Bazy danych oferują bardzo efektywne sposoby przechowywania danych i ich przeszukiwania za pomocą języków zapytań, ale najbardziej elastycznym sposobem przetwarzania danych jest napisanie własnego programu do ich manipulacji. W wielu przypadkach zapytanie do bazy danych byłoby bardziej efektywne. Jednak w sytuacjach, gdy potrzebne jest bardziej złożone przetwarzanie danych, nie zawsze można to łatwo zrobić za pomocą SQL.
Przetwarzanie danych można zaprogramować w dowolnym języku programowania, ale istnieją języki, które są bardziej zaawansowane w pracy z danymi. Naukowcy zajmujący się danymi zazwyczaj preferują jeden z następujących języków:
* **[Python](https://www.python.org/)**, uniwersalny język programowania, który często jest uważany za jeden z najlepszych wyborów dla początkujących ze względu na swoją prostotę. Python posiada wiele dodatkowych bibliotek, które mogą pomóc w rozwiązywaniu praktycznych problemów, takich jak wyodrębnianie danych z archiwum ZIP czy konwersja obrazu na odcienie szarości. Oprócz analizy danych, Python jest również często używany w tworzeniu aplikacji webowych.
* **[R](https://www.r-project.org/)** to tradycyjne narzędzie stworzone z myślą o statystycznym przetwarzaniu danych. Zawiera również dużą bazę bibliotek (CRAN), co czyni go dobrym wyborem do analizy danych. Jednak R nie jest językiem uniwersalnym i rzadko jest używany poza obszarem analizy danych.
* **[Julia](https://julialang.org/)** to kolejny język stworzony specjalnie do analizy danych. Został zaprojektowany z myślą o lepszej wydajności niż Python, co czyni go świetnym narzędziem do eksperymentów naukowych.
* **[Python](https://www.python.org/)**, uniwersalny język programowania, który często jest uważany za jeden z najlepszych wyborów dla początkujących ze względu na swoją prostotę. Python posiada wiele dodatkowych bibliotek, które mogą pomóc w rozwiązywaniu praktycznych problemów, takich jak wyodrębnianie danych z archiwum ZIP czy konwersja obrazu na odcienie szarości. Oprócz nauki o danych, Python jest również często używany do tworzenia aplikacji webowych.
* **[R](https://www.r-project.org/)** to tradycyjne narzędzie stworzone z myślą o statystycznym przetwarzaniu danych. Zawiera również dużą bazę bibliotek (CRAN), co czyni go dobrym wyborem do pracy z danymi. Jednak R nie jest językiem uniwersalnym i rzadko jest używany poza dziedziną nauki o danych.
* **[Julia](https://julialang.org/)** to kolejny język stworzony specjalnie dla nauki o danych. Został zaprojektowany z myślą o lepszej wydajności niż Python, co czyni go świetnym narzędziem do eksperymentów naukowych.
W tej lekcji skupimy się na używaniu Pythona do prostego przetwarzania danych. Zakładamy podstawową znajomość tego języka. Jeśli chcesz zgłębić Pythona, możesz skorzystać z jednego z poniższych zasobów:
* [Nauka Pythona w zabawny sposób z grafiką Turtle i fraktalami](https://github.com/shwars/pycourse) - szybki kurs wprowadzający do programowania w Pythonie na GitHubie
* [Pierwsze kroki z Pythonem](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Ścieżka nauki na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Nauka Pythona w zabawny sposób z grafiką Turtle i fraktalami](https://github.com/shwars/pycourse) - szybki kurs wprowadzający do programowania w Pythonie na GitHubie
* [Zrób swoje pierwsze kroki z Pythonem](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Ścieżka nauki na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Dane mogą występować w różnych formach. W tej lekcji rozważymy trzy formy danych - **dane tabelaryczne**, **tekst** i **obrazy**.
Dane mogą przyjmować różne formy. W tej lekcji rozważymy trzy formy danych - **dane tabelaryczne**, **tekst** i **obrazy**.
Skupimy się na kilku przykładach przetwarzania danych, zamiast przedstawiać pełny przegląd wszystkich powiązanych bibliotek. Dzięki temu zrozumiesz główne możliwości i będziesz wiedzieć, gdzie szukać rozwiązań swoich problemów, gdy zajdzie taka potrzeba.
Skupimy się na kilku przykładach przetwarzania danych, zamiast przedstawiać pełny przegląd wszystkich powiązanych bibliotek. Pozwoli to zrozumieć główne możliwości i pozostawi wiedzę, gdzie szukać rozwiązań problemów, gdy zajdzie taka potrzeba.
> **Najbardziej przydatna rada**. Gdy musisz wykonać określoną operację na danych, a nie wiesz, jak to zrobić, spróbuj poszukać jej w internecie. [Stackoverflow](https://stackoverflow.com/) często zawiera wiele przydatnych przykładów kodu w Pythonie dla typowych zadań.
> **Najbardziej przydatna rada**. Gdy musisz wykonać określoną operację na danych, której nie wiesz, jak zrobić, spróbuj poszukać jej w internecie. [Stackoverflow](https://stackoverflow.com/) zazwyczaj zawiera wiele przydatnych przykładów kodu w Pythonie dla wielu typowych zadań.
## [Quiz przed lekcją](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Dane tabelaryczne i DataFrame'y
Spotkałeś się już z danymi tabelarycznymi, gdy omawialiśmy relacyjne bazy danych. Gdy masz dużo danych, które są przechowywane w wielu powiązanych tabelach, zdecydowanie warto używać SQL do pracy z nimi. Jednak istnieje wiele przypadków, gdy mamy jedną tabelę danych i chcemy uzyskać pewne **zrozumienie** lub **wnioski** na temat tych danych, takie jak rozkład wartości, korelacje między nimi itd. W analizie danych często musimy przeprowadzić pewne transformacje danych, a następnie ich wizualizację. Oba te kroki można łatwo wykonać za pomocą Pythona.
Spotkałeś się już z danymi tabelarycznymi, gdy mówiliśmy o relacyjnych bazach danych. Gdy masz dużo danych, które są przechowywane w wielu różnych powiązanych tabelach, zdecydowanie warto używać SQL do pracy z nimi. Jednak istnieje wiele przypadków, gdy mamy tabelę danych i chcemy uzyskać pewne **zrozumienie** lub **wnioski** na temat tych danych, takie jak rozkład, korelacja między wartościami itp. W nauce o danych często musimy przeprowadzić pewne transformacje oryginalnych danych, a następnie ich wizualizację. Oba te kroki można łatwo wykonać za pomocą Pythona.
Istnieją dwie najbardziej przydatne biblioteki w Pythonie, które mogą pomóc w pracy z danymi tabelarycznymi:
* **[Pandas](https://pandas.pydata.org/)** pozwala manipulować tak zwanymi **DataFrame'ami**, które są analogiczne do tabel relacyjnych. Możesz mieć nazwane kolumny i wykonywać różne operacje na wierszach, kolumnach i całych DataFrame'ach.
* **[Numpy](https://numpy.org/)** to biblioteka do pracy z **tensorami**, czyli wielowymiarowymi **tablicami**. Tablica zawiera wartości tego samego typu, jest prostsza niż DataFrame, ale oferuje więcej operacji matematycznych i generuje mniejsze obciążenie.
* **[Pandas](https://pandas.pydata.org/)** pozwala manipulować tak zwanymi **DataFrame'ami**, które są analogiczne do tabel relacyjnych. Możesz mieć nazwane kolumny i wykonywać różne operacje na wierszach, kolumnach i całych DataFrame'ach.
* **[Numpy](https://numpy.org/)** to biblioteka do pracy z **tensorami**, czyli wielowymiarowymi **tablicami**. Tablica ma wartości tego samego typu bazowego i jest prostsza niż DataFrame, ale oferuje więcej operacji matematycznych i generuje mniejsze obciążenie.
Istnieje również kilka innych bibliotek, które warto znać:
* **[Matplotlib](https://matplotlib.org/)** to biblioteka używana do wizualizacji danych i tworzenia wykresów
* **[SciPy](https://www.scipy.org/)** to biblioteka z dodatkowymi funkcjami naukowymi. Już wcześniej spotkaliśmy się z tą biblioteką, omawiając prawdopodobieństwo i statystykę
* **[Matplotlib](https://matplotlib.org/)** to biblioteka używana do wizualizacji danych i tworzenia wykresów
* **[SciPy](https://www.scipy.org/)** to biblioteka z dodatkowymi funkcjami naukowymi. Już spotkaliśmy się z tą biblioteką, gdy mówiliśmy o prawdopodobieństwie i statystyce
Oto fragment kodu, który zazwyczaj używa się do importowania tych bibliotek na początku programu w Pythonie:
```python
@ -59,9 +59,9 @@ Pandas opiera się na kilku podstawowych koncepcjach.
### Series
**Series** to sekwencja wartości, podobna do listy lub tablicy numpy. Główna różnica polega na tym, że Series ma również **indeks**, który jest uwzględniany podczas operacji na Series (np. dodawania). Indeks może być tak prosty jak liczba całkowita reprezentująca numer wiersza (jest to domyślny indeks podczas tworzenia Series z listy lub tablicy), lub może mieć bardziej złożoną strukturę, taką jak przedział dat.
**Series** to sekwencja wartości, podobna do listy lub tablicy numpy. Główna różnica polega na tym, że Series ma również **indeks**, a gdy operujemy na Series (np. dodajemy je), indeks jest brany pod uwagę. Indeks może być tak prosty jak liczba całkowita reprezentująca numer wiersza (jest to domyślny indeks używany podczas tworzenia Series z listy lub tablicy), lub może mieć bardziej złożoną strukturę, taką jak przedział dat.
> **Uwaga**: W towarzyszącym notebooku [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) znajduje się wprowadzenie do kodu Pandas. Tutaj przedstawiamy tylko niektóre przykłady, ale zachęcamy do zapoznania się z pełnym notebookiem.
> **Uwaga**: W towarzyszącym notebooku [`notebook.ipynb`](notebook.ipynb) znajduje się wprowadzenie do kodu Pandas. Tutaj przedstawiamy tylko niektóre przykłady, ale zdecydowanie zachęcamy do zapoznania się z pełnym notebookiem.
Rozważmy przykład: chcemy przeanalizować sprzedaż w naszym punkcie z lodami. Wygenerujmy serię liczb sprzedaży (liczba sprzedanych produktów każdego dnia) dla pewnego okresu czasu:
@ -73,7 +73,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Wykres szeregów czasowych](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Wykres szeregów czasowych](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.pl.png)
Załóżmy teraz, że co tydzień organizujemy imprezę dla znajomych i zabieramy dodatkowe 10 opakowań lodów na imprezę. Możemy stworzyć kolejną serię, indeksowaną tygodniami, aby to pokazać:
```python
@ -84,7 +84,7 @@ Gdy dodamy dwie serie, otrzymamy całkowitą liczbę:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Wykres szeregów czasowych](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Wykres szeregów czasowych](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.pl.png)
> **Uwaga**: Nie używamy prostego zapisu `total_items+additional_items`. Gdybyśmy to zrobili, otrzymalibyśmy wiele wartości `NaN` (*Not a Number*) w wynikowej serii. Dzieje się tak, ponieważ brakuje wartości dla niektórych punktów indeksu w serii `additional_items`, a dodanie `NaN` do czegokolwiek skutkuje `NaN`. Dlatego musimy określić parametr `fill_value` podczas dodawania.
@ -93,7 +93,7 @@ W przypadku szeregów czasowych możemy również **próbkować** serię z róż
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Miesięczne średnie szeregów czasowych](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Miesięczne średnie szeregów czasowych](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.pl.png)
### DataFrame
@ -109,7 +109,7 @@ To stworzy poziomą tabelę, taką jak ta:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Możemy również użyć serii jako kolumn i określić nazwy kolumn za pomocą słownika:
Możemy również użyć Series jako kolumn i określić nazwy kolumn za pomocą słownika:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -135,24 +135,24 @@ Tutaj `.T` oznacza operację transponowania DataFrame, czyli zamianę wierszy i
Oto kilka najważniejszych operacji, które możemy wykonać na DataFrame'ach:
**Wybór kolumn**. Możemy wybrać pojedyncze kolumny, pisząc `df['A']` - ta operacja zwraca serię. Możemy również wybrać podzbiór kolumn do innego DataFrame, pisząc `df[['B','A']]` - to zwraca nowy DataFrame.
**Wybór kolumn**. Możemy wybrać pojedyncze kolumny, pisząc `df['A']` - ta operacja zwraca Series. Możemy również wybrać podzbiór kolumn do innego DataFrame, pisząc `df[['B','A']]` - to zwraca kolejny DataFrame.
**Filtrowanie** tylko określonych wierszy według kryteriów. Na przykład, aby pozostawić tylko wiersze, w których kolumna `A` jest większa niż 5, możemy napisać `df[df['A']>5]`.
> **Uwaga**: Sposób działania filtrowania jest następujący. Wyrażenie `df['A']<5` zwraca serię logiczną, która wskazuje, czy wyrażenie jest `True` czy `False` dla każdego elementu oryginalnej serii `df['A']`. Gdy seria logiczna jest używana jako indeks, zwraca podzbiór wierszy w DataFrame. Dlatego nie można używać dowolnych wyrażeń logicznych w Pythonie, na przykład pisanie `df[df['A']>5 and df['A']<7]` byłoby błędne. Zamiast tego należy użyć specjalnej operacji `&` na seriach logicznych, pisząc `df[(df['A']>5) & (df['A']<7)]` (*nawiasy są tutaj ważne*).
**Tworzenie nowych obliczalnych kolumn**. Możemy łatwo tworzyć nowe obliczalne kolumny dla naszego DataFrame, używając intuicyjnych wyrażeń, takich jak:
**Tworzenie nowych obliczalnych kolumn**. Możemy łatwo tworzyć nowe obliczalne kolumny dla naszego DataFrame, używając intuicyjnych wyrażeń, takich jak to:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Ten przykład oblicza odchylenie A od jego wartości średniej. Co właściwie się tutaj dzieje, to obliczamy serię, a następnie przypisujemy tę serię do lewej strony, tworząc nową kolumnę. Dlatego nie możemy używać operacji, które nie są kompatybilne z seriami, na przykład poniższy kod jest błędny:
Ten przykład oblicza odchylenie A od jego wartości średniej. Co faktycznie się dzieje, to obliczamy serię, a następnie przypisujemy tę serię do lewej strony, tworząc kolejną kolumnę. Dlatego nie możemy używać żadnych operacji, które nie są kompatybilne z seriami, na przykład poniższy kod jest błędny:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Ostatni przykład, choć składniowo poprawny, daje błędny wynik, ponieważ przypisuje długość serii `B` do wszystkich wartości w kolumnie, a nie długość poszczególnych elementów, jak zamierzaliśmy.
Ostatni przykład, choć syntaktycznie poprawny, daje nam błędny wynik, ponieważ przypisuje długość serii `B` do wszystkich wartości w kolumnie, a nie długość poszczególnych elementów, jak zamierzaliśmy.
Jeśli musimy obliczyć złożone wyrażenia, możemy użyć funkcji `apply`. Ostatni przykład można napisać w następujący sposób:
Jeśli musimy obliczyć złożone wyrażenia, możemy użyć funkcji `apply`. Ostatni przykład można zapisać w następujący sposób:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -178,9 +178,9 @@ Po powyższych operacjach otrzymamy następujący DataFrame:
df.iloc[:5]
```
**Grupowanie** jest często używane do uzyskania wyników podobnych do *tabel przestawnych* w Excelu. Załóżmy, że chcemy obliczyć średnią wartość kolumny `A` dla każdej liczby `LenB`. Możemy wtedy pogrupować nasz DataFrame według `LenB` i wywołać `mean`:
**Grupowanie** jest często używane do uzyskania wyniku podobnego do *tabel przestawnych* w Excelu. Załóżmy, że chcemy obliczyć średnią wartość kolumny `A` dla każdej podanej liczby `LenB`. Wtedy możemy pogrupować nasz DataFrame według `LenB` i wywołać `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Jeśli potrzebujemy obliczyć średnią i liczbę elementów w grupie, możemy użyć bardziej złożonej funkcji `aggregate`:
```python
@ -199,7 +199,7 @@ To daje nam następującą tabelę:
| 6 | 2 | 6.000000 |
### Pobieranie danych
Widzieliśmy, jak łatwo można tworzyć Series i DataFrames z obiektów Pythona. Jednak dane zazwyczaj występują w formie pliku tekstowego lub tabeli Excel. Na szczęście Pandas oferuje prosty sposób na załadowanie danych z dysku. Na przykład, odczytanie pliku CSV jest tak proste jak to:
Widzieliśmy, jak łatwo jest tworzyć Series i DataFrames z obiektów Pythona. Jednak dane zazwyczaj występują w formie pliku tekstowego lub tabeli Excel. Na szczęście Pandas oferuje prosty sposób na załadowanie danych z dysku. Na przykład, odczytanie pliku CSV jest tak proste jak to:
```python
df = pd.read_csv('file.csv')
```
@ -207,19 +207,19 @@ Zobaczymy więcej przykładów ładowania danych, w tym pobieranie ich z zewnęt
### Drukowanie i Wizualizacja
Data Scientist często musi eksplorować dane, dlatego ważne jest, aby móc je wizualizować. Gdy DataFrame jest duży, często chcemy tylko upewnić się, że wszystko robimy poprawnie, drukując pierwsze kilka wierszy. Można to zrobić, wywołując `df.head()`. Jeśli uruchamiasz to z Jupyter Notebook, DataFrame zostanie wydrukowany w ładnej formie tabelarycznej.
Data Scientist często musi eksplorować dane, dlatego ważne jest, aby móc je wizualizować. Gdy DataFrame jest duży, często chcemy tylko upewnić się, że wszystko robimy poprawnie, drukując pierwsze kilka wierszy. Można to zrobić, wywołując `df.head()`. Jeśli uruchamiasz to z Jupyter Notebook, wydrukuje DataFrame w ładnej formie tabelarycznej.
Widzieliśmy również użycie funkcji `plot` do wizualizacji niektórych kolumn. Chociaż `plot` jest bardzo przydatny do wielu zadań i obsługuje różne typy wykresów za pomocą parametru `kind=`, zawsze można użyć surowej biblioteki `matplotlib`, aby stworzyć coś bardziej złożonego. Szczegółowo omówimy wizualizację danych w osobnych lekcjach kursu.
Widzieliśmy również użycie funkcji `plot` do wizualizacji niektórych kolumn. Chociaż `plot` jest bardzo przydatny do wielu zadań i obsługuje różne typy wykresów za pomocą parametru `kind=`, zawsze możesz użyć surowej biblioteki `matplotlib`, aby stworzyć coś bardziej złożonego. Szczegółowo omówimy wizualizację danych w osobnych lekcjach kursu.
Ten przegląd obejmuje najważniejsze koncepcje Pandas, jednak biblioteka jest bardzo bogata i nie ma ograniczeń co do tego, co można z nią zrobić! Teraz zastosujmy tę wiedzę do rozwiązania konkretnego problemu.
## 🚀 Wyzwanie 1: Analiza Rozprzestrzeniania się COVID
Pierwszym problemem, na którym się skupimy, jest modelowanie rozprzestrzeniania się epidemii COVID-19. Aby to zrobić, skorzystamy z danych dotyczących liczby zakażonych osób w różnych krajach, dostarczonych przez [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) na [Johns Hopkins University](https://jhu.edu/). Zestaw danych jest dostępny w [tym repozytorium GitHub](https://github.com/CSSEGISandData/COVID-19).
Pierwszym problemem, na którym się skupimy, jest modelowanie rozprzestrzeniania się epidemii COVID-19. Aby to zrobić, skorzystamy z danych dotyczących liczby zakażonych osób w różnych krajach, dostarczonych przez [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) na [Johns Hopkins University](https://jhu.edu/). Zbiór danych jest dostępny w [tym repozytorium GitHub](https://github.com/CSSEGISandData/COVID-19).
Ponieważ chcemy pokazać, jak radzić sobie z danymi, zachęcamy do otwarcia [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) i przeczytania go od początku do końca. Możesz również uruchomić komórki i wykonać wyzwania, które zostawiliśmy dla Ciebie na końcu.
Ponieważ chcemy pokazać, jak radzić sobie z danymi, zapraszamy do otwarcia [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) i przeczytania go od góry do dołu. Możesz również uruchomić komórki i wykonać wyzwania, które zostawiliśmy na końcu.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.pl.png)
> Jeśli nie wiesz, jak uruchomić kod w Jupyter Notebook, zapoznaj się z [tym artykułem](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
@ -233,23 +233,23 @@ Chociaż dane bardzo często występują w formie tabelarycznej, w niektórych p
## 🚀 Wyzwanie 2: Analiza Publikacji o COVID
W tym wyzwaniu kontynuujemy temat pandemii COVID i skupiamy się na przetwarzaniu publikacji naukowych na ten temat. Istnieje [zestaw danych CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) zawierający ponad 7000 (w momencie pisania) publikacji na temat COVID, dostępny wraz z metadanymi i abstraktami (a dla około połowy z nich dostępny jest również pełny tekst).
W tym wyzwaniu kontynuujemy temat pandemii COVID i skupiamy się na przetwarzaniu publikacji naukowych na ten temat. Istnieje [zbiór danych CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) zawierający ponad 7000 (w momencie pisania) publikacji na temat COVID, dostępnych z metadanymi i abstraktami (a dla około połowy z nich dostępny jest również pełny tekst).
Pełny przykład analizy tego zestawu danych za pomocą usługi [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) opisano [w tym wpisie na blogu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Omówimy uproszczoną wersję tej analizy.
Pełny przykład analizy tego zbioru danych za pomocą usługi [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) opisano [w tym wpisie na blogu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Omówimy uproszczoną wersję tej analizy.
> **NOTE**: Nie dostarczamy kopii zestawu danych jako części tego repozytorium. Możesz najpierw pobrać plik [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [tego zestawu danych na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Może być wymagana rejestracja w Kaggle. Możesz również pobrać zestaw danych bez rejestracji [stąd](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale będzie on zawierał wszystkie pełne teksty oprócz pliku metadanych.
> **NOTE**: Nie dostarczamy kopii zbioru danych jako części tego repozytorium. Możesz najpierw pobrać plik [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [tego zbioru danych na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Może być wymagana rejestracja na Kaggle. Możesz również pobrać zbiór danych bez rejestracji [stąd](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale będzie on zawierał wszystkie pełne teksty oprócz pliku metadanych.
Otwórz [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) i przeczytaj go od początku do końca. Możesz również uruchomić komórki i wykonać wyzwania, które zostawiliśmy dla Ciebie na końcu.
Otwórz [`notebook-papers.ipynb`](notebook-papers.ipynb) i przeczytaj go od góry do dołu. Możesz również uruchomić komórki i wykonać wyzwania, które zostawiliśmy na końcu.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.pl.png)
## Przetwarzanie Danych Obrazowych
Ostatnio opracowano bardzo potężne modele AI, które pozwalają na rozumienie obrazów. Istnieje wiele zadań, które można rozwiązać za pomocą wstępnie wytrenowanych sieci neuronowych lub usług w chmurze. Niektóre przykłady obejmują:
Ostatnio opracowano bardzo potężne modele AI, które pozwalają na rozumienie obrazów. Istnieje wiele zadań, które można rozwiązać za pomocą wstępnie wytrenowanych sieci neuronowych lub usług w chmurze. Oto kilka przykładów:
* **Klasyfikacja Obrazów**, która może pomóc w kategoryzacji obrazu do jednej z predefiniowanych klas. Możesz łatwo wytrenować własne klasyfikatory obrazów, korzystając z usług takich jak [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detekcja Obiektów**, aby wykrywać różne obiekty na obrazie. Usługi takie jak [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) mogą wykrywać wiele typowych obiektów, a Ty możesz wytrenować model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum), aby wykrywać konkretne obiekty, które Cię interesują.
* **Detekcja Twarzy**, w tym wykrywanie wieku, płci i emocji. Można to zrobić za pomocą [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Detekcja Obiektów**, aby wykrywać różne obiekty na obrazie. Usługi takie jak [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) mogą wykrywać wiele typowych obiektów, a Ty możesz wytrenować model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum), aby wykrywać specyficzne obiekty.
* **Detekcja Twarzy**, w tym wiek, płeć i emocje. Można to zrobić za pomocą [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Wszystkie te usługi w chmurze można wywoływać za pomocą [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), dzięki czemu można je łatwo włączyć do swojego workflow eksploracji danych.
@ -259,7 +259,7 @@ Oto kilka przykładów eksploracji danych z obrazów:
## Podsumowanie
Niezależnie od tego, czy masz już dane ustrukturalne, czy niestrukturalne, za pomocą Pythona możesz wykonać wszystkie kroki związane z przetwarzaniem i rozumieniem danych. Jest to prawdopodobnie najbardziej elastyczny sposób przetwarzania danych, i dlatego większość data scientistów używa Pythona jako swojego głównego narzędzia. Nauka Pythona w głębi jest prawdopodobnie dobrym pomysłem, jeśli poważnie myślisz o swojej drodze w data science!
Niezależnie od tego, czy masz już dane ustrukturalne, czy niestrukturalne, za pomocą Pythona możesz wykonać wszystkie kroki związane z przetwarzaniem i rozumieniem danych. Jest to prawdopodobnie najbardziej elastyczny sposób przetwarzania danych, i właśnie dlatego większość data scientistów używa Pythona jako swojego głównego narzędzia. Nauka Pythona w głębi jest prawdopodobnie dobrym pomysłem, jeśli poważnie myślisz o swojej drodze w data science!
## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -287,4 +287,4 @@ Ta lekcja została napisana z ♥️ przez [Dmitry Soshnikov](http://soshnikov.c
---
**Zastrzeżenie**:
Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby zapewnić poprawność tłumaczenia, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.
Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T13:16:56+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:38:59+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "pt"
}
@ -13,23 +13,23 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Trabalhar com Python - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
[![Vídeo de Introdução](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Vídeo de Introdução](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.pt.png)](https://youtu.be/dZjWOGbsN4Y)
Embora bases de dados ofereçam formas muito eficientes de armazenar e consultar dados usando linguagens de consulta, a maneira mais flexível de processar dados é escrever o seu próprio programa para manipulá-los. Em muitos casos, realizar uma consulta em uma base de dados seria mais eficaz. No entanto, em alguns casos, quando é necessário um processamento de dados mais complexo, isso não pode ser feito facilmente usando SQL.
O processamento de dados pode ser programado em qualquer linguagem de programação, mas há certas linguagens que são mais adequadas para trabalhar com dados. Cientistas de dados geralmente preferem uma das seguintes linguagens:
* **[Python](https://www.python.org/)**, uma linguagem de programação de propósito geral, frequentemente considerada uma das melhores opções para iniciantes devido à sua simplicidade. Python possui muitas bibliotecas adicionais que podem ajudar a resolver diversos problemas práticos, como extrair dados de um arquivo ZIP ou converter uma imagem para escala de cinza. Além da ciência de dados, Python também é amplamente utilizado para desenvolvimento web.
* **[R](https://www.r-project.org/)** é uma ferramenta tradicional desenvolvida com foco no processamento estatístico de dados. Ela também possui um grande repositório de bibliotecas (CRAN), tornando-se uma boa escolha para processamento de dados. No entanto, R não é uma linguagem de propósito geral e raramente é usada fora do domínio da ciência de dados.
* **[R](https://www.r-project.org/)** é uma ferramenta tradicional desenvolvida com foco no processamento estatístico de dados. Ela também contém um grande repositório de bibliotecas (CRAN), tornando-se uma boa escolha para processamento de dados. No entanto, R não é uma linguagem de propósito geral e raramente é usada fora do domínio da ciência de dados.
* **[Julia](https://julialang.org/)** é outra linguagem desenvolvida especificamente para ciência de dados. Ela foi projetada para oferecer melhor desempenho do que Python, tornando-se uma excelente ferramenta para experimentação científica.
Nesta lição, vamos focar no uso de Python para processamento simples de dados. Assumimos que você já tem uma familiaridade básica com a linguagem. Se quiser um aprendizado mais aprofundado sobre Python, pode consultar um dos seguintes recursos:
* [Aprenda Python de Forma Divertida com Gráficos Turtle e Fractais](https://github.com/shwars/pycourse) - Curso introdutório rápido baseado no GitHub sobre programação em Python
* [Dê seus Primeiros Passos com Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Caminho de Aprendizagem no [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Dê seus Primeiros Passos com Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Caminho de Aprendizado no [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Os dados podem vir em várias formas. Nesta lição, vamos considerar três formas de dados - **dados tabulares**, **texto** e **imagens**.
Os dados podem vir em várias formas. Nesta lição, consideraremos três formas de dados - **dados tabulares**, **texto** e **imagens**.
Vamos focar em alguns exemplos de processamento de dados, em vez de oferecer uma visão completa de todas as bibliotecas relacionadas. Isso permitirá que você entenda o essencial do que é possível e saiba onde encontrar soluções para seus problemas quando necessário.
Vamos focar em alguns exemplos de processamento de dados, em vez de oferecer uma visão completa de todas as bibliotecas relacionadas. Isso permitirá que você entenda o que é possível e saiba onde encontrar soluções para seus problemas quando precisar.
> **Conselho mais útil**. Quando precisar realizar uma operação específica em dados e não souber como fazê-lo, tente pesquisar na internet. [Stackoverflow](https://stackoverflow.com/) geralmente contém muitos exemplos úteis de código em Python para diversas tarefas típicas.
@ -37,11 +37,11 @@ Vamos focar em alguns exemplos de processamento de dados, em vez de oferecer uma
## Dados Tabulares e Dataframes
Você já encontrou dados tabulares quando falamos sobre bases de dados relacionais. Quando você tem muitos dados contidos em várias tabelas interligadas, definitivamente faz sentido usar SQL para trabalhar com eles. No entanto, há muitos casos em que temos uma tabela de dados e precisamos obter algum **entendimento** ou **insights** sobre esses dados, como a distribuição, correlação entre valores, etc. Na ciência de dados, há muitos casos em que precisamos realizar algumas transformações nos dados originais, seguidas de visualização. Ambos os passos podem ser facilmente realizados usando Python.
Você já encontrou dados tabulares quando falamos sobre bases de dados relacionais. Quando você tem muitos dados e eles estão contidos em várias tabelas interligadas, definitivamente faz sentido usar SQL para trabalhar com eles. No entanto, há muitos casos em que temos uma tabela de dados e precisamos obter algum **entendimento** ou **insights** sobre esses dados, como a distribuição, correlação entre valores, etc. Na ciência de dados, há muitos casos em que precisamos realizar algumas transformações nos dados originais, seguidas de visualização. Ambos os passos podem ser facilmente realizados usando Python.
Existem duas bibliotecas mais úteis em Python que podem ajudar você a lidar com dados tabulares:
* **[Pandas](https://pandas.pydata.org/)** permite manipular os chamados **Dataframes**, que são análogos às tabelas relacionais. Você pode ter colunas nomeadas e realizar diferentes operações em linhas, colunas e dataframes em geral.
* **[Numpy](https://numpy.org/)** é uma biblioteca para trabalhar com **tensores**, ou seja, **arrays** multidimensionais. Um array possui valores do mesmo tipo subjacente e é mais simples do que um dataframe, mas oferece mais operações matemáticas e gera menos sobrecarga.
* **[Numpy](https://numpy.org/)** é uma biblioteca para trabalhar com **tensores**, ou seja, **arrays** multidimensionais. Um array possui valores do mesmo tipo subjacente e é mais simples do que um dataframe, mas oferece mais operações matemáticas e cria menos sobrecarga.
Há também algumas outras bibliotecas que você deve conhecer:
* **[Matplotlib](https://matplotlib.org/)** é uma biblioteca usada para visualização de dados e criação de gráficos
@ -61,9 +61,9 @@ Pandas é centrado em alguns conceitos básicos.
**Series** é uma sequência de valores, semelhante a uma lista ou array do numpy. A principal diferença é que uma série também possui um **índice**, e quando operamos em séries (por exemplo, somamos), o índice é levado em consideração. O índice pode ser tão simples quanto o número inteiro da linha (é o índice usado por padrão ao criar uma série a partir de uma lista ou array), ou pode ter uma estrutura complexa, como intervalo de datas.
> **Nota**: Há algum código introdutório de Pandas no notebook associado [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Aqui, apenas destacamos alguns exemplos, e você está mais do que convidado a conferir o notebook completo.
> **Nota**: Há algum código introdutório de Pandas no notebook associado [`notebook.ipynb`](notebook.ipynb). Apenas destacamos alguns exemplos aqui, e você está definitivamente convidado a conferir o notebook completo.
Considere um exemplo: queremos analisar as vendas de nossa sorveteria. Vamos gerar uma série de números de vendas (número de itens vendidos por dia) para um determinado período de tempo:
Considere um exemplo: queremos analisar as vendas de nossa sorveteria. Vamos gerar uma série de números de vendas (número de itens vendidos a cada dia) para um determinado período de tempo:
```python
start_date = "Jan 1, 2020"
@ -73,7 +73,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Gráfico de Série Temporal](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Gráfico de Série Temporal](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.pt.png)
Agora suponha que, a cada semana, organizamos uma festa para amigos e levamos 10 pacotes adicionais de sorvete para a festa. Podemos criar outra série, indexada por semana, para demonstrar isso:
```python
@ -84,16 +84,16 @@ Quando somamos duas séries, obtemos o número total:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Gráfico de Série Temporal](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Gráfico de Série Temporal](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.pt.png)
> **Nota** que não estamos usando a sintaxe simples `total_items+additional_items`. Se fizéssemos isso, receberíamos muitos valores `NaN` (*Not a Number*) na série resultante. Isso ocorre porque há valores ausentes para alguns dos pontos de índice na série `additional_items`, e somar `NaN` a qualquer coisa resulta em `NaN`. Assim, precisamos especificar o parâmetro `fill_value` durante a soma.
> **Nota** que não estamos usando a sintaxe simples `total_items+additional_items`. Se o fizéssemos, receberíamos muitos valores `NaN` (*Not a Number*) na série resultante. Isso ocorre porque há valores ausentes para alguns dos pontos de índice na série `additional_items`, e somar `NaN` a qualquer coisa resulta em `NaN`. Assim, precisamos especificar o parâmetro `fill_value` durante a soma.
Com séries temporais, também podemos **reamostrar** a série com diferentes intervalos de tempo. Por exemplo, suponha que queremos calcular o volume médio de vendas mensal. Podemos usar o seguinte código:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Médias Mensais de Série Temporal](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Médias Mensais de Série Temporal](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.pt.png)
### DataFrame
@ -107,7 +107,7 @@ Isso criará uma tabela horizontal como esta:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
| 1 | I | gosto | de | usar | Python | e | Pandas | muito | mesmo |
Também podemos usar Series como colunas e especificar nomes de colunas usando um dicionário:
```python
@ -118,14 +118,14 @@ Isso nos dará uma tabela como esta:
| | A | B |
| --- | --- | ------ |
| 0 | 1 | I |
| 1 | 2 | like |
| 2 | 3 | to |
| 3 | 4 | use |
| 1 | 2 | gosto |
| 2 | 3 | de |
| 3 | 4 | usar |
| 4 | 5 | Python |
| 5 | 6 | and |
| 5 | 6 | e |
| 6 | 7 | Pandas |
| 7 | 8 | very |
| 8 | 9 | much |
| 7 | 8 | muito |
| 8 | 9 | mesmo |
**Nota** que também podemos obter este layout de tabela transpondo a tabela anterior, por exemplo, escrevendo
```python
@ -137,7 +137,7 @@ Aqui estão algumas das operações mais importantes que podemos realizar em Dat
**Seleção de colunas**. Podemos selecionar colunas individuais escrevendo `df['A']` - esta operação retorna uma Series. Também podemos selecionar um subconjunto de colunas em outro DataFrame escrevendo `df[['B','A']]` - isso retorna outro DataFrame.
**Filtragem** de apenas certas linhas por critérios. Por exemplo, para deixar apenas as linhas com a coluna `A` maior que 5, podemos escrever `df[df['A']>5]`.
**Filtragem** de apenas certas linhas por critérios. Por exemplo, para deixar apenas linhas com a coluna `A` maior que 5, podemos escrever `df[df['A']>5]`.
> **Nota**: A forma como a filtragem funciona é a seguinte. A expressão `df['A']<5` retorna uma série booleana, que indica se a expressão é `True` ou `False` para cada elemento da série original `df['A']`. Quando a série booleana é usada como índice, ela retorna um subconjunto de linhas no DataFrame. Assim, não é possível usar expressões booleanas arbitrárias do Python, por exemplo, escrever `df[df['A']>5 and df['A']<7]` estaria errado. Em vez disso, você deve usar a operação especial `&` na série booleana, escrevendo `df[(df['A']>5) & (df['A']<7)]` (*os parênteses são importantes aqui*).
@ -164,14 +164,14 @@ Após as operações acima, terminaremos com o seguinte DataFrame:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
| 0 | 1 | I | -4.0 | 1 |
| 1 | 2 | like | -3.0 | 4 |
| 2 | 3 | to | -2.0 | 2 |
| 3 | 4 | use | -1.0 | 3 |
| 1 | 2 | gosto | -3.0 | 4 |
| 2 | 3 | de | -2.0 | 2 |
| 3 | 4 | usar | -1.0 | 3 |
| 4 | 5 | Python | 0.0 | 6 |
| 5 | 6 | and | 1.0 | 3 |
| 5 | 6 | e | 1.0 | 3 |
| 6 | 7 | Pandas | 2.0 | 6 |
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
| 7 | 8 | muito | 3.0 | 4 |
| 8 | 9 | mesmo | 4.0 | 4 |
**Selecionar linhas com base em números** pode ser feito usando o construto `iloc`. Por exemplo, para selecionar as primeiras 5 linhas do DataFrame:
```python
@ -180,9 +180,9 @@ df.iloc[:5]
**Agrupamento** é frequentemente usado para obter um resultado semelhante às *tabelas dinâmicas* no Excel. Suponha que queremos calcular o valor médio da coluna `A` para cada número dado de `LenB`. Então podemos agrupar nosso DataFrame por `LenB` e chamar `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Se precisarmos calcular a média e o número de elementos no grupo, podemos usar a função mais complexa `aggregate`:
Se precisarmos calcular a média e o número de elementos no grupo, então podemos usar a função mais complexa `aggregate`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -203,88 +203,88 @@ Já vimos como é fácil construir Series e DataFrames a partir de objetos Pytho
```python
df = pd.read_csv('file.csv')
```
Veremos mais exemplos de como carregar dados, incluindo obtê-los de sites externos, na seção "Desafio".
Veremos mais exemplos de como carregar dados, incluindo obtê-los de sites externos, na seção "Desafio".
### Impressão e Visualização
### Impressão e Visualização
Um Cientista de Dados frequentemente precisa explorar os dados, por isso é importante ser capaz de visualizá-los. Quando o DataFrame é grande, muitas vezes queremos apenas garantir que estamos a fazer tudo corretamente, imprimindo as primeiras linhas. Isto pode ser feito chamando `df.head()`. Se estiver a executar isto a partir do Jupyter Notebook, ele imprimirá o DataFrame numa forma tabular agradável.
Um Cientista de Dados frequentemente precisa explorar os dados, por isso é importante ser capaz de visualizá-los. Quando o DataFrame é grande, muitas vezes queremos apenas garantir que estamos a fazer tudo corretamente, imprimindo as primeiras linhas. Isto pode ser feito chamando `df.head()`. Se estiver a executar no Jupyter Notebook, ele imprimirá o DataFrame numa forma tabular agradável.
Também já vimos o uso da função `plot` para visualizar algumas colunas. Embora `plot` seja muito útil para muitas tarefas e suporte diferentes tipos de gráficos através do parâmetro `kind=`, pode sempre usar a biblioteca `matplotlib` diretamente para criar algo mais complexo. Vamos abordar a visualização de dados em detalhe em lições separadas do curso.
Também já vimos o uso da função `plot` para visualizar algumas colunas. Embora `plot` seja muito útil para muitas tarefas e suporte diferentes tipos de gráficos através do parâmetro `kind=`, pode sempre usar a biblioteca `matplotlib` diretamente para criar algo mais complexo. Vamos abordar a visualização de dados em detalhe em lições separadas do curso.
Este resumo cobre os conceitos mais importantes do Pandas, no entanto, a biblioteca é muito rica e não há limites para o que pode fazer com ela! Vamos agora aplicar este conhecimento para resolver um problema específico.
Este resumo cobre os conceitos mais importantes do Pandas, no entanto, a biblioteca é muito rica e não há limites para o que pode fazer com ela! Vamos agora aplicar este conhecimento para resolver um problema específico.
## 🚀 Desafio 1: Analisar a Propagação da COVID
## 🚀 Desafio 1: Analisar a Propagação da COVID
O primeiro problema em que nos vamos focar é a modelação da propagação epidémica da COVID-19. Para isso, usaremos os dados sobre o número de indivíduos infetados em diferentes países, fornecidos pelo [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) da [Universidade Johns Hopkins](https://jhu.edu/). O conjunto de dados está disponível neste [repositório GitHub](https://github.com/CSSEGISandData/COVID-19).
O primeiro problema em que nos vamos focar é o modelo de propagação epidémica da COVID-19. Para isso, usaremos os dados sobre o número de indivíduos infetados em diferentes países, fornecidos pelo [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) da [Universidade Johns Hopkins](https://jhu.edu/). O conjunto de dados está disponível neste [repositório GitHub](https://github.com/CSSEGISandData/COVID-19).
Como queremos demonstrar como lidar com dados, convidamo-lo a abrir [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) e lê-lo de cima para baixo. Pode também executar as células e realizar alguns desafios que deixámos para si no final.
Como queremos demonstrar como lidar com dados, convidamo-lo a abrir [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) e lê-lo de cima para baixo. Pode também executar as células e realizar alguns desafios que deixámos para si no final.
![Propagação da COVID](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![Propagação da COVID](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.pt.png)
> Se não sabe como executar código no Jupyter Notebook, veja este [artigo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Se não sabe como executar código no Jupyter Notebook, veja [este artigo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Trabalhar com Dados Não Estruturados
## Trabalhar com Dados Não Estruturados
Embora os dados frequentemente venham em forma tabular, em alguns casos precisamos de lidar com dados menos estruturados, como texto ou imagens. Nestes casos, para aplicar as técnicas de processamento de dados que vimos acima, precisamos de **extrair** dados estruturados. Aqui estão alguns exemplos:
Embora os dados frequentemente venham em forma tabular, em alguns casos precisamos de lidar com dados menos estruturados, como texto ou imagens. Neste caso, para aplicar as técnicas de processamento de dados que vimos acima, precisamos de **extrair** dados estruturados. Aqui estão alguns exemplos:
* Extrair palavras-chave de texto e ver com que frequência essas palavras-chave aparecem
* Usar redes neurais para extrair informações sobre objetos numa imagem
* Obter informações sobre emoções de pessoas num feed de câmara de vídeo
* Extrair palavras-chave de texto e verificar com que frequência essas palavras aparecem
* Usar redes neurais para extrair informações sobre objetos numa imagem
* Obter informações sobre emoções de pessoas num feed de câmara de vídeo
## 🚀 Desafio 2: Analisar Artigos sobre COVID
## 🚀 Desafio 2: Analisar Artigos sobre COVID
Neste desafio, continuaremos com o tema da pandemia de COVID e focar-nos-emos no processamento de artigos científicos sobre o assunto. Existe o [Conjunto de Dados CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) com mais de 7000 (à data de escrita) artigos sobre COVID, disponível com metadados e resumos (e para cerca de metade deles também está disponível o texto completo).
Neste desafio, continuaremos com o tema da pandemia de COVID e focar-nos-emos no processamento de artigos científicos sobre o assunto. Existe o [Conjunto de Dados CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) com mais de 7000 (à data de escrita) artigos sobre COVID, disponível com metadados e resumos (e para cerca de metade deles também está disponível o texto completo).
Um exemplo completo de análise deste conjunto de dados usando o serviço cognitivo [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) está descrito neste [post de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vamos discutir uma versão simplificada desta análise.
Um exemplo completo de análise deste conjunto de dados usando o serviço cognitivo [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) é descrito [neste post de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vamos discutir uma versão simplificada desta análise.
> **NOTE**: Não fornecemos uma cópia do conjunto de dados como parte deste repositório. Pode precisar de fazer o download do ficheiro [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) deste [conjunto de dados no Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Pode ser necessário registar-se no Kaggle. Também pode fazer o download do conjunto de dados sem registo [a partir daqui](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), mas incluirá todos os textos completos além do ficheiro de metadados.
> **NOTE**: Não fornecemos uma cópia do conjunto de dados como parte deste repositório. Pode precisar de fazer o download do ficheiro [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) deste [conjunto de dados no Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Pode ser necessário registar-se no Kaggle. Também pode fazer o download do conjunto de dados sem registo [a partir daqui](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), mas incluirá todos os textos completos além do ficheiro de metadados.
Abra [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) e leia-o de cima para baixo. Pode também executar as células e realizar alguns desafios que deixámos para si no final.
Abra [`notebook-papers.ipynb`](notebook-papers.ipynb) e leia-o de cima para baixo. Pode também executar as células e realizar alguns desafios que deixámos para si no final.
![Tratamento Médico para COVID](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Tratamento Médico COVID](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.pt.png)
## Processamento de Dados de Imagem
## Processamento de Dados de Imagem
Recentemente, foram desenvolvidos modelos de IA muito poderosos que nos permitem compreender imagens. Existem muitas tarefas que podem ser resolvidas usando redes neurais pré-treinadas ou serviços na nuvem. Alguns exemplos incluem:
Recentemente, foram desenvolvidos modelos de IA muito poderosos que permitem compreender imagens. Existem muitas tarefas que podem ser resolvidas usando redes neurais pré-treinadas ou serviços na nuvem. Alguns exemplos incluem:
* **Classificação de Imagens**, que pode ajudá-lo a categorizar a imagem numa das classes pré-definidas. Pode facilmente treinar os seus próprios classificadores de imagens usando serviços como [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Deteção de Objetos** para identificar diferentes objetos na imagem. Serviços como [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) podem detetar vários objetos comuns, e pode treinar um modelo [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) para detetar objetos específicos de interesse.
* **Deteção de Faces**, incluindo idade, género e deteção de emoções. Isto pode ser feito através da [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Classificação de Imagens**, que pode ajudá-lo a categorizar a imagem numa das classes pré-definidas. Pode facilmente treinar os seus próprios classificadores de imagem usando serviços como [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Deteção de Objetos** para identificar diferentes objetos na imagem. Serviços como [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) podem detetar vários objetos comuns, e pode treinar um modelo [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) para detetar objetos específicos de interesse.
* **Deteção de Faces**, incluindo idade, género e deteção de emoções. Isto pode ser feito através da [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Todos esses serviços na nuvem podem ser chamados usando [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), e assim podem ser facilmente incorporados no seu fluxo de trabalho de exploração de dados.
Todos esses serviços na nuvem podem ser chamados usando [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), e assim podem ser facilmente incorporados no seu fluxo de trabalho de exploração de dados.
Aqui estão alguns exemplos de exploração de dados a partir de fontes de dados de imagem:
* No post de blog [Como Aprender Ciência de Dados sem Programação](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), exploramos fotos do Instagram, tentando entender o que faz as pessoas darem mais "likes" a uma foto. Primeiro extraímos o máximo de informações possível das imagens usando [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), e depois usamos o [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) para construir um modelo interpretável.
* No [Workshop de Estudos Faciais](https://github.com/CloudAdvocacy/FaceStudies), usamos a [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) para extrair emoções de pessoas em fotografias de eventos, com o objetivo de tentar entender o que faz as pessoas felizes.
Aqui estão alguns exemplos de exploração de dados a partir de fontes de dados de imagem:
* No post de blog [Como Aprender Ciência de Dados sem Programação](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) exploramos fotos do Instagram, tentando entender o que faz as pessoas darem mais "likes" a uma foto. Primeiro extraímos o máximo de informações das imagens possível usando [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), e depois usamos [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) para construir um modelo interpretável.
* No [Workshop de Estudos Faciais](https://github.com/CloudAdvocacy/FaceStudies) usamos a [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) para extrair emoções de pessoas em fotografias de eventos, com o objetivo de tentar entender o que faz as pessoas felizes.
## Conclusão
## Conclusão
Quer já tenha dados estruturados ou não estruturados, usando Python pode realizar todos os passos relacionados com o processamento e compreensão de dados. É provavelmente a maneira mais flexível de processar dados, e é por isso que a maioria dos cientistas de dados usa Python como sua ferramenta principal. Aprender Python em profundidade é provavelmente uma boa ideia se estiver sério na sua jornada de ciência de dados!
Quer já tenha dados estruturados ou não estruturados, usando Python pode realizar todos os passos relacionados com o processamento e compreensão de dados. É provavelmente a maneira mais flexível de processar dados, e é por isso que a maioria dos cientistas de dados usa Python como sua ferramenta principal. Aprender Python em profundidade é provavelmente uma boa ideia se está sério sobre a sua jornada na ciência de dados!
## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Revisão e Estudo Individual
## Revisão & Estudo Individual
**Livros**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Recursos Online**
* Tutorial oficial [10 minutos para Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Documentação sobre Visualização com Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* [Documentação sobre Visualização com Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Aprender Python**
* [Aprenda Python de forma divertida com Turtle Graphics e Fractais](https://github.com/shwars/pycourse)
* [Dê os seus primeiros passos com Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Caminho de Aprendizagem no [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Dê os seus primeiros passos com Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Caminho de Aprendizagem no [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Tarefa
## Tarefa
[Realize um estudo de dados mais detalhado para os desafios acima](assignment.md)
[Realize um estudo mais detalhado dos dados para os desafios acima](assignment.md)
## Créditos
## Créditos
Esta lição foi criada com ♥️ por [Dmitry Soshnikov](http://soshnikov.com)
Esta lição foi criada com ♥️ por [Dmitry Soshnikov](http://soshnikov.com)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução.
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante ter em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T18:21:45+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:58:53+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "ro"
}
@ -13,18 +13,18 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Lucrul cu Python - _Sketchnote de [@nitya](https://twitter.com/nitya)_ |
[![Video Introductiv](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Video Introductiv](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ro.png)](https://youtu.be/dZjWOGbsN4Y)
Deși bazele de date oferă modalități foarte eficiente de stocare a datelor și de interogare a acestora folosind limbaje de interogare, cea mai flexibilă metodă de procesare a datelor este scrierea propriului program pentru manipularea datelor. În multe cazuri, o interogare SQL ar fi o metodă mai eficientă. Totuși, în unele situații, când este necesară o procesare mai complexă a datelor, aceasta nu poate fi realizată ușor folosind SQL.
Procesarea datelor poate fi programată în orice limbaj de programare, dar există anumite limbaje care sunt mai potrivite pentru lucrul cu date. De obicei, oamenii de știință în domeniul datelor preferă unul dintre următoarele limbaje:
* **[Python](https://www.python.org/)**, un limbaj de programare general, considerat adesea una dintre cele mai bune opțiuni pentru începători datorită simplității sale. Python are multe biblioteci suplimentare care te pot ajuta să rezolvi diverse probleme practice, cum ar fi extragerea datelor dintr-un fișier ZIP sau convertirea unei imagini în tonuri de gri. Pe lângă știința datelor, Python este utilizat frecvent și pentru dezvoltarea web.
* **[R](https://www.r-project.org/)** este un instrument tradițional dezvoltat pentru procesarea statistică a datelor. Acesta conține un depozit vast de biblioteci (CRAN), ceea ce îl face o alegere bună pentru procesarea datelor. Totuși, R nu este un limbaj de programare general și este rar utilizat în afara domeniului științei datelor.
* **[Python](https://www.python.org/)**, un limbaj de programare general, considerat adesea una dintre cele mai bune opțiuni pentru începători datorită simplității sale. Python are multe biblioteci suplimentare care te pot ajuta să rezolvi diverse probleme practice, cum ar fi extragerea datelor dintr-un fișier ZIP sau conversia unei imagini în tonuri de gri. Pe lângă știința datelor, Python este utilizat frecvent și în dezvoltarea web.
* **[R](https://www.r-project.org/)** este un instrument tradițional dezvoltat pentru procesarea datelor statistice. Acesta conține un depozit vast de biblioteci (CRAN), ceea ce îl face o alegere bună pentru procesarea datelor. Totuși, R nu este un limbaj de programare general și este rar utilizat în afara domeniului științei datelor.
* **[Julia](https://julialang.org/)** este un alt limbaj dezvoltat special pentru știința datelor. Acesta este conceput pentru a oferi performanțe mai bune decât Python, fiind un instrument excelent pentru experimente științifice.
În această lecție, ne vom concentra pe utilizarea Python pentru procesarea simplă a datelor. Vom presupune că ai o familiaritate de bază cu limbajul. Dacă dorești o introducere mai detaliată în Python, poți consulta unul dintre următoarele resurse:
* [Învață Python într-un mod distractiv cu Turtle Graphics și Fractali](https://github.com/shwars/pycourse) - Curs introductiv rapid pe GitHub despre programarea în Python
* [Învață Python într-un mod distractiv cu Turtle Graphics și Fractali](https://github.com/shwars/pycourse) - un curs rapid de introducere în programarea Python, disponibil pe GitHub
* [Fă primii pași cu Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - Parcurs de învățare pe [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Datele pot avea multe forme. În această lecție, vom analiza trei forme de date - **date tabelare**, **text** și **imagini**.
@ -39,17 +39,17 @@ Ne vom concentra pe câteva exemple de procesare a datelor, în loc să oferim o
## Date Tabelare și Dataframes
Ai întâlnit deja date tabelare când am discutat despre bazele de date relaționale. Când ai multe date, iar acestea sunt conținute în mai multe tabele interconectate, este logic să folosești SQL pentru a lucra cu ele. Totuși, există multe situații în care avem un tabel de date și trebuie să obținem o **înțelegere** sau **perspectivă** asupra acestor date, cum ar fi distribuția, corelația între valori etc. În știința datelor, există multe cazuri în care trebuie să efectuăm transformări ale datelor originale, urmate de vizualizare. Ambele etape pot fi realizate ușor folosind Python.
Ai întâlnit deja date tabelare când am discutat despre bazele de date relaționale. Când ai multe date, iar acestea sunt conținute în mai multe tabele interconectate, utilizarea SQL pentru a lucra cu ele este cu siguranță o alegere logică. Totuși, există multe situații în care avem un tabel de date și trebuie să obținem o **înțelegere** sau **perspectivă** asupra acestor date, cum ar fi distribuția, corelația între valori etc. În știința datelor, există multe cazuri în care trebuie să efectuăm transformări ale datelor originale, urmate de vizualizare. Ambele etape pot fi realizate ușor folosind Python.
Există două biblioteci foarte utile în Python care te pot ajuta să lucrezi cu date tabelare:
* **[Pandas](https://pandas.pydata.org/)** îți permite să manipulezi așa-numitele **Dataframes**, care sunt analoage tabelelor relaționale. Poți avea coloane denumite și poți efectua diverse operațiuni pe rânduri, coloane și dataframes în general.
* **[Numpy](https://numpy.org/)** este o bibliotecă pentru lucrul cu **tensori**, adică **matrici** multidimensionale. Matricele au valori de același tip de bază și sunt mai simple decât dataframes, dar oferă mai multe operațiuni matematice și creează mai puțin overhead.
* **[Pandas](https://pandas.pydata.org/)** îți permite să manipulezi așa-numitele **Dataframes**, care sunt analoge tabelelor relaționale. Poți avea coloane denumite și poți efectua diferite operațiuni pe rânduri, coloane și dataframes în general.
* **[Numpy](https://numpy.org/)** este o bibliotecă pentru lucrul cu **tensori**, adică **matrici** multidimensionale. Matricile au valori de același tip de bază și sunt mai simple decât dataframes, dar oferă mai multe operațiuni matematice și creează mai puțin overhead.
Există și câteva alte biblioteci pe care ar trebui să le cunoști:
* **[Matplotlib](https://matplotlib.org/)** este o bibliotecă utilizată pentru vizualizarea datelor și crearea de grafice
* **[SciPy](https://www.scipy.org/)** este o bibliotecă cu funcții științifice suplimentare. Am întâlnit deja această bibliotecă când am discutat despre probabilitate și statistici
Iată un fragment de cod pe care l-ai folosi de obicei pentru a importa aceste biblioteci la începutul programului tău Python:
Iată un exemplu de cod pe care l-ai folosi de obicei pentru a importa aceste biblioteci la începutul programului tău Python:
```python
import numpy as np
import pandas as pd
@ -61,11 +61,11 @@ Pandas se concentrează pe câteva concepte de bază.
### Series
**Series** este o secvență de valori, similară unei liste sau unui array numpy. Principala diferență este că series are și un **index**, iar când operăm pe series (de exemplu, le adunăm), indexul este luat în considerare. Indexul poate fi la fel de simplu ca numărul de rând (este indexul utilizat implicit când creăm un series dintr-o listă sau un array) sau poate avea o structură complexă, cum ar fi un interval de date.
**Series** este o secvență de valori, similară unei liste sau unui array numpy. Diferența principală este că series are și un **index**, iar când operăm pe series (de exemplu, le adunăm), indexul este luat în considerare. Indexul poate fi la fel de simplu ca numărul de rând (este indexul utilizat implicit când creăm un series dintr-o listă sau un array), sau poate avea o structură complexă, cum ar fi un interval de date.
> **Notă**: Există cod introductiv Pandas în notebook-ul asociat [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Vom prezenta doar câteva exemple aici, dar ești binevenit să explorezi notebook-ul complet.
> **Notă**: Există cod introductiv Pandas în notebook-ul asociat [`notebook.ipynb`](notebook.ipynb). Vom prezenta doar câteva exemple aici, dar ești binevenit să explorezi notebook-ul complet.
Să luăm un exemplu: dorim să analizăm vânzările unui magazin de înghețată. Să generăm un series de numere de vânzări (numărul de produse vândute în fiecare zi) pentru o anumită perioadă de timp:
Să luăm un exemplu: dorim să analizăm vânzările de la magazinul nostru de înghețată. Să generăm un series de numere de vânzări (numărul de produse vândute în fiecare zi) pentru o anumită perioadă de timp:
```python
start_date = "Jan 1, 2020"
@ -75,7 +75,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Grafic Serii Temporale](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Grafic Serii Temporale](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ro.png)
Acum să presupunem că în fiecare săptămână organizăm o petrecere pentru prieteni și luăm 10 pachete suplimentare de înghețată pentru petrecere. Putem crea un alt series, indexat pe săptămână, pentru a demonstra acest lucru:
```python
@ -86,16 +86,16 @@ Când adunăm cele două series, obținem numărul total:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Grafic Serii Temporale](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Grafic Serii Temporale](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ro.png)
> **Notă** că nu folosim sintaxa simplă `total_items+additional_items`. Dacă am fi făcut acest lucru, am fi obținut multe valori `NaN` (*Not a Number*) în series-ul rezultat. Acest lucru se întâmplă deoarece există valori lipsă pentru unele puncte de index în series-ul `additional_items`, iar adunarea lui `NaN` cu orice altceva rezultă în `NaN`. Astfel, trebuie să specificăm parametrul `fill_value` în timpul adunării.
> **Notă** că nu folosim sintaxa simplă `total_items+additional_items`. Dacă am fi făcut acest lucru, am fi obținut multe valori `NaN` (*Not a Number*) în series-ul rezultat. Acest lucru se întâmplă deoarece lipsesc valori pentru unele puncte de index în series-ul `additional_items`, iar adunarea `NaN` cu orice altceva rezultă în `NaN`. Astfel, trebuie să specificăm parametrul `fill_value` în timpul adunării.
Cu seriile temporale, putem **resampla** seria cu intervale de timp diferite. De exemplu, să presupunem că dorim să calculăm volumul mediu de vânzări lunar. Putem folosi următorul cod:
Cu serii temporale, putem **resampla** series-ul cu intervale de timp diferite. De exemplu, să presupunem că dorim să calculăm volumul mediu de vânzări lunar. Putem folosi următorul cod:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Medii Lunare Serii Temporale](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Medii Lunare Serii Temporale](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ro.png)
### DataFrame
@ -139,15 +139,15 @@ Iată câteva dintre cele mai importante operațiuni pe care le putem efectua pe
**Selecția coloanelor**. Putem selecta coloane individuale scriind `df['A']` - această operațiune returnează un Series. Putem selecta și un subset de coloane într-un alt DataFrame scriind `df[['B','A']]` - aceasta returnează un alt DataFrame.
**Filtrarea** doar a anumitor rânduri pe baza unor criterii. De exemplu, pentru a păstra doar rândurile cu coloana `A` mai mare decât 5, putem scrie `df[df['A']>5]`.
**Filtrarea** doar a anumitor rânduri pe baza unor criterii. De exemplu, pentru a păstra doar rândurile în care coloana `A` este mai mare decât 5, putem scrie `df[df['A']>5]`.
> **Notă**: Modul în care funcționează filtrarea este următorul. Expresia `df['A']<5` returnează un series boolean, care indică dacă expresia este `True` sau `False` pentru fiecare element al series-ului original `df['A']`. Când series-ul boolean este utilizat ca index, acesta returnează subsetul de rânduri din DataFrame. Astfel, nu este posibil să folosești expresii boolean arbitrare din Python, de exemplu, scriind `df[df['A']>5 and df['A']<7]` ar fi greșit. În schimb, ar trebui să folosești operația specială `&` pe series boolean, scriind `df[(df['A']>5) & (df['A']<7)]` (*parantezele sunt importante aici*).
> **Notă**: Modul în care funcționează filtrarea este următorul. Expresia `df['A']<5` returnează un series boolean, care indică dacă expresia este `True` sau `False` pentru fiecare element al series-ului original `df['A']`. Când series-ul boolean este utilizat ca index, acesta returnează subsetul de rânduri din DataFrame. Astfel, nu este posibil să utilizăm expresii boolean arbitrare din Python, de exemplu, scrierea `df[df['A']>5 and df['A']<7]` ar fi greșită. În schimb, ar trebui să utilizăm operația specială `&` pe series boolean, scriind `df[(df['A']>5) & (df['A']<7)]` (*parantezele sunt importante aici*).
**Crearea de coloane calculabile noi**. Putem crea ușor coloane calculabile noi pentru DataFrame-ul nostru folosind expresii intuitive ca aceasta:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Acest exemplu calculează abaterea lui A față de valoarea sa medie. Ce se întâmplă de fapt aici este că calculăm un series și apoi atribuim acest series părții din stânga, creând o altă coloană. Astfel, nu putem folosi operațiuni care nu sunt compatibile cu series, de exemplu, codul de mai jos este greșit:
Acest exemplu calculează abaterea lui A față de valoarea sa medie. Ce se întâmplă de fapt aici este că calculăm un series și apoi atribuim acest series părții din stânga, creând o altă coloană. Astfel, nu putem utiliza operațiuni care nu sunt compatibile cu series, de exemplu, codul de mai jos este greșit:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
@ -182,7 +182,7 @@ df.iloc[:5]
**Gruparea** este adesea utilizată pentru a obține un rezultat similar cu *tabelele pivot* din Excel. Să presupunem că dorim să calculăm valoarea medie a coloanei `A` pentru fiecare număr dat de `LenB`. Atunci putem grupa DataFrame-ul nostru după `LenB` și să apelăm `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Dacă trebuie să calculăm media și numărul de elemente din grup, atunci putem folosi funcția mai complexă `aggregate`:
```python
@ -205,13 +205,13 @@ Am văzut cât de ușor este să construim Series și DataFrames din obiecte Pyt
```python
df = pd.read_csv('file.csv')
```
Vom vedea mai multe exemple de încărcare a datelor, inclusiv obținerea lor de pe site-uri web externe, în secțiunea "Provocare".
Vom vedea mai multe exemple de încărcare a datelor, inclusiv obținerea acestora de pe site-uri web externe, în secțiunea „Provocare”.
### Printarea și Vizualizarea
Un Data Scientist trebuie adesea să exploreze datele, astfel încât este important să le poată vizualiza. Când DataFrame-ul este mare, de multe ori vrem doar să ne asigurăm că facem totul corect prin printarea primelor câteva rânduri. Acest lucru poate fi realizat prin apelarea `df.head()`. Dacă îl rulați din Jupyter Notebook, acesta va afișa DataFrame-ul într-o formă tabelară plăcută.
Un Data Scientist trebuie adesea să exploreze datele, așa că este important să le poată vizualiza. Când DataFrame-ul este mare, de multe ori vrem doar să ne asigurăm că facem totul corect prin printarea primelor câteva rânduri. Acest lucru poate fi realizat prin apelarea `df.head()`. Dacă îl rulați din Jupyter Notebook, acesta va afișa DataFrame-ul într-o formă tabelară frumoasă.
Am văzut, de asemenea, utilizarea funcției `plot` pentru a vizualiza unele coloane. Deși `plot` este foarte util pentru multe sarcini și suportă multe tipuri diferite de grafice prin parametrul `kind=`, puteți întotdeauna folosi biblioteca `matplotlib` pentru a crea ceva mai complex. Vom acoperi vizualizarea datelor în detaliu în lecții separate ale cursului.
Am văzut, de asemenea, utilizarea funcției `plot` pentru a vizualiza unele coloane. Deși `plot` este foarte util pentru multe sarcini și acceptă multe tipuri diferite de grafice prin parametrul `kind=`, puteți întotdeauna să utilizați biblioteca `matplotlib` pentru a crea ceva mai complex. Vom acoperi vizualizarea datelor în detaliu în lecțiile separate ale cursului.
Această prezentare generală acoperă cele mai importante concepte ale Pandas, totuși, biblioteca este foarte bogată și nu există limite pentru ceea ce puteți face cu ea! Să aplicăm acum aceste cunoștințe pentru rezolvarea unei probleme specifice.
@ -219,9 +219,9 @@ Această prezentare generală acoperă cele mai importante concepte ale Pandas,
Prima problemă pe care ne vom concentra este modelarea răspândirii epidemiei de COVID-19. Pentru a face acest lucru, vom folosi datele despre numărul de persoane infectate în diferite țări, furnizate de [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) de la [Johns Hopkins University](https://jhu.edu/). Setul de date este disponibil în [acest depozit GitHub](https://github.com/CSSEGISandData/COVID-19).
Deoarece dorim să demonstrăm cum să lucrăm cu datele, vă invităm să deschideți [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) și să îl citiți de la început până la sfârșit. Puteți, de asemenea, să executați celulele și să faceți unele provocări pe care le-am lăsat pentru voi la final.
Deoarece dorim să demonstrăm cum să lucrăm cu datele, vă invităm să deschideți [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) și să îl citiți de la început până la sfârșit. Puteți, de asemenea, să executați celulele și să rezolvați unele provocări pe care le-am lăsat pentru voi la final.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ro.png)
> Dacă nu știți cum să rulați codul în Jupyter Notebook, consultați [acest articol](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
@ -229,21 +229,21 @@ Deoarece dorim să demonstrăm cum să lucrăm cu datele, vă invităm să desch
Deși datele vin foarte des sub formă tabelară, în unele cazuri trebuie să lucrăm cu date mai puțin structurate, de exemplu, text sau imagini. În acest caz, pentru a aplica tehnicile de procesare a datelor pe care le-am văzut mai sus, trebuie să **extragem** cumva date structurate. Iată câteva exemple:
* Extracția cuvintelor cheie din text și analiza frecvenței apariției acestora
* Extracția cuvintelor cheie din text și analiza frecvenței acestora
* Utilizarea rețelelor neuronale pentru a extrage informații despre obiectele dintr-o imagine
* Obținerea informațiilor despre emoțiile oamenilor din fluxul video al unei camere
## 🚀 Provocarea 2: Analiza Lucrărilor despre COVID
În această provocare, vom continua cu tema pandemiei COVID și ne vom concentra pe procesarea lucrărilor științifice pe acest subiect. Există [Setul de Date CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) cu mai mult de 7000 (la momentul scrierii) lucrări despre COVID, disponibile cu metadate și rezumate (și pentru aproximativ jumătate dintre ele este disponibil și textul complet).
În această provocare, vom continua cu tema pandemiei COVID și ne vom concentra pe procesarea lucrărilor științifice pe acest subiect. Există [Setul de Date CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) cu peste 7000 (la momentul redactării) lucrări despre COVID, disponibile cu metadate și rezumate (și pentru aproximativ jumătate dintre ele este furnizat și textul complet).
Un exemplu complet de analiză a acestui set de date folosind serviciul cognitiv [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) este descris [în acest articol de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vom discuta o versiune simplificată a acestei analize.
> **NOTE**: Nu oferim o copie a setului de date ca parte a acestui depozit. Este posibil să fie nevoie să descărcați mai întâi fișierul [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) din [acest set de date pe Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Este posibil să fie necesară înregistrarea pe Kaggle. De asemenea, puteți descărca setul de date fără înregistrare [de aici](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), dar acesta va include toate textele complete în plus față de fișierul de metadate.
> **NOTE**: Nu oferim o copie a setului de date ca parte a acestui depozit. Este posibil să fie nevoie să descărcați mai întâi fișierul [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) din [acest set de date de pe Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Este posibil să fie necesară înregistrarea pe Kaggle. De asemenea, puteți descărca setul de date fără înregistrare [de aici](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), dar acesta va include toate textele complete în plus față de fișierul de metadate.
Deschideți [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) și citiți-l de la început până la sfârșit. Puteți, de asemenea, să executați celulele și să faceți unele provocări pe care le-am lăsat pentru voi la final.
Deschideți [`notebook-papers.ipynb`](notebook-papers.ipynb) și citiți-l de la început până la sfârșit. Puteți, de asemenea, să executați celulele și să rezolvați unele provocări pe care le-am lăsat pentru voi la final.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ro.png)
## Procesarea Datelor din Imagini
@ -253,15 +253,15 @@ Recent, au fost dezvoltate modele AI foarte puternice care ne permit să înțel
* **Detectarea Obiectelor** pentru a identifica diferite obiecte din imagine. Servicii precum [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) pot detecta un număr de obiecte comune, iar modelul [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) poate fi antrenat pentru a detecta obiecte specifice de interes.
* **Detectarea Fețelor**, inclusiv vârsta, genul și emoțiile. Acest lucru poate fi realizat prin [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Toate aceste servicii cloud pot fi apelate folosind [SDK-uri Python](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) și, astfel, pot fi ușor integrate în fluxul de lucru de explorare a datelor.
Toate aceste servicii cloud pot fi apelate folosind [SDK-uri Python](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) și, astfel, pot fi ușor integrate în fluxul de explorare a datelor.
Iată câteva exemple de explorare a datelor din surse de imagini:
* În articolul de blog [Cum să înveți Data Science fără programare](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) explorăm fotografii de pe Instagram, încercând să înțelegem ce determină oamenii să aprecieze mai mult o fotografie. Mai întâi extragem cât mai multe informații din imagini folosind [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), apoi folosim [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) pentru a construi un model interpretabil.
* În articolul de blog [Cum să înveți Data Science fără programare](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) explorăm fotografiile de pe Instagram, încercând să înțelegem ce determină oamenii să aprecieze mai mult o fotografie. Mai întâi extragem cât mai multe informații din imagini folosind [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), apoi folosim [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) pentru a construi un model interpretabil.
* În [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) folosim [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) pentru a extrage emoțiile oamenilor din fotografii de la evenimente, încercând să înțelegem ce îi face fericiți.
## Concluzie
Indiferent dacă aveți deja date structurate sau nestructurate, folosind Python puteți realiza toți pașii legați de procesarea și înțelegerea datelor. Este probabil cea mai flexibilă modalitate de procesare a datelor, și acesta este motivul pentru care majoritatea data scientist-ilor folosesc Python ca instrument principal. A învăța Python în profunzime este probabil o idee bună dacă sunteți serios în privința călătoriei voastre în data science!
Indiferent dacă aveți deja date structurate sau nestructurate, folosind Python puteți realiza toate etapele legate de procesarea și înțelegerea datelor. Este probabil cea mai flexibilă modalitate de procesare a datelor, și acesta este motivul pentru care majoritatea data scientist-ilor folosesc Python ca instrument principal. Studierea Python în profunzime este probabil o idee bună dacă sunteți serios în privința călătoriei voastre în data science!
## [Quiz post-lectură](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -288,5 +288,5 @@ Această lecție a fost scrisă cu ♥️ de [Dmitry Soshnikov](http://soshnikov
---
**Declinare de responsabilitate**:
Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri.
**Declinarea responsabilității**:
Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși depunem eforturi pentru a asigura acuratețea, vă rugăm să aveți în vedere că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T06:07:26+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:22:44+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "ru"
}
@ -13,7 +13,7 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Работа с Python - _Скетчноут от [@nitya](https://twitter.com/nitya)_ |
[![Вводное видео](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Вводное видео](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ru.png)](https://youtu.be/dZjWOGbsN4Y)
Хотя базы данных предоставляют очень эффективные способы хранения данных и их запросов с использованием языков запросов, наиболее гибким способом обработки данных является написание собственной программы для их манипуляции. Во многих случаях запрос к базе данных будет более эффективным. Однако в некоторых случаях, когда требуется более сложная обработка данных, это не так просто сделать с помощью SQL.
Обработка данных может быть запрограммирована на любом языке программирования, но существуют языки, которые считаются более высокоуровневыми для работы с данными. Специалисты по данным обычно предпочитают один из следующих языков:
@ -29,15 +29,15 @@ CO_OP_TRANSLATOR_METADATA:
Данные могут быть представлены в различных формах. В этом уроке мы рассмотрим три формы данных — **табличные данные**, **текст** и **изображения**.
Мы сосредоточимся на нескольких примерах обработки данных, вместо того чтобы давать полный обзор всех связанных библиотек. Это позволит вам понять основные возможности и оставит вас с пониманием того, где искать решения ваших задач, когда это потребуется.
Мы сосредоточимся на нескольких примерах обработки данных, вместо того чтобы давать полный обзор всех связанных библиотек. Это позволит вам понять основные возможности и оставит понимание того, где искать решения ваших задач, когда это потребуется.
> **Самый полезный совет**. Когда вам нужно выполнить определенную операцию с данными, но вы не знаете, как это сделать, попробуйте поискать это в интернете. [Stackoverflow](https://stackoverflow.com/) обычно содержит множество полезных примеров кода на Python для многих типичных задач.
> **Самый полезный совет**. Если вам нужно выполнить определенную операцию с данными, но вы не знаете, как это сделать, попробуйте поискать это в интернете. [Stackoverflow](https://stackoverflow.com/) обычно содержит множество полезных примеров кода на Python для многих типичных задач.
## [Тест перед лекцией](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Табличные данные и DataFrame
Вы уже сталкивались с табличными данными, когда мы говорили о реляционных базах данных. Когда у вас много данных, и они содержатся в нескольких связанных таблицах, определенно имеет смысл использовать SQL для работы с ними. Однако существует множество случаев, когда у нас есть таблица данных, и нам нужно получить некоторое **понимание** или **инсайты** об этих данных, такие как распределение, корреляция между значениями и т. д. В науке о данных часто требуется выполнить некоторые преобразования исходных данных, а затем визуализировать их. Оба этих шага легко выполнить с помощью Python.
Вы уже сталкивались с табличными данными, когда мы говорили о реляционных базах данных. Когда у вас много данных, и они содержатся в нескольких связанных таблицах, определенно имеет смысл использовать SQL для работы с ними. Однако есть много случаев, когда у нас есть таблица данных, и нам нужно получить некоторое **понимание** или **инсайты** об этих данных, такие как распределение, корреляция между значениями и т. д. В науке о данных часто требуется выполнить некоторые преобразования исходных данных, а затем визуализировать их. Оба этих шага легко выполнить с помощью Python.
Существует две наиболее полезные библиотеки в Python, которые помогут вам работать с табличными данными:
* **[Pandas](https://pandas.pydata.org/)** позволяет манипулировать так называемыми **DataFrame**, которые аналогичны реляционным таблицам. Вы можете использовать именованные столбцы и выполнять различные операции над строками, столбцами и DataFrame в целом.
@ -45,7 +45,7 @@ CO_OP_TRANSLATOR_METADATA:
Также есть несколько других библиотек, о которых стоит знать:
* **[Matplotlib](https://matplotlib.org/)** — библиотека для визуализации данных и построения графиков
* **[SciPy](https://www.scipy.org/)** — библиотека с дополнительными научными функциями. Мы уже сталкивались с ней, когда говорили о вероятности и статистике.
* **[SciPy](https://www.scipy.org/)** — библиотека с дополнительными научными функциями. Мы уже сталкивались с этой библиотекой, когда говорили о вероятности и статистике.
Вот пример кода, который обычно используется для импорта этих библиотек в начале программы на Python:
```python
@ -53,15 +53,15 @@ 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
```
```
Pandas основан на нескольких базовых концепциях.
### Series
**Series** — это последовательность значений, похожая на список или массив numpy. Главное отличие заключается в том, что Series также имеет **индекс**, и при выполнении операций (например, сложении) индекс учитывается. Индекс может быть простым, например, номером строки (он используется по умолчанию при создании Series из списка или массива), или иметь сложную структуру, например, временной интервал.
**Series** — это последовательность значений, аналогичная списку или массиву numpy. Главное отличие состоит в том, что Series также имеет **индекс**, и при выполнении операций (например, сложении) индекс учитывается. Индекс может быть простым числовым номером строки (он используется по умолчанию при создании Series из списка или массива) или иметь сложную структуру, например, временной интервал.
> **Примечание**: В сопровождающем ноутбуке [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) есть вводный код для работы с Pandas. Здесь мы приводим только некоторые примеры, и вы, конечно, можете ознакомиться с полным ноутбуком.
> **Примечание**: В сопровождающем ноутбуке [`notebook.ipynb`](notebook.ipynb) есть вводный код для работы с Pandas. Здесь мы приводим только некоторые примеры, и вы, конечно, можете ознакомиться с полным ноутбуком.
Рассмотрим пример: мы хотим проанализировать продажи нашего магазина мороженого. Давайте создадим Series с числами продаж (количество проданных единиц в день) за определенный период времени:
@ -73,9 +73,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![График временного ряда](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![График временного ряда](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ru.png)
Теперь предположим, что каждую неделю мы устраиваем вечеринку для друзей и берем дополнительно 10 упаковок мороженого для вечеринки. Мы можем создать еще один Series, индексированный по неделям, чтобы это продемонстрировать:
Теперь предположим, что каждую неделю мы устраиваем вечеринку для друзей и берем дополнительно 10 упаковок мороженого для вечеринки. Мы можем создать еще один Series, индексированный по неделям, чтобы это показать:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -84,16 +84,16 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![График временного ряда](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![График временного ряда](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ru.png)
> **Примечание**: Мы не используем простую запись `total_items+additional_items`. Если бы мы это сделали, то получили бы много значений `NaN` (*Not a Number*) в результирующем Series. Это происходит из-за отсутствия значений для некоторых индексов в Series `additional_items`, а сложение `NaN` с чем-либо дает `NaN`. Поэтому необходимо указать параметр `fill_value` при сложении.
> **Примечание**: Мы не используем простую запись `total_items+additional_items`. Если бы мы это сделали, то получили бы много значений `NaN` (*Not a Number*) в результирующем Series. Это происходит из-за отсутствующих значений для некоторых точек индекса в Series `additional_items`, а сложение `NaN` с чем-либо дает `NaN`. Поэтому необходимо указать параметр `fill_value` при сложении.
С временными рядами мы также можем **пересчитывать** данные с разными временными интервалами. Например, если мы хотим вычислить средний объем продаж за месяц, мы можем использовать следующий код:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Средние значения временного ряда за месяц](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Средние значения временного ряда за месяц](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ru.png)
### DataFrame
@ -137,20 +137,20 @@ df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
**Выбор столбцов**. Мы можем выбрать отдельные столбцы, написав `df['A']` — эта операция возвращает Series. Мы также можем выбрать подмножество столбцов в другой DataFrame, написав `df[['B','A']]` — это возвращает другой DataFrame.
**Фильтрация** только определенных строк по критериям. Например, чтобы оставить только строки, где столбец `A` больше 5, мы можем написать `df[df['A']>5]`.
**Фильтрация** строк по критериям. Например, чтобы оставить только строки, где столбец `A` больше 5, мы можем написать `df[df['A']>5]`.
> **Примечание**: Механизм фильтрации работает следующим образом. Выражение `df['A']<5` возвращает булев Series, который указывает, является ли выражение `True` или `False` для каждого элемента исходного Series `df['A']`. Когда булев Series используется в качестве индекса, он возвращает подмножество строк в DataFrame. Таким образом, нельзя использовать произвольные булевы выражения Python, например, запись `df[df['A']>5 and df['A']<7]` будет неверной. Вместо этого следует использовать специальную операцию `&` для булевых Series, написав `df[(df['A']>5) & (df['A']<7)]` (*скобки здесь важны*).
> **Примечание**: Фильтрация работает следующим образом. Выражение `df['A']<5` возвращает булевый Series, который указывает, является ли выражение `True` или `False` для каждого элемента исходного Series `df['A']`. Когда булевый Series используется в качестве индекса, он возвращает подмножество строк в DataFrame. Таким образом, нельзя использовать произвольное булевое выражение Python, например, запись `df[df['A']>5 and df['A']<7]` будет неверной. Вместо этого следует использовать специальную операцию `&` для булевых Series, написав `df[(df['A']>5) & (df['A']<7)]` (*скобки здесь важны*).
**Создание новых вычисляемых столбцов**. Мы можем легко создавать новые вычисляемые столбцы для нашего DataFrame, используя интуитивно понятные выражения, например:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Этот пример вычисляет отклонение `A` от его среднего значения. На самом деле мы вычисляем Series, а затем присваиваем его левой части, создавая новый столбец. Таким образом, нельзя использовать операции, несовместимые с Series, например, следующий код неверен:
Этот пример вычисляет отклонение `A` от его среднего значения. На самом деле мы вычисляем Series, а затем присваиваем этот Series левой части, создавая новый столбец. Таким образом, нельзя использовать операции, несовместимые с Series, например, следующий код неверен:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Последний пример, хотя и синтаксически корректен, дает неверный результат, так как присваивает длину Series `B` всем значениям в столбце, а не длину отдельных элементов, как мы намеревались.
Последний пример, хотя и синтаксически корректен, дает неверный результат, так как он присваивает длину Series `B` всем значениям в столбце, а не длину отдельных элементов, как мы намеревались.
Если нам нужно вычислить сложные выражения, мы можем использовать функцию `apply`. Последний пример можно записать следующим образом:
```python
@ -180,7 +180,7 @@ df.iloc[:5]
**Группировка** часто используется для получения результата, аналогичного *сводным таблицам* в Excel. Предположим, что мы хотим вычислить среднее значение столбца `A` для каждого значения `LenB`. Тогда мы можем сгруппировать наш DataFrame по `LenB` и вызвать `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Если нам нужно вычислить среднее значение и количество элементов в группе, то мы можем использовать более сложную функцию `aggregate`:
```python
@ -199,67 +199,67 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### Получение данных
Мы уже видели, как легко создавать Series и DataFrames из объектов Python. Однако данные обычно поступают в виде текстового файла или таблицы Excel. К счастью, Pandas предлагает простой способ загрузки данных с диска. Например, чтение файла CSV настолько просто:
Мы видели, как легко создавать Series и DataFrame из объектов Python. Однако данные обычно поступают в виде текстового файла или таблицы Excel. К счастью, Pandas предлагает простой способ загрузки данных с диска. Например, чтение CSV-файла настолько просто, как это:
```python
df = pd.read_csv('file.csv')
```
Мы рассмотрим больше примеров загрузки данных, включая их получение с внешних веб-сайтов, в разделе "Задача".
Мы рассмотрим больше примеров загрузки данных, включая их получение с внешних веб-сайтов, в разделе "Задание".
### Печать и визуализация
Датасаентист часто должен исследовать данные, поэтому важно уметь их визуализировать. Когда DataFrame большой, часто бывает достаточно убедиться, что все делается правильно, просто напечатав первые несколько строк. Это можно сделать, вызвав `df.head()`. Если вы запускаете это из Jupyter Notebook, он выведет DataFrame в удобной табличной форме.
Датасаентисту часто приходится исследовать данные, поэтому важно уметь их визуализировать. Когда DataFrame большой, зачастую мы хотим просто убедиться, что всё делаем правильно, напечатав первые несколько строк. Это можно сделать, вызвав `df.head()`. Если вы запускаете это из Jupyter Notebook, он выведет DataFrame в удобной табличной форме.
Мы также видели использование функции `plot` для визуализации некоторых столбцов. Хотя `plot` очень полезен для многих задач и поддерживает множество различных типов графиков через параметр `kind=`, вы всегда можете использовать библиотеку `matplotlib` для построения чего-то более сложного. Мы подробно рассмотрим визуализацию данных в отдельных уроках курса.
Этот обзор охватывает самые важные концепции Pandas, однако библиотека очень богата, и нет предела тому, что можно с ней сделать! Давайте теперь применим эти знания для решения конкретной задачи.
Этот обзор охватывает самые важные концепции Pandas, однако библиотека очень богата, и нет предела тому, что вы можете с ней сделать! Давайте теперь применим эти знания для решения конкретной задачи.
## 🚀 Задача 1: Анализ распространения COVID
## 🚀 Задание 1: Анализ распространения COVID
Первая проблема, на которой мы сосредоточимся, — это моделирование эпидемического распространения COVID-19. Для этого мы будем использовать данные о количестве инфицированных людей в разных странах, предоставленные [Центром системной науки и инженерии](https://systems.jhu.edu/) (CSSE) при [Университете Джонса Хопкинса](https://jhu.edu/). Набор данных доступен в [этом репозитории GitHub](https://github.com/CSSEGISandData/COVID-19).
Первая задача, на которой мы сосредоточимся, — это моделирование распространения эпидемии COVID-19. Для этого мы будем использовать данные о количестве инфицированных людей в разных странах, предоставленные [Центром системной науки и инженерии](https://systems.jhu.edu/) (CSSE) при [Университете Джонса Хопкинса](https://jhu.edu/). Набор данных доступен в [этом репозитории GitHub](https://github.com/CSSEGISandData/COVID-19).
Поскольку мы хотим продемонстрировать, как работать с данными, мы приглашаем вас открыть [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) и прочитать его от начала до конца. Вы также можете выполнить ячейки и решить задачи, которые мы оставили для вас в конце.
Поскольку мы хотим продемонстрировать, как работать с данными, мы приглашаем вас открыть [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) и прочитать его от начала до конца. Вы также можете выполнить ячейки и выполнить задания, которые мы оставили для вас в конце.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ru.png)
> Если вы не знаете, как запускать код в Jupyter Notebook, ознакомьтесь с [этой статьей](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Работа с неструктурированными данными
Хотя данные часто поступают в табличной форме, в некоторых случаях нам приходится работать с менее структурированными данными, например текстом или изображениями. В этом случае, чтобы применить методы обработки данных, которые мы рассмотрели выше, нам нужно как-то **извлечь** структурированные данные. Вот несколько примеров:
Хотя данные очень часто имеют табличную форму, в некоторых случаях нам приходится работать с менее структурированными данными, например, текстами или изображениями. В этом случае, чтобы применить методы обработки данных, которые мы рассмотрели выше, нам нужно каким-то образом **извлечь** структурированные данные. Вот несколько примеров:
* Извлечение ключевых слов из текста и анализ частоты их появления
* Использование нейронных сетей для извлечения информации об объектах на изображении
* Получение информации о эмоциях людей на видеопотоке с камеры
* Получение информации об эмоциях людей на видеопотоке с камеры
## 🚀 Задача 2: Анализ научных статей о COVID
## 🚀 Задание 2: Анализ научных статей о COVID
В этой задаче мы продолжим тему пандемии COVID и сосредоточимся на обработке научных статей по этой теме. Существует [набор данных CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) с более чем 7000 (на момент написания) статей о COVID, доступных с метаданными и аннотациями (а для примерно половины из них также предоставлен полный текст).
В этом задании мы продолжим тему пандемии COVID и сосредоточимся на обработке научных статей по этой теме. Существует [набор данных CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) с более чем 7000 (на момент написания) статей о COVID, доступных с метаданными и аннотациями (а для примерно половины из них также предоставлен полный текст).
Полный пример анализа этого набора данных с использованием когнитивного сервиса [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**: Мы не предоставляем копию набора данных в этом репозитории. Вам может понадобиться сначала скачать файл [`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), но он будет включать все полные тексты в дополнение к файлу метаданных.
Откройте [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) и прочитайте его от начала до конца. Вы также можете выполнить ячейки и решить задачи, которые мы оставили для вас в конце.
Откройте [`notebook-papers.ipynb`](notebook-papers.ipynb) и прочитайте его от начала до конца. Вы также можете выполнить ячейки и выполнить задания, которые мы оставили для вас в конце.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ru.png)
## Обработка данных изображений
В последнее время были разработаны очень мощные модели ИИ, которые позволяют понимать изображения. Существует множество задач, которые можно решить с помощью предварительно обученных нейронных сетей или облачных сервисов. Вот несколько примеров:
В последнее время были разработаны очень мощные модели ИИ, которые позволяют понимать изображения. Существует множество задач, которые можно решить с помощью предобученных нейронных сетей или облачных сервисов. Вот несколько примеров:
* **Классификация изображений**, которая помогает категоризировать изображение в одну из предопределенных категорий. Вы можете легко обучить свои собственные классификаторы изображений, используя такие сервисы, как [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) для обнаружения специфических объектов.
* **Классификация изображений**, которая помогает категоризировать изображение в одну из предопределённых категорий. Вы можете легко обучить свои собственные классификаторы изображений, используя такие сервисы, как [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), и их легко интегрировать в ваш процесс исследования данных.
Вот несколько примеров исследования данных из источников изображений:
* В блоге [Как изучать Data Science без программирования](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) для извлечения эмоций людей на фотографиях с мероприятий, чтобы попытаться понять, что делает людей счастливыми.
* В блоге [Как изучать Data Science без программирования](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) для построения интерпретируемой модели.
* В [Мастерской по изучению лиц](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 в глубину — это, вероятно, хорошая идея, если вы серьёзно относитесь к своему пути в Data Science!
## [Тест после лекции](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -274,11 +274,11 @@ df = pd.read_csv('file.csv')
**Изучение Python**
* [Изучайте Python весело с Turtle Graphics и фракталами](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)
* [Сделайте первые шаги с 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)
## Благодарности
@ -287,4 +287,4 @@ df = pd.read_csv('file.csv')
---
**Отказ от ответственности**:
Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.
Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T18:03:57+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:57:52+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "sk"
}
@ -13,39 +13,39 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Práca s Pythonom - _Sketchnote od [@nitya](https://twitter.com/nitya)_ |
[![Úvodné video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Úvodné video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.sk.png)](https://youtu.be/dZjWOGbsN4Y)
Databázy ponúkajú veľmi efektívne spôsoby ukladania dát a ich dotazovania pomocou dotazovacích jazykov, avšak najflexibilnejším spôsobom spracovania dát je napísanie vlastného programu na manipuláciu s dátami. V mnohých prípadoch by bolo efektívnejšie použiť dotaz do databázy. Avšak v niektorých situáciách, keď je potrebné komplexnejšie spracovanie dát, to nie je jednoduché vykonať pomocou SQL.
Spracovanie dát je možné programovať v akomkoľvek programovacom jazyku, ale existujú jazyky, ktoré sú na prácu s dátami na vyššej úrovni. Dátoví vedci zvyčajne preferujú jeden z nasledujúcich jazykov:
Databázy ponúkajú veľmi efektívne spôsoby ukladania dát a ich dotazovania pomocou dotazovacích jazykov, no najflexibilnejším spôsobom spracovania dát je napísanie vlastného programu na manipuláciu s dátami. V mnohých prípadoch by bolo efektívnejšie použiť dotaz do databázy. Avšak v prípadoch, keď je potrebné zložitejšie spracovanie dát, to nie je možné jednoducho vykonať pomocou SQL.
Spracovanie dát je možné programovať v akomkoľvek programovacom jazyku, ale existujú určité jazyky, ktoré sú na prácu s dátami na vyššej úrovni. Dátoví vedci zvyčajne preferujú jeden z nasledujúcich jazykov:
* **[Python](https://www.python.org/)**, univerzálny programovací jazyk, ktorý je často považovaný za jednu z najlepších možností pre začiatočníkov vďaka svojej jednoduchosti. Python má množstvo doplnkových knižníc, ktoré vám môžu pomôcť vyriešiť praktické problémy, ako napríklad extrahovanie dát zo ZIP archívu alebo konverzia obrázku na odtiene šedej. Okrem dátovej vedy sa Python často používa aj na vývoj webových aplikácií.
* **[R](https://www.r-project.org/)** je tradičný nástroj vyvinutý s ohľadom na štatistické spracovanie dát. Obsahuje veľké množstvo knižníc (CRAN), čo z neho robí dobrú voľbu na spracovanie dát. R však nie je univerzálny programovací jazyk a mimo oblasti dátovej vedy sa používa len zriedka.
* **[Python](https://www.python.org/)**, univerzálny programovací jazyk, ktorý je často považovaný za jednu z najlepších možností pre začiatočníkov vďaka svojej jednoduchosti. Python má množstvo doplnkových knižníc, ktoré vám môžu pomôcť vyriešiť mnohé praktické problémy, ako napríklad extrakciu dát zo ZIP archívu alebo konverziu obrázku na odtiene šedej. Okrem dátovej vedy sa Python často používa aj na vývoj webových aplikácií.
* **[R](https://www.r-project.org/)** je tradičný nástroj vyvinutý s ohľadom na štatistické spracovanie dát. Obsahuje tiež veľké úložisko knižníc (CRAN), čo z neho robí dobrú voľbu na spracovanie dát. R však nie je univerzálny programovací jazyk a mimo oblasti dátovej vedy sa používa len zriedka.
* **[Julia](https://julialang.org/)** je ďalší jazyk vyvinutý špeciálne pre dátovú vedu. Je navrhnutý tak, aby poskytoval lepší výkon ako Python, čo z neho robí skvelý nástroj na vedecké experimentovanie.
V tejto lekcii sa zameriame na používanie Pythonu na jednoduché spracovanie dát. Predpokladáme základnú znalosť jazyka. Ak chcete hlbší úvod do Pythonu, môžete sa pozrieť na jeden z nasledujúcich zdrojov:
* [Naučte sa Python zábavným spôsobom pomocou Turtle Graphics a fraktálov](https://github.com/shwars/pycourse) - rýchly úvodný kurz do programovania v Pythone na GitHube
* [Začnite s Pythonom](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - vzdelávací kurz na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Urobte svoje prvé kroky s Pythonom](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - vzdelávacia cesta na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Dáta môžu mať rôzne formy. V tejto lekcii sa budeme zaoberať tromi formami dát - **tabuľkové dáta**, **text** a **obrázky**.
Dáta môžu mať rôzne formy. V tejto lekcii sa budeme zaoberať tromi formami dát - **tabuľkovými dátami**, **textom** a **obrázkami**.
Zameriame sa na niekoľko príkladov spracovania dát, namiesto toho, aby sme vám poskytli úplný prehľad všetkých súvisiacich knižníc. To vám umožní získať základnú predstavu o tom, čo je možné, a zanechá vám pochopenie, kde nájsť riešenia vašich problémov, keď ich budete potrebovať.
> **Najužitočnejšia rada**. Keď potrebujete vykonať určitú operáciu na dátach, o ktorej neviete, ako ju vykonať, skúste ju vyhľadať na internete. [Stackoverflow](https://stackoverflow.com/) zvyčajne obsahuje množstvo užitočných ukážok kódu v Pythone pre mnohé typické úlohy.
## [Kvíz pred prednáškou](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Kvíz pred lekciou](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabuľkové dáta a Dataframes
S tabuľkovými dátami ste sa už stretli, keď sme hovorili o relačných databázach. Keď máte veľa dát, ktoré sú uložené v mnohých rôznych prepojených tabuľkách, určite má zmysel používať SQL na prácu s nimi. Avšak existuje veľa situácií, keď máme tabuľku dát a potrebujeme získať nejaké **pochopenie** alebo **poznatky** o týchto dátach, ako napríklad rozdelenie, korelácia medzi hodnotami, atď. V dátovej vede existuje veľa situácií, keď potrebujeme vykonať nejaké transformácie pôvodných dát, nasledované vizualizáciou. Obe tieto kroky je možné ľahko vykonať pomocou Pythonu.
S tabuľkovými dátami ste sa už stretli, keď sme hovorili o relačných databázach. Keď máte veľa dát, ktoré sú obsiahnuté v mnohých rôznych prepojených tabuľkách, určite má zmysel používať SQL na prácu s nimi. Existuje však mnoho prípadov, keď máme tabuľku dát a potrebujeme získať nejaké **pochopenie** alebo **poznatky** o týchto dátach, ako napríklad rozdelenie, korelácia medzi hodnotami atď. V dátovej vede existuje veľa prípadov, keď potrebujeme vykonať nejaké transformácie pôvodných dát, nasledované vizualizáciou. Obe tieto kroky je možné ľahko vykonať pomocou Pythonu.
Existujú dve najužitočnejšie knižnice v Pythone, ktoré vám môžu pomôcť pracovať s tabuľkovými dátami:
* **[Pandas](https://pandas.pydata.org/)** umožňuje manipulovať s tzv. **Dataframes**, ktoré sú analogické relačným tabuľkám. Môžete mať pomenované stĺpce a vykonávať rôzne operácie na riadkoch, stĺpcoch a Dataframes všeobecne.
* **[Numpy](https://numpy.org/)** je knižnica na prácu s **tensormi**, t.j. viacrozmernými **poľami**. Pole má hodnoty rovnakého základného typu a je jednoduchšie ako Dataframe, ale ponúka viac matematických operácií a vytvára menšiu režijnú záťaž.
Existuje aj niekoľko ďalších knižníc, o ktorých by ste mali vedieť:
Existuje tiež niekoľko ďalších knižníc, o ktorých by ste mali vedieť:
* **[Matplotlib](https://matplotlib.org/)** je knižnica používaná na vizualizáciu dát a kreslenie grafov
* **[SciPy](https://www.scipy.org/)** je knižnica s niektorými doplnkovými vedeckými funkciami. Už sme sa s touto knižnicou stretli, keď sme hovorili o pravdepodobnosti a štatistike
* **[SciPy](https://www.scipy.org/)** je knižnica s niektorými ďalšími vedeckými funkciami. Už sme sa s touto knižnicou stretli, keď sme hovorili o pravdepodobnosti a štatistike
Tu je kúsok kódu, ktorý by ste zvyčajne použili na import týchto knižníc na začiatku vášho programu v Pythone:
```python
@ -59,9 +59,9 @@ Pandas je založený na niekoľkých základných konceptoch.
### Series
**Series** je sekvencia hodnôt, podobná zoznamu alebo numpy poľu. Hlavný rozdiel je v tom, že Series má tiež **index**, a keď pracujeme so Series (napr. ich sčítavame), index sa berie do úvahy. Index môže byť taký jednoduchý ako číslo riadku (je to predvolený index pri vytváraní Series zo zoznamu alebo poľa), alebo môže mať komplexnú štruktúru, ako napríklad časový interval.
**Series** je sekvencia hodnôt, podobná zoznamu alebo numpy poľu. Hlavný rozdiel je v tom, že Series má tiež **index**, a keď pracujeme so Series (napr. ich sčítavame), index sa berie do úvahy. Index môže byť taký jednoduchý ako číslo riadku (je to predvolený index pri vytváraní Series zo zoznamu alebo poľa), alebo môže mať zložitú štruktúru, ako napríklad časový interval.
> **Poznámka**: V sprievodnom notebooku [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) je niekoľko úvodných ukážok kódu Pandas. Tu uvádzame len niektoré príklady, ale určite si môžete pozrieť celý notebook.
> **Poznámka**: V sprievodnom notebooku [`notebook.ipynb`](notebook.ipynb) je niekoľko úvodných ukážok kódu Pandas. Tu uvádzame len niektoré príklady, a určite si môžete pozrieť celý notebook.
Zvážte príklad: chceme analyzovať predaj nášho stánku so zmrzlinou. Vygenerujme sériu čísel predaja (počet predaných položiek každý deň) za určité časové obdobie:
@ -73,7 +73,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Graf časovej série](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Graf časovej série](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.sk.png)
Teraz predpokladajme, že každý týždeň organizujeme párty pre priateľov a berieme na párty ďalších 10 balení zmrzliny. Môžeme vytvoriť ďalšiu sériu, indexovanú podľa týždňov, aby sme to ukázali:
```python
@ -84,16 +84,16 @@ Keď sčítame dve série, dostaneme celkový počet:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Graf časovej série](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Graf časovej série](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.sk.png)
> **Poznámka**: Nepoužívame jednoduchú syntax `total_items+additional_items`. Ak by sme to urobili, dostali by sme veľa hodnôt `NaN` (*Not a Number*) v výslednej sérii. Je to preto, že chýbajú hodnoty pre niektoré indexové body v sérii `additional_items`, a sčítanie `NaN` s čímkoľvek vedie k `NaN`. Preto musíme počas sčítania špecifikovať parameter `fill_value`.
> **Poznámka**: Nepoužívame jednoduchú syntax `total_items+additional_items`. Ak by sme to urobili, dostali by sme veľa hodnôt `NaN` (*Not a Number*) v výslednej sérii. Je to preto, že pre niektoré indexové body v sérii `additional_items` chýbajú hodnoty, a sčítanie `NaN` s čímkoľvek vedie k `NaN`. Preto musíme počas sčítania špecifikovať parameter `fill_value`.
S časovými sériami môžeme tiež **preukladať** sériu s rôznymi časovými intervalmi. Napríklad, ak chceme vypočítať priemerný objem predaja mesačne, môžeme použiť nasledujúci kód:
Pri časových sériách môžeme tiež **preukladať** sériu s rôznymi časovými intervalmi. Napríklad, ak chceme vypočítať priemerný objem predaja mesačne, môžeme použiť nasledujúci kód:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Mesačné priemery časovej série](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Mesačné priemery časovej série](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.sk.png)
### DataFrame
@ -127,7 +127,7 @@ Týmto získame tabuľku ako túto:
| 7 | 8 | very |
| 8 | 9 | much |
**Poznámka**: Túto tabuľku môžeme tiež získať transponovaním predchádzajúcej tabuľky, napr. napísaním
**Poznámka**: Túto tabuľku môžeme získať aj transponovaním predchádzajúcej tabuľky, napr. napísaním
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
@ -137,22 +137,22 @@ Tu sú niektoré z najdôležitejších operácií, ktoré môžeme vykonávať
**Výber stĺpcov**. Môžeme vybrať jednotlivé stĺpce napísaním `df['A']` - táto operácia vráti Series. Môžeme tiež vybrať podmnožinu stĺpcov do iného DataFrame napísaním `df[['B','A']]` - to vráti ďalší DataFrame.
**Filtrovanie** len určitých riadkov podľa kritérií. Napríklad, ak chceme ponechať len riadky, kde je stĺpec `A` väčší ako 5, môžeme napísať `df[df['A']>5]`.
**Filtrovanie** len určitých riadkov podľa kritérií. Napríklad, ak chceme ponechať len riadky so stĺpcom `A` väčším ako 5, môžeme napísať `df[df['A']>5]`.
> **Poznámka**: Spôsob, akým filtrovanie funguje, je nasledujúci. Výraz `df['A']<5` vráti boolean sériu, ktorá indikuje, či je výraz `True` alebo `False` pre každý prvok pôvodnej série `df['A']`. Keď sa boolean séria použije ako index, vráti podmnožinu riadkov v DataFrame. Preto nie je možné použiť ľubovoľný boolean výraz v Pythone, napríklad napísanie `df[df['A']>5 and df['A']<7]` by bolo nesprávne. Namiesto toho by ste mali použiť špeciálnu operáciu `&` na boolean sérii, napísaním `df[(df['A']>5) & (df['A']<7)]` (*zátvorky sú tu dôležité*).
> **Poznámka**: Spôsob, akým filtrovanie funguje, je nasledujúci. Výraz `df['A']<5` vráti boolean sériu, ktorá indikuje, či je výraz `True` alebo `False` pre každý prvok pôvodnej série `df['A']`. Keď sa boolean séria použije ako index, vráti podmnožinu riadkov v DataFrame. Preto nie je možné použiť ľubovoľný Python boolean výraz, napríklad napísanie `df[df['A']>5 and df['A']<7]` by bolo nesprávne. Namiesto toho by ste mali použiť špeciálnu operáciu `&` na boolean sériu, napísaním `df[(df['A']>5) & (df['A']<7)]` (*zátvorky sú tu dôležité*).
**Vytváranie nových vypočítateľných stĺpcov**. Môžeme ľahko vytvoriť nové vypočítateľné stĺpce pre náš DataFrame použitím intuitívneho výrazu ako tento:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Tento príklad vypočíta odchýlku A od jeho priemernej hodnoty. Čo sa tu vlastne deje, je, že počítame sériu a potom túto sériu priraďujeme na ľavú stranu, čím vytvárame ďalší stĺpec. Preto nemôžeme použiť žiadne operácie, ktoré nie sú kompatibilné so sériami, napríklad nasledujúci kód je nesprávny:
Tento príklad vypočíta odchýlku A od jeho priemernej hodnoty. Čo sa tu vlastne deje, je to, že počítame sériu a potom priraďujeme túto sériu na ľavú stranu, čím vytvárame ďalší stĺpec. Preto nemôžeme použiť žiadne operácie, ktoré nie sú kompatibilné so sériami, napríklad nasledujúci kód je nesprávny:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Posledný príklad, aj keď je syntakticky správny, nám dáva nesprávny výsledok, pretože priraďuje dĺžku série `B` všetkým hodnotám v stĺpci, a nie dĺžku jednotlivých prvkov, ako sme zamýšľali.
Posledný príklad, hoci je syntakticky správny, nám dáva nesprávny výsledok, pretože priraďuje dĺžku série `B` všetkým hodnotám v stĺpci, a nie dĺžku jednotlivých prvkov, ako sme zamýšľali.
Ak potrebujeme vypočítať komplexné výrazy ako tento, môžeme použiť funkciu `apply`. Posledný príklad môžeme napísať nasledovne:
Ak potrebujeme vypočítať zložité výrazy ako tento, môžeme použiť funkciu `apply`. Posledný príklad môžeme napísať nasledovne:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -180,9 +180,9 @@ df.iloc[:5]
**Skupinovanie** sa často používa na získanie výsledku podobného *pivot tabuľkám* v Exceli. Predpokladajme, že chceme vypočítať priemernú hodnotu stĺpca `A` pre každé dané číslo `LenB`. Potom môžeme zoskupiť náš DataFrame podľa `LenB` a zavolať `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ak potrebujeme vypočítať priemer a počet prvkov v skupine, môžeme použiť komplexnejšiu funkciu `aggregate`:
Ak potrebujeme vypočítať priemer a počet prvkov v skupine, môžeme použiť zložitejšiu funkciu `aggregate`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -205,21 +205,21 @@ df = pd.read_csv('file.csv')
```
V sekcii "Výzva" uvidíme viac príkladov načítania dát, vrátane ich získavania z externých webových stránok.
### Tlač a Vizualizácia
### Tlačenie a Vizualizácia
Dátový vedec často potrebuje preskúmať dáta, preto je dôležité vedieť ich vizualizovať. Keď je DataFrame veľký, často chceme len overiť, či robíme všetko správne, tým, že si vytlačíme prvých pár riadkov. To sa dá urobiť zavolaním `df.head()`. Ak to spustíte z Jupyter Notebooku, vytlačí DataFrame v peknej tabuľkovej forme.
Dátový vedec často potrebuje preskúmať dáta, preto je dôležité vedieť ich vizualizovať. Keď je DataFrame veľký, často chceme len overiť, či robíme všetko správne, tým, že si vytlačíme prvých pár riadkov. To sa dá urobiť volaním `df.head()`. Ak to spustíte v Jupyter Notebooku, vytlačí sa DataFrame v peknej tabuľkovej forme.
Videli sme tiež použitie funkcie `plot` na vizualizáciu niektorých stĺpcov. Zatiaľ čo `plot` je veľmi užitočný pre mnoho úloh a podporuje rôzne typy grafov cez parameter `kind=`, vždy môžete použiť knižnicu `matplotlib` na vytvorenie niečoho zložitejšieho. Vizualizáciu dát pokryjeme podrobne v samostatných lekciách kurzu.
Videli sme tiež použitie funkcie `plot` na vizualizáciu niektorých stĺpcov. Zatiaľ čo `plot` je veľmi užitočný pre mnoho úloh a podporuje rôzne typy grafov cez parameter `kind=`, vždy môžete použiť knižnicu `matplotlib` na vytvorenie niečoho zložitejšieho. Vizualizáciu dát budeme podrobne pokrývať v samostatných lekciách kurzu.
Tento prehľad pokrýva najdôležitejšie koncepty Pandas, avšak knižnica je veľmi bohatá a neexistuje limit na to, čo s ňou môžete robiť! Teraz aplikujme tieto znalosti na riešenie konkrétneho problému.
Tento prehľad pokrýva najdôležitejšie koncepty Pandas, avšak knižnica je veľmi bohatá a neexistujú žiadne limity, čo s ňou môžete robiť! Teraz aplikujme tieto znalosti na riešenie konkrétneho problému.
## 🚀 Výzva 1: Analýza šírenia COVID
Prvý problém, na ktorý sa zameriame, je modelovanie epidémie šírenia COVID-19. Na tento účel použijeme údaje o počte nakazených jednotlivcov v rôznych krajinách, ktoré poskytuje [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) na [Johns Hopkins University](https://jhu.edu/). Dataset je dostupný v [tomto GitHub repozitári](https://github.com/CSSEGISandData/COVID-19).
Prvým problémom, na ktorý sa zameriame, je modelovanie epidémie šírenia COVID-19. Na tento účel použijeme údaje o počte nakazených jednotlivcov v rôznych krajinách, ktoré poskytuje [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) na [Johns Hopkins University](https://jhu.edu/). Dataset je dostupný v [tomto GitHub repozitári](https://github.com/CSSEGISandData/COVID-19).
Keďže chceme demonštrovať, ako pracovať s dátami, pozývame vás otvoriť [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) a prečítať si ho od začiatku do konca. Môžete tiež spustiť bunky a vyriešiť niektoré výzvy, ktoré sme pre vás nechali na konci.
Keďže chceme demonštrovať, ako pracovať s dátami, pozývame vás otvoriť [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) a prečítať si ho od začiatku do konca. Môžete tiež spustiť bunky a splniť niektoré výzvy, ktoré sme pre vás nechali na konci.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.sk.png)
> Ak neviete, ako spustiť kód v Jupyter Notebooku, pozrite si [tento článok](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
@ -229,33 +229,33 @@ Aj keď dáta často prichádzajú v tabuľkovej forme, v niektorých prípadoch
* Extrahovanie kľúčových slov z textu a sledovanie, ako často sa tieto kľúčové slová objavujú
* Použitie neurónových sietí na extrakciu informácií o objektoch na obrázku
* Získanie informácií o emóciách ľudí na videozázname
* Získavanie informácií o emóciách ľudí na videozázname
## 🚀 Výzva 2: Analýza COVID článkov
## 🚀 Výzva 2: Analýza COVID publikácií
V tejto výzve budeme pokračovať v téme pandémie COVID a zameriame sa na spracovanie vedeckých článkov na túto tému. Existuje [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) s viac ako 7000 (v čase písania) článkami o COVID, dostupný s metadátami a abstraktmi (a pre približne polovicu z nich je k dispozícii aj celý text).
V tejto výzve budeme pokračovať v téme pandémie COVID a zameriame sa na spracovanie vedeckých publikácií na túto tému. Existuje [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) s viac ako 7000 (v čase písania) publikáciami o COVID, dostupný s metadátami a abstraktmi (a pre približne polovicu z nich je k dispozícii aj celý text).
Kompletný príklad analýzy tohto datasetu pomocou kognitívnej služby [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) je popísaný [v tomto blogovom príspevku](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Diskutujeme o zjednodušenej verzii tejto analýzy.
Kompletný príklad analýzy tohto datasetu pomocou [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) kognitívnej služby je popísaný [v tomto blogovom príspevku](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Diskutujeme zjednodušenú verziu tejto analýzy.
> **NOTE**: Nekopírujeme dataset ako súčasť tohto repozitára. Možno budete musieť najskôr stiahnuť súbor [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [tohto datasetu na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrácia na Kaggle môže byť potrebná. Dataset môžete tiež stiahnuť bez registrácie [odtiaľto](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale bude obsahovať všetky plné texty okrem súboru metadát.
Otvorte [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) a prečítajte si ho od začiatku do konca. Môžete tiež spustiť bunky a vyriešiť niektoré výzvy, ktoré sme pre vás nechali na konci.
Otvorte [`notebook-papers.ipynb`](notebook-papers.ipynb) a prečítajte si ho od začiatku do konca. Môžete tiež spustiť bunky a splniť niektoré výzvy, ktoré sme pre vás nechali na konci.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.sk.png)
## Spracovanie obrazových dát
V poslednej dobe boli vyvinuté veľmi výkonné AI modely, ktoré nám umožňujú porozumieť obrázkom. Existuje mnoho úloh, ktoré je možné vyriešiť pomocou predtrénovaných neurónových sietí alebo cloudových služieb. Niektoré príklady zahŕňajú:
V poslednej dobe boli vyvinuté veľmi silné AI modely, ktoré nám umožňujú porozumieť obrázkom. Existuje mnoho úloh, ktoré je možné vyriešiť pomocou predtrénovaných neurónových sietí alebo cloudových služieb. Niektoré príklady zahŕňajú:
* **Klasifikácia obrázkov**, ktorá vám môže pomôcť kategorizovať obrázok do jednej z preddefinovaných tried. Služby ako [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) vám umožnia ľahko trénovať vlastné klasifikátory obrázkov.
* **Klasifikácia obrázkov**, ktorá vám môže pomôcť kategorizovať obrázok do jednej z preddefinovaných tried. Služby ako [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) vám umožňujú ľahko trénovať vlastné klasifikátory obrázkov.
* **Detekcia objektov** na identifikáciu rôznych objektov na obrázku. Služby ako [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) dokážu detekovať množstvo bežných objektov, a môžete trénovať model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) na detekciu špecifických objektov.
* **Detekcia tvárí**, vrátane veku, pohlavia a emócií. To je možné pomocou [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Všetky tieto cloudové služby je možné volať pomocou [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), a teda ich ľahko začleniť do vášho pracovného toku pri skúmaní dát.
Tu sú niektoré príklady skúmania dát z obrazových zdrojov:
* V blogovom príspevku [Ako sa naučiť dátovú vedu bez kódovania](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) skúmame fotografie z Instagramu, snažiac sa pochopiť, čo spôsobuje, že ľudia dávajú viac "lajkov" na fotografiu. Najskôr extrahujeme čo najviac informácií z obrázkov pomocou [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a potom použijeme [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) na vytvorenie interpretovateľného modelu.
* V [Workshopu štúdií tvárí](https://github.com/CloudAdvocacy/FaceStudies) používame [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) na extrakciu emócií ľudí na fotografiách z udalostí, aby sme sa pokúsili pochopiť, čo robí ľudí šťastnými.
* V blogovom príspevku [Ako sa naučiť dátovú vedu bez programovania](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) skúmame fotografie z Instagramu, snažiac sa pochopiť, čo spôsobuje, že ľudia dávajú viac "lajkov" na fotografiu. Najskôr extrahujeme čo najviac informácií z obrázkov pomocou [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a potom použijeme [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) na vytvorenie interpretovateľného modelu.
* V [Workshopu o štúdiu tvárí](https://github.com/CloudAdvocacy/FaceStudies) používame [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) na extrakciu emócií ľudí na fotografiách z udalostí, aby sme sa pokúsili pochopiť, čo robí ľudí šťastnými.
## Záver
@ -270,7 +270,7 @@ Tu sú niektoré príklady skúmania dát z obrazových zdrojov:
**Online zdroje**
* Oficiálny [10 minútový Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutoriál
* [Dokumentácia o vizualizácii v Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* [Dokumentácia o Pandas vizualizácii](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Učenie Pythonu**
* [Naučte sa Python zábavným spôsobom s Turtle Graphics a Fraktálmi](https://github.com/shwars/pycourse)
@ -287,4 +287,4 @@ Táto lekcia bola vytvorená s ♥️ od [Dmitry Soshnikov](http://soshnikov.com
---
**Upozornenie**:
Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.
Tento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre dôležité informácie sa odporúča profesionálny ľudský preklad. Nezodpovedáme za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T19:34:39+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T16:02:54+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "sl"
}
@ -13,39 +13,39 @@ CO_OP_TRANSLATOR_METADATA:
| :-----------------------------------------------------------------------------------------------------------: |
| Delo s Pythonom - _Sketchnote avtorja [@nitya](https://twitter.com/nitya)_ |
[![Uvodni video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Uvodni video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.sl.png)](https://youtu.be/dZjWOGbsN4Y)
Medtem ko baze podatkov ponujajo zelo učinkovite načine za shranjevanje podatkov in njihovo poizvedovanje z uporabo jezikov za poizvedbe, je najbolj prilagodljiv način obdelave podatkov pisanje lastnega programa za manipulacijo podatkov. V mnogih primerih bi bila poizvedba v bazi podatkov bolj učinkovita. Vendar pa v nekaterih primerih, ko je potrebna bolj zapletena obdelava podatkov, tega ni mogoče enostavno doseči z uporabo SQL.
Obdelavo podatkov je mogoče programirati v katerem koli programskem jeziku, vendar obstajajo določeni jeziki, ki so na višji ravni glede dela s podatki. Podatkovni znanstveniki običajno uporabljajo enega od naslednjih jezikov:
* **[Python](https://www.python.org/)**, splošno namenski programski jezik, ki je pogosto označen kot ena najboljših možnosti za začetnike zaradi svoje preprostosti. Python ima veliko dodatnih knjižnic, ki vam lahko pomagajo rešiti številne praktične težave, kot so pridobivanje podatkov iz ZIP arhiva ali pretvorba slike v sivinske odtenke. Poleg podatkovne znanosti se Python pogosto uporablja tudi za razvoj spletnih aplikacij.
* **[R](https://www.r-project.org/)** je tradicionalno orodje, razvito z mislijo na statistično obdelavo podatkov. Vsebuje tudi veliko knjižnico (CRAN), zaradi česar je dobra izbira za obdelavo podatkov. Vendar pa R ni splošno namenski programski jezik in se redko uporablja zunaj področja podatkovne znanosti.
* **[Julia](https://julialang.org/)** je še en jezik, razvit posebej za podatkovno znanost. Namenjen je zagotavljanju boljše zmogljivosti kot Python, zaradi česar je odlično orodje za znanstvene eksperimente.
* **[Python](https://www.python.org/)**, splošno namenski programski jezik, ki se pogosto šteje za eno najboljših možnosti za začetnike zaradi svoje preprostosti. Python ima veliko dodatnih knjižnic, ki vam lahko pomagajo rešiti številne praktične težave, kot so pridobivanje podatkov iz ZIP arhiva ali pretvorba slike v sivinsko lestvico. Poleg podatkovne znanosti se Python pogosto uporablja tudi za razvoj spletnih aplikacij.
* **[R](https://www.r-project.org/)** je tradicionalno orodje, razvito z mislijo na statistično obdelavo podatkov. Vsebuje tudi veliko skladišče knjižnic (CRAN), kar ga naredi dobro izbiro za obdelavo podatkov. Vendar pa R ni splošno namenski programski jezik in se redko uporablja zunaj področja podatkovne znanosti.
* **[Julia](https://julialang.org/)** je še en jezik, razvit posebej za podatkovno znanost. Namenjen je zagotavljanju boljše zmogljivosti kot Python, kar ga naredi odlično orodje za znanstvene eksperimente.
V tej lekciji se bomo osredotočili na uporabo Pythona za preprosto obdelavo podatkov. Predpostavljamo osnovno poznavanje jezika. Če želite podrobnejši uvod v Python, lahko uporabite enega od naslednjih virov:
V tej lekciji se bomo osredotočili na uporabo Pythona za preprosto obdelavo podatkov. Predpostavljamo osnovno poznavanje jezika. Če želite podrobnejši pregled Pythona, se lahko obrnete na enega od naslednjih virov:
* [Učite se Python na zabaven način z grafiko Turtle in fraktali](https://github.com/shwars/pycourse) - GitHub tečaj za hiter uvod v programiranje v Pythonu
* [Naučite se Pythona na zabaven način z grafiko Turtle in fraktali](https://github.com/shwars/pycourse) - GitHub tečaj za hiter uvod v programiranje v Pythonu
* [Naredite prve korake s Pythonom](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Učni načrt na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Podatki lahko pridejo v različnih oblikah. V tej lekciji bomo obravnavali tri oblike podatkov - **tabelarične podatke**, **besedilo** in **slike**.
Osredotočili se bomo na nekaj primerov obdelave podatkov, namesto da bi vam dali celoten pregled vseh povezanih knjižnic. To vam bo omogočilo, da dobite glavno idejo o tem, kaj je mogoče, in vas pustilo z razumevanjem, kje najti rešitve za vaše težave, ko jih potrebujete.
> **Najbolj uporaben nasvet**. Ko morate izvesti določeno operacijo na podatkih, za katero ne veste, kako jo narediti, poskusite poiskati rešitev na internetu. [Stackoverflow](https://stackoverflow.com/) običajno vsebuje veliko uporabnih primerov kode v Pythonu za številne tipične naloge.
> **Najbolj uporaben nasvet**. Ko morate izvesti določeno operacijo na podatkih, za katero ne veste, kako jo narediti, poskusite iskati po internetu. [Stackoverflow](https://stackoverflow.com/) običajno vsebuje veliko uporabnih vzorcev kode v Pythonu za številne tipične naloge.
## [Predlekcijski kviz](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabelarični podatki in DataFrame
Tabelarične podatke ste že srečali, ko smo govorili o relacijskih bazah podatkov. Ko imate veliko podatkov, ki so shranjeni v različnih povezanih tabelah, se vsekakor splača uporabiti SQL za delo z njimi. Vendar pa obstaja veliko primerov, ko imamo tabelo podatkov in želimo pridobiti nekaj **razumevanja** ali **vpogledov** v te podatke, kot so porazdelitev, korelacija med vrednostmi itd. V podatkovni znanosti je veliko primerov, ko moramo izvesti nekaj transformacij izvirnih podatkov, ki jim sledi vizualizacija. Obe fazi je mogoče enostavno izvesti z uporabo Pythona.
Tabelarične podatke ste že srečali, ko smo govorili o relacijskih bazah podatkov. Ko imate veliko podatkov, ki so shranjeni v številnih povezanih tabelah, se vsekakor splača uporabiti SQL za delo z njimi. Vendar pa obstaja veliko primerov, ko imamo tabelo podatkov in želimo pridobiti nekaj **razumevanja** ali **vpogledov** v te podatke, kot so porazdelitev, korelacija med vrednostmi itd. V podatkovni znanosti je veliko primerov, ko moramo izvesti nekatere transformacije izvornih podatkov, ki jim sledi vizualizacija. Obe ti koraki je mogoče enostavno izvesti z uporabo Pythona.
Obstajata dve najbolj uporabni knjižnici v Pythonu, ki vam lahko pomagata pri delu s tabelaričnimi podatki:
* **[Pandas](https://pandas.pydata.org/)** omogoča manipulacijo tako imenovanih **DataFrame**, ki so analogni relacijskim tabelam. Lahko imate poimenovane stolpce in izvajate različne operacije na vrsticah, stolpcih in DataFrame na splošno.
* **[Numpy](https://numpy.org/)** je knjižnica za delo s **tenzorji**, tj. večdimenzionalnimi **polji**. Polje ima vrednosti istega osnovnega tipa in je preprostejše od DataFrame, vendar ponuja več matematičnih operacij in ustvarja manjšo obremenitev.
* **[Numpy](https://numpy.org/)** je knjižnica za delo s **tenzorji**, tj. večdimenzionalnimi **polji**. Polje ima vrednosti iste osnovne vrste in je preprostejše od DataFrame, vendar ponuja več matematičnih operacij in ustvarja manj režijskih stroškov.
Obstaja tudi nekaj drugih knjižnic, ki jih morate poznati:
* **[Matplotlib](https://matplotlib.org/)** je knjižnica, ki se uporablja za vizualizacijo podatkov in risanje grafov
* **[SciPy](https://www.scipy.org/)** je knjižnica z nekaterimi dodatnimi znanstvenimi funkcijami. To knjižnico smo že srečali, ko smo govorili o verjetnosti in statistiki
* **[SciPy](https://www.scipy.org/)** je knjižnica z nekaterimi dodatnimi znanstvenimi funkcijami. S to knjižnico smo se že srečali, ko smo govorili o verjetnosti in statistiki
Tukaj je kos kode, ki bi ga običajno uporabili za uvoz teh knjižnic na začetku vašega programa v Pythonu:
```python
@ -61,9 +61,9 @@ Pandas temelji na nekaj osnovnih konceptih.
**Series** je zaporedje vrednosti, podobno seznamu ali numpy polju. Glavna razlika je, da ima Series tudi **indeks**, in ko izvajamo operacije na Series (npr. jih seštevamo), se upošteva indeks. Indeks je lahko tako preprost kot številka vrstice (to je privzeti indeks, ko ustvarjamo Series iz seznama ali polja), ali pa ima lahko kompleksno strukturo, kot je časovni interval.
> **Opomba**: Uvodno kodo Pandas najdete v priloženem zvezku [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Tukaj bomo predstavili le nekaj primerov, vsekakor pa ste vabljeni, da si ogledate celoten zvezek.
> **Opomba**: Uvodno kodo Pandas najdete v priloženem zvezku [`notebook.ipynb`](notebook.ipynb). Tukaj podajamo le nekaj primerov, vsekakor pa ste vabljeni, da si ogledate celoten zvezek.
Razmislimo o primeru: želimo analizirati prodajo v naši sladoledarni. Ustvarimo Series številk prodaje (število prodanih artiklov vsak dan) za določeno časovno obdobje:
Razmislimo o primeru: želimo analizirati prodajo našega sladolednega lokala. Ustvarimo Series številk prodaje (število prodanih artiklov vsak dan) za določeno časovno obdobje:
```python
start_date = "Jan 1, 2020"
@ -73,27 +73,27 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Časovni graf](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Graf časovne serije](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.sl.png)
Recimo, da vsak teden organiziramo zabavo za prijatelje in vzamemo dodatnih 10 paketov sladoleda za zabavo. Ustvarimo lahko še en Series, indeksiran po tednih, da to prikažemo:
Recimo, da vsak teden organiziramo zabavo za prijatelje in vzamemo dodatnih 10 paketov sladoleda za zabavo. Ustvarimo lahko drugo Series, indeksirano po tednih, da to prikažemo:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Ko seštejemo oba Series, dobimo skupno število:
Ko seštejemo dve Series, dobimo skupno število:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Časovni graf](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Graf časovne serije](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.sl.png)
> **Opomba**: Ne uporabljamo preproste sintakse `total_items+additional_items`. Če bi jo, bi v rezultatu dobili veliko vrednosti `NaN` (*Not a Number*). To je zato, ker manjkajo vrednosti za nekatere točke indeksa v Series `additional_items`, in seštevanje `NaN` z nečim rezultira v `NaN`. Zato moramo med seštevanjem določiti parameter `fill_value`.
> **Opomba**: Ne uporabljamo preproste sintakse `total_items+additional_items`. Če bi jo, bi dobili veliko vrednosti `NaN` (*Not a Number*) v rezultatni Series. To je zato, ker manjkajo vrednosti za nekatere točke indeksa v Series `additional_items`, in seštevanje `NaN` z nečim rezultira v `NaN`. Zato moramo med seštevanjem določiti parameter `fill_value`.
Pri časovnih vrstah lahko tudi **ponovno vzorčimo** Series z različnimi časovnimi intervali. Na primer, če želimo izračunati povprečno prodajo mesečno, lahko uporabimo naslednjo kodo:
Pri časovnih serijah lahko tudi **ponovno vzorčimo** serijo z različnimi časovnimi intervali. Na primer, če želimo izračunati povprečno prodajo mesečno, lahko uporabimo naslednjo kodo:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Mesečna povprečja časovnih vrst](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Mesečna povprečja časovne serije](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.sl.png)
### DataFrame
@ -135,24 +135,24 @@ Tukaj `.T` pomeni operacijo transponiranja DataFrame, tj. zamenjavo vrstic in st
Tukaj je nekaj najpomembnejših operacij, ki jih lahko izvedemo na DataFrame:
**Izbira stolpcev**. Posamezne stolpce lahko izberemo z zapisom `df['A']` - ta operacija vrne Series. Podmnožico stolpcev lahko izberemo v drug DataFrame z zapisom `df[['B','A']]` - to vrne drug DataFrame.
**Izbor stolpcev**. Posamezne stolpce lahko izberemo z zapisom `df['A']` - ta operacija vrne Series. Podmnožico stolpcev lahko izberemo v drug DataFrame z zapisom `df[['B','A']]` - to vrne drug DataFrame.
**Filtriranje** določenih vrstic po kriterijih. Na primer, če želimo obdati le vrstice, kjer je stolpec `A` večji od 5, lahko zapišemo `df[df['A']>5]`.
**Filtriranje** določenih vrstic po kriterijih. Na primer, da pustimo le vrstice, kjer je stolpec `A` večji od 5, lahko zapišemo `df[df['A']>5]`.
> **Opomba**: Način delovanja filtriranja je naslednji. Izraz `df['A']<5` vrne logični Series, ki označuje, ali je izraz `True` ali `False` za vsak element izvirnega Series `df['A']`. Ko se logični Series uporabi kot indeks, vrne podmnožico vrstic v DataFrame. Zato ni mogoče uporabiti poljubnega Pythonovega logičnega izraza, na primer zapis `df[df['A']>5 and df['A']<7]` bi bil napačen. Namesto tega morate uporabiti posebno operacijo `&` na logičnem Series, z zapisom `df[(df['A']>5) & (df['A']<7)]` (*oklepaji so tukaj pomembni*).
> **Opomba**: Način delovanja filtriranja je naslednji. Izraz `df['A']<5` vrne logično Series, ki označuje, ali je izraz `True` ali `False` za vsak element izvorne Series `df['A']`. Ko se logična Series uporabi kot indeks, vrne podmnožico vrstic v DataFrame. Zato ni mogoče uporabiti poljubnega Python logičnega izraza, na primer zapis `df[df['A']>5 and df['A']<7]` bi bil napačen. Namesto tega morate uporabiti posebno operacijo `&` na logični Series, z zapisom `df[(df['A']>5) & (df['A']<7)]` (*oklepaji so tukaj pomembni*).
**Ustvarjanje novih izračunljivih stolpcev**. Z lahkoto lahko ustvarimo nove izračunljive stolpce za naš DataFrame z uporabo intuitivnega izraza, kot je ta:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Ta primer izračuna odstopanje A od njegove povprečne vrednosti. Kaj se tukaj dejansko zgodi, je, da izračunamo Series in ga nato dodelimo levi strani, s čimer ustvarimo nov stolpec. Zato ne moremo uporabiti nobenih operacij, ki niso združljive s Series, na primer spodnja koda je napačna:
Ta primer izračuna odstopanje A od njegove povprečne vrednosti. Kaj se tukaj dejansko zgodi, je, da izračunamo Series in nato to Series dodelimo levi strani, s čimer ustvarimo nov stolpec. Zato ne moremo uporabiti nobenih operacij, ki niso združljive s Series, na primer spodnja koda je napačna:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Zadnji primer, čeprav je sintaktično pravilen, daje napačen rezultat, ker dodeli dolžino Series `B` vsem vrednostim v stolpcu, ne pa dolžine posameznih elementov, kot smo nameravali.
Zadnji primer, čeprav je sintaktično pravilen, daje napačen rezultat, ker dodeli dolžino Series `B` vsem vrednostim v stolpcu, in ne dolžine posameznih elementov, kot smo nameravali.
Če moramo izračunati kompleksne izraze, kot je ta, lahko uporabimo funkcijo `apply`. Zadnji primer lahko zapišemo takole:
Če moramo izračunati kompleksne izraze, kot je ta, lahko uporabimo funkcijo `apply`. Zadnji primer lahko napišemo takole:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -173,14 +173,14 @@ Po zgornjih operacijah bomo dobili naslednji DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Izbira vrstic glede na številke** lahko izvedemo z uporabo konstrukta `iloc`. Na primer, če želimo izbrati prvih 5 vrstic iz DataFrame:
**Izbor vrstic glede na številke** lahko izvedemo z uporabo konstrukta `iloc`. Na primer, da izberemo prvih 5 vrstic iz DataFrame:
```python
df.iloc[:5]
```
**Skupinjenje** se pogosto uporablja za pridobitev rezultata, podobnega *pivot tabelam* v Excelu. Recimo, da želimo izračunati povprečno vrednost stolpca `A` za vsako dano število `LenB`. Nato lahko skupinimo naš DataFrame po `LenB` in pokličemo `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Če moramo izračunati povprečje in število elementov v skupini, lahko uporabimo bolj kompleksno funkcijo `aggregate`:
```python
@ -199,77 +199,77 @@ To nam da naslednjo tabelo:
| 6 | 2 | 6.000000 |
### Pridobivanje podatkov
Videli smo, kako enostavno je ustvariti Series in DataFrames iz Python objektov. Vendar pa podatki običajno prihajajo v obliki besedilne datoteke ali Excelove tabele. Na srečo nam Pandas ponuja preprost način za nalaganje podatkov z diska. Na primer, branje CSV datoteke je tako preprosto kot to:
Videli smo, kako enostavno je ustvariti Series in DataFrames iz Pythonovih objektov. Vendar pa podatki običajno prihajajo v obliki besedilne datoteke ali Excelove tabele. Na srečo nam Pandas ponuja preprost način za nalaganje podatkov z diska. Na primer, branje CSV datoteke je tako preprosto kot tole:
```python
df = pd.read_csv('file.csv')
```
V razdelku "Izziv" bomo videli več primerov nalaganja podatkov, vključno s pridobivanjem podatkov z zunanjih spletnih strani.
V razdelku "Izziv" bomo videli več primerov nalaganja podatkov, vključno s pridobivanjem podatkov z zunanjih spletnih mest.
### Tiskanje in vizualizacija
### Tiskanje in risanje grafov
Podatkovni znanstvenik pogosto mora raziskovati podatke, zato je pomembno, da jih zna vizualizirati. Ko je DataFrame velik, pogosto želimo samo preveriti, ali vse deluje pravilno, tako da natisnemo prvih nekaj vrstic. To lahko storimo z uporabo funkcije `df.head()`. Če jo izvajate v Jupyter Notebooku, bo DataFrame prikazan v lepi tabelarni obliki.
Podatkovni znanstvenik mora pogosto raziskovati podatke, zato je pomembno, da jih zna vizualizirati. Ko je DataFrame velik, si pogosto želimo le zagotoviti, da delamo vse pravilno, tako da natisnemo prvih nekaj vrstic. To lahko storimo z uporabo `df.head()`. Če to izvajate v Jupyter Notebooku, bo DataFrame prikazan v lepi tabelarni obliki.
Videli smo tudi uporabo funkcije `plot` za vizualizacijo nekaterih stolpcev. Čeprav je `plot` zelo uporaben za številne naloge in podpira različne vrste grafov prek parametra `kind=`, lahko vedno uporabite knjižnico `matplotlib` za risanje nečesa bolj kompleksnega. Podrobno bomo obravnavali vizualizacijo podatkov v ločenih lekcijah tečaja.
Prav tako smo videli uporabo funkcije `plot` za vizualizacijo nekaterih stolpcev. Čeprav je `plot` zelo uporaben za številne naloge in podpira različne vrste grafov prek parametra `kind=`, lahko vedno uporabite knjižnico `matplotlib` za risanje bolj zapletenih grafov. Podrobneje bomo obravnavali vizualizacijo podatkov v ločenih lekcijah tečaja.
Ta pregled zajema najpomembnejše koncepte Pandas, vendar je knjižnica zelo bogata in ni omejitev, kaj lahko z njo storite! Zdaj pa uporabimo to znanje za reševanje specifičnega problema.
Ta pregled zajema najpomembnejše koncepte Pandas, vendar je knjižnica zelo bogata in ni omejitev, kaj lahko z njo naredite! Zdaj pa uporabimo to znanje za reševanje specifičnega problema.
## 🚀 Izziv 1: Analiza širjenja COVID-a
Prvi problem, na katerega se bomo osredotočili, je modeliranje širjenja epidemije COVID-19. Za to bomo uporabili podatke o številu okuženih posameznikov v različnih državah, ki jih zagotavlja [Center za sistemsko znanost in inženiring](https://systems.jhu.edu/) (CSSE) na [Univerzi Johns Hopkins](https://jhu.edu/). Podatkovni niz je na voljo v [tem GitHub repozitoriju](https://github.com/CSSEGISandData/COVID-19).
Prvi problem, na katerega se bomo osredotočili, je modeliranje širjenja epidemije COVID-19. Za to bomo uporabili podatke o številu okuženih posameznikov v različnih državah, ki jih zagotavlja [Center za sisteme znanosti in inženiringa](https://systems.jhu.edu/) (CSSE) na [Univerzi Johns Hopkins](https://jhu.edu/). Podatkovni niz je na voljo v [tem GitHub repozitoriju](https://github.com/CSSEGISandData/COVID-19).
Ker želimo pokazati, kako ravnati s podatki, vas vabimo, da odprete [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) in ga preberete od začetka do konca. Lahko tudi izvedete celice in rešite nekaj izzivov, ki smo jih pustili na koncu.
Ker želimo pokazati, kako ravnati s podatki, vas vabimo, da odprete [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) in ga preberete od začetka do konca. Prav tako lahko zaženete celice in rešite nekaj izzivov, ki smo jih pripravili za vas na koncu.
![Širjenje COVID-a](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![Širjenje COVID-a](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.sl.png)
> Če ne veste, kako izvajati kodo v Jupyter Notebooku, si oglejte [ta članek](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Če ne veste, kako zagnati kodo v Jupyter Notebooku, si oglejte [ta članek](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Delo z nestrukturiranimi podatki
Čeprav podatki pogosto prihajajo v tabelarni obliki, moramo v nekaterih primerih obravnavati manj strukturirane podatke, na primer besedilo ali slike. V tem primeru, da uporabimo tehnike obdelave podatkov, ki smo jih videli zgoraj, moramo nekako **izvleči** strukturirane podatke. Tukaj je nekaj primerov:
Čeprav podatki pogosto prihajajo v tabelarični obliki, se v nekaterih primerih srečamo z manj strukturiranimi podatki, na primer besedilom ali slikami. V tem primeru moramo za uporabo tehnik obdelave podatkov, ki smo jih videli zgoraj, nekako **izluščiti** strukturirane podatke. Tukaj je nekaj primerov:
* Izvlečenje ključnih besed iz besedila in preverjanje, kako pogosto se te ključne besede pojavljajo
* Izluščitev ključnih besed iz besedila in analiza njihove pogostosti
* Uporaba nevronskih mrež za pridobivanje informacij o objektih na sliki
* Pridobivanje informacij o čustvih ljudi na video posnetku
* Pridobivanje informacij o čustvih ljudi na video posnetkih
## 🚀 Izziv 2: Analiza COVID člankov
V tem izzivu bomo nadaljevali s temo pandemije COVID in se osredotočili na obdelavo znanstvenih člankov o tej temi. Obstaja [CORD-19 podatkovni niz](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) z več kot 7000 (v času pisanja) članki o COVID-u, ki so na voljo z metapodatki in povzetki (za približno polovico jih je na voljo tudi celotno besedilo).
V tem izzivu bomo nadaljevali s temo pandemije COVID in se osredotočili na obdelavo znanstvenih člankov na to temo. Obstaja [CORD-19 podatkovni niz](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) z več kot 7000 (v času pisanja) članki o COVID-u, ki so na voljo z metapodatki in povzetki (za približno polovico člankov je na voljo tudi celotno besedilo).
Celoten primer analize tega podatkovnega niza z uporabo [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) kognitivne storitve je opisan [v tem blogu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Razpravljali bomo o poenostavljeni različici te analize.
Celoten primer analize tega podatkovnega niza z uporabo kognitivne storitve [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) je opisan [v tem blogu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Obravnavali bomo poenostavljeno različico te analize.
> **NOTE**: Kopije podatkovnega niza ne zagotavljamo kot del tega repozitorija. Najprej boste morda morali prenesti datoteko [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) iz [tega podatkovnega niza na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registracija na Kaggle je morda potrebna. Podatkovni niz lahko prenesete tudi brez registracije [od tukaj](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), vendar bo vključeval vsa celotna besedila poleg datoteke z metapodatki.
> **NOTE**: Kopija podatkovnega niza ni vključena v ta repozitorij. Najprej boste morda morali prenesti datoteko [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) iz [tega podatkovnega niza na Kagglu](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registracija na Kagglu je morda potrebna. Podatkovni niz lahko prenesete tudi brez registracije [tukaj](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), vendar bo vključeval vsa celotna besedila poleg datoteke z metapodatki.
Odprite [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) in ga preberite od začetka do konca. Lahko tudi izvedete celice in rešite nekaj izzivov, ki smo jih pustili na koncu.
Odprite [`notebook-papers.ipynb`](notebook-papers.ipynb) in ga preberite od začetka do konca. Prav tako lahko zaženete celice in rešite nekaj izzivov, ki smo jih pripravili za vas na koncu.
![Zdravljenje COVID-a](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Zdravljenje COVID-a](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.sl.png)
## Obdelava slikovnih podatkov
V zadnjem času so bili razviti zelo zmogljivi AI modeli, ki nam omogočajo razumevanje slik. Obstaja veliko nalog, ki jih je mogoče rešiti z uporabo predhodno usposobljenih nevronskih mrež ali oblačnih storitev. Nekateri primeri vključujejo:
V zadnjem času so bili razviti zelo zmogljivi AI modeli, ki omogočajo razumevanje slik. Obstaja veliko nalog, ki jih je mogoče rešiti z uporabo vnaprej naučenih nevronskih mrež ali oblačnih storitev. Nekaj primerov vključuje:
* **Razvrščanje slik**, ki vam lahko pomaga kategorizirati sliko v eno od vnaprej določenih kategorij. Svoje razvrščevalnike slik lahko enostavno usposobite z uporabo storitev, kot je [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Prepoznavanje objektov**, da zaznate različne objekte na sliki. Storitve, kot je [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), lahko zaznajo številne običajne objekte, vi pa lahko usposobite model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) za zaznavanje specifičnih objektov.
* **Prepoznavanje obrazov**, vključno z zaznavanjem starosti, spola in čustev. To je mogoče storiti prek [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Razvrščanje slik**, ki vam lahko pomaga kategorizirati sliko v eno od vnaprej določenih kategorij. Svoje klasifikatorje slik lahko enostavno naučite z uporabo storitev, kot je [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Zaznavanje objektov** za prepoznavanje različnih objektov na sliki. Storitve, kot je [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), lahko zaznajo številne pogoste objekte, vi pa lahko naučite model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) za zaznavanje specifičnih objektov.
* **Zaznavanje obrazov**, vključno z zaznavanjem starosti, spola in čustev. To je mogoče storiti prek [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Vse te oblačne storitve je mogoče klicati z uporabo [Python SDK-jev](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), zato jih je mogoče enostavno vključiti v vaš potek raziskovanja podatkov.
Tukaj je nekaj primerov raziskovanja podatkov iz slikovnih virov:
* V blogu [Kako se naučiti podatkovne znanosti brez kodiranja](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) raziskujemo Instagram fotografije in poskušamo razumeti, kaj ljudi spodbudi, da fotografiji dodelijo več všečkov. Najprej iz fotografij izvlečemo čim več informacij z uporabo [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), nato pa uporabimo [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) za izdelavo razložljivega modela.
* V [Delavnici študij obrazov](https://github.com/CloudAdvocacy/FaceStudies) uporabljamo [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) za izvlečenje čustev ljudi na fotografijah z dogodkov, da bi poskušali razumeti, kaj ljudi osrečuje.
* V blogu [Kako se naučiti podatkovne znanosti brez programiranja](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) raziskujemo fotografije na Instagramu in poskušamo razumeti, kaj ljudi spodbudi, da všečkajo določeno fotografijo. Najprej iz slik pridobimo čim več informacij z uporabo [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), nato pa uporabimo [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) za izdelavo razložljivega modela.
* V [delavnici o študijah obrazov](https://github.com/CloudAdvocacy/FaceStudies) uporabljamo [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) za pridobivanje čustev ljudi na fotografijah z dogodkov, da bi poskušali razumeti, kaj ljudi osrečuje.
## Zaključek
Ne glede na to, ali že imate strukturirane ali nestrukturirane podatke, lahko z uporabo Pythona izvedete vse korake, povezane z obdelavo in razumevanjem podatkov. To je verjetno najbolj prilagodljiv način obdelave podatkov, zato večina podatkovnih znanstvenikov uporablja Python kot svoje primarno orodje. Poglobljeno učenje Pythona je verjetno dobra ideja, če ste resni glede svoje poti v podatkovni znanosti!
Ne glede na to, ali že imate strukturirane ali nestrukturirane podatke, lahko s Pythonom izvedete vse korake, povezane z obdelavo in razumevanjem podatkov. To je verjetno najbolj prilagodljiv način obdelave podatkov, zato večina podatkovnih znanstvenikov uporablja Python kot svoje glavno orodje. Če ste resni glede svoje poti v podatkovni znanosti, je poglobljeno učenje Pythona verjetno dobra ideja!
## [Kvizi po predavanju](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Pregled in samostojno učenje
**Knjige**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
* [Wes McKinney. Python za analizo podatkov: Obdelava podatkov s Pandas, NumPy in IPython](https://www.amazon.com/gp/product/1491957662)
**Spletni viri**
* Uradni [10 minutni Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) vodič
* Uradni [10 minut za Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) vodič
* [Dokumentacija o Pandas vizualizaciji](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Učenje Pythona**
@ -280,11 +280,11 @@ Ne glede na to, ali že imate strukturirane ali nestrukturirane podatke, lahko z
[Izvedite podrobnejšo študijo podatkov za zgornje izzive](assignment.md)
## Zasluge
## Zahvale
To lekcijo je z ♥️ avtoriral [Dmitry Soshnikov](http://soshnikov.com)
To lekcijo je z ljubeznijo napisal [Dmitry Soshnikov](http://soshnikov.com)
---
**Omejitev odgovornosti**:
Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda.
Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da se zavedate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo strokovno človeško prevajanje. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T18:58:01+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T16:00:52+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "sr"
}
@ -13,25 +13,27 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Рад са Python-ом - _Скетч од [@nitya](https://twitter.com/nitya)_ |
[![Уводни видео](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Уводни видео](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.sr.png)](https://youtu.be/dZjWOGbsN4Y)
Иако базе података нуде веома ефикасне начине за складиштење података и њихово претраживање помоћу језика за упите, најфлексибилнији начин обраде података је писање сопственог програма за манипулацију подацима. У многим случајевима, коришћење упита у бази података би било ефикасније. Међутим, у неким случајевима када је потребна сложенија обрада података, то се не може лако урадити помоћу SQL-а.
Обрада података може се програмирати у било ком програмском језику, али постоје одређени језици који су на вишем нивоу када је у питању рад са подацима. Научници који се баве подацима обично преферирају један од следећих језика:
* **[Python](https://www.python.org/)**, опште-наменски програмски језик, који се често сматра једним од најбољих избора за почетнике због своје једноставности. Python има много додатних библиотека које вам могу помоћи да решите многе практичне проблеме, као што су издвајање података из ZIP архива или претварање слике у сиве тонове. Поред науке о подацима, Python се често користи и за развој веба.
* **[R](https://www.r-project.org/)** је традиционални алат развијен са обрадом статистичких података на уму. Такође садржи велики репозиторијум библиотека (CRAN), што га чини добрим избором за обраду података. Међутим, R није опште-наменски програмски језик и ретко се користи ван домена науке о подацима.
* **[Python](https://www.python.org/)**, програмски језик опште намене, који се често сматра једним од најбољих избора за почетнике због своје једноставности. Python има много додатних библиотека које вам могу помоћи да решите многе практичне проблеме, као што су издвајање података из ZIP архиве или претварање слике у сиве тонове. Поред науке о подацима, Python се често користи и за развој веба.
* **[R](https://www.r-project.org/)** је традиционални алат развијен са обрадом статистичких података на уму. Такође садржи велики репозиторијум библиотека (CRAN), што га чини добрим избором за обраду података. Међутим, R није програмски језик опште намене и ретко се користи ван домена науке о подацима.
* **[Julia](https://julialang.org/)** је још један језик развијен посебно за науку о подацима. Намера му је да пружи боље перформансе од Python-а, што га чини одличним алатом за научне експерименте.
У овом лекцији, фокусираћемо се на коришћење Python-а за једноставну обраду података. Претпоставићемо основно познавање језика. Ако желите дубљи увод у Python, можете се обратити једном од следећих ресурса:
* [Научите Python на забаван начин уз Turtle Graphics и фрактале](https://github.com/shwars/pycourse) - GitHub курс за брзи увод у Python програмирање
* [Направите своје прве кораке са 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)
* [Направите прве кораке са 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)
Подаци могу бити у различитим облицима. У овој лекцији, разматраћемо три облика података - **табеларни подаци**, **текст** и **слике**.
Фокусираћемо се на неколико примера обраде података, уместо да вам дамо потпуни преглед свих повезаних библиотека. Ово ће вам омогућити да добијете основну идеју о томе шта је могуће, и оставити вас са разумевањем где да пронађете решења за своје проблеме када вам затребају.
> **Најкориснији савет**. Када треба да извршите одређену операцију на подацима коју не знате како да урадите, покушајте да је потражите на интернету. [Stackoverflow](https://stackoverflow.com/) обично садржи много корисних примера кода у Python-у за многе типичне задатке.
> **Најкориснији савет**. Када треба да извршите одређену операцију на подацима коју не знате како да урадите, покушајте да је потражите на интернету. [Stackoverflow](https://stackoverflow.com/) обично садржи много корисних примера кода у Python-у за многе типичне задатке.
## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ds/quiz/12)
@ -59,11 +61,11 @@ Pandas је заснован на неколико основних концеп
### Series
**Series** је низ вредности, сличан листи или numpy низу. Главна разлика је у томе што Series такође има **индекс**, и када радимо са Series (нпр. додајемо их), индекс се узима у обзир. Индекс може бити једноставан као број реда (то је подразумевани индекс када креирамо Series из листе или низа), или може имати сложену структуру, као што је интервал датума.
**Series** је низ вредности, сличан листи или numpy низу. Главна разлика је у томе што Series такође има **индекс**, и када радимо са Series (нпр. додајемо их), индекс се узима у обзир. Индекс може бити једноставан као број реда (то је индекс који се користи подразумевано када се креира Series из листе или низа), или може имати сложену структуру, као што је интервал датума.
> **Напомена**: У пратећем notebook-у [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) постоји уводни код за Pandas. Овде само наводимо неке примере, а свакако сте добродошли да проверите комплетан notebook.
> **Напомена**: У пратећем notebook-у [`notebook.ipynb`](notebook.ipynb) налази се уводни код за Pandas. Овде ћемо само навести неке примере, а свакако сте добродошли да проверите комплетан notebook.
Размотримо пример: желимо да анализирамо продају у нашем киоску за сладолед. Генеришимо низ бројева продаје (број продатих артикала сваког дана) за одређени временски период:
Размотримо пример: желимо да анализирамо продају у нашој продавници сладоледа. Генеришимо низ бројева продаје (број продатих артикала сваког дана) за одређени временски период:
```python
start_date = "Jan 1, 2020"
@ -73,7 +75,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![График временског низа](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![График временског низа](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.sr.png)
Сада претпоставимо да сваке недеље организујемо журку за пријатеље и узимамо додатних 10 пакета сладоледа за журку. Можемо креирати други низ, индексиран по недељама, да то покажемо:
```python
@ -84,16 +86,16 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![График временског низа](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![График временског низа](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.sr.png)
> **Напомена** да не користимо једноставну синтаксу `total_items+additional_items`. Да јесмо, добили бисмо много `NaN` (*Not a Number*) вредности у резултујућем низу. То је зато што недостају вредности за неке индексне тачке у низу `additional_items`, а додавање `NaN` било чему резултира у `NaN`. Због тога морамо да наведемо параметар `fill_value` током сабирања.
> **Напомена** да не користимо једноставну синтаксу `total_items+additional_items`. Да јесмо, добили бисмо много `NaN` (*Not a Number*) вредности у резултујућем низу. То је зато што недостају вредности за неке тачке индекса у низу `additional_items`, а додавање `NaN` било чему резултира у `NaN`. Због тога морамо да наведемо параметар `fill_value` током сабирања.
Са временским низовима, можемо такође **ресемпловати** низ са различитим временским интервалима. На пример, ако желимо да израчунамо просечан обим продаје месечно, можемо користити следећи код:
Са временским низовима, можемо такође **пресемплирати** низ са различитим временским интервалима. На пример, ако желимо да израчунамо просечан обим продаје месечно, можемо користити следећи код:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Месечни просеци временског низа](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Месечни просеци временског низа](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.sr.png)
### DataFrame
@ -137,11 +139,11 @@ df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
**Избор колона**. Можемо изабрати појединачне колоне писањем `df['A']` - ова операција враћа Series. Такође можемо изабрати подскуп колона у други DataFrame писањем `df[['B','A']]` - ово враћа други DataFrame.
**Филтрирање** само одређених редова према критеријуму. На пример, да оставимо само редове са колоном `A` већом од 5, можемо написати `df[df['A']>5]`.
**Филтрирање** само одређених редова по критеријуму. На пример, да оставимо само редове са колоном `A` већом од 5, можемо написати `df[df['A']>5]`.
> **Напомена**: Начин на који филтрирање функционише је следећи. Израз `df['A']<5` враћа буловски низ, који указује да ли је израз `True` или `False` за сваки елемент оригиналног низа `df['A']`. Када се буловски низ користи као индекс, он враћа подскуп редова у DataFrame-у. Због тога није могуће користити произвољни Python буловски израз, на пример, писање `df[df['A']>5 and df['A']<7]` било би погрешно. Уместо тога, треба користити посебну операцију `&` на буловским низовима, писањем `df[(df['A']>5) & (df['A']<7)]` (*заграде су овде важне*).
> **Напомена**: Начин на који филтрирање функционише је следећи. Израз `df['A']<5` враћа буловски низ, који указује да ли је израз `True` или `False` за сваки елемент оригиналног низа `df['A']`. Када се буловски низ користи као индекс, он враћа подскуп редова у DataFrame-у. Због тога није могуће користити произвољни Python буловски израз, на пример, писање `df[df['A']>5 and df['A']<7]` било би погрешно. Уместо тога, требало би да користите специјалну `&` операцију на буловским низовима, писањем `df[(df['A']>5) & (df['A']<7)]` (*заграде су овде важне*).
**Креирање нових рачунских колона**. Лако можемо креирати нове рачунске колоне за наш DataFrame користећи интуитивне изразе попут овог:
**Креирање нових рачунских колона**. Лако можемо креирати нове рачунске колоне за наш DataFrame користећи интуитиван израз попут овог:
```python
df['DivA'] = df['A']-df['A'].mean()
```
@ -180,7 +182,7 @@ df.iloc[:5]
**Груписање** се често користи за добијање резултата сличних *пивот табелама* у Excel-у. Претпоставимо да желимо да израчунамо просечну вредност колоне `A` за сваки дати број `LenB`. Тада можемо груписати наш DataFrame по `LenB` и позвати `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ако треба да израчунамо просек и број елемената у групи, онда можемо користити сложенију функцију `aggregate`:
```python
@ -199,71 +201,71 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### Добијање података
Видели смо колико је лако конструисати Series и DataFrames из Python објеката. Међутим, подаци обично долазе у облику текстуалних фајлова или Excel табела. Срећом, Pandas нам нуди једноставан начин за учитавање података са диска. На пример, читање CSV фајла је једноставно као ово:
Видели смо колико је лако конструисати Series и DataFrame објекте из Python објеката. Међутим, подаци обично долазе у облику текстуалних фајлова или Excel табела. Срећом, Pandas нам нуди једноставан начин за учитавање података са диска. На пример, читање CSV фајла је једноставно као ово:
```python
df = pd.read_csv('file.csv')
```
Видећемо више примера учитавања података, укључујући и преузимање са спољних веб сајтова, у секцији "Изазов".
Видећемо још примера учитавања података, укључујући и преузимање са спољних веб сајтова, у одељку "Изазов".
### Штампање и Визуелизација
Data Scientist често мора да истражује податке, па је важно да их може визуализовати. Када је DataFrame велики, често желимо само да проверимо да ли све радимо исправно тако што ћемо одштампати првих неколико редова. Ово се може урадити позивом `df.head()`. Ако га покрећете из Jupyter Notebook-а, он ће одштампати DataFrame у лепој табеларној форми.
Data Scientist често мора да истражује податке, па је важно да их може визуализовати. Када је DataFrame велики, често желимо само да проверимо да ли све радимо исправно тако што ћемо исписати првих неколико редова. Ово се може урадити позивом `df.head()`. Ако га покрећете из Jupyter Notebook-а, он ће исписати DataFrame у лепом табеларном облику.
Такође смо видели употребу функције `plot` за визуализацију неких колона. Док је `plot` веома користан за многе задатке и подржава различите типове графикона преко параметра `kind=`, увек можете користити библиотеку `matplotlib` за цртање нечег сложенијег. Детаљно ћемо покрити визуализацију података у посебним лекцијама курса.
Такође смо видели употребу функције `plot` за визуализацију неких колона. Иако је `plot` веома користан за многе задатке и подржава различите типове графикона преко параметра `kind=`, увек можете користити библиотеку `matplotlib` за цртање нечег сложенијег. Детаљно ћемо обрадити визуализацију података у посебним лекцијама курса.
Овај преглед покрива најважније концепте Pandas-а, али библиотека је веома богата и нема ограничења у томе шта можете да урадите са њом! Сада ћемо применити ово знање за решавање специфичног проблема.
Овај преглед покрива најважније концепте Pandas-а, али библиотека је веома богата и нема ограничења у томе шта можете да урадите са њом! Сада ћемо применити ово знање за решавање конкретног проблема.
## 🚀 Изазов 1: Анализа ширења COVID-а
Први проблем на који ћемо се фокусирати је моделирање епидемијског ширења 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).
Први проблем на који ћемо се фокусирати је моделирање епидемијског ширења COVID-19. Да бисмо то урадили, користићемо податке о броју заражених особа у различитим земљама, које пружа [Центар за системску науку и инжењерство](https://systems.jhu.edu/) (CSSE) на [Универзитету Џонс Хопкинс](https://jhu.edu/). Скуп података је доступан у [овом GitHub репозиторијуму](https://github.com/CSSEGISandData/COVID-19).
Пошто желимо да демонстрирамо како се ради са подацима, позивамо вас да отворите [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) и прочитате га од почетка до краја. Такође можете извршити ћелије и решити неке изазове које смо оставили за вас на крају.
Пошто желимо да покажемо како се ради са подацима, позивамо вас да отворите [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) и прочитате га од почетка до краја. Такође можете извршавати ћелије и решавати неке изазове које смо оставили за вас на крају.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![Ширење COVID-а](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.sr.png)
> Ако не знате како да покренете код у 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 скуп података](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) са више од 7000 (у време писања) радова о COVID-у, доступних са метаподацима и апстрактима (а за око половину њих доступан је и цео текст).
Потпун пример анализе овог скупа података користећи [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**: Не пружамо копију скупа података као део овог репозиторијума. Можда ћете прво морати да преузмете [`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), али ће укључивати све пуне текстове поред метаподатака.
Отворите [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) и прочитајте га од почетка до краја. Такође можете извршити ћелије и решити неке изазове које смо оставили за вас на крају.
Отворите [`notebook-papers.ipynb`](notebook-papers.ipynb) и прочитајте га од почетка до краја. Такође можете извршавати ћелије и решавати неке изазове које смо оставили за вас на крају.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Лечење COVID-а](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.sr.png)
## Обрада података са слика
## Обрада сликовних података
Недавно су развијени веома моћни AI модели који нам омогућавају да разумемо слике. Постоји много задатака који се могу решити коришћењем претходно обучених неуронских мрежа или cloud услуга. Неки примери укључују:
У последње време развијени су веома моћни 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).
Све те cloud услуге могу се позивати коришћењем [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), и тако се лако могу укључити у ваш workflow за истраживање података.
Све ове услуге у облаку могу се позивати коришћењем [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), и тако се лако могу укључити у ваш ток истраживања података.
Ево неких примера истраживања података из извора слика:
* У блог посту [Како научити Data Science без програмирања](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) за извлачење емоција људи на фотографијама са догађаја, како бисмо покушали да разумемо шта људе чини срећним.
Ево неких примера истраживања података из извора сликовних података:
* У блогу [Како научити Data Science без програмирања](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) за изградњу интерпретабилног модела.
* У [Радионици за проучавање лица](https://github.com/CloudAdvocacy/FaceStudies) користимо [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) за извлачење емоција људи на фотографијама са догађаја, како бисмо покушали да разумемо шта људе чини срећним.
## Закључак
Без обзира да ли већ имате структуиране или неструктуиране податке, користећи Python можете извршити све кораке везане за обраду и разумевање података. Python је вероватно најфлексибилнији начин обраде података, и то је разлог зашто већина Data Scientist-а користи Python као свој примарни алат. Учити Python детаљно је вероватно добра идеја ако сте озбиљни у својој Data Science авантури!
Без обзира да ли већ имате структуиране или неструктуиране податке, коришћењем Python-а можете извршити све кораке везане за обраду и разумевање података. Python је вероватно најфлексибилнији алат за обраду података, и то је разлог зашто већина Data Scientist-а користи Python као свој примарни алат. Учити Python детаљно је вероватно добра идеја ако сте озбиљни у својој Data Science авантури!
## [Квиз након предавања](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)
@ -273,18 +275,18 @@ Data Scientist често мора да истражује податке, па
* [Документација о Pandas визуализацији](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Учење Python-а**
* [Научите Python на забаван начин са Turtle Graphics и фракталима](https://github.com/shwars/pycourse)
* [Направите своје прве кораке са Python-ом](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path на [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Научите Python на забаван начин са Turtle Graphics и Фракталима](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)
Ову лекцију је са ♥️ написао [Дмитриј Сошњиков](http://soshnikov.com)
---
**Одрицање од одговорности**:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква неспоразумевања или погрешна тумачења која могу произаћи из коришћења овог превода.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T21:44:01+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:45:37+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "sv"
}
@ -13,41 +13,41 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Arbeta med Python - _Sketchnote av [@nitya](https://twitter.com/nitya)_ |
[![Introduktionsvideo](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Introduktionsvideo](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.sv.png)](https://youtu.be/dZjWOGbsN4Y)
Även om databaser erbjuder mycket effektiva sätt att lagra data och söka i dem med hjälp av frågespråk, är det mest flexibla sättet att bearbeta data att skriva ditt eget program för att manipulera data. I många fall skulle en databasfråga vara ett mer effektivt sätt. Men i vissa fall, när mer komplex databehandling behövs, kan det inte enkelt göras med SQL.
Databehandling kan programmeras i vilket programmeringsspråk som helst, men det finns vissa språk som är mer hög nivå när det gäller att arbeta med data. Dataanalytiker föredrar vanligtvis ett av följande språk:
Även om databaser erbjuder mycket effektiva sätt att lagra och söka data med hjälp av frågespråk, är det mest flexibla sättet att bearbeta data att skriva sitt eget program för att manipulera data. I många fall är en databasfråga ett mer effektivt sätt. Men i vissa fall, när mer komplex databehandling behövs, kan det inte enkelt göras med SQL.
Databehandling kan programmeras i vilket programmeringsspråk som helst, men det finns vissa språk som är mer högspecialiserade för att arbeta med data. Dataforskare föredrar vanligtvis ett av följande språk:
* **[Python](https://www.python.org/)**, ett allmänt programmeringsspråk, som ofta anses vara ett av de bästa alternativen för nybörjare på grund av dess enkelhet. Python har många ytterligare bibliotek som kan hjälpa dig att lösa många praktiska problem, såsom att extrahera data från en ZIP-arkiv eller konvertera en bild till gråskala. Förutom dataanalys används Python också ofta för webbutveckling.
* **[R](https://www.r-project.org/)** är en traditionell verktygslåda utvecklad med statistisk databehandling i åtanke. Det innehåller också ett stort bibliotek (CRAN), vilket gör det till ett bra val för databehandling. Dock är R inte ett allmänt programmeringsspråk och används sällan utanför dataanalysområdet.
* **[Julia](https://julialang.org/)** är ett annat språk som är specifikt utvecklat för dataanalys. Det är avsett att ge bättre prestanda än Python, vilket gör det till ett utmärkt verktyg för vetenskapliga experiment.
* **[Python](https://www.python.org/)**, ett allmänt programmeringsspråk, som ofta anses vara ett av de bästa alternativen för nybörjare tack vare sin enkelhet. Python har många tilläggsbibliotek som kan hjälpa dig att lösa många praktiska problem, som att extrahera data från en ZIP-fil eller konvertera en bild till gråskala. Förutom datavetenskap används Python också ofta för webbutveckling.
* **[R](https://www.r-project.org/)** är en traditionell verktygslåda utvecklad med statistisk databehandling i åtanke. Det innehåller också ett stort bibliotek av paket (CRAN), vilket gör det till ett bra val för databehandling. Dock är R inte ett allmänt programmeringsspråk och används sällan utanför datavetenskapens område.
* **[Julia](https://julialang.org/)** är ett annat språk som utvecklats specifikt för datavetenskap. Det är avsett att ge bättre prestanda än Python, vilket gör det till ett utmärkt verktyg för vetenskapliga experiment.
I denna lektion kommer vi att fokusera på att använda Python för enkel databehandling. Vi antar grundläggande kunskaper om språket. Om du vill ha en djupare introduktion till Python kan du hänvisa till någon av följande resurser:
I denna lektion kommer vi att fokusera på att använda Python för enkel databehandling. Vi förutsätter grundläggande kunskaper i språket. Om du vill ha en djupare introduktion till Python kan du hänvisa till någon av följande resurser:
* [Lär dig Python på ett roligt sätt med Turtle Graphics och Fraktaler](https://github.com/shwars/pycourse) - GitHub-baserad snabbkurs i Python-programmering
* [Ta dina första steg med Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Lärväg på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Lär dig Python på ett roligt sätt med Turtle Graphics och Fraktaler](https://github.com/shwars/pycourse) - En snabb introduktionskurs till Python-programmering på GitHub
* [Ta dina första steg med Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - En lärväg på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Data kan komma i många former. I denna lektion kommer vi att titta på tre former av data - **tabellformad data**, **text** och **bilder**.
Data kan komma i många former. I denna lektion kommer vi att titta på tre former av data - **tabulär data**, **text** och **bilder**.
Vi kommer att fokusera på några exempel på databehandling, istället för att ge dig en fullständig översikt över alla relaterade bibliotek. Detta gör att du kan få en grundläggande förståelse för vad som är möjligt och ger dig insikt i var du kan hitta lösningar på dina problem när du behöver dem.
Vi kommer att fokusera på några exempel på databehandling istället för att ge en fullständig översikt över alla relaterade bibliotek. Detta gör att du kan få en grundläggande förståelse för vad som är möjligt och veta var du kan hitta lösningar på dina problem när du behöver dem.
> **Det mest användbara rådet**. När du behöver utföra en viss operation på data som du inte vet hur du ska göra, försök att söka efter det på internet. [Stackoverflow](https://stackoverflow.com/) innehåller ofta många användbara kodexempel i Python för många typiska uppgifter.
> **Det mest användbara rådet**. När du behöver utföra en viss operation på data som du inte vet hur du ska göra, försök att söka efter det på internet. [Stackoverflow](https://stackoverflow.com/) innehåller ofta många användbara kodexempel i Python för många typiska uppgifter.
## [Quiz före föreläsningen](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Förtest före lektionen](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabellformad data och Dataframes
## Tabulär data och DataFrames
Du har redan stött på tabellformad data när vi pratade om relationsdatabaser. När du har mycket data och det är innehållet i många olika länkade tabeller, är det definitivt vettigt att använda SQL för att arbeta med det. Men det finns många fall där vi har en tabell med data och vi behöver få någon **förståelse** eller **insikt** om denna data, såsom fördelning, korrelation mellan värden, etc. Inom dataanalys finns det många fall där vi behöver utföra vissa transformationer av den ursprungliga datan, följt av visualisering. Båda dessa steg kan enkelt göras med Python.
Du har redan stött på tabulär data när vi pratade om relationsdatabaser. När du har mycket data och den är organiserad i många olika länkade tabeller, är det definitivt vettigt att använda SQL för att arbeta med den. Men det finns många fall där vi har en tabell med data och vi behöver få en **förståelse** eller **insikter** om denna data, såsom fördelning, korrelation mellan värden, etc. Inom datavetenskap finns det många fall där vi behöver utföra vissa transformationer av den ursprungliga datan, följt av visualisering. Båda dessa steg kan enkelt göras med Python.
Det finns två mest användbara bibliotek i Python som kan hjälpa dig att hantera tabellformad data:
* **[Pandas](https://pandas.pydata.org/)** låter dig manipulera så kallade **Dataframes**, som är analoger till relationstabeller. Du kan ha namngivna kolumner och utföra olika operationer på rader, kolumner och dataframes i allmänhet.
* **[Numpy](https://numpy.org/)** är ett bibliotek för att arbeta med **tensors**, dvs. multidimensionella **arrays**. En array har värden av samma underliggande typ och är enklare än en dataframe, men erbjuder fler matematiska operationer och skapar mindre overhead.
Det finns två mest användbara bibliotek i Python som kan hjälpa dig att hantera tabulär data:
* **[Pandas](https://pandas.pydata.org/)** gör det möjligt att manipulera så kallade **DataFrames**, som är analoga med relationstabeller. Du kan ha namngivna kolumner och utföra olika operationer på rader, kolumner och DataFrames i allmänhet.
* **[Numpy](https://numpy.org/)** är ett bibliotek för att arbeta med **tensorer**, dvs. flerdimensionella **arrayer**. En array har värden av samma underliggande typ och är enklare än en DataFrame, men erbjuder fler matematiska operationer och skapar mindre overhead.
Det finns också ett par andra bibliotek du bör känna till:
* **[Matplotlib](https://matplotlib.org/)** är ett bibliotek som används för datavisualisering och att rita grafer
* **[SciPy](https://www.scipy.org/)** är ett bibliotek med några ytterligare vetenskapliga funktioner. Vi har redan stött på detta bibliotek när vi pratade om sannolikhet och statistik
Här är en kodsnutt som du vanligtvis använder för att importera dessa bibliotek i början av ditt Python-program:
Här är ett kodexempel som du vanligtvis använder för att importera dessa bibliotek i början av ditt Python-program:
```python
import numpy as np
import pandas as pd
@ -57,13 +57,13 @@ from scipy import ... # you need to specify exact sub-packages that you need
Pandas är centrerat kring några grundläggande koncept.
### Series
### Series
**Series** är en sekvens av värden, liknande en lista eller numpy-array. Den största skillnaden är att en series också har ett **index**, och när vi arbetar med series (t.ex. lägger till dem), tas indexet med i beräkningen. Indexet kan vara så enkelt som ett heltals radnummer (det är indexet som används som standard när man skapar en series från en lista eller array), eller det kan ha en komplex struktur, såsom ett datumintervall.
**Series** är en sekvens av värden, liknande en lista eller numpy-array. Den största skillnaden är att en Series också har ett **index**, och när vi arbetar med Series (t.ex. adderar dem) tas indexet i beaktande. Indexet kan vara så enkelt som ett heltalsradnummer (det är standardindexet när man skapar en Series från en lista eller array), eller det kan ha en komplex struktur, såsom ett datumintervall.
> **Notera**: Det finns introducerande Pandas-kod i den medföljande notebook-filen [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Vi skisserar bara några av exemplen här, och du är definitivt välkommen att kolla in hela notebook-filen.
> **Notera**: Det finns lite introducerande Pandas-kod i den medföljande notebooken [`notebook.ipynb`](notebook.ipynb). Vi skisserar bara några exempel här, och du är definitivt välkommen att kolla in hela notebooken.
Tänk på ett exempel: vi vill analysera försäljningen av vår glasskiosk. Låt oss generera en series med försäljningssiffror (antal sålda artiklar varje dag) för en viss tidsperiod:
Tänk på ett exempel: vi vill analysera försäljningen av vår glasskiosk. Låt oss generera en Series med försäljningssiffror (antal sålda enheter per dag) för en viss tidsperiod:
```python
start_date = "Jan 1, 2020"
@ -73,47 +73,48 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Tidsserieplot](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Tidsserieplott](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.sv.png)
Anta nu att vi varje vecka organiserar en fest för vänner och tar ytterligare 10 paket glass till festen. Vi kan skapa en annan series, indexerad per vecka, för att demonstrera detta:
Anta nu att vi varje vecka organiserar en fest för vänner och tar med ytterligare 10 paket glass till festen. Vi kan skapa en annan Series, indexerad per vecka, för att visa detta:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
När vi lägger till två series tillsammans får vi det totala antalet:
När vi adderar två Series får vi det totala antalet:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Tidsserieplot](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Tidsserieplott](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.sv.png)
> **Notera** att vi inte använder den enkla syntaxen `total_items+additional_items`. Om vi gjorde det skulle vi ha fått många `NaN` (*Not a Number*) värden i den resulterande serien. Detta beror på att det saknas värden för vissa indexpunkter i serien `additional_items`, och att lägga till `NaN` till något resulterar i `NaN`. Därför måste vi specificera parametern `fill_value` under additionen.
> **Notera** att vi inte använder den enkla syntaxen `total_items+additional_items`. Om vi gjorde det skulle vi få många `NaN` (*Not a Number*)-värden i den resulterande serien. Detta beror på att det saknas värden för vissa indexpunkter i serien `additional_items`, och att addera `NaN` till något resulterar i `NaN`. Därför måste vi specificera parametern `fill_value` under additionen.
Med tidsserier kan vi också **resampla** serien med olika tidsintervaller. Till exempel, anta att vi vill beräkna den genomsnittliga försäljningsvolymen månadsvis. Vi kan använda följande kod:
Med tidsserier kan vi också **resampla** serien med olika tidsintervall. Till exempel, anta att vi vill beräkna den genomsnittliga försäljningsvolymen per månad. Vi kan använda följande kod:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Månadsvisa tidsseriegenomsnitt](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Månadsvisa tidsseriegenomsnitt](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.sv.png)
### DataFrame
En DataFrame är i huvudsak en samling av series med samma index. Vi kan kombinera flera series tillsammans till en DataFrame:
En DataFrame är i huvudsak en samling av Series med samma index. Vi kan kombinera flera Series till en DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Detta kommer att skapa en horisontell tabell som denna:
Detta skapar en horisontell tabell som denna:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Vi kan också använda Series som kolumner och specificera kolumnnamn med hjälp av en dictionary:
Vi kan också använda Series som kolumner och specificera kolumnnamn med hjälp av en ordbok:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Detta kommer att ge oss en tabell som denna:
Detta ger oss en tabell som denna:
| | A | B |
| --- | --- | ------ |
@ -127,7 +128,7 @@ Detta kommer att ge oss en tabell som denna:
| 7 | 8 | very |
| 8 | 9 | much |
**Notera** att vi också kan få denna tabelllayout genom att transponera den tidigare tabellen, t.ex. genom att skriva
**Notera** att vi också kan få denna tabellayout genom att transponera den föregående tabellen, t.ex. genom att skriva
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
@ -137,22 +138,22 @@ Här är några av de viktigaste operationerna vi kan utföra på DataFrames:
**Kolumnval**. Vi kan välja enskilda kolumner genom att skriva `df['A']` - denna operation returnerar en Series. Vi kan också välja ett delmängd av kolumner till en annan DataFrame genom att skriva `df[['B','A']]` - detta returnerar en annan DataFrame.
**Filtrering** av endast vissa rader baserat på kriterier. Till exempel, för att endast behålla rader där kolumnen `A` är större än 5, kan vi skriva `df[df['A']>5]`.
**Filtrering** av endast vissa rader baserat på kriterier. Till exempel, för att bara behålla rader där kolumn `A` är större än 5, kan vi skriva `df[df['A']>5]`.
> **Notera**: Så här fungerar filtrering. Uttrycket `df['A']<5` returnerar en boolesk series, som indikerar om uttrycket är `True` eller `False` för varje element i den ursprungliga serien `df['A']`. När en boolesk series används som index returnerar den en delmängd av rader i DataFrame. Därför är det inte möjligt att använda godtyckliga Python-booleska uttryck, till exempel skulle det vara fel att skriva `df[df['A']>5 and df['A']<7]`. Istället bör du använda den speciella `&`-operationen på booleska serier, genom att skriva `df[(df['A']>5) & (df['A']<7)]` (*parenteser är viktiga här*).
> **Notera**: Så här fungerar filtrering. Uttrycket `df['A']<5` returnerar en boolesk serie som anger om uttrycket är `True` eller `False` för varje element i den ursprungliga serien `df['A']`. När en boolesk serie används som index returnerar den en delmängd av rader i DataFrame. Därför är det inte möjligt att använda godtyckliga Python-booleska uttryck, till exempel skulle det vara fel att skriva `df[df['A']>5 and df['A']<7]`. Istället bör du använda den speciella `&`-operationen på booleska serier, genom att skriva `df[(df['A']>5) & (df['A']<7)]` (*parenteser är viktiga här*).
**Skapa nya beräkningsbara kolumner**. Vi kan enkelt skapa nya beräkningsbara kolumner för vår DataFrame genom att använda intuitiva uttryck som detta:
**Skapa nya beräkningsbara kolumner**. Vi kan enkelt skapa nya beräkningsbara kolumner för vår DataFrame genom att använda intuitiva uttryck som detta:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Detta exempel beräknar avvikelsen för A från dess medelvärde. Vad som faktiskt händer här är att vi beräknar en series och sedan tilldelar denna series till vänster sida, vilket skapar en ny kolumn. Därför kan vi inte använda några operationer som inte är kompatibla med series, till exempel är koden nedan fel:
Detta exempel beräknar avvikelsen för A från dess medelvärde. Vad som faktiskt händer här är att vi beräknar en serie och sedan tilldelar denna serie till vänsterledet, vilket skapar en ny kolumn. Därför kan vi inte använda några operationer som inte är kompatibla med serier, till exempel är koden nedan felaktig:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Det senare exemplet, även om det är syntaktiskt korrekt, ger oss fel resultat eftersom det tilldelar längden på serien `B` till alla värden i kolumnen, och inte längden på de enskilda elementen som vi avsåg.
Om vi behöver beräkna komplexa uttryck som detta kan vi använda funktionen `apply`. Det sista exemplet kan skrivas som följer:
Om vi behöver beräkna komplexa uttryck som detta kan vi använda funktionen `apply`. Det sista exemplet kan skrivas som följer:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -173,16 +174,16 @@ Efter ovanstående operationer kommer vi att ha följande DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Välja rader baserat på nummer** kan göras med hjälp av `iloc`-konstruktionen. Till exempel, för att välja de första 5 raderna från DataFrame:
**Välja rader baserat på nummer** kan göras med hjälp av `iloc`-konstruktionen. Till exempel, för att välja de första 5 raderna från DataFrame:
```python
df.iloc[:5]
```
**Gruppering** används ofta för att få ett resultat som liknar *pivot-tabeller* i Excel. Anta att vi vill beräkna medelvärdet för kolumnen `A` för varje givet antal `LenB`. Då kan vi gruppera vår DataFrame efter `LenB` och kalla `mean`:
**Gruppering** används ofta för att få ett resultat som liknar *pivottabeller* i Excel. Anta att vi vill beräkna medelvärdet av kolumn `A` för varje givet antal `LenB`. Då kan vi gruppera vår DataFrame efter `LenB` och kalla `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Om vi behöver beräkna medelvärdet och antalet element i gruppen kan vi använda den mer komplexa funktionen `aggregate`:
Om vi behöver beräkna medelvärdet och antalet element i gruppen kan vi använda en mer komplex `aggregate`-funktion:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -199,31 +200,31 @@ Detta ger oss följande tabell:
| 6 | 2 | 6.000000 |
### Hämta data
Vi har sett hur enkelt det är att skapa Series och DataFrames från Python-objekt. Men data kommer oftast i form av en textfil eller en Excel-tabell. Lyckligtvis erbjuder Pandas ett enkelt sätt att ladda data från disk. Till exempel, att läsa en CSV-fil är så enkelt som detta:
Vi har sett hur enkelt det är att skapa Series och DataFrames från Python-objekt. Men data kommer oftast i form av en textfil eller en Excel-tabell. Lyckligtvis erbjuder Pandas ett enkelt sätt att läsa in data från disk. Till exempel, att läsa en CSV-fil är så enkelt som detta:
```python
df = pd.read_csv('file.csv')
```
Vi kommer att se fler exempel på att ladda data, inklusive att hämta den från externa webbplatser, i avsnittet "Utmaning".
Vi kommer att se fler exempel på att läsa in data, inklusive att hämta den från externa webbplatser, i avsnittet "Utmaning".
### Utskrift och Visualisering
En Data Scientist måste ofta utforska data, och därför är det viktigt att kunna visualisera den. När en DataFrame är stor vill vi ofta bara försäkra oss om att vi gör allt korrekt genom att skriva ut de första raderna. Detta kan göras genom att kalla på `df.head()`. Om du kör det från Jupyter Notebook kommer det att skriva ut DataFrame i en snygg tabellform.
En Data Scientist måste ofta utforska data, och därför är det viktigt att kunna visualisera den. När en DataFrame är stor vill vi ofta bara kontrollera att vi gör allt korrekt genom att skriva ut de första raderna. Detta kan göras genom att anropa `df.head()`. Om du kör det från Jupyter Notebook kommer det att skriva ut DataFrame i en snygg tabellform.
Vi har också sett användningen av funktionen `plot` för att visualisera vissa kolumner. Även om `plot` är mycket användbar för många uppgifter och stöder många olika grafiska typer via parametern `kind=`, kan du alltid använda det råa biblioteket `matplotlib` för att skapa något mer komplext. Vi kommer att täcka datavisualisering i detalj i separata kurslektioner.
Vi har också sett användningen av funktionen `plot` för att visualisera vissa kolumner. Även om `plot` är mycket användbar för många uppgifter och stöder många olika grafiska typer via parametern `kind=`, kan du alltid använda det råa biblioteket `matplotlib` för att skapa något mer komplext. Vi kommer att gå igenom data-visualisering i detalj i separata kurslektioner.
Denna översikt täcker de viktigaste koncepten i Pandas, men biblioteket är mycket rikt och det finns ingen gräns för vad du kan göra med det! Låt oss nu tillämpa denna kunskap för att lösa ett specifikt problem.
## 🚀 Utmaning 1: Analysera COVID-spridning
Det första problemet vi kommer att fokusera på är modellering av epidemisk spridning av COVID-19. För att göra det kommer vi att använda data om antalet smittade individer i olika länder, tillhandahållen av [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) vid [Johns Hopkins University](https://jhu.edu/). Datasetet finns tillgängligt i [detta GitHub Repository](https://github.com/CSSEGISandData/COVID-19).
Det första problemet vi kommer att fokusera på är modellering av epidemisk spridning av COVID-19. För att göra detta kommer vi att använda data om antalet smittade individer i olika länder, tillhandahållen av [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) vid [Johns Hopkins University](https://jhu.edu/). Datasetet finns tillgängligt i [denna GitHub-repository](https://github.com/CSSEGISandData/COVID-19).
Eftersom vi vill demonstrera hur man hanterar data, uppmanar vi dig att öppna [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) och läsa det från början till slut. Du kan också köra celler och göra några utmaningar som vi har lämnat åt dig i slutet.
Eftersom vi vill demonstrera hur man hanterar data, uppmanar vi dig att öppna [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) och läsa den från början till slut. Du kan också köra cellerna och göra några utmaningar som vi har lämnat åt dig i slutet.
![COVID-spridning](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID-spridning](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.sv.png)
> Om du inte vet hur man kör kod i Jupyter Notebook, ta en titt på [denna artikel](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Arbeta med Ostrukturerad Data
## Arbeta med ostrukturerad data
Även om data ofta kommer i tabellform, måste vi i vissa fall hantera mindre strukturerad data, till exempel text eller bilder. I sådana fall, för att tillämpa databehandlingstekniker som vi har sett ovan, måste vi på något sätt **extrahera** strukturerad data. Här är några exempel:
@ -233,22 +234,22 @@ Eftersom vi vill demonstrera hur man hanterar data, uppmanar vi dig att öppna [
## 🚀 Utmaning 2: Analysera COVID-artiklar
I denna utmaning fortsätter vi med ämnet COVID-pandemin och fokuserar på att bearbeta vetenskapliga artiklar om ämnet. Det finns [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mer än 7000 (vid skrivande stund) artiklar om COVID, tillgängliga med metadata och abstrakt (och för ungefär hälften av dem finns även fulltext tillgänglig).
I denna utmaning fortsätter vi med ämnet COVID-pandemin och fokuserar på att bearbeta vetenskapliga artiklar om ämnet. Det finns [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mer än 7000 (vid tidpunkten för skrivandet) artiklar om COVID, tillgängliga med metadata och abstrakt (och för ungefär hälften av dem finns även fulltext tillgänglig).
Ett komplett exempel på att analysera detta dataset med hjälp av [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) kognitiv tjänst beskrivs [i detta blogginlägg](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vi kommer att diskutera en förenklad version av denna analys.
> **NOTE**: Vi tillhandahåller inte en kopia av datasetet som en del av detta repository. Du kan först behöva ladda ner filen [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) från [detta dataset på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan krävas. Du kan också ladda ner datasetet utan registrering [härifrån](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det kommer att inkludera alla fulltexter utöver metadatafilen.
> **NOTE**: Vi tillhandahåller inte en kopia av datasetet som en del av denna repository. Du kan först behöva ladda ner filen [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) från [detta dataset på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan krävas. Du kan också ladda ner datasetet utan registrering [härifrån](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det kommer att inkludera alla fulltexter utöver metadatafilen.
Öppna [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) och läs det från början till slut. Du kan också köra celler och göra några utmaningar som vi har lämnat åt dig i slutet.
Öppna [`notebook-papers.ipynb`](notebook-papers.ipynb) och läs den från början till slut. Du kan också köra cellerna och göra några utmaningar som vi har lämnat åt dig i slutet.
![Covid Medicinsk Behandling](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medicinsk Behandling](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.sv.png)
## Bearbeta Bilddata
## Bearbeta bilddata
Nyligen har mycket kraftfulla AI-modeller utvecklats som gör det möjligt att förstå bilder. Det finns många uppgifter som kan lösas med förtränade neurala nätverk eller molntjänster. Några exempel inkluderar:
* **Bildklassificering**, som kan hjälpa dig att kategorisera bilden i en av de fördefinierade klasserna. Du kan enkelt träna dina egna bildklassificerare med tjänster som [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Objektdetektering** för att identifiera olika objekt i bilden. Tjänster som [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kan identifiera ett antal vanliga objekt, och du kan träna en [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modell för att identifiera specifika objekt av intresse.
* **Objektdetektering** för att identifiera olika objekt bilden. Tjänster som [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kan identifiera ett antal vanliga objekt, och du kan träna en [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modell för att identifiera specifika objekt av intresse.
* **Ansiktsdetektering**, inklusive ålder, kön och känslodetektering. Detta kan göras via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Alla dessa molntjänster kan anropas med [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), och kan därför enkelt integreras i ditt datautforskningsflöde.
@ -269,12 +270,12 @@ Oavsett om du redan har strukturerad eller ostrukturerad data, kan du med Python
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Online-resurser**
* Officiell [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) handledning
* Officiell [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Dokumentation om Pandas-visualisering](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Lära sig Python**
**Lär dig Python**
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
* [Ta dina första steg med Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) lärväg på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Ta dina första steg med Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Uppgift
@ -287,4 +288,4 @@ Denna lektion har skrivits med ♥️ av [Dmitry Soshnikov](http://soshnikov.com
---
**Ansvarsfriskrivning**:
Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, bör det noteras att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.
Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen notera att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på sitt originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T17:06:59+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:54:48+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "sw"
}
@ -13,18 +13,18 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Kufanya Kazi na Python - _Sketchnote na [@nitya](https://twitter.com/nitya)_ |
[![Video ya Utangulizi](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Video ya Utangulizi](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.sw.png)](https://youtu.be/dZjWOGbsN4Y)
Ingawa hifadhidata zinatoa njia bora za kuhifadhi data na kuziuliza kwa kutumia lugha za maswali, njia inayobadilika zaidi ya kuchakata data ni kuandika programu yako mwenyewe ili kuibadilisha. Katika hali nyingi, kufanya maswali ya hifadhidata itakuwa njia bora zaidi. Hata hivyo, katika baadhi ya hali ambapo uchakataji wa data changamani unahitajika, haiwezi kufanyika kwa urahisi kwa kutumia SQL.
Uchakataji wa data unaweza kupangwa kwa lugha yoyote ya programu, lakini kuna lugha fulani ambazo ziko juu zaidi kwa kazi za data. Wanasayansi wa data mara nyingi hupendelea mojawapo ya lugha zifuatazo:
Ingawa hifadhidata zinatoa njia bora za kuhifadhi data na kuziuliza kwa kutumia lugha za maswali, njia inayobadilika zaidi ya kuchakata data ni kuandika programu yako mwenyewe ili kuibadilisha. Katika hali nyingi, kufanya maswali ya hifadhidata kungekuwa njia bora zaidi. Hata hivyo, katika baadhi ya hali ambapo uchakataji wa data changamani unahitajika, haiwezi kufanyika kwa urahisi kwa kutumia SQL.
Uchakataji wa data unaweza kupangwa kwa lugha yoyote ya programu, lakini kuna lugha fulani ambazo ni za kiwango cha juu zaidi linapokuja suala la kufanya kazi na data. Wanasayansi wa data mara nyingi hupendelea mojawapo ya lugha zifuatazo:
* **[Python](https://www.python.org/)**, lugha ya programu ya matumizi ya jumla, ambayo mara nyingi huchukuliwa kuwa chaguo bora kwa wanaoanza kutokana na urahisi wake. Python ina maktaba nyingi za ziada ambazo zinaweza kukusaidia kutatua matatizo mengi ya vitendo, kama vile kutoa data yako kutoka kwa faili ya ZIP, au kubadilisha picha kuwa rangi ya kijivu. Mbali na sayansi ya data, Python pia hutumika mara nyingi kwa maendeleo ya wavuti.
* **[R](https://www.r-project.org/)** ni zana ya kitamaduni iliyotengenezwa kwa uchakataji wa data za takwimu. Pia ina hifadhi kubwa ya maktaba (CRAN), na kuifanya kuwa chaguo nzuri kwa uchakataji wa data. Hata hivyo, R si lugha ya matumizi ya jumla, na mara chache hutumika nje ya uwanja wa sayansi ya data.
* **[Julia](https://julialang.org/)** ni lugha nyingine iliyotengenezwa mahsusi kwa sayansi ya data. Imeundwa kutoa utendaji bora kuliko Python, na kuifanya kuwa zana nzuri kwa majaribio ya kisayansi.
* **[Python](https://www.python.org/)**, lugha ya programu ya matumizi ya jumla, ambayo mara nyingi huchukuliwa kuwa mojawapo ya chaguo bora kwa wanaoanza kutokana na urahisi wake. Python ina maktaba nyingi za ziada ambazo zinaweza kukusaidia kutatua matatizo mengi ya vitendo, kama vile kutoa data yako kutoka kwenye jalada la ZIP, au kubadilisha picha kuwa rangi ya kijivu. Mbali na sayansi ya data, Python pia hutumika mara nyingi kwa maendeleo ya wavuti.
* **[R](https://www.r-project.org/)** ni zana ya kitamaduni iliyotengenezwa kwa lengo la uchakataji wa data za takwimu. Pia ina hifadhi kubwa ya maktaba (CRAN), na kuifanya kuwa chaguo nzuri kwa uchakataji wa data. Hata hivyo, R si lugha ya matumizi ya jumla, na mara chache hutumika nje ya uwanja wa sayansi ya data.
* **[Julia](https://julialang.org/)** ni lugha nyingine iliyotengenezwa mahsusi kwa sayansi ya data. Imeundwa kutoa utendaji bora zaidi kuliko Python, na kuifanya kuwa zana nzuri kwa majaribio ya kisayansi.
Katika somo hili, tutazingatia kutumia Python kwa uchakataji rahisi wa data. Tutadhani una uelewa wa msingi wa lugha. Ikiwa unataka ziara ya kina ya Python, unaweza kurejelea mojawapo ya rasilimali zifuatazo:
Katika somo hili, tutazingatia kutumia Python kwa uchakataji rahisi wa data. Tutadhania kuwa una ufahamu wa msingi wa lugha hii. Ikiwa unataka ziara ya kina ya Python, unaweza kurejelea mojawapo ya rasilimali zifuatazo:
* [Jifunze Python kwa Njia ya Kufurahisha na Michoro ya Turtle na Fractals](https://github.com/shwars/pycourse) - Kozi ya utangulizi ya haraka ya GitHub kuhusu Programu ya Python
* [Jifunze Python kwa Njia ya Kufurahisha na Michoro ya Turtle na Fractals](https://github.com/shwars/pycourse) - Kozi ya utangulizi ya haraka ya Python inayotegemea GitHub
* [Chukua Hatua Zako za Kwanza na Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Njia ya Kujifunza kwenye [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Data inaweza kuja katika aina nyingi. Katika somo hili, tutazingatia aina tatu za data - **data ya tabular**, **maandishi**, na **picha**.
@ -37,7 +37,7 @@ Tutazingatia mifano michache ya uchakataji wa data, badala ya kukupa muhtasari k
## Data ya Tabular na Dataframes
Umeshakutana na data ya tabular tulipozungumzia hifadhidata za uhusiano. Unapokuwa na data nyingi, na imehifadhiwa katika meza nyingi zilizounganishwa, inafaa kutumia SQL kufanya kazi nayo. Hata hivyo, kuna hali nyingi ambapo tuna meza ya data, na tunahitaji kupata **uelewa** au **ufahamu** kuhusu data hii, kama vile usambazaji, uhusiano kati ya thamani, n.k. Katika sayansi ya data, kuna hali nyingi ambapo tunahitaji kufanya mabadiliko ya data ya awali, ikifuatiwa na uwasilishaji wa picha. Hatua zote hizi zinaweza kufanywa kwa urahisi kwa kutumia Python.
Tayari umekutana na data ya tabular tulipokuwa tukizungumza kuhusu hifadhidata za uhusiano. Unapokuwa na data nyingi, na imehifadhiwa katika meza nyingi zilizounganishwa, ina maana kutumia SQL kufanya kazi nayo. Hata hivyo, kuna hali nyingi ambapo tuna meza ya data, na tunahitaji kupata **ufahamu** au **mawazo** kuhusu data hii, kama vile usambazaji, uhusiano kati ya thamani, n.k. Katika sayansi ya data, kuna hali nyingi ambapo tunahitaji kufanya mabadiliko fulani ya data ya awali, ikifuatiwa na uwasilishaji wa picha. Hatua zote hizi zinaweza kufanywa kwa urahisi kwa kutumia Python.
Kuna maktaba mbili muhimu zaidi katika Python ambazo zinaweza kukusaidia kushughulikia data ya tabular:
* **[Pandas](https://pandas.pydata.org/)** inakuwezesha kubadilisha kinachoitwa **Dataframes**, ambacho ni sawa na meza za uhusiano. Unaweza kuwa na safu zilizotajwa, na kufanya operesheni tofauti kwenye safu, safu wima, na dataframes kwa ujumla.
@ -45,9 +45,9 @@ Kuna maktaba mbili muhimu zaidi katika Python ambazo zinaweza kukusaidia kushugh
Pia kuna maktaba nyingine chache unazopaswa kujua:
* **[Matplotlib](https://matplotlib.org/)** ni maktaba inayotumika kwa uwasilishaji wa data na kuchora grafu
* **[SciPy](https://www.scipy.org/)** ni maktaba yenye baadhi ya kazi za kisayansi za ziada. Tayari tumekutana na maktaba hii tulipozungumzia uwezekano na takwimu
* **[SciPy](https://www.scipy.org/)** ni maktaba yenye baadhi ya kazi za kisayansi za ziada. Tayari tumekutana na maktaba hii tulipokuwa tukizungumza kuhusu uwezekano na takwimu
Hapa kuna kipande cha msimbo ambacho kawaida hutumika kuingiza maktaba hizi mwanzoni mwa programu yako ya Python:
Hapa kuna kipande cha msimbo ambacho ungeweza kutumia kuingiza maktaba hizi mwanzoni mwa programu yako ya Python:
```python
import numpy as np
import pandas as pd
@ -55,15 +55,15 @@ import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
Pandas inazingatia dhana chache za msingi.
Pandas inajikita kwenye dhana chache za msingi.
### Series
**Series** ni mlolongo wa thamani, sawa na orodha au numpy array. Tofauti kuu ni kwamba series pia ina **index**, na tunapofanya operesheni kwenye series (mfano, kuziongeza), index inazingatiwa. Index inaweza kuwa rahisi kama namba ya safu ya integer (ni index inayotumika kwa chaguo-msingi wakati wa kuunda series kutoka orodha au array), au inaweza kuwa na muundo changamani, kama vile muda wa tarehe.
> **Kumbuka**: Kuna msimbo wa utangulizi wa Pandas katika daftari linaloambatana [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Tunatoa muhtasari wa baadhi ya mifano hapa, na unakaribishwa kuangalia daftari kamili.
> **Kumbuka**: Kuna msimbo wa utangulizi wa Pandas katika daftari linaloambatana [`notebook.ipynb`](notebook.ipynb). Tunatoa muhtasari wa baadhi ya mifano hapa, na unakaribishwa kuangalia daftari kamili.
Fikiria mfano: tunataka kuchambua mauzo ya duka letu la ice-cream. Hebu tuunde series ya namba za mauzo (idadi ya bidhaa zilizouzwa kila siku) kwa muda fulani:
Fikiria mfano: tunataka kuchambua mauzo ya duka letu la ice-cream. Hebu tuunde series ya namba za mauzo (idadi ya bidhaa zilizouzwa kila siku) kwa kipindi fulani cha muda:
```python
start_date = "Jan 1, 2020"
@ -73,7 +73,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Mchoro wa Mfululizo wa Wakati](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Mchoro wa Mfululizo wa Muda](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.sw.png)
Sasa fikiria kwamba kila wiki tunaandaa sherehe kwa marafiki, na tunachukua pakiti 10 za ziada za ice-cream kwa ajili ya sherehe. Tunaweza kuunda series nyingine, iliyoorodheshwa kwa wiki, kuonyesha hilo:
```python
@ -84,16 +84,16 @@ Tunapoongeza series mbili pamoja, tunapata jumla ya idadi:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Mchoro wa Mfululizo wa Wakati](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Mchoro wa Mfululizo wa Muda](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.sw.png)
> **Kumbuka** kwamba hatutumii sintaksia rahisi `total_items+additional_items`. Tukifanya hivyo, tungepata thamani nyingi za `NaN` (*Not a Number*) katika series inayotokana. Hii ni kwa sababu kuna thamani zinazokosekana kwa baadhi ya pointi za index katika series ya `additional_items`, na kuongeza `NaN` kwa chochote husababisha `NaN`. Kwa hivyo tunahitaji kutaja parameter ya `fill_value` wakati wa kuongeza.
> **Kumbuka** kwamba hatutumii sintaksia rahisi `total_items+additional_items`. Ikiwa tungefanya hivyo, tungepata thamani nyingi za `NaN` (*Not a Number*) katika series inayotokana. Hii ni kwa sababu kuna thamani zinazokosekana kwa baadhi ya pointi za index katika series ya `additional_items`, na kuongeza `NaN` kwa chochote husababisha `NaN`. Kwa hivyo tunahitaji kubainisha parameter ya `fill_value` wakati wa kuongeza.
Kwa mfululizo wa wakati, tunaweza pia **kurekebisha upya** series kwa vipindi tofauti vya wakati. Kwa mfano, fikiria tunataka kuhesabu wastani wa mauzo ya kila mwezi. Tunaweza kutumia msimbo huu:
Kwa mfululizo wa muda, tunaweza pia **kurekebisha upya** series kwa vipindi tofauti vya muda. Kwa mfano, fikiria tunataka kuhesabu wastani wa mauzo ya kila mwezi. Tunaweza kutumia msimbo huu:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Wastani wa Mfululizo wa Wakati wa Kila Mwezi](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Wastani wa Mfululizo wa Muda wa Kila Mwezi](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.sw.png)
### DataFrame
@ -109,7 +109,7 @@ Hii itaunda meza ya mlalo kama hii:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Tunaweza pia kutumia Series kama safu wima, na kutaja majina ya safu wima kwa kutumia kamusi:
Tunaweza pia kutumia Series kama safu wima, na kubainisha majina ya safu wima kwa kutumia kamusi:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -127,7 +127,7 @@ Hii itatupa meza kama hii:
| 7 | 8 | very |
| 8 | 9 | much |
**Kumbuka** kwamba tunaweza pia kupata mpangilio wa meza hii kwa kubadilisha meza ya awali, mfano kwa kuandika
**Kumbuka** kwamba tunaweza pia kupata mpangilio huu wa meza kwa kubadilisha meza ya awali, mfano kwa kuandika
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
@ -137,9 +137,9 @@ Hapa kuna operesheni chache muhimu zaidi tunazoweza kufanya kwenye DataFrames:
**Uchaguzi wa safu wima**. Tunaweza kuchagua safu wima moja kwa kuandika `df['A']` - operesheni hii inarudisha Series. Tunaweza pia kuchagua subset ya safu wima kuwa DataFrame nyingine kwa kuandika `df[['B','A']]` - hii inarudisha DataFrame nyingine.
**Kuchuja** safu fulani tu kwa vigezo. Kwa mfano, ili kuacha safu tu zenye safu wima `A` kubwa kuliko 5, tunaweza kuandika `df[df['A']>5]`.
**Kuchuja** safu fulani kwa vigezo. Kwa mfano, kuacha tu safu zilizo na safu wima `A` kubwa kuliko 5, tunaweza kuandika `df[df['A']>5]`.
> **Kumbuka**: Njia ya kuchuja inavyofanya kazi ni kama ifuatavyo. Usemi `df['A']<5` unarudisha series ya boolean, ambayo inaonyesha ikiwa usemi ni `True` au `False` kwa kila kipengele cha series ya awali `df['A']`. Wakati series ya boolean inatumika kama index, inarudisha subset ya safu katika DataFrame. Kwa hivyo haiwezekani kutumia usemi wa boolean wa Python kiholela, kwa mfano, kuandika `df[df['A']>5 and df['A']<7]` itakuwa si sahihi. Badala yake, unapaswa kutumia operesheni maalum ya `&` kwenye series ya boolean, kwa kuandika `df[(df['A']>5) & (df['A']<7)]` (*mabano ni muhimu hapa*).
> **Kumbuka**: Njia ambayo kuchuja hufanya kazi ni kama ifuatavyo. Usemi `df['A']<5` unarudisha series ya boolean, ambayo inaonyesha ikiwa usemi ni `True` au `False` kwa kila kipengele cha series ya awali `df['A']`. Wakati series ya boolean inatumika kama index, inarudisha subset ya safu katika DataFrame. Kwa hivyo haiwezekani kutumia usemi wa boolean wa Python kiholela, kwa mfano, kuandika `df[df['A']>5 and df['A']<7]` itakuwa si sahihi. Badala yake, unapaswa kutumia operesheni maalum ya `&` kwenye series ya boolean, kwa kuandika `df[(df['A']>5) & (df['A']<7)]` (*mabano ni muhimu hapa*).
**Kuunda safu wima mpya zinazoweza kuhesabiwa**. Tunaweza kuunda kwa urahisi safu wima mpya zinazoweza kuhesabiwa kwa DataFrame yetu kwa kutumia usemi wa angavu kama huu:
```python
@ -150,7 +150,7 @@ Mfano huu unahesabu tofauti ya A kutoka thamani yake ya wastani. Kinachotokea ha
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Mfano wa mwisho, ingawa ni sahihi kisintaksia, unatupa matokeo yasiyo sahihi, kwa sababu unaweka urefu wa series `B` kwa thamani zote katika safu wima, na si urefu wa vipengele vya mtu binafsi kama tulivyokusudia.
Mfano wa mwisho, ingawa ni sahihi kisintaksia, unatupa matokeo yasiyo sahihi, kwa sababu inaweka urefu wa series `B` kwa thamani zote katika safu wima, na si urefu wa vipengele vya mtu binafsi kama tulivyokusudia.
Ikiwa tunahitaji kuhesabu usemi changamani kama huu, tunaweza kutumia kazi ya `apply`. Mfano wa mwisho unaweza kuandikwa kama ifuatavyo:
```python
@ -159,7 +159,7 @@ df['LenB'] = df['B'].apply(lambda x : len(x))
df['LenB'] = df['B'].apply(len)
```
Baada ya operesheni hapo juu, tutakuwa na DataFrame ifuatayo:
Baada ya operesheni zilizo hapo juu, tutakuwa na DataFrame ifuatayo:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -180,7 +180,7 @@ df.iloc[:5]
**Kugawanya** mara nyingi hutumika kupata matokeo yanayofanana na *pivot tables* katika Excel. Fikiria kwamba tunataka kuhesabu thamani ya wastani ya safu wima `A` kwa kila namba fulani ya `LenB`. Kisha tunaweza kugawanya DataFrame yetu kwa `LenB`, na kuita `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ikiwa tunahitaji kuhesabu wastani na idadi ya vipengele katika kikundi, basi tunaweza kutumia kazi changamani ya `aggregate`:
```python
@ -207,9 +207,9 @@ Tutaona mifano zaidi ya kupakia data, ikiwa ni pamoja na kuipata kutoka tovuti z
### Kuchapisha na Kuchora
Mtaalamu wa Data mara nyingi anahitaji kuchunguza data, hivyo ni muhimu kuwa na uwezo wa kuiona kwa picha. Wakati DataFrame ni kubwa, mara nyingi tunataka tu kuhakikisha tunafanya kila kitu kwa usahihi kwa kuchapisha mistari michache ya kwanza. Hii inaweza kufanyika kwa kupiga `df.head()`. Ikiwa unaiendesha kutoka Jupyter Notebook, itachapisha DataFrame katika mfumo mzuri wa jedwali.
Mwanasayansi wa Data mara nyingi anahitaji kuchunguza data, hivyo ni muhimu kuwa na uwezo wa kuiona kwa picha. Wakati DataFrame ni kubwa, mara nyingi tunataka tu kuhakikisha tunafanya kila kitu kwa usahihi kwa kuchapisha mistari michache ya kwanza. Hii inaweza kufanyika kwa kupiga `df.head()`. Ikiwa unaiendesha kutoka Jupyter Notebook, itachapisha DataFrame katika mfumo mzuri wa tabular.
Tumeona pia matumizi ya kazi ya `plot` kuonyesha baadhi ya safu. Ingawa `plot` ni muhimu sana kwa kazi nyingi, na inasaidia aina nyingi za grafu kupitia parameter ya `kind=`, unaweza daima kutumia maktaba ya `matplotlib` kuonyesha kitu kigumu zaidi. Tutashughulikia uonyeshaji wa data kwa undani katika masomo tofauti ya kozi.
Pia tumeona matumizi ya kazi ya `plot` kuonyesha baadhi ya safu. Ingawa `plot` ni muhimu sana kwa kazi nyingi, na inasaidia aina nyingi za grafu kupitia parameter ya `kind=`, unaweza daima kutumia maktaba ya msingi ya `matplotlib` kuchora kitu kigumu zaidi. Tutashughulikia uonyeshaji wa data kwa undani katika masomo tofauti ya kozi.
Muhtasari huu unashughulikia dhana muhimu zaidi za Pandas, hata hivyo, maktaba hii ni tajiri sana, na hakuna kikomo cha kile unachoweza kufanya nayo! Sasa hebu tutumie maarifa haya kutatua tatizo maalum.
@ -217,49 +217,49 @@ Muhtasari huu unashughulikia dhana muhimu zaidi za Pandas, hata hivyo, maktaba h
Tatizo la kwanza ambalo tutalenga ni uundaji wa kuenea kwa janga la COVID-19. Ili kufanya hivyo, tutatumia data ya idadi ya watu walioambukizwa katika nchi tofauti, iliyotolewa na [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) katika [Chuo Kikuu cha Johns Hopkins](https://jhu.edu/). Dataset inapatikana katika [Hifadhi hii ya GitHub](https://github.com/CSSEGISandData/COVID-19).
Kwa kuwa tunataka kuonyesha jinsi ya kushughulikia data, tunakualika kufungua [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) na kuisoma kutoka juu hadi chini. Unaweza pia kutekeleza seli, na kufanya changamoto ambazo tumekuachia mwishoni.
Kwa kuwa tunataka kuonyesha jinsi ya kushughulikia data, tunakualika kufungua [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) na kuisoma kutoka juu hadi chini. Unaweza pia kutekeleza seli, na kufanya changamoto ambazo tumeacha kwa ajili yako mwishoni.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.sw.png)
> Ikiwa hujui jinsi ya kuendesha msimbo katika Jupyter Notebook, angalia [makala hii](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Kufanya Kazi na Data Isiyo na Muundo
Ingawa data mara nyingi huja katika mfumo wa jedwali, katika baadhi ya matukio tunahitaji kushughulikia data isiyo na muundo, kwa mfano, maandishi au picha. Katika hali hii, ili kutumia mbinu za usindikaji wa data tulizoona hapo juu, tunahitaji kwa namna fulani **kuchimba** data yenye muundo. Hapa kuna mifano michache:
Ingawa data mara nyingi huja katika mfumo wa tabular, katika baadhi ya matukio tunahitaji kushughulikia data isiyo na muundo, kwa mfano, maandishi au picha. Katika hali hii, ili kutumia mbinu za usindikaji wa data tulizoona hapo juu, tunahitaji kwa namna fulani **kuchimba** data yenye muundo. Hapa kuna mifano michache:
* Kuchimba maneno muhimu kutoka kwa maandishi, na kuona mara ngapi maneno hayo yanatokea
* Kutumia mitandao ya neva kuchimba taarifa kuhusu vitu vilivyomo kwenye picha
* Kutumia mitandao ya neva kuchimba taarifa kuhusu vitu vilivyopo kwenye picha
* Kupata taarifa kuhusu hisia za watu kwenye video ya kamera
## 🚀 Changamoto 2: Kuchambua Makala za COVID
Katika changamoto hii, tutaendelea na mada ya janga la COVID, na kuzingatia usindikaji wa makala za kisayansi kuhusu mada hiyo. Kuna [Dataset ya CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) yenye zaidi ya makala 7000 (wakati wa kuandika) kuhusu COVID, inapatikana na metadata na muhtasari (na kwa karibu nusu yao pia kuna maandishi kamili yaliyotolewa).
Katika changamoto hii, tutaendelea na mada ya janga la COVID, na kuzingatia usindikaji wa makala za kisayansi kuhusu mada hiyo. Kuna [Dataset ya CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) yenye zaidi ya makala 7000 (wakati wa kuandika) kuhusu COVID, inapatikana na metadata na muhtasari (na kwa karibu nusu ya makala kuna maandishi kamili pia).
Mfano kamili wa kuchambua dataset hii kwa kutumia huduma ya kiakili ya [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) umeelezwa [katika blogu hii](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Tutajadili toleo rahisi la uchambuzi huu.
> **NOTE**: Hatutoi nakala ya dataset kama sehemu ya hifadhi hii. Huenda ukahitaji kwanza kupakua faili ya [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) kutoka [dataset hii kwenye Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Usajili na Kaggle unaweza kuhitajika. Unaweza pia kupakua dataset bila usajili [kutoka hapa](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), lakini itajumuisha maandishi yote kamili pamoja na faili ya metadata.
> **NOTE**: Hatutoi nakala ya dataset kama sehemu ya hifadhi hii. Huenda ukahitaji kwanza kupakua faili ya [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) kutoka [dataset hii kwenye Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Usajili na Kaggle unaweza kuhitajika. Unaweza pia kupakua dataset bila usajili [kutoka hapa](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), lakini itajumuisha maandishi kamili yote pamoja na faili ya metadata.
Fungua [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) na isome kutoka juu hadi chini. Unaweza pia kutekeleza seli, na kufanya changamoto ambazo tumekuachia mwishoni.
Fungua [`notebook-papers.ipynb`](notebook-papers.ipynb) na isome kutoka juu hadi chini. Unaweza pia kutekeleza seli, na kufanya changamoto ambazo tumeacha kwa ajili yako mwishoni.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.sw.png)
## Usindikaji wa Data ya Picha
Hivi karibuni, mifano yenye nguvu sana ya AI imeendelezwa ambayo inaruhusu kuelewa picha. Kuna kazi nyingi ambazo zinaweza kutatuliwa kwa kutumia mitandao ya neva iliyofunzwa awali, au huduma za wingu. Mifano kadhaa ni pamoja na:
* **Uainishaji wa Picha**, ambayo inaweza kukusaidia kuainisha picha katika mojawapo ya madarasa yaliyoainishwa. Unaweza kwa urahisi kufundisha waainishaji wa picha zako mwenyewe kwa kutumia huduma kama [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Uainishaji wa Picha**, ambayo inaweza kukusaidia kuainisha picha katika mojawapo ya madarasa yaliyofafanuliwa awali. Unaweza kwa urahisi kufundisha waainishaji wa picha zako mwenyewe kwa kutumia huduma kama [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Utambuzi wa Vitu** ili kutambua vitu tofauti kwenye picha. Huduma kama [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) zinaweza kutambua idadi ya vitu vya kawaida, na unaweza kufundisha [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) kutambua vitu maalum vya maslahi.
* **Utambuzi wa Uso**, ikiwa ni pamoja na Umri, Jinsia na Utambuzi wa Hisia. Hii inaweza kufanyika kupitia [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Utambuzi wa Nyuso**, ikiwa ni pamoja na Umri, Jinsia na Utambuzi wa Hisia. Hii inaweza kufanyika kupitia [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Huduma zote za wingu zinaweza kuitwa kwa kutumia [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), na hivyo zinaweza kuingizwa kwa urahisi katika mtiririko wako wa uchunguzi wa data.
Hapa kuna mifano ya kuchunguza data kutoka vyanzo vya data ya Picha:
* Katika blogu [Jinsi ya Kujifunza Sayansi ya Data bila Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) tunachunguza picha za Instagram, tukijaribu kuelewa ni nini kinachofanya watu kutoa likes zaidi kwa picha. Tunachimba kwanza taarifa nyingi kutoka kwa picha kwa kutumia [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), kisha tunatumia [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) kujenga mfano unaoweza kufasiriwa.
* Katika [Warsha ya Uchunguzi wa Uso](https://github.com/CloudAdvocacy/FaceStudies) tunatumia [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) kuchimba hisia za watu kwenye picha kutoka matukio, ili kujaribu kuelewa ni nini kinachofanya watu kuwa na furaha.
Hapa kuna mifano ya kuchunguza data kutoka vyanzo vya data ya picha:
* Katika blogu ya [Jinsi ya Kujifunza Sayansi ya Data bila Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) tunachunguza picha za Instagram, tukijaribu kuelewa ni nini kinachofanya watu kutoa likes zaidi kwa picha. Kwanza tunachimba taarifa nyingi kutoka kwa picha kwa kutumia [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), kisha tunatumia [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) kujenga mfano unaoweza kufasiriwa.
* Katika [Warsha ya Utafiti wa Nyuso](https://github.com/CloudAdvocacy/FaceStudies) tunatumia [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) kuchimba hisia za watu kwenye picha kutoka matukio, ili kujaribu kuelewa ni nini kinachofanya watu kuwa na furaha.
## Hitimisho
Ikiwa tayari una data yenye muundo au isiyo na muundo, kwa kutumia Python unaweza kufanya hatua zote zinazohusiana na usindikaji wa data na uelewa. Hii pengine ndiyo njia rahisi zaidi ya usindikaji wa data, na ndiyo sababu wataalamu wengi wa data hutumia Python kama chombo chao kikuu. Kujifunza Python kwa undani ni wazo zuri ikiwa unajihusisha kwa dhati na safari yako ya sayansi ya data!
Ikiwa tayari una data yenye muundo au isiyo na muundo, kwa kutumia Python unaweza kufanya hatua zote zinazohusiana na usindikaji wa data na uelewa. Hii pengine ndiyo njia rahisi zaidi ya usindikaji wa data, na ndiyo sababu wataalamu wengi wa data hutumia Python kama chombo chao kikuu. Kujifunza Python kwa undani ni wazo zuri ikiwa unachukua safari yako ya sayansi ya data kwa uzito!
## [Jaribio la baada ya somo](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -282,9 +282,9 @@ Ikiwa tayari una data yenye muundo au isiyo na muundo, kwa kutumia Python unawez
## Credits
Somu hili limeandikwa kwa ♥️ na [Dmitry Soshnikov](http://soshnikov.com)
Somo hili limeandikwa kwa ♥️ na [Dmitry Soshnikov](http://soshnikov.com)
---
**Kanusho**:
Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.
Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, inashauriwa kutumia huduma ya tafsiri ya kitaalamu ya binadamu. Hatutawajibika kwa maelewano mabaya au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T21:26:08+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:44:39+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "th"
}
@ -13,15 +13,15 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| การทำงานกับ Python - _Sketchnote โดย [@nitya](https://twitter.com/nitya)_ |
[![วิดีโอแนะนำ](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![วิดีโอแนะนำ](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.th.png)](https://youtu.be/dZjWOGbsN4Y)
แม้ว่าฐานข้อมูลจะเป็นวิธีที่มีประสิทธิภาพในการจัดเก็บข้อมูลและเรียกใช้ข้อมูลด้วยภาษาคำสั่ง แต่การเขียนโปรแกรมเพื่อจัดการข้อมูลด้วยตัวเองถือเป็นวิธีที่ยืดหยุ่นที่สุด ในหลายกรณี การใช้คำสั่งฐานข้อมูลอาจมีประสิทธิภาพมากกว่า แต่ในบางกรณีที่ต้องการการประมวลผลข้อมูลที่ซับซ้อนมากขึ้น SQL อาจไม่สามารถทำได้ง่าย ๆ การประมวลผลข้อมูลสามารถเขียนโปรแกรมได้ในทุกภาษา แต่มีบางภาษาที่เหมาะสมกับการทำงานกับข้อมูลมากกว่า นักวิทยาศาสตร์ข้อมูลมักนิยมใช้ภาษาต่อไปนี้:
แม้ว่าฐานข้อมูลจะเป็นวิธีที่มีประสิทธิภาพในการจัดเก็บข้อมูลและเรียกใช้ข้อมูลด้วยภาษาคำสั่ง แต่การเขียนโปรแกรมเพื่อจัดการข้อมูลด้วยตัวเองถือเป็นวิธีที่ยืดหยุ่นที่สุด ในหลายกรณี การใช้คำสั่งฐานข้อมูลอาจมีประสิทธิภาพมากกว่า แต่ในบางกรณีที่ต้องการการประมวลผลข้อมูลที่ซับซ้อนมากขึ้น SQL อาจไม่สามารถทำได้ง่าย ๆ การประมวลผลข้อมูลสามารถเขียนได้ในทุกภาษาโปรแกรม แต่มีบางภาษาที่เหมาะสมกับการทำงานกับข้อมูลมากกว่า นักวิทยาศาสตร์ข้อมูลมักนิยมใช้ภาษาต่อไปนี้:
* **[Python](https://www.python.org/)** เป็นภาษาการเขียนโปรแกรมทั่วไปที่มักถูกมองว่าเป็นตัวเลือกที่ดีที่สุดสำหรับผู้เริ่มต้นเนื่องจากความเรียบง่าย Python มีไลบรารีเพิ่มเติมมากมายที่ช่วยแก้ปัญหาต่าง ๆ เช่น การดึงข้อมูลจากไฟล์ ZIP หรือการแปลงภาพเป็นสีเทา นอกจากการวิเคราะห์ข้อมูล Python ยังถูกใช้ในงานพัฒนาเว็บไซต์อีกด้วย
* **[Python](https://www.python.org/)** เป็นภาษาการเขียนโปรแกรมทั่วไปที่มักถูกมองว่าเป็นตัวเลือกที่ดีที่สุดสำหรับผู้เริ่มต้นเนื่องจากความเรียบง่าย Python มีไลบรารีเพิ่มเติมมากมายที่ช่วยแก้ปัญหาต่าง ๆ เช่น การดึงข้อมูลจาก ZIP archive หรือการแปลงภาพเป็นสีเทา นอกจากการวิเคราะห์ข้อมูลแล้ว Python ยังถูกใช้ในงานพัฒนาเว็บไซต์อีกด้วย
* **[R](https://www.r-project.org/)** เป็นเครื่องมือดั้งเดิมที่พัฒนาขึ้นเพื่อการประมวลผลข้อมูลเชิงสถิติ R มีคลังไลบรารีขนาดใหญ่ (CRAN) ทำให้เป็นตัวเลือกที่ดีสำหรับการประมวลผลข้อมูล อย่างไรก็ตาม R ไม่ใช่ภาษาการเขียนโปรแกรมทั่วไป และไม่ค่อยถูกใช้ในงานนอกเหนือจากการวิเคราะห์ข้อมูล
* **[Julia](https://julialang.org/)** เป็นอีกหนึ่งภาษาที่พัฒนาขึ้นเพื่อการวิเคราะห์ข้อมูลโดยเฉพาะ โดยมีเป้าหมายเพื่อให้ประสิทธิภาพดีกว่า Python ทำให้เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการทดลองทางวิทยาศาสตร์
* **[Julia](https://julialang.org/)** เป็นอีกภาษาที่พัฒนาขึ้นเพื่อการวิเคราะห์ข้อมูลโดยเฉพาะ โดยมีเป้าหมายเพื่อให้ประสิทธิภาพดีกว่า Python ทำให้เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการทดลองทางวิทยาศาสตร์
ในบทเรียนนี้ เราจะมุ่งเน้นการใช้ Python ในการประมวลผลข้อมูลแบบง่าย ๆ โดยสมมติว่าคุณมีความคุ้นเคยพื้นฐานกับภาษา Python หากคุณต้องการเรียนรู้ Python อย่างลึกซึ้ง คุณสามารถดูแหล่งข้อมูลต่อไปนี้:
ในบทเรียนนี้ เราจะมุ่งเน้นการใช้ Python สำหรับการประมวลผลข้อมูลแบบง่าย ๆ โดยสมมติว่าคุณมีความคุ้นเคยพื้นฐานกับภาษา Python หากคุณต้องการเรียนรู้ Python อย่างลึกซึ้ง คุณสามารถดูแหล่งข้อมูลต่อไปนี้:
* [เรียนรู้ Python อย่างสนุกสนานด้วย Turtle Graphics และ Fractals](https://github.com/shwars/pycourse) - คอร์สแนะนำ Python บน GitHub
* [เริ่มต้นเรียนรู้ 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)
@ -54,13 +54,13 @@ import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
Pandas มีแนวคิดพื้นฐานบางอย่างที่สำคัญ
Pandas มีแนวคิดพื้นฐานบางประการที่สำคัญ
### Series
**Series** คือชุดของค่าที่คล้ายกับ list หรือ numpy array ความแตกต่างหลักคือ series มี **index** และเมื่อเราดำเนินการกับ series (เช่น การบวก) index จะถูกนำมาพิจารณาด้วย Index อาจเป็นตัวเลขแถวแบบง่าย ๆ (เป็น index ที่ใช้โดยค่าเริ่มต้นเมื่อสร้าง series จาก list หรือ array) หรืออาจมีโครงสร้างที่ซับซ้อน เช่น ช่วงเวลา
**Series** คือชุดของค่าที่คล้ายกับ list หรือ numpy array ความแตกต่างหลักคือ series มี **index** และเมื่อเราดำเนินการกับ series (เช่น การบวก) index จะถูกนำมาพิจารณา Index อาจเป็นตัวเลขแถวแบบง่าย ๆ (เป็น index ที่ใช้โดยค่าเริ่มต้นเมื่อสร้าง series จาก list หรือ array) หรืออาจมีโครงสร้างที่ซับซ้อน เช่น ช่วงวันที่
> **หมายเหตุ**: มีโค้ด Pandas เบื้องต้นใน notebook ที่แนบมา [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) เราเพียงแค่สรุปตัวอย่างบางส่วนที่นี่ และคุณสามารถตรวจสอบ notebook ฉบับเต็มได้
> **หมายเหตุ**: มีโค้ด Pandas เบื้องต้นใน notebook ที่แนบมา [`notebook.ipynb`](notebook.ipynb) เราเพียงแค่สรุปตัวอย่างบางส่วนที่นี่ และคุณสามารถตรวจสอบ notebook ฉบับเต็มได้
ลองพิจารณาตัวอย่าง: เราต้องการวิเคราะห์ยอดขายของร้านไอศกรีมของเรา ลองสร้าง series ของตัวเลขยอดขาย (จำนวนสินค้าที่ขายได้ในแต่ละวัน) สำหรับช่วงเวลาหนึ่ง:
@ -72,7 +72,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Time Series Plot](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.th.png)
สมมติว่าในแต่ละสัปดาห์เราจัดงานเลี้ยงสำหรับเพื่อน ๆ และนำไอศกรีมเพิ่มอีก 10 แพ็คสำหรับงานเลี้ยง เราสามารถสร้าง series อีกตัวที่มี index เป็นสัปดาห์เพื่อแสดงสิ่งนี้:
```python
@ -83,16 +83,16 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Time Series Plot](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.th.png)
> **หมายเหตุ** เราไม่ได้ใช้ไวยากรณ์ง่าย ๆ `total_items+additional_items` หากเราทำเช่นนั้น เราจะได้รับค่ามากมายที่เป็น `NaN` (*Not a Number*) ใน series ที่ได้ นี่เป็นเพราะมีค่าที่ขาดหายไปสำหรับบาง index ใน series `additional_items` และการบวก `NaN` กับอะไรก็ตามจะได้ผลลัพธ์เป็น `NaN` ดังนั้นเราจำเป็นต้องระบุพารามิเตอร์ `fill_value` ระหว่างการบวก
> **หมายเหตุ** เราไม่ได้ใช้ syntax ง่าย ๆ `total_items+additional_items` หากเราใช้ syntax นี้ เราจะได้รับค่ามากมายที่เป็น `NaN` (*Not a Number*) ใน series ที่ได้ เนื่องจากมีค่าที่หายไปสำหรับบาง index point ใน series `additional_items` และการบวก `NaN` กับค่าใด ๆ จะให้ผลลัพธ์เป็น `NaN` ดังนั้นเราจำเป็นต้องระบุพารามิเตอร์ `fill_value` ระหว่างการบวก
สำหรับ time series เราสามารถ **resample** series ด้วยช่วงเวลาที่แตกต่างกันได้ ตัวอย่างเช่น สมมติว่าเราต้องการคำนวณยอดขายเฉลี่ยรายเดือน เราสามารถใช้โค้ดต่อไปนี้:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Monthly Time Series Averages](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Monthly Time Series Averages](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.th.png)
### DataFrame
@ -126,21 +126,21 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**หมายเหตุ** เราสามารถได้รูปแบบตารางนี้โดยการ transpose ตารางก่อนหน้า เช่น โดยการเขียน
**หมายเหตุ** เราสามารถได้รูปแบบตารางนี้โดยการ transposing ตารางก่อนหน้า เช่น โดยการเขียน
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
ที่นี่ `.T` หมายถึงการดำเนินการ transpose DataFrame คือการเปลี่ยนแถวและคอลัมน์ และการดำเนินการ `rename` ช่วยให้เราสามารถเปลี่ยนชื่อคอลัมน์ให้ตรงกับตัวอย่างก่อนหน้า
ที่นี่ `.T` หมายถึงการดำเนินการ transposing DataFrame คือการเปลี่ยนแถวและคอลัมน์ และการดำเนินการ `rename` ช่วยให้เราสามารถเปลี่ยนชื่อคอลัมน์ให้ตรงกับตัวอย่างก่อนหน้า
นี่คือการดำเนินการที่สำคัญที่สุดบางส่วนที่เราสามารถทำได้กับ DataFrames:
นี่คือการดำเนินการที่สำคัญที่สุดบางประการที่เราสามารถทำได้กับ DataFrames:
**การเลือกคอลัมน์** เราสามารถเลือกคอลัมน์แต่ละคอลัมน์ได้โดยการเขียน `df['A']` - การดำเนินการนี้จะคืนค่า Series เราสามารถเลือกชุดย่อยของคอลัมน์เป็นอีก DataFrame โดยการเขียน `df[['B','A']]` - สิ่งนี้จะคืนค่า DataFrame อีกตัวหนึ่ง
**การกรอง** เฉพาะแถวที่ตรงตามเกณฑ์ ตัวอย่างเช่น เพื่อให้เหลือเฉพาะแถวที่มีคอลัมน์ `A` มากกว่า 5 เราสามารถเขียน `df[df['A']>5]`
> **หมายเหตุ** วิธีการทำงานของการกรองคือ การแสดงออก `df['A']<5` จะคืนค่า boolean series ซึ่งระบุว่า expression เป็น `True` หรือ `False` สำหรับแต่ละองค์ประกอบของ series ดั้งเดิม `df['A']` เมื่อ boolean series ถูกใช้เป็น index จะคืนค่าชุดย่อยของแถวใน DataFrame ดังนั้นจึงไม่สามารถใช้ expression boolean ของ Python ได้ เช่น การเขียน `df[df['A']>5 and df['A']<7]` จะผิด แทนที่จะใช้การดำเนินการพิเศษ `&` บน boolean series โดยการเขียน `df[(df['A']>5) & (df['A']<7)]` (*วงเล็บมีความสำคัญที่นี่*)
> **หมายเหตุ** วิธีการกรองทำงานดังนี้ การแสดงออก `df['A']<5` จะคืนค่า boolean series ซึ่งระบุว่าแสดงออกเป็น `True` หรือ `False` สำหรับแต่ละองค์ประกอบของ series ดั้งเดิม `df['A']` เมื่อ boolean series ถูกใช้เป็น index มันจะคืนค่าชุดย่อยของแถวใน DataFrame ดังนั้นจึงไม่สามารถใช้การแสดงออก boolean ของ Python ได้ เช่น การเขียน `df[df['A']>5 and df['A']<7]` จะผิด แทนที่จะใช้การดำเนินการพิเศษ `&` บน boolean series โดยการเขียน `df[(df['A']>5) & (df['A']<7)]` (*วงเล็บมีความสำคัญที่นี่*)
**การสร้างคอลัมน์ใหม่ที่คำนวณได้** เราสามารถสร้างคอลัมน์ใหม่ที่คำนวณได้สำหรับ DataFrame ของเราได้อย่างง่ายดายโดยใช้ expression ที่เข้าใจง่าย เช่นนี้:
**การสร้างคอลัมน์ใหม่ที่คำนวณได้** เราสามารถสร้างคอลัมน์ใหม่ที่คำนวณได้สำหรับ DataFrame ของเราได้อย่างง่ายดายโดยใช้การแสดงออกที่เข้าใจง่าย เช่นนี้:
```python
df['DivA'] = df['A']-df['A'].mean()
```
@ -151,7 +151,7 @@ df['LenB'] = len(df['B']) # <- Wrong result
```
ตัวอย่างหลัง แม้ว่าจะถูกต้องตามไวยากรณ์ แต่ให้ผลลัพธ์ที่ผิด เพราะมันกำหนดความยาวของ series `B` ให้กับค่าทั้งหมดในคอลัมน์ และไม่ใช่ความยาวขององค์ประกอบแต่ละตัวตามที่เราตั้งใจไว้
หากเราต้องการคำนวณ expression ที่ซับซ้อนเช่นนี้ เราสามารถใช้ฟังก์ชัน `apply` ตัวอย่างสุดท้ายสามารถเขียนได้ดังนี้:
หากเราต้องการคำนวณการแสดงออกที่ซับซ้อนเช่นนี้ เราสามารถใช้ฟังก์ชัน `apply` ตัวอย่างสุดท้ายสามารถเขียนได้ดังนี้:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -172,14 +172,14 @@ df['LenB'] = df['B'].apply(len)
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**การเลือกแถวตามตัวเลข** สามารถทำได้โดยใช้ construct `iloc` ตัวอย่างเช่น เพื่อเลือกแถวแรก 5 แถวจาก DataFrame:
**การเลือกแถวตามตัวเลข** สามารถทำได้โดยใช้โครงสร้าง `iloc` ตัวอย่างเช่น เพื่อเลือก 5 แถวแรกจาก DataFrame:
```python
df.iloc[:5]
```
**การจัดกลุ่ม** มักถูกใช้เพื่อให้ได้ผลลัพธ์ที่คล้ายกับ *pivot tables* ใน Excel สมมติว่าเราต้องการคำนวณค่าเฉลี่ยของคอลัมน์ `A` สำหรับแต่ละจำนวน `LenB` เราสามารถจัดกลุ่ม DataFrame ของเราด้วย `LenB` และเรียกใช้ `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
หากเราต้องการคำนวณค่าเฉลี่ยและจำนวนองค์ประกอบในกลุ่ม เราสามารถใช้ฟังก์ชัน `aggregate` ที่ซับซ้อนกว่า:
```python
@ -198,15 +198,15 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### การดึงข้อมูล
เราได้เห็นแล้วว่าการสร้าง Series และ DataFrames จากวัตถุใน Python นั้นง่ายมาก อย่างไรก็ตาม ข้อมูลมักจะมาในรูปแบบไฟล์ข้อความ หรือ ตาราง Excel โชคดีที่ Pandas มีวิธีง่ายๆ ในการโหลดข้อมูลจากดิสก์ ตัวอย่างเช่น การอ่านไฟล์ CSV สามารถทำได้ง่ายๆ ดังนี้:
เราได้เห็นแล้วว่าการสร้าง Series และ DataFrames จากวัตถุใน Python นั้นง่ายมาก อย่างไรก็ตาม ข้อมูลมักจะมาในรูปแบบไฟล์ข้อความ หรือ ตาราง Excel โชคดีที่ Pandas มีวิธีง่ายๆ ในการโหลดข้อมูลจากดิสก์ ตัวอย่างเช่น การอ่านไฟล์ CSV สามารถทำได้ง่ายๆ ดังนี้:
```python
df = pd.read_csv('file.csv')
```
```
เราจะเห็นตัวอย่างเพิ่มเติมเกี่ยวกับการโหลดข้อมูล รวมถึงการดึงข้อมูลจากเว็บไซต์ภายนอกในส่วน "Challenge"
### การพิมพ์และการสร้างกราฟ
นักวิทยาศาสตร์ข้อมูลมักต้องสำรวจข้อมูล ดังนั้นการสามารถมองเห็นข้อมูลจึงเป็นสิ่งสำคัญ เมื่อ DataFrame มีขนาดใหญ่ หลายครั้งเราต้องการเพียงตรวจสอบว่าเราทำทุกอย่างถูกต้องโดยการพิมพ์แถวแรกๆ ออกมา ซึ่งสามารถทำได้โดยการเรียกใช้ `df.head()` หากคุณรันจาก Jupyter Notebook มันจะพิมพ์ DataFrame ออกมาในรูปแบบตารางที่ดูดี
Data Scientist มักต้องสำรวจข้อมูล ดังนั้นการสามารถมองเห็นข้อมูลจึงเป็นสิ่งสำคัญ เมื่อ DataFrame มีขนาดใหญ่ หลายครั้งเราต้องการเพียงตรวจสอบว่าเราทำทุกอย่างถูกต้องโดยการพิมพ์แถวแรกๆ ออกมา ซึ่งสามารถทำได้โดยการเรียกใช้ `df.head()` หากคุณรันมันจาก Jupyter Notebook มันจะพิมพ์ DataFrame ออกมาในรูปแบบตารางที่ดูดี
เรายังได้เห็นการใช้ฟังก์ชัน `plot` เพื่อสร้างกราฟสำหรับบางคอลัมน์ แม้ว่า `plot` จะมีประโยชน์สำหรับหลายงาน และรองรับกราฟประเภทต่างๆ ผ่านพารามิเตอร์ `kind=` คุณยังสามารถใช้ไลบรารี `matplotlib` เพื่อสร้างกราฟที่ซับซ้อนมากขึ้น เราจะครอบคลุมการสร้างภาพข้อมูลในรายละเอียดในบทเรียนของหลักสูตรแยกต่างหาก
@ -214,11 +214,11 @@ df = pd.read_csv('file.csv')
## 🚀 Challenge 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 Repository นี้](https://github.com/CSSEGISandData/COVID-19)
เนื่องจากเราต้องการแสดงวิธีการจัดการกับข้อมูล เราขอเชิญคุณเปิด [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) และอ่านตั้งแต่ต้นจนจบ คุณยังสามารถรันเซลล์ และทำความท้าทายที่เราได้ทิ้งไว้ให้คุณในตอนท้าย
เนื่องจากเราต้องการแสดงวิธีการจัดการกับข้อมูล เราขอเชิญคุณเปิด [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) และอ่านตั้งแต่ต้นจนจบ คุณยังสามารถรันเซลล์ และทำบาง Challenge ที่เราได้ทิ้งไว้ให้คุณในตอนท้าย
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.th.png)
> หากคุณไม่ทราบวิธีการรันโค้ดใน Jupyter Notebook ลองดู [บทความนี้](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)
@ -232,33 +232,33 @@ df = pd.read_csv('file.csv')
## 🚀 Challenge 2: การวิเคราะห์เอกสาร COVID
ในความท้าทายนี้ เราจะดำเนินการต่อในหัวข้อการระบาดของ COVID และมุ่งเน้นไปที่การประมวลผลเอกสารทางวิทยาศาสตร์เกี่ยวกับเรื่องนี้ มี [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) ที่มีเอกสารมากกว่า 7000 ฉบับ (ในขณะที่เขียน) เกี่ยวกับ COVID ซึ่งมีข้อมูลเมตาและบทคัดย่อ (และสำหรับประมาณครึ่งหนึ่งของเอกสารมีข้อความเต็มให้ด้วย)
ใน Challenge นี้ เราจะดำเนินการต่อในหัวข้อการระบาดของ COVID และมุ่งเน้นไปที่การประมวลผลเอกสารทางวิทยาศาสตร์เกี่ยวกับเรื่องนี้ มี [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) ที่มีเอกสารมากกว่า 7000 ฉบับ (ในขณะที่เขียน) เกี่ยวกับ COVID ซึ่งมีข้อมูลเมตาและบทคัดย่อ (และสำหรับประมาณครึ่งหนึ่งของเอกสารยังมีข้อความเต็มให้ด้วย)
ตัวอย่างเต็มของการวิเคราะห์ชุดข้อมูลนี้โดยใช้ [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) cognitive service ได้อธิบายไว้ใน [บล็อกโพสต์นี้](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) เราจะพูดถึงเวอร์ชันที่ง่ายขึ้นของการวิเคราะห์นี้
> **NOTE**: เราไม่ได้ให้สำเนาของชุดข้อมูลเป็นส่วนหนึ่งของ repository นี้ คุณอาจต้องดาวน์โหลดไฟล์ [`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) แต่จะรวมข้อความเต็มทั้งหมดนอกเหนือจากไฟล์ข้อมูลเมตา
เปิด [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) และอ่านตั้งแต่ต้นจนจบ คุณยังสามารถรันเซลล์ และทำความท้าทายที่เราได้ทิ้งไว้ให้คุณในตอนท้าย
เปิด [`notebook-papers.ipynb`](notebook-papers.ipynb) และอ่านตั้งแต่ต้นจนจบ คุณยังสามารถรันเซลล์ และทำบาง Challenge ที่เราได้ทิ้งไว้ให้คุณในตอนท้าย
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.th.png)
## การประมวลผลข้อมูลภาพ
เมื่อเร็วๆ นี้ โมเดล 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)
* **Image Classification** ซึ่งสามารถช่วยคุณจัดหมวดหมู่ภาพให้เป็นหนึ่งในคลาสที่กำหนดไว้ล่วงหน้า คุณสามารถฝึกตัวจัดหมวดหมู่ภาพของคุณเองได้อย่างง่ายดายโดยใช้บริการ เช่น [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Object Detection** เพื่อตรวจจับวัตถุต่างๆ ในภาพ บริการ เช่น [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 Detection** รวมถึงการตรวจจับอายุ เพศ และอารมณ์ สิ่งนี้สามารถทำได้ผ่าน [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/) เราสำรวจภาพถ่าย 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 อย่างลึกซึ้งอาจเป็นความคิดที่ดีหากคุณจริงจังกับการเดินทางในสาย Data Science ของคุณ!
## [แบบทดสอบหลังการบรรยาย](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -268,8 +268,8 @@ df = pd.read_csv('file.csv')
* [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 Visualization](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**การเรียนรู้ Python**
* [เรียนรู้ Python อย่างสนุกสนานด้วย Turtle Graphics และ Fractals](https://github.com/shwars/pycourse)
@ -277,7 +277,7 @@ df = pd.read_csv('file.csv')
## งานที่ได้รับมอบหมาย
[ทำการศึกษาข้อมูลเพิ่มเติมสำหรับความท้าทายข้างต้น](assignment.md)
[ทำการศึกษาข้อมูลเพิ่มเติมสำหรับ Challenge ด้านบน](assignment.md)
## เครดิต

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T00:20:05+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:53:51+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "tl"
}
@ -13,42 +13,40 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Paggamit ng Python - _Sketchnote ni [@nitya](https://twitter.com/nitya)_ |
[![Intro Video](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.tl.png)](https://youtu.be/dZjWOGbsN4Y)
Bagama't ang mga database ay nagbibigay ng napaka-epektibong paraan upang mag-imbak ng data at mag-query gamit ang mga query language, ang pinaka-flexible na paraan ng pagproseso ng data ay ang pagsusulat ng sarili mong programa upang manipulahin ang data. Sa maraming pagkakataon, mas epektibo ang paggamit ng database query. Gayunpaman, sa ilang mga kaso kung saan mas kumplikadong pagproseso ng data ang kinakailangan, hindi ito madaling magawa gamit ang SQL.
Ang pagproseso ng data ay maaaring gawin gamit ang anumang programming language, ngunit may mga partikular na wika na mas mataas ang antas pagdating sa pagproseso ng data. Karaniwang ginagamit ng mga data scientist ang isa sa mga sumusunod na wika:
* **[Python](https://www.python.org/)**, isang general-purpose programming language, na madalas itinuturing na isa sa mga pinakamahusay na opsyon para sa mga baguhan dahil sa pagiging simple nito. Maraming karagdagang library ang Python na makakatulong sa iyo na lutasin ang maraming praktikal na problema, tulad ng pagkuha ng data mula sa ZIP archive, o pag-convert ng larawan sa grayscale. Bukod sa data science, madalas ding ginagamit ang Python para sa web development.
* **[R](https://www.r-project.org/)** ay isang tradisyunal na toolbox na binuo para sa statistical data processing. Mayroon din itong malaking repository ng mga library (CRAN), na ginagawang magandang opsyon para sa pagproseso ng data. Gayunpaman, ang R ay hindi isang general-purpose programming language, at bihirang gamitin sa labas ng larangan ng data science.
* **[Julia](https://julialang.org/)** ay isa pang wika na partikular na binuo para sa data science. Nilalayon nitong magbigay ng mas mahusay na performance kaysa sa Python, na ginagawang mahusay na tool para sa scientific experimentation.
* **[R](https://www.r-project.org/)** ay isang tradisyunal na toolbox na binuo para sa statistical data processing. Mayroon din itong malaking repository ng mga library (CRAN), na ginagawang magandang opsyon para sa pagproseso ng data. Gayunpaman, ang R ay hindi isang general-purpose programming language, at bihirang ginagamit sa labas ng domain ng data science.
* **[Julia](https://julialang.org/)** ay isa pang wika na partikular na binuo para sa data science. Ito ay nilalayon upang magbigay ng mas mahusay na performance kaysa sa Python, na ginagawang mahusay na tool para sa scientific experimentation.
Sa araling ito, magpo-focus tayo sa paggamit ng Python para sa simpleng pagproseso ng data. Ipinapalagay na may basic na kaalaman ka na sa wika. Kung nais mong mas malalim na pag-aaral sa Python, maaari kang sumangguni sa isa sa mga sumusunod na resources:
Sa araling ito, magpo-focus tayo sa paggamit ng Python para sa simpleng pagproseso ng data. I-aassume natin na may basic na kaalaman ka na sa wika. Kung nais mong mas malalim na pag-aaral sa Python, maaari kang sumangguni sa isa sa mga sumusunod na resources:
* [Matutong Python sa Masayang Paraan gamit ang Turtle Graphics at Fractals](https://github.com/shwars/pycourse) - GitHub-based na mabilisang intro course sa Python Programming
* [Simulan ang Iyong Unang Hakbang sa Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path sa [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Ang data ay maaaring dumating sa iba't ibang anyo. Sa araling ito, tatalakayin natin ang tatlong anyo ng data - **tabular data**, **text**, at **images**.
Magpo-focus tayo sa ilang halimbawa ng pagproseso ng data, sa halip na magbigay ng kumpletong overview ng lahat ng kaugnay na library. Ito ay magbibigay-daan sa iyo na makuha ang pangunahing ideya ng kung ano ang posible, at mag-iwan sa iyo ng kaalaman kung saan hahanapin ang mga solusyon sa iyong mga problema kapag kailangan mo.
> **Pinakamahalagang payo**. Kapag kailangan mong magsagawa ng partikular na operasyon sa data na hindi mo alam kung paano gawin, subukang maghanap nito sa internet. Ang [Stackoverflow](https://stackoverflow.com/) ay karaniwang naglalaman ng maraming kapaki-pakinabang na code sample sa Python para sa maraming karaniwang gawain.
Magpo-focus tayo sa ilang mga halimbawa ng pagproseso ng data, sa halip na magbigay ng kumpletong overview ng lahat ng kaugnay na library. Ito ay magbibigay-daan sa iyo upang makuha ang pangunahing ideya ng kung ano ang posible, at mag-iwan sa iyo ng kaalaman kung saan hahanapin ang mga solusyon sa iyong mga problema kapag kailangan mo ito.
> **Pinakamahalagang payo**. Kapag kailangan mong magsagawa ng partikular na operasyon sa data na hindi mo alam kung paano gawin, subukang maghanap nito sa internet. [Stackoverflow](https://stackoverflow.com/) ay karaniwang naglalaman ng maraming kapaki-pakinabang na code sample sa Python para sa maraming karaniwang gawain.
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabular Data at Dataframes
Nakilala mo na ang tabular data noong pinag-usapan natin ang relational databases. Kapag marami kang data, at ito ay nakapaloob sa maraming magkakaugnay na mga table, tiyak na may katuturan ang paggamit ng SQL para sa pagproseso nito. Gayunpaman, may mga pagkakataon na mayroon tayong table ng data, at kailangan nating makakuha ng **pag-unawa** o **insights** tungkol sa data na ito, tulad ng distribution, correlation sa pagitan ng mga halaga, atbp. Sa data science, maraming pagkakataon na kailangan nating magsagawa ng ilang mga transformation ng orihinal na data, na sinusundan ng visualization. Ang parehong mga hakbang na ito ay madaling magawa gamit ang Python.
Nakilala mo na ang tabular data noong pinag-usapan natin ang relational databases. Kapag marami kang data, at ito ay nakapaloob sa maraming magkakaugnay na mga talahanayan, tiyak na may katuturan ang paggamit ng SQL para sa pagproseso nito. Gayunpaman, maraming mga pagkakataon kung saan mayroon tayong isang talahanayan ng data, at kailangan nating makakuha ng **pag-unawa** o **insights** tungkol sa data na ito, tulad ng distribution, correlation sa pagitan ng mga halaga, atbp. Sa data science, maraming mga pagkakataon kung saan kailangan nating magsagawa ng ilang mga transformation ng orihinal na data, na sinusundan ng visualization. Ang parehong mga hakbang na ito ay madaling magawa gamit ang Python.
Mayroong dalawang pinaka-kapaki-pakinabang na library sa Python na makakatulong sa iyo sa pagproseso ng tabular data:
* **[Pandas](https://pandas.pydata.org/)** ay nagbibigay-daan sa iyo na manipulahin ang tinatawag na **Dataframes**, na katulad ng relational tables. Maaari kang magkaroon ng mga column na may pangalan, at magsagawa ng iba't ibang operasyon sa row, column, at dataframes sa pangkalahatan.
* **[Pandas](https://pandas.pydata.org/)** ay nagbibigay-daan sa iyo upang manipulahin ang tinatawag na **Dataframes**, na katulad ng relational tables. Maaari kang magkaroon ng mga pinangalanang column, at magsagawa ng iba't ibang operasyon sa row, column, at dataframes sa pangkalahatan.
* **[Numpy](https://numpy.org/)** ay isang library para sa pagproseso ng **tensors**, ibig sabihin, multi-dimensional **arrays**. Ang array ay may mga halaga ng parehong underlying type, at mas simple kaysa sa dataframe, ngunit nag-aalok ito ng mas maraming mathematical operations, at mas kaunting overhead.
Mayroon ding ilang iba pang mga library na dapat mong malaman:
* **[Matplotlib](https://matplotlib.org/)** ay isang library na ginagamit para sa data visualization at pag-plot ng mga graph
* **[SciPy](https://www.scipy.org/)** ay isang library na may ilang karagdagang scientific functions. Nakilala na natin ang library na ito noong pinag-usapan ang probability at statistics
* **[SciPy](https://www.scipy.org/)** ay isang library na may ilang karagdagang scientific functions. Nakilala na natin ang library na ito noong pinag-usapan ang probability at statistics.
Narito ang isang piraso ng code na karaniwang ginagamit upang i-import ang mga library na ito sa simula ng iyong Python program:
```python
@ -64,9 +62,9 @@ Ang Pandas ay nakasentro sa ilang mga pangunahing konsepto.
Ang **Series** ay isang sequence ng mga halaga, katulad ng list o numpy array. Ang pangunahing pagkakaiba ay ang series ay mayroon ding **index**, at kapag nag-ooperate tayo sa series (hal., ina-add ang mga ito), ang index ay isinasaalang-alang. Ang index ay maaaring kasing simple ng integer row number (ito ang default na index kapag gumagawa ng series mula sa list o array), o maaari itong magkaroon ng mas kumplikadong istruktura, tulad ng date interval.
> **Note**: May introductory Pandas code sa kasamang notebook [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Ipinapakita lamang namin ang ilang mga halimbawa dito, at tiyak na malugod kang tingnan ang buong notebook.
> **Note**: May introductory Pandas code sa kasamang notebook [`notebook.ipynb`](notebook.ipynb). I-outline lang natin ang ilang mga halimbawa dito, at malugod kang inaanyayahan na tingnan ang buong notebook.
Isaalang-alang ang isang halimbawa: nais nating suriin ang benta ng aming ice-cream spot. Gumawa tayo ng series ng mga numero ng benta (bilang ng mga item na nabenta bawat araw) para sa ilang panahon:
Isaalang-alang ang isang halimbawa: nais nating suriin ang benta ng ating ice-cream spot. Gumawa tayo ng series ng mga numero ng benta (bilang ng mga item na nabenta bawat araw) para sa ilang panahon:
```python
start_date = "Jan 1, 2020"
@ -76,9 +74,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Time Series Plot](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.tl.png)
Ngayon ipagpalagay na bawat linggo ay nag-oorganisa tayo ng party para sa mga kaibigan, at kumukuha ng karagdagang 10 pack ng ice-cream para sa party. Maaari tayong gumawa ng isa pang series, na naka-index ayon sa linggo, upang ipakita iyon:
Ngayon ipagpalagay na bawat linggo ay nag-oorganisa tayo ng party para sa mga kaibigan, at kumukuha ng karagdagang 10 pack ng ice-cream para sa party. Maaari tayong gumawa ng isa pang series, na naka-index sa linggo, upang ipakita iyon:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -87,26 +85,26 @@ Kapag pinagsama natin ang dalawang series, makakakuha tayo ng kabuuang bilang:
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Time Series Plot](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Time Series Plot](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.tl.png)
> **Note** na hindi natin ginagamit ang simpleng syntax `total_items+additional_items`. Kung ginawa natin, makakakuha tayo ng maraming `NaN` (*Not a Number*) na halaga sa resulting series. Ito ay dahil may mga nawawalang halaga para sa ilang index point sa `additional_items` series, at ang pagdaragdag ng `NaN` sa anumang bagay ay nagreresulta sa `NaN`. Kaya kailangan nating tukuyin ang `fill_value` parameter sa panahon ng addition.
> **Note** na hindi natin ginagamit ang simpleng syntax `total_items+additional_items`. Kung ginawa natin, makakakuha tayo ng maraming `NaN` (*Not a Number*) na halaga sa resulting series. Ito ay dahil may mga nawawalang halaga para sa ilang mga index point sa `additional_items` series, at ang pagdaragdag ng `NaN` sa anumang bagay ay nagreresulta sa `NaN`. Kaya kailangan nating tukuyin ang `fill_value` parameter sa panahon ng addition.
Sa time series, maaari rin nating **resample** ang series gamit ang iba't ibang time intervals. Halimbawa, ipagpalagay na nais nating kalkulahin ang mean sales volume buwan-buwan. Maaari nating gamitin ang sumusunod na code:
Sa time series, maaari rin tayong mag-**resample** ng series gamit ang iba't ibang time intervals. Halimbawa, ipagpalagay na nais nating kalkulahin ang mean sales volume buwan-buwan. Maaari nating gamitin ang sumusunod na code:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Monthly Time Series Averages](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Monthly Time Series Averages](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.tl.png)
### DataFrame
Ang DataFrame ay mahalagang koleksyon ng mga series na may parehong index. Maaari nating pagsamahin ang ilang series sa isang DataFrame:
Ang DataFrame ay mahalagang koleksyon ng mga series na may parehong index. Maaari nating pagsamahin ang ilang mga series sa isang DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Ito ay lilikha ng isang horizontal table tulad nito:
Ito ay lilikha ng isang horizontal na talahanayan tulad nito:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
@ -116,7 +114,7 @@ Maaari rin nating gamitin ang Series bilang mga column, at tukuyin ang mga panga
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Ito ay magbibigay sa atin ng table tulad nito:
Ito ay magbibigay sa atin ng isang talahanayan tulad nito:
| | A | B |
| --- | --- | ------ |
@ -130,30 +128,30 @@ Ito ay magbibigay sa atin ng table tulad nito:
| 7 | 8 | very |
| 8 | 9 | much |
**Note** na maaari rin nating makuha ang layout ng table na ito sa pamamagitan ng pag-transpose sa naunang table, hal., sa pamamagitan ng pagsulat
**Note** na maaari rin nating makuha ang layout ng talahanayan na ito sa pamamagitan ng pag-transpose ng naunang talahanayan, hal., sa pamamagitan ng pagsulat
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Dito, ang `.T` ay nangangahulugan ng operasyon ng pag-transpose sa DataFrame, ibig sabihin, pagbabago ng mga row at column, at ang `rename` operation ay nagbibigay-daan sa atin na palitan ang pangalan ng mga column upang tumugma sa naunang halimbawa.
Dito, ang `.T` ay nangangahulugan ng operasyon ng pag-transpose ng DataFrame, ibig sabihin, pagbabago ng mga row at column, at ang `rename` operation ay nagbibigay-daan sa atin na palitan ang pangalan ng mga column upang tumugma sa naunang halimbawa.
Narito ang ilang pinakamahalagang operasyon na maaari nating gawin sa DataFrames:
Narito ang ilang mga pinakamahalagang operasyon na maaari nating gawin sa DataFrames:
**Pagpili ng column**. Maaari nating piliin ang mga indibidwal na column sa pamamagitan ng pagsulat ng `df['A']` - ang operasyong ito ay nagbabalik ng Series. Maaari rin nating piliin ang subset ng mga column sa isa pang DataFrame sa pamamagitan ng pagsulat ng `df[['B','A']]` - ito ay nagbabalik ng isa pang DataFrame.
**Pag-filter** ng mga partikular na row ayon sa criteria. Halimbawa, upang iwanan lamang ang mga row na may column `A` na mas malaki sa 5, maaari nating isulat ang `df[df['A']>5]`.
**Pag-filter** ng mga partikular na row batay sa criteria. Halimbawa, upang iwanan lamang ang mga row na may column `A` na mas malaki sa 5, maaari nating isulat ang `df[df['A']>5]`.
> **Note**: Ang paraan ng pag-filter ay ganito. Ang expression na `df['A']<5` ay nagbabalik ng boolean series, na nagpapahiwatig kung ang expression ay `True` o `False` para sa bawat elemento ng orihinal na series `df['A']`. Kapag ang boolean series ay ginamit bilang index, nagbabalik ito ng subset ng mga row sa DataFrame. Kaya't hindi posible na gumamit ng arbitrary Python boolean expression, halimbawa, ang pagsulat ng `df[df['A']>5 and df['A']<7]` ay mali. Sa halip, dapat mong gamitin ang espesyal na `&` operation sa boolean series, sa pamamagitan ng pagsulat ng `df[(df['A']>5) & (df['A']<7)]` (*mahalaga ang mga bracket dito*).
**Paglikha ng mga bagong computable column**. Madali tayong makakagawa ng mga bagong computable column para sa ating DataFrame sa pamamagitan ng paggamit ng intuitive na expression tulad nito:
**Paglikha ng bagong computable columns**. Madali tayong makakalikha ng bagong computable columns para sa ating DataFrame sa pamamagitan ng paggamit ng intuitive na expression tulad nito:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Ang halimbawang ito ay nagkakalkula ng divergence ng A mula sa mean value nito. Ang aktwal na nangyayari dito ay nagko-compute tayo ng series, at pagkatapos ay ina-assign ang series na ito sa kaliwang bahagi, na lumilikha ng isa pang column. Kaya't hindi natin maaaring gamitin ang anumang mga operasyon na hindi compatible sa series, halimbawa, ang code sa ibaba ay mali:
Ang halimbawang ito ay nagkakalkula ng divergence ng A mula sa mean value nito. Ang aktwal na nangyayari dito ay nagko-compute tayo ng series, at pagkatapos ay ina-assign ang series na ito sa left-hand-side, na lumilikha ng isa pang column. Kaya't hindi natin magagamit ang anumang mga operasyon na hindi compatible sa series, halimbawa, ang code sa ibaba ay mali:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Ang huling halimbawa, bagama't syntactically correct, ay nagbibigay sa atin ng maling resulta, dahil ina-assign nito ang haba ng series `B` sa lahat ng mga halaga sa column, at hindi ang haba ng mga indibidwal na elemento tulad ng nilalayon natin.
Ang huling halimbawa, bagama't syntactically correct, ay nagbibigay sa atin ng maling resulta, dahil ina-assign nito ang haba ng series `B` sa lahat ng mga halaga sa column, at hindi ang haba ng mga indibidwal na elemento tulad ng ating nilalayon.
Kung kailangan nating mag-compute ng mga kumplikadong expression tulad nito, maaari nating gamitin ang `apply` function. Ang huling halimbawa ay maaaring isulat tulad nito:
```python
@ -162,7 +160,7 @@ df['LenB'] = df['B'].apply(lambda x : len(x))
df['LenB'] = df['B'].apply(len)
```
Pagkatapos ng mga operasyong nasa itaas, magkakaroon tayo ng sumusunod na DataFrame:
Pagkatapos ng mga operasyon sa itaas, magkakaroon tayo ng sumusunod na DataFrame:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -181,17 +179,17 @@ Pagkatapos ng mga operasyong nasa itaas, magkakaroon tayo ng sumusunod na DataFr
df.iloc[:5]
```
**Pag-group** ay madalas ginagamit upang makakuha ng resulta na katulad ng *pivot tables* sa Excel. Halimbawa, ipagpalagay na nais nating kalkulahin ang mean value ng column `A` para sa bawat ibinigay na numero ng `LenB`. Pagkatapos ay maaari nating i-group ang ating DataFrame sa pamamagitan ng `LenB`, at tawagin ang `mean`:
**Pag-group** ay madalas na ginagamit upang makakuha ng resulta na katulad ng *pivot tables* sa Excel. Halimbawa, ipagpalagay na nais nating kalkulahin ang mean value ng column `A` para sa bawat ibinigay na numero ng `LenB`. Pagkatapos ay maaari nating i-group ang ating DataFrame sa pamamagitan ng `LenB`, at tawagin ang `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Kung kailangan nating kalkulahin ang mean at ang bilang ng mga elemento sa grupo, maaari nating gamitin ang mas kumplikadong `aggregate` function:
Kung kailangan nating kalkulahin ang mean at ang bilang ng mga elemento sa grupo, maaari tayong gumamit ng mas kumplikadong `aggregate` function:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
Ito ay magbibigay sa atin ng sumusunod na table:
Ito ay nagbibigay sa atin ng sumusunod na talahanayan:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -202,92 +200,92 @@ Ito ay magbibigay sa atin ng sumusunod na table:
| 6 | 2 | 6.000000 |
### Pagkuha ng Data
Nakikita natin kung gaano kadali ang paggawa ng Series at DataFrames mula sa mga Python object. Gayunpaman, kadalasan ang data ay nasa anyo ng text file o Excel table. Sa kabutihang-palad, nag-aalok ang Pandas ng simpleng paraan para mag-load ng data mula sa disk. Halimbawa, ang pagbabasa ng CSV file ay kasing simple ng ganito:
Nakikita natin kung gaano kadali ang paggawa ng Series at DataFrames mula sa mga Python object. Gayunpaman, kadalasan ang data ay nasa anyo ng text file o Excel table. Sa kabutihang-palad, nag-aalok ang Pandas ng simpleng paraan para mag-load ng data mula sa disk. Halimbawa, ang pagbabasa ng CSV file ay kasing simple ng ganito:
```python
df = pd.read_csv('file.csv')
```
Makikita natin ang mas maraming halimbawa ng pag-load ng data, kabilang ang pagkuha nito mula sa mga external na website, sa seksyong "Challenge".
```
Makikita natin ang mas maraming halimbawa ng pag-load ng data, kabilang ang pagkuha nito mula sa mga external na website, sa seksyong "Challenge".
### Pagpi-print at Pag-plot
### Pagpi-print at Pag-plot
Ang isang Data Scientist ay madalas kailangang mag-explore ng data, kaya mahalaga ang kakayahang ma-visualize ito. Kapag malaki ang DataFrame, madalas gusto nating tiyakin na tama ang ginagawa natin sa pamamagitan ng pagpi-print ng ilang unang rows. Magagawa ito sa pamamagitan ng pagtawag sa `df.head()`. Kung ginagamit mo ito sa Jupyter Notebook, ipi-print nito ang DataFrame sa isang maayos na tabular na anyo.
Ang isang Data Scientist ay madalas kailangang mag-explore ng data, kaya mahalaga ang kakayahang ma-visualize ito. Kapag malaki ang DataFrame, madalas gusto nating tiyakin na tama ang ginagawa natin sa pamamagitan ng pagpi-print ng ilang unang rows. Magagawa ito sa pamamagitan ng pagtawag sa `df.head()`. Kung ginagamit mo ito mula sa Jupyter Notebook, ipi-print nito ang DataFrame sa isang maayos na tabular na anyo.
Nakita rin natin ang paggamit ng `plot` function para i-visualize ang ilang columns. Bagama't napaka-kapaki-pakinabang ng `plot` para sa maraming gawain, at sumusuporta sa iba't ibang uri ng graph sa pamamagitan ng `kind=` parameter, palagi kang maaaring gumamit ng raw na `matplotlib` library para mag-plot ng mas kumplikadong bagay. Tatalakayin natin ang data visualization nang mas detalyado sa hiwalay na mga aralin sa kurso.
Nakita rin natin ang paggamit ng `plot` function para i-visualize ang ilang columns. Habang ang `plot` ay napaka-kapaki-pakinabang para sa maraming gawain, at sumusuporta sa iba't ibang uri ng graph sa pamamagitan ng `kind=` parameter, palagi kang maaaring gumamit ng raw na `matplotlib` library para mag-plot ng mas kumplikadong bagay. Tatalakayin natin ang data visualization nang mas detalyado sa hiwalay na mga aralin sa kurso.
Saklaw ng overview na ito ang mga pinakamahalagang konsepto ng Pandas, ngunit napakayaman ng library, at walang limitasyon sa kung ano ang magagawa mo rito! Ngayon, gamitin natin ang kaalamang ito para lutasin ang partikular na problema.
Ang overview na ito ay sumasaklaw sa mga pinakamahalagang konsepto ng Pandas, ngunit napakayaman ng library na ito, at walang limitasyon sa kung ano ang magagawa mo dito! Ngayon, gamitin natin ang kaalamang ito para lutasin ang partikular na problema.
## 🚀 Hamon 1: Pagsusuri sa Pagkalat ng COVID
## 🚀 Hamon 1: Pagsusuri sa Pagkalat ng COVID
Ang unang problemang tututukan natin ay ang pagmomodelo ng pagkalat ng epidemya ng COVID-19. Upang magawa ito, gagamitin natin ang data sa bilang ng mga nahawaang indibidwal sa iba't ibang bansa, na ibinigay ng [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) sa [Johns Hopkins University](https://jhu.edu/). Ang dataset ay makukuha sa [GitHub Repository na ito](https://github.com/CSSEGISandData/COVID-19).
Ang unang problemang tututukan natin ay ang pagmomodelo ng pagkalat ng epidemya ng COVID-19. Upang magawa ito, gagamitin natin ang data sa bilang ng mga nahawaang indibidwal sa iba't ibang bansa, na ibinigay ng [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) sa [Johns Hopkins University](https://jhu.edu/). Ang dataset ay makukuha sa [GitHub Repository na ito](https://github.com/CSSEGISandData/COVID-19).
Dahil gusto naming ipakita kung paano magtrabaho sa data, inaanyayahan ka naming buksan ang [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) at basahin ito mula sa simula hanggang sa dulo. Maaari mo ring i-execute ang mga cells, at gawin ang ilang hamon na iniwan namin para sa iyo sa dulo.
Dahil nais naming ipakita kung paano magtrabaho sa data, inaanyayahan ka naming buksan ang [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) at basahin ito mula sa simula hanggang sa dulo. Maaari mo ring i-execute ang mga cells, at gawin ang ilang mga hamon na iniwan namin para sa iyo sa dulo.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.tl.png)
> Kung hindi mo alam kung paano magpatakbo ng code sa Jupyter Notebook, tingnan ang [artikulong ito](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Kung hindi mo alam kung paano magpatakbo ng code sa Jupyter Notebook, tingnan ang [artikulong ito](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Pagtatrabaho sa Hindi Nakabalangkas na Data
## Pagtatrabaho sa Hindi Nakabalangkas na Data
Bagama't kadalasang nasa tabular na anyo ang data, sa ilang mga kaso kailangan nating magtrabaho sa mas hindi nakabalangkas na data, halimbawa, text o mga larawan. Sa ganitong kaso, upang magamit ang mga teknik sa pagproseso ng data na nakita natin sa itaas, kailangan nating **kunin** ang nakabalangkas na data. Narito ang ilang halimbawa:
Bagamat madalas na nasa tabular na anyo ang data, sa ilang mga kaso kailangan nating magtrabaho sa mas hindi nakabalangkas na data, halimbawa, text o mga larawan. Sa ganitong kaso, upang magamit ang mga teknik sa pagproseso ng data na nakita natin sa itaas, kailangan nating **kunin** ang nakabalangkas na data. Narito ang ilang mga halimbawa:
* Pagkuha ng mga keyword mula sa text, at pagtingin kung gaano kadalas lumalabas ang mga keyword na iyon
* Paggamit ng neural networks para kunin ang impormasyon tungkol sa mga bagay sa larawan
* Pagkuha ng impormasyon tungkol sa emosyon ng mga tao sa video camera feed
* Pagkuha ng mga keyword mula sa text, at pagtingin kung gaano kadalas lumalabas ang mga keyword na iyon
* Paggamit ng neural networks para kunin ang impormasyon tungkol sa mga bagay sa larawan
* Pagkuha ng impormasyon tungkol sa emosyon ng mga tao sa video camera feed
## 🚀 Hamon 2: Pagsusuri sa mga Papel ng COVID
## 🚀 Hamon 2: Pagsusuri sa mga Papel Tungkol sa COVID
Sa hamon na ito, ipagpapatuloy natin ang paksa ng pandemya ng COVID, at magtutuon sa pagproseso ng mga siyentipikong papel tungkol sa paksa. Mayroong [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) na may higit sa 7000 (sa oras ng pagsulat) na mga papel tungkol sa COVID, na makukuha kasama ang metadata at mga abstract (at para sa halos kalahati nito, mayroong buong teksto na ibinigay).
Sa hamon na ito, ipagpapatuloy natin ang paksa ng pandemya ng COVID, at magtutuon sa pagproseso ng mga siyentipikong papel tungkol dito. Mayroong [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) na may higit sa 7000 (sa oras ng pagsulat) na mga papel tungkol sa COVID, na makukuha kasama ang metadata at mga abstract (at para sa halos kalahati nito, mayroong buong teksto na ibinigay).
Ang isang buong halimbawa ng pagsusuri sa dataset na ito gamit ang [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) cognitive service ay inilarawan [sa blog post na ito](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Tatalakayin natin ang pinasimpleng bersyon ng pagsusuri na ito.
Ang isang buong halimbawa ng pagsusuri sa dataset na ito gamit ang [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) cognitive service ay inilarawan [sa blog post na ito](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Tatalakayin natin ang pinasimpleng bersyon ng pagsusuri na ito.
> **NOTE**: Hindi namin ibinibigay ang kopya ng dataset bilang bahagi ng repository na ito. Maaaring kailanganin mo munang i-download ang [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) file mula sa [dataset na ito sa Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Maaaring kailanganin ang pagpaparehistro sa Kaggle. Maaari mo ring i-download ang dataset nang walang pagpaparehistro [mula rito](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ngunit isasama nito ang lahat ng buong teksto bilang karagdagan sa metadata file.
> **NOTE**: Hindi namin ibinibigay ang kopya ng dataset bilang bahagi ng repository na ito. Maaaring kailanganin mo munang i-download ang [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) file mula sa [dataset na ito sa Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Maaaring kailanganin ang pagpaparehistro sa Kaggle. Maaari mo ring i-download ang dataset nang walang pagpaparehistro [mula dito](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ngunit isasama nito ang lahat ng buong teksto bilang karagdagan sa metadata file.
Buksan ang [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) at basahin ito mula sa simula hanggang sa dulo. Maaari mo ring i-execute ang mga cells, at gawin ang ilang hamon na iniwan namin para sa iyo sa dulo.
Buksan ang [`notebook-papers.ipynb`](notebook-papers.ipynb) at basahin ito mula sa simula hanggang sa dulo. Maaari mo ring i-execute ang mga cells, at gawin ang ilang mga hamon na iniwan namin para sa iyo sa dulo.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.tl.png)
## Pagproseso ng Data ng Larawan
## Pagproseso ng Data ng Larawan
Kamakailan, napakalalakas na AI models ang nadevelop na nagbibigay-daan sa atin upang maunawaan ang mga larawan. Maraming mga gawain ang maaaring malutas gamit ang pre-trained neural networks, o cloud services. Ilang halimbawa ay:
Kamakailan, napakalalakas na AI models ang nadevelop na nagbibigay-daan sa atin upang maunawaan ang mga larawan. Maraming mga gawain ang maaaring malutas gamit ang pre-trained neural networks, o cloud services. Ilan sa mga halimbawa ay:
* **Image Classification**, na makakatulong sa iyong i-categorize ang larawan sa isa sa mga pre-defined na klase. Madali kang makakapagsanay ng sarili mong image classifiers gamit ang mga serbisyo tulad ng [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Object Detection** para matukoy ang iba't ibang bagay sa larawan. Ang mga serbisyo tulad ng [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) ay maaaring matukoy ang maraming karaniwang bagay, at maaari kang magsanay ng [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) model para matukoy ang ilang partikular na bagay na interes.
* **Face Detection**, kabilang ang Age, Gender, at Emotion detection. Magagawa ito sa pamamagitan ng [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Image Classification**, na makakatulong sa iyong i-categorize ang larawan sa isa sa mga pre-defined na klase. Madali kang makakapagsanay ng sarili mong image classifiers gamit ang mga serbisyo tulad ng [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Object Detection** upang matukoy ang iba't ibang bagay sa larawan. Ang mga serbisyo tulad ng [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) ay maaaring matukoy ang maraming karaniwang bagay, at maaari kang magsanay ng [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) model upang matukoy ang ilang partikular na bagay na interes.
* **Face Detection**, kabilang ang Age, Gender, at Emotion detection. Magagawa ito sa pamamagitan ng [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Ang lahat ng mga cloud services na ito ay maaaring tawagin gamit ang [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), at kaya madaling maisama sa iyong workflow sa pag-explore ng data.
Ang lahat ng mga cloud services na ito ay maaaring tawagin gamit ang [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), at kaya madaling maisama sa iyong workflow sa pag-explore ng data.
Narito ang ilang halimbawa ng pag-explore ng data mula sa mga pinagmulan ng data ng larawan:
* Sa blog post na [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) in-explore namin ang mga larawan sa Instagram, sinusubukang maunawaan kung ano ang nagpapataas ng likes sa isang larawan. Una naming kinukuha ang mas maraming impormasyon mula sa mga larawan hangga't maaari gamit ang [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), at pagkatapos ay ginagamit ang [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) upang bumuo ng interpretable model.
* Sa [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) ginagamit namin ang [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) upang kunin ang emosyon ng mga tao sa mga larawan mula sa mga event, upang subukang maunawaan kung ano ang nagpapasaya sa mga tao.
Narito ang ilang mga halimbawa ng pag-explore ng data mula sa mga pinagmulan ng data ng larawan:
* Sa blog post na [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) ini-explore namin ang mga larawan sa Instagram, sinusubukang maunawaan kung ano ang nagpapataas ng likes sa isang larawan. Una naming kinukuha ang mas maraming impormasyon mula sa mga larawan gamit ang [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), at pagkatapos ay ginagamit ang [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) upang bumuo ng interpretable model.
* Sa [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) ginagamit namin ang [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) upang kunin ang emosyon ng mga tao sa mga larawan mula sa mga event, upang subukang maunawaan kung ano ang nagpapasaya sa mga tao.
## Konklusyon
## Konklusyon
Kung mayroon ka nang structured o unstructured na data, gamit ang Python maaari mong gawin ang lahat ng hakbang na may kaugnayan sa pagproseso at pag-unawa sa data. Ito marahil ang pinaka-flexible na paraan ng pagproseso ng data, at ito ang dahilan kung bakit ang karamihan sa mga data scientist ay gumagamit ng Python bilang kanilang pangunahing tool. Ang pag-aaral ng Python nang mas malalim ay marahil isang magandang ideya kung seryoso ka sa iyong data science journey!
Kung mayroon ka nang nakabalangkas o hindi nakabalangkas na data, gamit ang Python maaari mong gawin ang lahat ng hakbang na may kaugnayan sa pagproseso at pag-unawa sa data. Ito marahil ang pinaka-flexible na paraan ng pagproseso ng data, at ito ang dahilan kung bakit ang karamihan sa mga data scientist ay gumagamit ng Python bilang kanilang pangunahing tool. Ang pag-aaral ng Python nang mas malalim ay marahil isang magandang ideya kung seryoso ka sa iyong data science journey!
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Review at Pag-aaral sa Sarili
## Review at Pag-aaral sa Sarili
**Mga Libro**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Mga Libro**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Mga Online Resources**
* Opisyal na [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Documentation on Pandas Visualization](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Mga Online Resources**
* Opisyal na [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Dokumentasyon sa Pandas Visualization](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Pag-aaral ng Python**
* [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) Learning Path sa [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
**Pag-aaral ng Python**
* [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) Learning Path sa [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Assignment
## Takdang-Aralin
[Mag-perform ng mas detalyadong pag-aaral ng data para sa mga hamon sa itaas](assignment.md)
[Isagawa ang mas detalyadong pag-aaral ng data para sa mga hamon sa itaas](assignment.md)
## Credits
## Mga Kredito
Ang araling ito ay isinulat nang may ♥️ ni [Dmitry Soshnikov](http://soshnikov.com)
Ang araling ito ay isinulat nang may ♥️ ni [Dmitry Soshnikov](http://soshnikov.com)
---
**Paunawa**:
Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito.
Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, pakitandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang orihinal na wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T08:56:36+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:42:34+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "tr"
}
@ -13,41 +13,41 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Python ile Çalışmak - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![Tanıtım Videosu](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Tanıtım Videosu](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.tr.png)](https://youtu.be/dZjWOGbsN4Y)
Veritabanları, verileri depolamak ve sorgulamak için oldukça verimli yollar sunarken, veri işleme için en esnek yöntem, kendi programınızı yazarak veriyi manipüle etmektir. Çoğu durumda, bir veritabanı sorgusu yapmak daha etkili bir yol olabilir. Ancak, daha karmaşık veri işleme gerektiğinde, SQL kullanarak bunu kolayca yapmak mümkün olmayabilir.
Veritabanları, verileri depolamak ve sorgulamak için oldukça verimli yollar sunarken, veri işleme konusunda en esnek yöntem, kendi programınızı yazarak veriyi manipüle etmektir. Çoğu durumda, bir veritabanı sorgusu yapmak daha etkili bir yol olabilir. Ancak, daha karmaşık veri işleme gerektiğinde, SQL kullanarak bunu kolayca yapmak mümkün olmayabilir.
Veri işleme herhangi bir programlama diliyle yapılabilir, ancak bazı diller veriyle çalışmak açısından daha üst seviyedir. Veri bilimciler genellikle aşağıdaki dillerden birini tercih eder:
* **[Python](https://www.python.org/)**, genel amaçlı bir programlama dili olup, basitliği nedeniyle genellikle yeni başlayanlar için en iyi seçeneklerden biri olarak kabul edilir. Python, ZIP arşivinden veri çıkarmak veya bir resmi gri tonlamaya dönüştürmek gibi birçok pratik problemi çözmenize yardımcı olabilecek ek kütüphanelere sahiptir. Veri biliminin yanı sıra, Python genellikle web geliştirme için de kullanılır.
* **[Python](https://www.python.org/)**, genel amaçlı bir programlama dili olup, basitliği nedeniyle genellikle yeni başlayanlar için en iyi seçeneklerden biri olarak kabul edilir. Python, ZIP arşivinden veri çıkarmak veya bir resmi gri tonlamaya dönüştürmek gibi birçok pratik problemi çözmenize yardımcı olabilecek ek kütüphanelere sahiptir. Python, veri biliminin yanı sıra web geliştirme için de sıkça kullanılır.
* **[R](https://www.r-project.org/)**, istatistiksel veri işleme amacıyla geliştirilmiş geleneksel bir araçtır. Büyük bir kütüphane deposu (CRAN) içerir ve veri işleme için iyi bir seçimdir. Ancak, R genel amaçlı bir programlama dili değildir ve veri bilimi alanı dışında nadiren kullanılır.
* **[Julia](https://julialang.org/)**, özellikle veri bilimi için geliştirilmiş bir başka dildir. Python'dan daha iyi performans sunmayı amaçlar ve bilimsel deneyler için harika bir araçtır.
* **[Julia](https://julialang.org/)**, veri bilimi için özel olarak geliştirilmiş bir başka dildir. Python'dan daha iyi performans sunmayı amaçlar ve bilimsel deneyler için harika bir araçtır.
Bu derste, basit veri işleme için Python kullanmaya odaklanacağız. Dil hakkında temel bir bilgiye sahip olduğunuzu varsayacağız. Python hakkında daha derinlemesine bilgi almak isterseniz, aşağıdaki kaynaklara göz atabilirsiniz:
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - Python Programlama hakkında GitHub tabanlı hızlı giriş kursu
* [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) üzerinde Öğrenme Yolu
* [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) üzerinde öğrenme yolu
Veriler birçok farklı biçimde olabilir. Bu derste, üç veri biçimini ele alacağız - **tablo verisi**, **metin** ve **görseller**.
Tüm ilgili kütüphanelerin tam bir genel görünümünü vermek yerine, birkaç veri işleme örneğine odaklanacağız. Bu, size mümkün olanın ana fikrini verecek ve ihtiyaç duyduğunuzda problemlerinize çözüm bulabileceğiniz yerleri anlamanızı sağlayacaktır.
> **En faydalı tavsiye**. Bilmediğiniz bir veri işlemini gerçekleştirmek istediğinizde, internette arama yapmayı deneyin. [Stackoverflow](https://stackoverflow.com/) genellikle birçok tipik görev için Python'da faydalı kod örnekleri içerir.
> **En faydalı tavsiye**. Bilmediğiniz bir veri işlemi gerçekleştirmek istediğinizde, internetten arama yapmayı deneyin. [Stackoverflow](https://stackoverflow.com/) genellikle birçok tipik görev için Python'da faydalı kod örnekleri içerir.
## [Ders Öncesi Test](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tablo Verisi ve DataFrame'ler
İlişkisel veritabanları hakkında konuştuğumuzda tablo verisiyle zaten tanışmıştınız. Çok fazla veri olduğunda ve bu veri birçok farklı bağlantılı tabloda yer aldığında, SQL kullanmak kesinlikle mantıklıdır. Ancak, bir veri tablosuna sahip olduğumuz ve bu veri hakkında **anlayış** veya **içgörüler** elde etmemiz gerektiği durumlar vardır, örneğin dağılım, değerler arasındaki korelasyon gibi. Veri biliminde, orijinal verinin bazı dönüşümlerini gerçekleştirmemiz ve ardından görselleştirme yapmamız gereken birçok durum vardır. Bu adımların her ikisi de Python kullanılarak kolayca yapılabilir.
İlişkisel veritabanları hakkında konuştuğumuzda tablo verisiyle zaten tanışmıştınız. Çok fazla veri olduğunda ve bu veriler birçok farklı bağlantılı tabloda yer aldığında, SQL kullanmak kesinlikle mantıklıdır. Ancak, elimizde bir veri tablosu olduğunda ve bu veri hakkında **anlayış** veya **içgörü** elde etmek istediğimizde, örneğin dağılım, değerler arasındaki korelasyon gibi, SQL kullanmak her zaman yeterli olmayabilir. Veri bilimi alanında, orijinal verinin bazı dönüşümlerini gerçekleştirmek ve ardından görselleştirme yapmak gerektiğinde birçok durum vardır. Bu adımların her ikisi de Python kullanılarak kolayca yapılabilir.
Python'da tablo verisiyle çalışmanıza yardımcı olabilecek en faydalı iki kütüphane şunlardır:
* **[Pandas](https://pandas.pydata.org/)**, **DataFrame** adı verilen yapıları manipüle etmenize olanak tanır. DataFrame'ler, ilişkisel tablolara benzer. Adlandırılmış sütunlara sahip olabilir ve satır, sütun ve genel olarak DataFrame'ler üzerinde farklı işlemler gerçekleştirebilirsiniz.
* **[Numpy](https://numpy.org/)**, **tensörler** yani çok boyutlu **diziler** ile çalışmak için bir kütüphanedir. Diziler aynı temel türde değerlere sahiptir ve DataFrame'den daha basittir, ancak daha fazla matematiksel işlem sunar ve daha az yük oluşturur.
* **[Pandas](https://pandas.pydata.org/)**, **DataFrame** adı verilen yapıları manipüle etmenize olanak tanır. DataFrame'ler, ilişkisel tablolara benzer. Adlandırılmış sütunlara sahip olabilir ve satır, sütun ve genel olarak DataFrame'ler üzerinde çeşitli işlemler gerçekleştirebilirsiniz.
* **[Numpy](https://numpy.org/)**, **tensor** yani çok boyutlu **array**'lerle çalışmak için bir kütüphanedir. Array'ler aynı temel türde değerlere sahiptir ve DataFrame'den daha basittir, ancak daha fazla matematiksel işlem sunar ve daha az yük oluşturur.
Bilmeniz gereken birkaç başka kütüphane de vardır:
Ayrıca bilmeniz gereken birkaç başka kütüphane daha vardır:
* **[Matplotlib](https://matplotlib.org/)**, veri görselleştirme ve grafik çizimi için kullanılan bir kütüphanedir
* **[SciPy](https://www.scipy.org/)**, bazı ek bilimsel fonksiyonlar içeren bir kütüphanedir. Bu kütüphaneyle olasılık ve istatistik hakkında konuşurken zaten karşılaşmıştık.
Python programınızın başında bu kütüphaneleri içe aktarmak için genellikle şu kod parçasını kullanırsınız:
Python programınızın başında genellikle bu kütüphaneleri içe aktarmak için aşağıdaki kod parçasını kullanırsınız:
```python
import numpy as np
import pandas as pd
@ -59,9 +59,9 @@ Pandas birkaç temel kavram etrafında şekillenmiştir.
### Series
**Series**, bir liste veya numpy dizisine benzer bir değerler dizisidir. Ana fark, serilerin ayrıca bir **indeks**e sahip olmasıdır ve seriler üzerinde işlem yaparken (örneğin, toplama), indeks dikkate alınır. İndeks, bir liste veya diziden bir seri oluştururken varsayılan olarak kullanılan basit bir tamsayı satır numarası kadar basit olabilir veya tarih aralığı gibi karmaşık bir yapıya sahip olabilir.
**Series**, bir liste veya numpy array'e benzer bir değerler dizisidir. Ana fark, serilerin ayrıca bir **index**'e sahip olmasıdır ve seriler üzerinde işlem yaparken (örneğin, toplama), indeks dikkate alınır. İndeks, bir liste veya array'den bir seri oluştururken varsayılan olarak kullanılan basit bir tamsayı satır numarası kadar basit olabilir veya tarih aralığı gibi karmaşık bir yapıya sahip olabilir.
> **Not**: İlgili not defterinde [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) bazı giriş niteliğinde Pandas kodu bulunmaktadır. Burada yalnızca bazı örnekleri özetliyoruz ve tam not defterini incelemenizi kesinlikle öneririz.
> **Not**: Eşlik eden notebook'ta [`notebook.ipynb`](notebook.ipynb) bazı giriş niteliğinde Pandas kodu bulunmaktadır. Burada yalnızca bazı örnekleri özetliyoruz ve tam notebook'u incelemenizi kesinlikle öneririz.
Bir örneği ele alalım: dondurma satışlarımızı analiz etmek istiyoruz. Belirli bir zaman dilimi için satış rakamlarının (her gün satılan ürün sayısı) bir serisini oluşturalım:
@ -73,9 +73,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Zaman Serisi Grafiği](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Zaman Serisi Grafiği](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.tr.png)
Şimdi, her hafta arkadaşlarımız için bir parti düzenlediğimizi ve parti için fazladan 10 paket dondurma aldığımızı varsayalım. Bunu göstermek için haftalık olarak indekslenmiş başka bir seri oluşturabiliriz:
Şimdi, her hafta arkadaşlarımız için bir parti düzenlediğimizi ve parti için ek olarak 10 paket dondurma aldığımızı varsayalım. Bunu göstermek için haftalık olarak indekslenmiş başka bir seri oluşturabiliriz:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -84,20 +84,20 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Zaman Serisi Grafiği](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Zaman Serisi Grafiği](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.tr.png)
> **Not**: Basit `total_items+additional_items` sözdizimini kullanmıyoruz. Eğer kullansaydık, sonuç serisinde birçok `NaN` (*Not a Number*) değeri alırdık. Bunun nedeni, `additional_items` serisindeki bazı indeks noktaları için eksik değerler olmasıdır ve `NaN` ile herhangi bir şeyi toplamak `NaN` sonucunu verir. Bu nedenle toplama sırasında `fill_value` parametresini belirtmemiz gerekir.
Zaman serileriyle, farklı zaman aralıklarıyla seriyi yeniden örnekleyebiliriz. Örneğin, aylık ortalama satış hacmini hesaplamak istersek, şu kodu kullanabiliriz:
Zaman serileriyle, farklı zaman aralıklarıyla seriyi yeniden örnekleyebiliriz. Örneğin, aylık ortalama satış hacmini hesaplamak istersek, aşağıdaki kodu kullanabiliriz:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Aylık Zaman Serisi Ortalamaları](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Aylık Zaman Serisi Ortalamaları](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.tr.png)
### DataFrame
Bir DataFrame, aynı indekse sahip bir dizi serinin koleksiyonudur. Birkaç seriyi bir DataFrame'e birleştirebiliriz:
Bir DataFrame, aynı indekse sahip bir dizi serinin koleksiyonudur. Birkaç seriyi bir araya getirerek bir DataFrame oluşturabiliriz:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -113,7 +113,7 @@ Serileri sütun olarak kullanabilir ve sütun adlarını sözlük kullanarak bel
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Bu bize aşağıdaki gibi bir tablo verecektir:
Bu, aşağıdaki gibi bir tablo oluşturacaktır:
| | A | B |
| --- | --- | ------ |
@ -131,26 +131,26 @@ Bu bize aşağıdaki gibi bir tablo verecektir:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Burada `.T`, DataFrame'in transpoze edilmesi yani satır ve sütunların değiştirilmesi işlemini ifade eder ve `rename` işlemi, sütunları önceki örneğe uygun şekilde yeniden adlandırmamıza olanak tanır.
Burada `.T`, DataFrame'i transpoze etme işlemini, yani satırları ve sütunları değiştirme işlemini ifade eder ve `rename` işlemi, sütun adlarını önceki örneğe uyacak şekilde yeniden adlandırmamıza olanak tanır.
DataFrame'ler üzerinde gerçekleştirebileceğimiz en önemli işlemlerden bazıları şunlardır:
**Sütun seçimi**. Bireysel sütunları `df['A']` yazarak seçebiliriz - bu işlem bir Seri döndürür. Ayrıca, başka bir DataFrame'e bir sütun alt kümesi seçerek `df[['B','A']]` yazabiliriz - bu başka bir DataFrame döndürür.
**Sütun seçimi**. Bireysel sütunları `df['A']` yazarak seçebiliriz - bu işlem bir Seri döndürür. Ayrıca, başka bir DataFrame'e alt küme sütunları seçerek `df[['B','A']]` yazabiliriz - bu başka bir DataFrame döndürür.
**Belirli satırları filtreleme**. Örneğin, yalnızca `A` sütunu 5'ten büyük olan satırları bırakmak için `df[df['A']>5]` yazabiliriz.
> **Not**: Filtreleme şu şekilde çalışır. `df['A']<5` ifadesi, orijinal serinin her bir öğesi için ifadenin `True` veya `False` olduğunu belirten bir boolean seri döndürür. Boolean seri bir indeks olarak kullanıldığında, DataFrame'deki satırların bir alt kümesini döndürür. Bu nedenle, rastgele bir Python boolean ifadesi kullanmak mümkün değildir, örneğin `df[df['A']>5 and df['A']<7]` yazmak yanlış olur. Bunun yerine, boolean seriler üzerinde özel `&` işlemini kullanarak `df[(df['A']>5) & (df['A']<7)]` yazmalısınız (*parantezler burada önemlidir*).
> **Not**: Filtreleme şu şekilde çalışır. `df['A']<5` ifadesi, orijinal serinin `df['A']` her bir öğesi için ifadenin `True` veya `False` olduğunu belirten bir boolean serisi döndürür. Boolean serisi indeks olarak kullanıldığında, DataFrame'deki satırların alt kümesini döndürür. Bu nedenle, rastgele Python boolean ifadeleri kullanmak mümkün değildir, örneğin `df[df['A']>5 and df['A']<7]` yazmak yanlış olur. Bunun yerine, boolean seriler üzerinde özel `&` işlemini kullanarak `df[(df['A']>5) & (df['A']<7)]` yazmalısınız (*parantezler burada önemlidir*).
**Hesaplanabilir yeni sütunlar oluşturma**. DataFrame'imiz için kolayca hesaplanabilir yeni sütunlar oluşturabiliriz:
**Hesaplanabilir yeni sütunlar oluşturma**. DataFrame için kolayca hesaplanabilir yeni sütunlar oluşturabiliriz, örneğin:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Bu örnek, A'nın ortalama değerinden sapmasını hesaplar. Burada aslında bir seri hesaplıyoruz ve ardından bu seriyi sol tarafa atayarak yeni bir sütun oluşturuyoruz. Bu nedenle, serilerle uyumlu olmayan işlemleri kullanamayız, örneğin aşağıdaki kod yanlıştır:
Bu örnek, A'nın ortalama değerinden sapmasını hesaplar. Burada aslında bir seri hesaplıyoruz ve ardından bu seriyi sol taraftaki sütuna atayarak yeni bir sütun oluşturuyoruz. Bu nedenle, serilerle uyumlu olmayan işlemleri kullanamayız, örneğin aşağıdaki kod yanlıştır:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Son örnek, sözdizimsel olarak doğru olsa da, yanlış bir sonuç verir çünkü serinin `B` uzunluğunu sütundaki tüm değerlere atar, bireysel öğelerin uzunluğunu değil.
Son örnek, sözdizimsel olarak doğru olsa da, yanlış bir sonuç verir çünkü serinin `B` uzunluğunu tüm sütun değerlerine atar, bireysel öğelerin uzunluğunu değil.
Bu tür karmaşık ifadeleri hesaplamamız gerektiğinde, `apply` fonksiyonunu kullanabiliriz. Son örnek şu şekilde yazılabilir:
```python
@ -159,7 +159,7 @@ df['LenB'] = df['B'].apply(lambda x : len(x))
df['LenB'] = df['B'].apply(len)
```
Yukarıdaki işlemlerden sonra, aşağıdaki DataFrame'e sahip olacağız:
Yukarıdaki işlemlerden sonra aşağıdaki DataFrame'e ulaşırız:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -173,16 +173,16 @@ Yukarıdaki işlemlerden sonra, aşağıdaki DataFrame'e sahip olacağız:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Satırları numaralara göre seçmek** `iloc` yapısı kullanılarak yapılabilir. Örneğin, DataFrame'den ilk 5 satırı seçmek için:
**Satırları numaralara göre seçmek** `iloc` yapısını kullanarak yapılabilir. Örneğin, DataFrame'den ilk 5 satırı seçmek için:
```python
df.iloc[:5]
```
**Gruplama**, genellikle Excel'deki *pivot tablolar* benzeri bir sonuç elde etmek için kullanılır. Diyelim ki `LenB` değerine göre `A` sütununun ortalama değerini hesaplamak istiyoruz. O zaman DataFrame'i `LenB` ile gruplandırabilir ve `mean` çağırabiliriz:
**Gruplama**, genellikle Excel'deki *pivot tablolar* benzeri bir sonuç elde etmek için kullanılır. Örneğin, `LenB`'nin her bir değeri için `A` sütununun ortalama değerini hesaplamak istersek, DataFrame'i `LenB`'ye göre gruplandırabilir ve `mean` çağırabiliriz:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Eğer gruptaki öğelerin ortalamasını ve sayısını hesaplamamız gerekiyorsa, daha karmaşık `aggregate` fonksiyonunu kullanabiliriz:
Eğer grup içindeki ortalama ve eleman sayısını hesaplamak istersek, daha karmaşık bir `aggregate` fonksiyonunu kullanabiliriz:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -207,7 +207,7 @@ df = pd.read_csv('file.csv')
### Yazdırma ve Görselleştirme
Bir Veri Bilimci genellikle veriyi keşfetmek zorundadır, bu yüzden veriyi görselleştirebilmek önemlidir. DataFrame büyük olduğunda, çoğu zaman sadece her şeyin doğru yapıldığından emin olmak için ilk birkaç satırı yazdırmak isteriz. Bu, `df.head()` çağrılarak yapılabilir. Eğer bunu Jupyter Notebook'tan çalıştırıyorsanız, DataFrame'i güzel bir tablo formunda yazdıracaktır.
Bir Veri Bilimci genellikle veriyi keşfetmek zorundadır, bu yüzden onu görselleştirebilmek önemlidir. DataFrame büyük olduğunda, çoğu zaman sadece her şeyin doğru yapıldığından emin olmak için ilk birkaç satırı yazdırmak isteriz. Bu, `df.head()` çağrılarak yapılabilir. Eğer bunu Jupyter Notebook'tan çalıştırıyorsanız, DataFrame'i güzel bir tablo formunda yazdıracaktır.
Ayrıca bazı sütunları görselleştirmek için `plot` fonksiyonunun kullanımını gördük. `plot` birçok görev için çok kullanışlıdır ve `kind=` parametresi ile birçok farklı grafik türünü destekler. Ancak, daha karmaşık bir şey çizmek için her zaman ham `matplotlib` kütüphanesini kullanabilirsiniz. Veri görselleştirmeyi ayrı derslerde detaylı olarak ele alacağız.
@ -217,11 +217,11 @@ Bu genel bakış, Pandas'ın en önemli kavramlarını kapsar, ancak kütüphane
Odaklanacağımız ilk problem, COVID-19'un salgın yayılımını modellemektir. Bunu yapmak için, [Johns Hopkins Üniversitesi](https://jhu.edu/) [Sistem Bilimi ve Mühendisliği Merkezi](https://systems.jhu.edu/) (CSSE) tarafından sağlanan, farklı ülkelerdeki enfekte bireylerin sayısına ilişkin verileri kullanacağız. Veri seti [bu GitHub deposunda](https://github.com/CSSEGISandData/COVID-19) mevcuttur.
Verilerle nasıl başa çıkılacağını göstermek istediğimiz için, [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) dosyasını açmanızı ve baştan sona okumanızı öneriyoruz. Hücreleri çalıştırabilir ve sonunda sizin için bıraktığımız bazı zorlukları deneyebilirsiniz.
Verilerle nasıl başa çıkılacağını göstermek istediğimiz için, [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) dosyasını açmanızı ve baştan sona okumanızı öneriyoruz. Hücreleri çalıştırabilir ve sonunda sizin için bıraktığımız bazı zorlukları deneyebilirsiniz.
![COVID Yayılımı](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Yayılımı](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.tr.png)
> Jupyter Notebook'ta kodu nasıl çalıştıracağınızı bilmiyorsanız, [bu makaleye](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) göz atabilirsiniz.
> Jupyter Notebook'ta kod nasıl çalıştırılır bilmiyorsanız, [bu makaleye](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) göz atabilirsiniz.
## Yapılandırılmamış Verilerle Çalışmak
@ -237,11 +237,11 @@ Bu zorlukta, COVID pandemisi konusuna devam edeceğiz ve konu hakkındaki bilims
Bu veri setini [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) bilişsel hizmetini kullanarak analiz etmenin tam bir örneği [bu blog yazısında](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) açıklanmıştır. Bu analizin basitleştirilmiş bir versiyonunu tartışacağız.
> **NOTE**: Bu depo kapsamında veri setinin bir kopyasını sağlamıyoruz. Öncelikle [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) dosyasını [Kaggle'daki bu veri setinden](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) indirmeniz gerekebilir. Kaggle'a kayıt olmanız gerekebilir. Ayrıca veri setini kaydolmadan [buradan](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) indirebilirsiniz, ancak bu meta veri dosyasına ek olarak tüm tam metinleri içerecektir.
> **NOTE**: Bu depo kapsamında veri setinin bir kopyasını sağlamıyoruz. Öncelikle [Kaggle'daki bu veri setinden](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) dosyasını indirmeniz gerekebilir. Kaggle'a kayıt olmanız gerekebilir. Ayrıca, veri setini kayıt olmadan [buradan](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) indirebilirsiniz, ancak bu meta veri dosyasına ek olarak tüm tam metinleri de içerecektir.
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) dosyasınıın ve baştan sona okuyun. Hücreleri çalıştırabilir ve sonunda sizin için bıraktığımız bazı zorlukları deneyebilirsiniz.
[`notebook-papers.ipynb`](notebook-papers.ipynb) dosyasınıın ve baştan sona okuyun. Hücreleri çalıştırabilir ve sonunda sizin için bıraktığımız bazı zorlukları deneyebilirsiniz.
![Covid Tıbbi Tedavi](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Tıbbi Tedavi](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.tr.png)
## Görüntü Verilerini İşleme
@ -263,7 +263,7 @@ Yapılandırılmış veya yapılandırılmamış verileriniz olsun, Python kulla
## [Ders sonrası test](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## İnceleme ve Kendi Kendine Çalışma
## Gözden Geçirme ve Kendi Kendine Çalışma
**Kitaplar**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
@ -272,19 +272,19 @@ Yapılandırılmış veya yapılandırılmamış verileriniz olsun, Python kulla
* Resmi [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) eğitimi
* [Pandas Görselleştirme Belgeleri](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Python Öğrenme**
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
* [Python ile İlk Adımlarınızı Atın](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) üzerindeki Öğrenme Yolu
**Python Öğrenmek**
* [Turtle Graphics ve Fraktallar ile Eğlenceli Bir Şekilde Python Öğrenin](https://github.com/shwars/pycourse)
* [Python ile İlk Adımlarınızı Atın](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn'deki Öğrenme Yolu [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Ödev
[Yukarıdaki zorluklar için daha ayrıntılı veri çalışması yapın](assignment.md)
## Katkılar
## Krediler
Bu ders [Dmitry Soshnikov](http://soshnikov.com) tarafından ♥️ ile yazılmıştır.
---
**Feragatname**:
Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlama veya yanlış yorumlamalardan sorumlu değiliz.
Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz.

@ -1,53 +1,54 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T11:45:19+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:29:13+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "tw"
}
-->
# 使用資料Python 和 Pandas 庫
# 使用數據Python 和 Pandas 庫
| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| ![ [(@sketchthedocs)](https://sketchthedocs.dev) 繪製的速記圖](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| 使用 Python - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
| 使用 Python - _由 [@nitya](https://twitter.com/nitya) 繪製的速記圖_ |
[![介紹影片](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![介紹影片](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.tw.png)](https://youtu.be/dZjWOGbsN4Y)
雖然資料庫提供了非常高效的方式來存儲資料並使用查詢語言進行查詢,但最靈活的資料處理方式是編寫自己的程式來操作資料。在許多情況下,使用資料庫查詢可能更有效。然而,當需要更複雜的資料處理時,使用 SQL 可能不容易完成。
資料處理可以用任何程式語言編寫,但有些語言在處理資料方面更高效。資料科學家通常偏好以下語言之一:
雖然資料庫提供了非常高效的方式來存儲數據並使用查詢語言進行查詢,但最靈活的數據處理方式是編寫自己的程式來操作數據。在許多情況下,使用資料庫查詢可能更有效。然而,在某些需要更複雜數據處理的情況下,使用 SQL 可能不容易完成。
* **[Python](https://www.python.org/)** 是一種通用程式語言因其簡單性常被認為是初學者的最佳選擇之一。Python 擁有許多額外的庫,可以幫助解決許多實際問題,例如從 ZIP 壓縮檔案中提取資料或將圖片轉換為灰階。除了資料科學Python 也常用於網頁開發。
* **[R](https://www.r-project.org/)** 是一個傳統工具箱專為統計資料處理而設計。它擁有大量的庫CRAN使其成為資料處理的良好選擇。然而R 不是通用程式語言,通常僅限於資料科學領域使用。
* **[Julia](https://julialang.org/)** 是另一種專為資料科學設計的語言。它旨在提供比 Python 更好的性能,是科學實驗的理想工具。
數據處理可以用任何程式語言編寫,但有些語言在處理數據方面更高效。數據科學家通常偏好以下幾種語言:
在本課程中,我們將重點使用 Python 進行簡單的資料處理。我們假設您已對該語言有基本的熟悉。如果您想深入了解 Python可以參考以下資源
* **[Python](https://www.python.org/)** 是一種通用程式語言因其簡單性常被認為是初學者的最佳選擇之一。Python 擁有許多額外的庫,可以幫助解決許多實際問題,例如從 ZIP 壓縮檔案中提取數據或將圖片轉換為灰度。除了數據科學Python 也常用於網頁開發。
* **[R](https://www.r-project.org/)** 是一個傳統工具箱專為統計數據處理而設計。它擁有大量的庫資源CRAN使其成為數據處理的良好選擇。然而R 不是通用程式語言,通常僅用於數據科學領域。
* **[Julia](https://julialang.org/)** 是另一種專為數據科學設計的語言。它旨在提供比 Python 更好的性能,是科學實驗的理想工具。
* [用 Turtle Graphics 和 Fractals 趣味學習 Python](https://github.com/shwars/pycourse) - 基於 GitHub 的 Python 程式設計快速入門課程
* [從 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) 上的學習路徑
在本課程中,我們將重點使用 Python 進行簡單的數據處理。我們假設您已對該語言有基本的熟悉。如果您希望更深入地了解 Python可以參考以下資源
資料可以有多種形式。在本課程中,我們將探討三種資料形式 - **表格資料**、**文字**和**圖片**。
* [使用 Turtle Graphics 和 Fractals 以有趣的方式學習 Python](https://github.com/shwars/pycourse) - 基於 GitHub 的 Python 程式快速入門課程
* [從 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) 上的學習路徑
我們將專注於一些資料處理的例子,而不是全面介紹所有相關的庫。這樣可以讓您了解主要的可能性,並在需要時知道如何找到解決問題的方法
數據可以有多種形式。在本課程中,我們將考慮三種數據形式:**表格數據**、**文本**和**圖片**
> **最有用的建議**:當您需要對資料執行某些操作但不知道如何進行時,嘗試在網路上搜尋。[Stackoverflow](https://stackoverflow.com/) 通常包含許多針對常見任務的 Python 程式碼範例。
我們將重點介紹一些數據處理的例子,而不是全面概述所有相關庫。這樣可以幫助您了解主要概念,並在需要時知道如何尋找解決方案。
> **最有用的建議**:當您需要對數據執行某些操作但不知道如何進行時,嘗試在網路上搜索。[Stackoverflow](https://stackoverflow.com/) 通常包含許多針對常見任務的 Python 代碼範例。
## [課前測驗](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## 表格資料與 Dataframes
## 表格數據和 Dataframes
當我們討論關聯式資料庫時,您已經接觸過表格資料。當您擁有大量資料,並且這些資料包含在許多不同的關聯表中時,使用 SQL 來處理它是非常合理的。然而,在許多情況下,我們擁有一個資料表,並需要對該資料進行一些**理解**或**洞察**,例如分佈情況、值之間的相關性等。在資料科學中,經常需要對原始資料進行一些轉換,然後進行視覺化。這兩個步驟都可以輕鬆地使用 Python 完成。
當我們討論關係型資料庫時,您已經接觸過表格數據。當您擁有大量數據,並且它包含在許多不同的關聯表中時,使用 SQL 來處理它是非常合理的。然而,在許多情況下,我們擁有一個數據表,並需要對該數據進行一些**理解**或**洞察**,例如分佈、值之間的相關性等。在數據科學中,經常需要對原始數據進行一些轉換,然後進行可視化。這兩個步驟都可以使用 Python 輕鬆完成。
Python 中有兩個最有用的庫可以幫助您處理表格資料
* **[Pandas](https://pandas.pydata.org/)** 允許您操作所謂的 **Dataframes**,它類似於關聯表。您可以擁有命名的列,並對行、列以及整個 Dataframe 執行不同的操作。
Python 中有兩個最有用的庫可以幫助您處理表格數據
* **[Pandas](https://pandas.pydata.org/)** 允許您操作所謂的 **Dataframes**,它類似於關係型表格。您可以擁有命名的列,並對行、列以及整個 Dataframe 執行不同的操作。
* **[Numpy](https://numpy.org/)** 是一個用於處理 **張量**(即多維**陣列**)的庫。陣列的值具有相同的基礎類型,它比 Dataframe 更簡單,但提供了更多的數學操作,並且開銷更少。
此外,還有幾個您應該了解的庫:
* **[Matplotlib](https://matplotlib.org/)** 是一個用於資料視覺化和繪製圖表的庫
* **[Matplotlib](https://matplotlib.org/)** 是一個用於數據可視化和繪製圖表的庫
* **[SciPy](https://www.scipy.org/)** 是一個包含一些額外科學函數的庫。我們在討論概率和統計時已經接觸過該庫
以下是您通常在 Python 程式開頭用來導入這些庫的程式碼:
以下是您通常在 Python 程式開頭用來導入這些庫的碼:
```python
import numpy as np
import pandas as pd
@ -55,15 +56,15 @@ import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
Pandas 的核心概念圍繞幾個基本概念。
Pandas 圍繞幾個基本概念進行
### Series
**Series** 是一個值的序列,類似於列表或 numpy 陣列。主要區別在於 Series 還具有 **索引**,當我們對 Series 進行操作(例如相加)時,索引會被考慮。索引可以像整數行號一樣簡單(當從列表或陣列創建 Series 時,默認使用此索引),也可以具有複雜結構,例如日期區間。
**Series** 是一系列值,類似於列表或 numpy 陣列。主要區別在於 Series 還具有**索引**,當我們對 Series 進行操作(例如相加)時,索引會被考慮在內。索引可以像整數行號一樣簡單(當從列表或陣列創建 Series 時,默認使用此索引),也可以具有複雜結構,例如日期區間。
> **注意**:在附帶的筆記本 [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) 中有一些 Pandas 的入門程式碼。我們在此僅列出一些例子,您可以查看完整的筆記本。
> **注意**:在附帶的筆記本 [`notebook.ipynb`](notebook.ipynb) 中有一些 Pandas 的入門代碼。我們在此僅概述一些例子,您可以查看完整的筆記本。
個例子:我們想分析冰淇淋店的銷售情況。讓我們生成一段時間內的銷售數據(每天售出的商品數量):
例來說:我們想分析冰淇淋店的銷售情況。讓我們生成一段時間內的銷售數據(每天售出的商品數量):
```python
start_date = "Jan 1, 2020"
end_date = "Mar 31, 2020"
@ -72,9 +73,9 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![時間序列圖](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![時間序列圖](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.tw.png)
假設每週我們都會舉辦一次朋友聚會,並額外拿出 10 盒冰淇淋供聚會使用。我們可以創建另一個以週為索引的 Series 來展示這一點:
假設每週我們都會為朋友舉辦派對,並額外拿出 10 盒冰淇淋。我們可以創建另一個以週為索引的 Series 來展示這一點:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
@ -83,16 +84,16 @@ additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![時間序列圖](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![時間序列圖](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.tw.png)
> **注意** 我們並未使用簡單的語法 `total_items+additional_items`。如果使用該語法,我們會在結果 Series 中得到許多 `NaN`*非數值*)值。這是因為在 `additional_items` Series 的某些索引點缺少值,而將 `NaN` 與任何值相加會得到 `NaN`。因此,我們需要在相加時指定 `fill_value` 參數。
> **注意**:我們並未使用簡單語法 `total_items+additional_items`。如果使用該語法,我們會在結果 Series 中得到許多 `NaN`*非數值*)值。這是因為在 `additional_items` Series 的某些索引點缺少值,而將 `NaN` 與任何值相加會得到 `NaN`。因此,我們需要在相加時指定 `fill_value` 參數。
使用時間序列,我們還可以使用不同的時間間隔對 Series 進行**重採樣**。例如,假設我們想計算每月的平均銷售量。我們可以使用以下程式碼:
使用時間序列,我們還可以**重新取樣**不同的時間間隔。例如,假設我們想計算每月的平均銷售量。我們可以使用以下代碼:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![每月時間序列平均值](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![每月時間序列平均值](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.tw.png)
### DataFrame
@ -108,7 +109,7 @@ df = pd.DataFrame([a,b])
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
我們也可以使用 Series 作為列,並使用字典指定列名:
我們也可以使用 Series 作為列,並通過字典指定列名:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -126,32 +127,32 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**注意** 我們也可以通過轉置前一個表格來獲得此表格佈局,例如,通過編寫
**注意**:我們也可以通過轉置前一個表格來獲得此表格佈局,例如:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
其中 `.T` 表示轉置 DataFrame 的操作,即更改行和列,而 `rename` 操作允許我們重命名列以匹配前面的例子。
其中 `.T` 表示轉置 DataFrame 的操作,即交換行和列,而 `rename` 操作允許我們重命名列以匹配前面的例子。
以下是我們可以對 DataFrame 執行的一些最重要操作:
以下是一些我們可以對 DataFrame 執行的重要操作:
**列選擇**。我們可以通過編寫 `df['A']` 選擇單個列 - 此操作返回一個 Series。我們也可以通過編寫 `df[['B','A']]` 選擇列的子集到另一個 DataFrame - 此操作返回另一個 DataFrame。
**列選擇**。我們可以通過 `df['A']` 選擇單個列,此操作返回一個 Series。我們也可以通過 `df[['B','A']]` 選擇列的子集到另一個 DataFrame此操作返回另一個 DataFrame。
**根據條件篩選**特定行。例如,要僅保留列 `A` 大於 5 的行,我們可以`df[df['A']>5]`
**根據條件篩選**特定行。例如,要僅保留列 `A` 大於 5 的行,我們可以寫 `df[df['A']>5]`
> **注意**:篩選的工作方式如下。表達式 `df['A']<5` 返回一個布林 Series指示原始 Series `df['A']` 中每個元素的表達式是否為 `True``False`。當布林 Series 用作索引時,它返回 DataFrame 中的行子集。因此,不能使用任意 Python 布林表達式,例如,`df[df['A']>5 and df['A']<7]` 是錯誤的。相反,您應使用布林 Series 的特殊 `&` 操作,`df[(df['A']>5) & (df['A']<7)]`*括號在此處很重要*)。
> **注意**:篩選的工作方式如下。表達式 `df['A']<5` 返回一個布林 Series指示原始 Series `df['A']` 中每個元素的表達式是否為 `True``False`。當布林 Series 用作索引時,它返回 DataFrame 中的行子集。因此,不能使用任意 Python 布林表達式,例如,寫 `df[df['A']>5 and df['A']<7]` 是錯誤的。相反,您應使用布林 Series 的特殊 `&` 操作,寫 `df[(df['A']>5) & (df['A']<7)]`*括號在此處很重要*)。
**創建新的可計算列**。我們可以通過使用直觀的表達式輕鬆為 DataFrame 創建新的可計算列:
**創建新的可計算列**。我們可以通過直觀的表達式輕鬆為 DataFrame 創建新的可計算列:
```python
df['DivA'] = df['A']-df['A'].mean()
```
此例計算列 A 與其平均值的偏差。實際上,我們在計算一個 Series然後將該 Series 分配給左側,創建另一列。因此,我們不能使用與 Series 不兼容的任何操作,例如,以下程式碼是錯誤的:
此例計算列 A 與其平均值的偏差。實際上,我們在計算一個 Series然後將該 Series 分配給左側,創建另一列。因此,我們不能使用與 Series 不兼容的操作,例如,以下代碼是錯誤的:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
後一個例子雖然語法正確,但給出了錯誤的結果,因為它將 Series `B` 的長度分配給列中的所有值,而不是分配我們預期的每個元素的長度。
後一個例子雖然語法正確,但結果錯誤,因為它將 Series `B` 的長度分配給列中的所有值,而不是分配每個元素的長度。
如果需要計算此類複雜表達式,我們可以使用 `apply` 函數。最後一個例子可以寫成如下:
如果需要計算此類複雜表達式,我們可以使用 `apply` 函數。上述例子可以寫成如下:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -177,11 +178,11 @@ df['LenB'] = df['B'].apply(len)
df.iloc[:5]
```
**分組**通常用於獲得類似於 Excel 中*樞紐分析表*的結果。假設我們想計算列 `A` 的平均值,按 `LenB`每個值分組。然後我們可以按 `LenB` 分組 DataFrame調用 `mean`
**分組**通常用於獲得類似於 Excel 中*樞紐表*的結果。假設我們想計算列 `A` 的平均值,按 `LenB`數字分組。我們可以按 `LenB` 分組 DataFrame然後調用 `mean`
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
如果我們需要計算平均值和組中的元素數量,那麼可以使用更複雜的 `aggregate` 函數:
如果我們需要計算平均值和組中的元素數量,可以使用更複雜的 `aggregate` 函數:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -197,68 +198,68 @@ df.groupby(by='LenB') \
| 4 | 3 | 6.333333 |
| 6 | 2 | 6.000000 |
### 獲取資料
我們已經看到如何輕鬆地從 Python 對象構建 Series 和 DataFrames。然而,數據通常以文本文件或 Excel 表格的形式存在。幸運的是Pandas 為我們提供了一種簡單的方法來從磁碟中載數據。例如,讀取 CSV 文件就像這樣簡單:
### 獲取數據
我們已經看到如何輕鬆地從 Python 對象構建 Series 和 DataFrame。然而數據通常以文本文件或 Excel 表格的形式出現。幸運的是Pandas 為我們提供了一種簡單的方法來從磁碟中載數據。例如,讀取 CSV 文件就像這樣簡單:
```python
df = pd.read_csv('file.csv')
```
我們將在“挑戰”部分中看到更多載數據的例子,包括從外部網站獲取數據。
我們將在“挑戰”部分中看到更多載數據的例子,包括從外部網站獲取數據。
### 打印繪圖
### 打印繪圖
數據科學家經常需要探索數據,因此能夠可視化數據非常重要。當 DataFrame 很大時,我們通常只需要打印出前幾行來確保我們的操作是正確的。這可以通過調用 `df.head()` 完成。如果你在 Jupyter Notebook 中運行,它會以漂亮的表格形式打印出 DataFrame。
數據科學家經常需要探索數據,因此能夠可視化數據非常重要。當 DataFrame 很大時,我們通常只想通過打印出前幾行來確保我們的操作是正確的。這可以通過調用 `df.head()` 完成。如果你在 Jupyter Notebook 中運行,它會以漂亮的表格形式打印出 DataFrame。
我們還看到了使用 `plot` 函數來可視化某些列的例子。雖然 `plot`許多任務非常有用,並且通過 `kind=` 參數支持多不同的圖表類型,但你也可以使用原始的 `matplotlib` 庫來繪製更複雜的圖表。我們將在單獨的課程中詳細介紹數據可視化。
我們還看到了使用 `plot` 函數來可視化某些列的用法。雖然 `plot` 對於許多任務非常有用,並且通過 `kind=` 參數支持多不同的圖表類型,但你也可以使用原始的 `matplotlib` 庫來繪製更複雜的內容。我們將在單獨的課程中詳細介紹數據可視化。
這個概述涵蓋了 Pandas 的最重要概念,但這個庫非常豐富,幾乎沒有你不能用它完成的事情!現在讓我們應用這些知識來解決具體問題。
這個概述涵蓋了 Pandas 的一些重要概念,但這個庫非常豐富,你可以用它做的事情幾乎沒有上限!現在,讓我們應用這些知識來解決具體問題。
## 🚀 挑戰 1分析 COVID 傳播
我們將專注於的第一個問題是 COVID-19 的流行病傳播建模。為了做到這一點,我們將使用由 [約翰霍普金斯大學](https://jhu.edu/) 的 [系統科學與工程中心](https://systems.jhu.edu/) (CSSE) 提供的不同國家感染人數數據。數據集可在 [這個 GitHub 儲庫](https://github.com/CSSEGISandData/COVID-19) 中找到
我們將專注於的第一個問題是建模 COVID-19 的流行病傳播。為此,我們將使用由 [約翰霍普金斯大學](https://jhu.edu/) 的 [系統科學與工程中心](https://systems.jhu.edu/) (CSSE) 提供的不同國家感染人數數據。數據集可在 [這個 GitHub 庫](https://github.com/CSSEGISandData/COVID-19) 中獲取
由於我們想展示如何處理數據,我們邀請你打開 [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) 並從頭到尾閱讀。你也可以執行單元格,並完成我們在最後留下的一些挑戰。
由於我們想展示如何處理數據,我們邀請你打開 [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) 並從頭到尾閱讀它。你還可以執行單元格,並完成我們在最後為你留下的一些挑戰。
![COVID 傳播](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID 傳播](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.tw.png)
> 如果你不知道如何在 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 數據集](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge),其中包含超過 7000 篇(撰寫時)關於 COVID 的論文,並提供元數據和摘要(其中約一半還提供全文)。
在這個挑戰中,我們將繼續關注 COVID 大流行的主題,並專注於處理該主題的科學論文。有一個 [CORD-19 數據集](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge),其中包含超過 7000 篇(撰寫本文時)關於 COVID 的論文,並附有元數據和摘要(其中約一半還提供全文)。
使用 [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) 無需註冊下載數據集,但它將包括所有全文以及元數據文件。
> **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) 無需註冊下載數據集,但它將包括所有全文以及元數據文件。
打開 [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) 並從頭到尾閱讀。你也可以執行單元格,並完成我們在最後留下的一些挑戰。
打開 [`notebook-papers.ipynb`](notebook-papers.ipynb) 並從頭到尾閱讀它。你還可以執行單元格,並完成我們在最後為你留下的一些挑戰。
![COVID 醫療處理](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![COVID 醫療處理](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.tw.png)
## 處理圖像數據
最近,已開發出非常強大的 AI 模型,能夠理解圖像。使用預訓練的神經網絡或雲服務可以解決許多任務。一些例子包括:
最近,已開發出非常強大的 AI 模型,能夠理解圖像。有許多任務可以使用預訓練的神經網絡或雲服務來解決。一些例子包括:
* **圖像分類**,可以幫助你將圖像分類到預定義的類別之一。你可以使用像 [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?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) 提取活動照片中人物的情感,試圖了解什麼使人們感到快樂。
* 在博客文章 [如何在編碼的情況下學習數據科學](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 可能是一個好主意!
## [課後測驗](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -268,12 +269,12 @@ df = pd.read_csv('file.csv')
* [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) 教程
* 官方 [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)
**學習 Python**
* [用 Turtle Graphics 和分形圖以有趣的方式學習 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) 上的學習路徑
* [用 Turtle Graphics 和分形圖以有趣的方式學習 Python](https://github.com/shwars/pycourse)
* [在 Microsoft Learn 上學習 Python 的第一步](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum)
## 作業
@ -286,4 +287,4 @@ df = pd.read_csv('file.csv')
---
**免責聲明**
本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責
本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解釋不承擔責任

@ -1,51 +1,51 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T19:52:11+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T16:06:13+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "uk"
}
-->
# Робота з даними: Python та бібліотека Pandas
| ![Скетчноут від [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/07-WorkWithPython.png) |
| ![ Скетчноут від [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Робота з Python - _Скетчноут від [@nitya](https://twitter.com/nitya)_ |
[![Вступне відео](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Вступне відео](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.uk.png)](https://youtu.be/dZjWOGbsN4Y)
Хоча бази даних пропонують дуже ефективні способи зберігання даних і їх запит за допомогою мов запитів, найгнучкішим способом обробки даних є написання власної програми для їх маніпуляції. У багатьох випадках запит до бази даних буде більш ефективним. Однак у деяких випадках, коли потрібна складніша обробка даних, це не можна легко зробити за допомогою SQL.
Обробку даних можна програмувати будь-якою мовою програмування, але є певні мови, які є більш високорівневими для роботи з даними. Зазвичай фахівці з даних віддають перевагу одній із наступних мов:
Хоча бази даних пропонують дуже ефективні способи зберігання даних і запитів до них за допомогою мов запитів, найгнучкішим способом обробки даних є написання власної програми для їх маніпулювання. У багатьох випадках виконання запиту до бази даних буде більш ефективним. Однак у деяких випадках, коли потрібна більш складна обробка даних, це не можна легко зробити за допомогою SQL.
Обробка даних може бути запрограмована на будь-якій мові програмування, але є певні мови, які є більш високорівневими для роботи з даними. Зазвичай, фахівці з даних віддають перевагу одній із наступних мов:
* **[Python](https://www.python.org/)** — універсальна мова програмування, яка часто вважається одним із найкращих варіантів для початківців через її простоту. Python має багато додаткових бібліотек, які можуть допомогти вирішити багато практичних завдань, таких як витяг даних із ZIP-архіву або перетворення зображення в градації сірого. Крім науки про дані, Python також часто використовується для веброзробки.
* **[Python](https://www.python.org/)** — універсальна мова програмування, яка часто вважається одним із найкращих варіантів для початківців через її простоту. Python має багато додаткових бібліотек, які можуть допомогти вирішити багато практичних задач, таких як витяг даних із ZIP-архіву або перетворення зображення в градації сірого. Окрім науки про дані, Python також часто використовується для веб-розробки.
* **[R](https://www.r-project.org/)** — традиційний інструментарій, розроблений з урахуванням статистичної обробки даних. Він також містить великий репозиторій бібліотек (CRAN), що робить його хорошим вибором для обробки даних. Однак R не є універсальною мовою програмування і рідко використовується за межами сфери науки про дані.
* **[Julia](https://julialang.org/)** — ще одна мова, розроблена спеціально для науки про дані. Вона призначена для забезпечення кращої продуктивності, ніж Python, що робить її чудовим інструментом для наукових експериментів.
У цьому уроці ми зосередимося на використанні Python для простої обробки даних. Ми припускаємо базове знайомство з мовою. Якщо ви хочете глибше ознайомитися з Python, ви можете звернутися до одного з наступних ресурсів:
У цьому уроці ми зосередимося на використанні Python для простої обробки даних. Ми припускаємо базове знайомство з мовою. Якщо ви хочете глибше ознайомитися з Python, можете звернутися до одного з наступних ресурсів:
* [Вивчайте Python весело за допомогою графіки Turtle та фракталів](https://github.com/shwars/pycourse) — швидкий вступний курс програмування на Python на GitHub
* [Вивчайте Python весело за допомогою Turtle Graphics та фракталів](https://github.com/shwars/pycourse) — швидкий вступний курс програмування на Python на GitHub
* [Зробіть перші кроки з 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)
Дані можуть бути представлені в багатьох формах. У цьому уроці ми розглянемо три форми даних — **табличні дані**, **текст** і **зображення**.
Дані можуть бути представлені у багатьох формах. У цьому уроці ми розглянемо три форми даних — **табличні дані**, **текст** та **зображення**.
Ми зосередимося на кількох прикладах обробки даних, замість того, щоб давати вам повний огляд усіх пов’язаних бібліотек. Це дозволить вам зрозуміти основну ідею того, що можливо, і залишить вас із розумінням того, де знайти рішення ваших проблем, коли це буде потрібно.
Ми зосередимося на кількох прикладах обробки даних, замість того, щоб давати вам повний огляд усіх пов’язаних бібліотек. Це дозволить вам зрозуміти основну ідею того, що можливо, і залишить вас із розумінням того, де знайти рішення ваших проблем, коли вони виникнуть.
> **Найкорисніша порада**. Коли вам потрібно виконати певну операцію з даними, яку ви не знаєте, як зробити, спробуйте пошукати її в інтернеті. [Stackoverflow](https://stackoverflow.com/) зазвичай містить багато корисних прикладів коду на Python для багатьох типових завдань.
> **Найкорисніша порада**. Коли вам потрібно виконати певну операцію з даними, яку ви не знаєте, як зробити, спробуйте пошукати її в інтернеті. [Stackoverflow](https://stackoverflow.com/) зазвичай містить багато корисних прикладів коду на Python для багатьох типових задач.
## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Табличні дані та DataFrame
Ви вже зустрічалися з табличними даними, коли ми говорили про реляційні бази даних. Коли у вас багато даних, і вони містяться в багатьох різних пов’язаних таблицях, безумовно, має сенс використовувати SQL для роботи з ними. Однак є багато випадків, коли у нас є таблиця даних, і нам потрібно отримати певне **розуміння** або **інсайти** про ці дані, наприклад, розподіл, кореляцію між значеннями тощо. У науці про дані є багато випадків, коли нам потрібно виконати певні перетворення вихідних даних, а потім візуалізувати їх. Обидва ці кроки можна легко виконати за допомогою Python.
Ви вже зустрічалися з табличними даними, коли ми говорили про реляційні бази даних. Коли у вас є багато даних, і вони містяться в багатьох різних пов’язаних таблицях, безумовно, має сенс використовувати SQL для роботи з ними. Однак є багато випадків, коли у нас є таблиця даних, і нам потрібно отримати певне **розуміння** або **інсайти** про ці дані, такі як розподіл, кореляція між значеннями тощо. У науці про дані є багато випадків, коли нам потрібно виконати певні трансформації вихідних даних, а потім візуалізувати їх. Обидва ці кроки можна легко виконати за допомогою Python.
Є дві найкорисніші бібліотеки в Python, які можуть допомогти вам працювати з табличними даними:
* **[Pandas](https://pandas.pydata.org/)** дозволяє маніпулювати так званими **DataFrame**, які аналогічні реляційним таблицям. Ви можете мати названі стовпці та виконувати різні операції над рядками, стовпцями та DataFrame загалом.
* **[Numpy](https://numpy.org/)** — це бібліотека для роботи з **тензорами**, тобто багатовимірними **масивами**. Масив має значення одного базового типу, і він простіший, ніж DataFrame, але пропонує більше математичних операцій і створює менше накладних витрат.
* **[Numpy](https://numpy.org/)** — це бібліотека для роботи з **тензорами**, тобто багатовимірними **масивами**. Масив має значення одного типу, і він простіший, ніж DataFrame, але пропонує більше математичних операцій і створює менше накладних витрат.
Є також кілька інших бібліотек, про які вам слід знати:
Є також кілька інших бібліотек, про які вам варто знати:
* **[Matplotlib](https://matplotlib.org/)** — бібліотека, яка використовується для візуалізації даних і побудови графіків
* **[SciPy](https://www.scipy.org/)** — бібліотека з деякими додатковими науковими функціями. Ми вже стикалися з цією бібліотекою, коли говорили про ймовірність і статистику
* **[SciPy](https://www.scipy.org/)** — бібліотека з деякими додатковими науковими функціями. Ми вже зустрічалися з цією бібліотекою, коли говорили про ймовірність і статистику
Ось шматок коду, який ви зазвичай використовуєте для імпорту цих бібліотек на початку вашої програми на Python:
```python
@ -59,11 +59,11 @@ Pandas зосереджена навколо кількох базових ко
### Series
**Series** — це послідовність значень, схожа на список або масив numpy. Основна відмінність полягає в тому, що Series також має **індекс**, і коли ми працюємо з Series (наприклад, додаємо їх), індекс враховується. Індекс може бути таким простим, як цілий номер рядка (це індекс, який використовується за замовчуванням під час створення Series зі списку або масиву), або він може мати складну структуру, наприклад, інтервал дат.
**Series** — це послідовність значень, схожа на список або масив numpy. Основна відмінність полягає в тому, що Series також має **індекс**, і коли ми працюємо з Series (наприклад, додаємо їх), індекс враховується. Індекс може бути таким простим, як номер рядка (це індекс, який використовується за замовчуванням при створенні Series зі списку або масиву), або він може мати складну структуру, наприклад, інтервал дат.
> **Примітка**: У супровідному ноутбуці [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) є вступний код Pandas. Ми лише окреслюємо деякі приклади тут, і ви, безумовно, можете переглянути повний ноутбук.
> **Примітка**: У супровідному ноутбуці [`notebook.ipynb`](notebook.ipynb) є деякий вступний код Pandas. Ми лише окреслюємо деякі приклади тут, і ви, безумовно, можете переглянути повний ноутбук.
Розглянемо приклад: ми хочемо проаналізувати продажі нашого магазину морозива. Давайте створимо серію чисел продажів (кількість проданих одиниць щодня) за певний період часу:
Розглянемо приклад: ми хочемо проаналізувати продажі нашого магазину морозива. Давайте створимо Series чисел продажів (кількість проданих одиниць щодня) за певний період часу:
```python
start_date = "Jan 1, 2020"
@ -73,31 +73,31 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Графік часових рядів](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Графік часових рядів](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.uk.png)
Тепер припустимо, що щотижня ми організовуємо вечірку для друзів і беремо додатково 10 упаковок морозива для вечірки. Ми можемо створити ще одну серію, індексовану за тижнями, щоб продемонструвати це:
Тепер припустимо, що щотижня ми організовуємо вечірку для друзів і беремо додатково 10 упаковок морозива для вечірки. Ми можемо створити ще один Series, індексований за тижнями, щоб продемонструвати це:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Коли ми додаємо дві серії разом, ми отримуємо загальну кількість:
Коли ми додаємо два Series разом, ми отримуємо загальну кількість:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Графік часових рядів](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Графік часових рядів](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.uk.png)
> **Примітка**: ми не використовуємо простий синтаксис `total_items+additional_items`. Якби ми це зробили, ми отримали б багато значень `NaN` (*Not a Number*) у результаті. Це тому, що для деяких точок індексу в серії `additional_items` відсутні значення, і додавання `NaN` до чого-небудь призводить до `NaN`. Таким чином, нам потрібно вказати параметр `fill_value` під час додавання.
> **Примітка**: Ми не використовуємо простий синтаксис `total_items+additional_items`. Якби ми це зробили, ми отримали б багато значень `NaN` (*Not a Number*) у результаті. Це тому, що для деяких точок індексу в Series `additional_items` відсутні значення, і додавання `NaN` до чого-небудь призводить до `NaN`. Тому нам потрібно вказати параметр `fill_value` під час додавання.
З часовими рядами ми також можемо **перевибірковувати** серію з різними часовими інтервалами. Наприклад, припустимо, ми хочемо обчислити середній обсяг продажів щомісяця. Ми можемо використати наступний код:
З часовими рядами ми також можемо **перевибірковувати** Series з різними інтервалами часу. Наприклад, припустимо, ми хочемо обчислити середній обсяг продажів щомісяця. Ми можемо використати наступний код:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Середні значення часових рядів за місяць](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Середні значення часових рядів за місяць](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.uk.png)
### DataFrame
DataFrame — це, по суті, колекція серій із однаковим індексом. Ми можемо об’єднати кілька серій разом у DataFrame:
DataFrame — це, по суті, колекція Series з однаковим індексом. Ми можемо об’єднати кілька Series разом у DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -127,30 +127,30 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**Примітка**: ми також можемо отримати цей макет таблиці, транспонуючи попередню таблицю, наприклад, написавши
**Примітка**: Ми також можемо отримати цей макет таблиці, транспонуючи попередню таблицю, наприклад, написавши
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Тут `.T` означає операцію транспонування DataFrame, тобто зміну рядків і стовпців, а операція `rename` дозволяє перейменувати стовпці, щоб відповідати попередньому прикладу.
Ось кілька найважливіших операцій, які ми можемо виконувати з DataFrame:
Ось кілька найважливіших операцій, які ми можемо виконувати над DataFrame:
**Вибір стовпців**. Ми можемо вибрати окремі стовпці, написавши `df['A']` — ця операція повертає Series. Ми також можемо вибрати підмножину стовпців у інший DataFrame, написавши `df[['B','A']]` — це повертає інший DataFrame.
**Фільтрація** лише певних рядків за критеріями. Наприклад, щоб залишити лише рядки зі стовпцем `A`, більшим за 5, ми можемо написати `df[df['A']>5]`.
**Фільтрування** лише певних рядків за критеріями. Наприклад, щоб залишити лише рядки зі стовпцем `A`, більшим за 5, ми можемо написати `df[df['A']>5]`.
> **Примітка**: спосіб роботи фільтрації наступний. Вираз `df['A']<5` повертає булеву серію, яка вказує, чи є вираз `True` чи `False` для кожного елемента вихідної серії `df['A']`. Коли булева серія використовується як індекс, вона повертає підмножину рядків у DataFrame. Таким чином, неможливо використовувати довільний булевий вираз Python, наприклад, написання `df[df['A']>5 and df['A']<7]` буде неправильним. Натомість слід використовувати спеціальну операцію `&` для булевих серій, написавши `df[(df['A']>5) & (df['A']<7)]` (*дужки тут важливі*).
> **Примітка**: Як працює фільтрування. Вираз `df['A']<5` повертає булевий Series, який вказує, чи є вираз `True` чи `False` для кожного елемента вихідного Series `df['A']`. Коли булевий Series використовується як індекс, він повертає підмножину рядків у DataFrame. Таким чином, неможливо використовувати довільний булевий вираз Python, наприклад, написання `df[df['A']>5 and df['A']<7]` буде неправильним. Натомість слід використовувати спеціальну операцію `&` для булевих Series, написавши `df[(df['A']>5) & (df['A']<7)]` (*дужки тут важливі*).
**Створення нових обчислюваних стовпців**. Ми можемо легко створювати нові обчислювані стовпці для нашого DataFrame, використовуючи інтуїтивно зрозумілий вираз, як цей:
**Створення нових обчислюваних стовпців**. Ми можемо легко створювати нові обчислювані стовпці для нашого DataFrame, використовуючи інтуїтивний вираз, як цей:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Цей приклад обчислює відхилення A від його середнього значення. Насправді тут ми обчислюємо серію, а потім призначаємо цю серію лівій стороні, створюючи інший стовпець. Таким чином, ми не можемо використовувати жодні операції, які не сумісні з серіями, наприклад, наведений нижче код є неправильним:
Цей приклад обчислює відхилення A від його середнього значення. Насправді тут ми обчислюємо Series, а потім призначаємо цей Series лівій стороні, створюючи інший стовпець. Таким чином, ми не можемо використовувати жодні операції, які не сумісні з Series, наприклад, наведений нижче код є неправильним:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Останній приклад, хоча синтаксично правильний, дає нам неправильний результат, оскільки він призначає довжину серії `B` всім значенням у стовпці, а не довжину окремих елементів, як ми мали намір.
Останній приклад, хоча синтаксично правильний, дає нам неправильний результат, оскільки він призначає довжину Series `B` всім значенням у стовпці, а не довжину окремих елементів, як ми мали намір.
Якщо нам потрібно обчислити складні вирази, як цей, ми можемо використовувати функцію `apply`. Останній приклад можна записати так:
```python
@ -180,7 +180,7 @@ df.iloc[:5]
**Групування** часто використовується для отримання результату, схожого на *зведені таблиці* в Excel. Припустимо, ми хочемо обчислити середнє значення стовпця `A` для кожного заданого числа `LenB`. Тоді ми можемо згрупувати наш DataFrame за `LenB` і викликати `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Якщо нам потрібно обчислити середнє значення та кількість елементів у групі, тоді ми можемо використовувати більш складну функцію `aggregate`:
```python
@ -203,67 +203,67 @@ df.groupby(by='LenB') \
```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, однак бібліотека дуже багата, і немає меж тому, що ви можете з нею зробити! Тепер застосуємо ці знання для вирішення конкретної проблеми.
## 🚀 Виклик 1: Аналіз поширення COVID
## 🚀 Challenge 1: Аналіз поширення COVID
Перша проблема, на якій ми зосередимося, — це моделювання епідемічного поширення COVID-19. Для цього ми використаємо дані про кількість інфікованих осіб у різних країнах, надані [Центром системної науки та інженерії](https://systems.jhu.edu/) (CSSE) при [Університеті Джонса Гопкінса](https://jhu.edu/). Набір даних доступний у [цьому репозиторії GitHub](https://github.com/CSSEGISandData/COVID-19).
Оскільки ми хочемо продемонструвати, як працювати з даними, ми запрошуємо вас відкрити [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) і прочитати його від початку до кінця. Ви також можете виконувати комірки та виконувати завдання, які ми залишили для вас наприкінці.
Оскільки ми хочемо продемонструвати, як працювати з даними, ми запрошуємо вас відкрити [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) і прочитати його від початку до кінця. Ви також можете виконувати комірки та виконувати завдання, які ми залишили для вас наприкінці.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.uk.png)
> Якщо ви не знаєте, як запускати код у Jupyter Notebook, перегляньте [цю статтю](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Робота з неструктурованими даними
Хоча дані дуже часто надходять у табличній формі, у деяких випадках нам потрібно працювати з менш структурованими даними, наприклад, текстом або зображеннями. У цьому випадку, щоб застосувати методи обробки даних, які ми бачили вище, нам потрібно якось **витягти** структуровані дані. Ось кілька прикладів:
Хоча дані дуже часто надходять у табличній формі, у деяких випадках нам потрібно працювати з менш структурованими даними, наприклад, текстом або зображеннями. У цьому випадку, щоб застосувати техніки обробки даних, які ми бачили вище, нам потрібно якось **витягти** структуровані дані. Ось кілька прикладів:
* Витяг ключових слів із тексту та аналіз частоти їх появи
* Використання нейронних мереж для отримання інформації про об'єкти на зображенні
* Отримання інформації про емоції людей із відеопотоку камери
* Отримання інформації про емоції людей на відеокамері
## 🚀 Виклик 2: Аналіз COVID-наукових статей
## 🚀 Challenge 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) з понад 7000 (на момент написання) статей про COVID, доступних із метаданими та анотаціями (а для приблизно половини з них також доступний повний текст).
Повний приклад аналізу цього набору даних за допомогою когнітивної служби [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**: Ми не надаємо копію набору даних у цьому репозиторії. Вам може знадобитися спочатку завантажити файл [`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), але він включатиме всі повні тексти на додаток до файлу метаданих.
Відкрийте [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) і прочитайте його від початку до кінця. Ви також можете виконувати комірки та виконувати завдання, які ми залишили для вас наприкінці.
Відкрийте [`notebook-papers.ipynb`](notebook-papers.ipynb) і прочитайте його від початку до кінця. Ви також можете виконувати комірки та виконувати завдання, які ми залишили для вас наприкінці.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.uk.png)
## Обробка даних зображень
Останнім часом були розроблені дуже потужні 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) для виявлення конкретних об'єктів, які вас цікавлять.
* **Класифікація зображень**, яка може допомогти вам категоризувати зображення в одну з попередньо визначених категорій. Ви можете легко навчити власні класифікатори зображень, використовуючи сервіси, такі як [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), і таким чином їх можна легко інтегрувати у ваш робочий процес дослідження даних.
Ось кілька прикладів дослідження даних із джерел зображень:
* У блозі [Як вивчати Data Science без програмування](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) для витягу емоцій людей на фотографіях із заходів, щоб спробувати зрозуміти, що робить людей щасливими.
* У [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 на глибокому рівні — це, ймовірно, гарна ідея, якщо ви серйозно ставитеся до своєї подорожі в Data Science!
Незалежно від того, чи у вас вже є структуровані або неструктуровані дані, використовуючи Python, ви можете виконувати всі етапи, пов'язані з обробкою та розумінням даних. Це, мабуть, найгнучкіший спосіб обробки даних, і саме тому більшість дослідників даних використовують Python як свій основний інструмент. Вивчення Python на глибокому рівні — це, ймовірно, гарна ідея, якщо ви серйозно ставитеся до своєї подорожі в Data Science!
## [Тест після лекції](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)
@ -278,7 +278,7 @@ df = pd.read_csv('file.csv')
## Завдання
[Виконайте більш детальне дослідження даних для викликів вище](assignment.md)
[Виконайте більш детальне дослідження даних для завдань вище](assignment.md)
## Авторство
@ -287,4 +287,4 @@ df = pd.read_csv('file.csv')
---
**Відмова від відповідальності**:
Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.
Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-06T06:37:04+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:25:28+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "ur"
}
@ -13,16 +13,16 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| پائتھون کے ساتھ کام کرنا - _[@nitya](https://twitter.com/nitya) کی طرف سے اسکیچ نوٹ_ |
[![تعارفی ویڈیو](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![تعارفی ویڈیو](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ur.png)](https://youtu.be/dZjWOGbsN4Y)
اگرچہ ڈیٹا بیسز ڈیٹا کو محفوظ کرنے اور انہیں کوئری زبانوں کے ذریعے کوئری کرنے کے لیے بہت مؤثر طریقے فراہم کرتے ہیں، ڈیٹا پروسیسنگ کا سب سے لچکدار طریقہ اپنا پروگرام لکھ کر ڈیٹا کو تبدیل کرنا ہے۔ اکثر اوقات، ڈیٹا بیس کوئری کرنا زیادہ مؤثر ہوگا۔ لیکن کچھ معاملات میں جب زیادہ پیچیدہ ڈیٹا پروسیسنگ کی ضرورت ہو، تو اسے SQL کے ذریعے آسانی سے انجام دینا ممکن نہیں ہوتا۔
اگرچہ ڈیٹا بیسز ڈیٹا کو محفوظ کرنے اور انہیں کوئری لینگویجز کے ذریعے تلاش کرنے کے لیے بہت مؤثر طریقے فراہم کرتے ہیں، ڈیٹا پروسیسنگ کا سب سے لچکدار طریقہ اپنا پروگرام لکھ کر ڈیٹا کو تبدیل کرنا ہے۔ اکثر اوقات، ڈیٹا بیس کوئری کرنا زیادہ مؤثر ہوگا۔ لیکن کچھ معاملات میں جب زیادہ پیچیدہ ڈیٹا پروسیسنگ کی ضرورت ہو، تو یہ کام آسانی سے SQL کے ذریعے نہیں کیا جا سکتا۔
ڈیٹا پروسیسنگ کسی بھی پروگرامنگ زبان میں کی جا سکتی ہے، لیکن کچھ زبانیں ڈیٹا کے ساتھ کام کرنے کے لحاظ سے زیادہ اعلیٰ سطح کی ہوتی ہیں۔ ڈیٹا سائنسدان عام طور پر درج ذیل زبانوں میں سے کسی ایک کو ترجیح دیتے ہیں:
* **[پائتھون](https://www.python.org/)**، ایک عمومی مقصد کی پروگرامنگ زبان، جو اپنی سادگی کی وجہ سے اکثر ابتدائی افراد کے لیے بہترین آپشن سمجھی جاتی ہے۔ پائتھون میں بہت سی اضافی لائبریریاں موجود ہیں جو آپ کو عملی مسائل حل کرنے میں مدد دے سکتی ہیں، جیسے کہ ZIP آرکائیو سے ڈیٹا نکالنا یا تصویر کو گرے اسکیل میں تبدیل کرنا۔ ڈیٹا سائنس کے علاوہ، پائتھون ویب ڈیولپمنٹ کے لیے بھی اکثر استعمال ہوتی ہے۔
* **[آر](https://www.r-project.org/)** ایک روایتی ٹول باکس ہے جو شماریاتی ڈیٹا پروسیسنگ کے لیے تیار کیا گیا ہے۔ اس میں لائبریریوں کا بڑا ذخیرہ (CRAN) موجود ہے، جو اسے ڈیٹا پروسیسنگ کے لیے ایک اچھا انتخاب بناتا ہے۔ تاہم، آر ایک عمومی مقصد کی پروگرامنگ زبان نہیں ہے اور ڈیٹا سائنس کے دائرے سے باہر شاذ و نادر ہی استعمال ہوتی ہے۔
* **[آر](https://www.r-project.org/)** ایک روایتی ٹول باکس ہے جو شماریاتی ڈیٹا پروسیسنگ کے لیے بنایا گیا ہے۔ اس میں لائبریریوں کا بڑا ذخیرہ (CRAN) موجود ہے، جو اسے ڈیٹا پروسیسنگ کے لیے ایک اچھا انتخاب بناتا ہے۔ تاہم، آر ایک عمومی مقصد کی پروگرامنگ زبان نہیں ہے اور ڈیٹا سائنس کے دائرے سے باہر شاذ و نادر ہی استعمال ہوتی ہے۔
* **[جولیا](https://julialang.org/)** ایک اور زبان ہے جو خاص طور پر ڈیٹا سائنس کے لیے تیار کی گئی ہے۔ یہ پائتھون کے مقابلے میں بہتر کارکردگی فراہم کرنے کے لیے بنائی گئی ہے، جو اسے سائنسی تجربات کے لیے ایک بہترین ٹول بناتی ہے۔
اس سبق میں، ہم سادہ ڈیٹا پروسیسنگ کے لیے پائتھون کے استعمال پر توجہ مرکوز کریں گے۔ ہم زبان کے بنیادی علم کو فرض کریں گے۔ اگر آپ پائتھون کا گہرا جائزہ لینا چاہتے ہیں، تو آپ درج ذیل وسائل میں سے کسی ایک کا حوالہ دے سکتے ہیں:
اس سبق میں، ہم پائتھون کا استعمال کرتے ہوئے سادہ ڈیٹا پروسیسنگ پر توجہ مرکوز کریں گے۔ ہم زبان کی بنیادی واقفیت فرض کریں گے۔ اگر آپ پائتھون کا گہرا جائزہ لینا چاہتے ہیں، تو آپ درج ذیل وسائل میں سے کسی ایک کا حوالہ دے سکتے ہیں:
* [پائتھون کو تفریحی طریقے سے سیکھیں: ٹرٹل گرافکس اور فرکٹلز کے ساتھ](https://github.com/shwars/pycourse) - پائتھون پروگرامنگ کا گٹ ہب پر مبنی تعارفی کورس
* [پائتھون کے ساتھ اپنے پہلے قدم اٹھائیں](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) پر لرننگ پاتھ
@ -31,21 +31,21 @@ CO_OP_TRANSLATOR_METADATA:
ہم آپ کو متعلقہ لائبریریوں کا مکمل جائزہ دینے کے بجائے ڈیٹا پروسیسنگ کی چند مثالوں پر توجہ مرکوز کریں گے۔ اس سے آپ کو یہ سمجھنے میں مدد ملے گی کہ کیا ممکن ہے، اور جب آپ کو ضرورت ہو تو اپنے مسائل کے حل تلاش کرنے کے لیے کہاں جانا ہے۔
> **سب سے مفید مشورہ**۔ جب آپ کو ڈیٹا پر کوئی خاص آپریشن انجام دینے کی ضرورت ہو اور آپ کو معلوم نہ ہو کہ اسے کیسے کرنا ہے، تو انٹرنیٹ پر تلاش کرنے کی کوشش کریں۔ [Stackoverflow](https://stackoverflow.com/) عام طور پر پائتھون میں بہت سے عام کاموں کے لیے مفید کوڈ نمونے فراہم کرتا ہے۔
> **سب سے مفید مشورہ**۔ جب آپ کو ڈیٹا پر کوئی خاص آپریشن کرنے کی ضرورت ہو اور آپ کو معلوم نہ ہو کہ اسے کیسے کرنا ہے، تو انٹرنیٹ پر تلاش کرنے کی کوشش کریں۔ [Stackoverflow](https://stackoverflow.com/) عام طور پر پائتھون میں بہت سے عام کاموں کے لیے مفید کوڈ نمونے فراہم کرتا ہے۔
## [لیکچر سے پہلے کا کوئز](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## ٹیبلر ڈیٹا اور ڈیٹا فریمز
آپ پہلے ہی ٹیبلر ڈیٹا سے واقف ہو چکے ہیں جب ہم نے ریلیشنل ڈیٹا بیسز کے بارے میں بات کی تھی۔ جب آپ کے پاس بہت زیادہ ڈیٹا ہو، اور یہ مختلف جڑی ہوئی ٹیبلز میں موجود ہو، تو اس کے ساتھ کام کرنے کے لیے SQL کا استعمال کرنا یقینی طور پر معنی رکھتا ہے۔ تاہم، بہت سے معاملات میں جب ہمارے پاس ڈیٹا کی ایک ٹیبل ہو، اور ہمیں اس ڈیٹا کے بارے میں کچھ **سمجھ** یا **بصیرت** حاصل کرنے کی ضرورت ہو، جیسے کہ تقسیم، اقدار کے درمیان تعلق، وغیرہ۔ ڈیٹا سائنس میں، بہت سے معاملات میں ہمیں اصل ڈیٹا کی کچھ تبدیلیاں کرنے کی ضرورت ہوتی ہے، اس کے بعد بصری نمائندگی۔ یہ دونوں مراحل پائتھون کا استعمال کرتے ہوئے آسانی سے کیے جا سکتے ہیں۔
آپ پہلے ہی ٹیبلر ڈیٹا سے واقف ہو چکے ہیں جب ہم نے ریلیشنل ڈیٹا بیسز کے بارے میں بات کی تھی۔ جب آپ کے پاس بہت زیادہ ڈیٹا ہو، اور وہ مختلف جڑی ہوئی ٹیبلز میں موجود ہو، تو اس کے ساتھ کام کرنے کے لیے SQL کا استعمال کرنا یقینی طور پر سمجھ میں آتا ہے۔ تاہم، بہت سے معاملات میں جب ہمارے پاس ڈیٹا کی ایک ٹیبل ہو، اور ہمیں اس ڈیٹا کے بارے میں کچھ **سمجھ** یا **بصیرت** حاصل کرنی ہو، جیسے کہ تقسیم، اقدار کے درمیان تعلق، وغیرہ۔ ڈیٹا سائنس میں، بہت سے معاملات میں ہمیں اصل ڈیٹا کی کچھ تبدیلیاں کرنے کی ضرورت ہوتی ہے، جس کے بعد بصری نمائندگی کی جاتی ہے۔ یہ دونوں مراحل پائتھون کا استعمال کرتے ہوئے آسانی سے کیے جا سکتے ہیں۔
پائتھون میں دو سب سے زیادہ مفید لائبریریاں ہیں جو آپ کو ٹیبلر ڈیٹا کے ساتھ کام کرنے میں مدد دے سکتی ہیں:
* **[پانڈاز](https://pandas.pydata.org/)** آپ کو **ڈیٹا فریمز** کے ساتھ کام کرنے کی اجازت دیتا ہے، جو ریلیشنل ٹیبلز کے مترادف ہیں۔ آپ کے پاس نامزد کالم ہو سکتے ہیں، اور قطاروں، کالموں اور ڈیٹا فریمز پر مختلف آپریشنز انجام دے سکتے ہیں۔
* **[نمپائی](https://numpy.org/)** ایک لائبریری ہے جو **ٹینسرز**، یعنی کثیر جہتی **ارے** کے ساتھ کام کرنے کے لیے استعمال ہوتی ہے۔ ارے میں ایک ہی بنیادی قسم کی اقدار ہوتی ہیں، اور یہ ڈیٹا فریم سے زیادہ سادہ ہوتا ہے، لیکن یہ زیادہ ریاضیاتی آپریشنز فراہم کرتا ہے اور کم اوور ہیڈ پیدا کرتا ہے۔
* **[نمپائی](https://numpy.org/)** ایک لائبریری ہے جو **ٹینسرز**، یعنی کثیر جہتی **ارے** کے ساتھ کام کرنے کے لیے ہے۔ ارے میں ایک ہی بنیادی قسم کی اقدار ہوتی ہیں، اور یہ ڈیٹا فریم سے زیادہ سادہ ہوتا ہے، لیکن یہ زیادہ ریاضیاتی آپریشنز فراہم کرتا ہے اور کم اوور ہیڈ پیدا کرتا ہے۔
کچھ دیگر لائبریریاں بھی ہیں جن کے بارے میں آپ کو معلوم ہونا چاہیے:
* **[میٹپلاٹ لِب](https://matplotlib.org/)** ڈیٹا کی بصری نمائندگی اور گراف بنانے کے لیے استعمال ہونے والی لائبریری ہے
* **[سائپائی](https://www.scipy.org/)** اضافی سائنسی فنکشنز کے ساتھ ایک لائبریری ہے۔ ہم پہلے ہی اس لائبریری کا سامنا کر چکے ہیں جب ہم احتمال اور شماریات کے بارے میں بات کر رہے تھے
* **[میٹپلاٹلب](https://matplotlib.org/)** ڈیٹا کی بصری نمائندگی اور گراف بنانے کے لیے استعمال ہونے والی لائبریری ہے
* **[سائپائی](https://www.scipy.org/)** کچھ اضافی سائنسی فنکشنز کے ساتھ ایک لائبریری ہے۔ ہم پہلے ہی اس لائبریری سے اس وقت مل چکے ہیں جب ہم احتمال اور شماریات کے بارے میں بات کر رہے تھے
یہاں ایک کوڈ کا ٹکڑا ہے جو آپ عام طور پر اپنے پائتھون پروگرام کے آغاز میں ان لائبریریوں کو درآمد کرنے کے لیے استعمال کریں گے:
```python
@ -61,7 +61,7 @@ from scipy import ... # you need to specify exact sub-packages that you need
**سیریز** اقدار کی ترتیب ہے، جو فہرست یا نمپائی ارے کی طرح ہے۔ بنیادی فرق یہ ہے کہ سیریز میں ایک **انڈیکس** بھی ہوتا ہے، اور جب ہم سیریز پر آپریشن کرتے ہیں (جیسے، انہیں جمع کرتے ہیں)، تو انڈیکس کو مدنظر رکھا جاتا ہے۔ انڈیکس اتنا سادہ ہو سکتا ہے جتنا کہ عددی قطار نمبر (یہ وہ انڈیکس ہے جو فہرست یا ارے سے سیریز بناتے وقت ڈیفالٹ کے طور پر استعمال ہوتا ہے)، یا اس کی پیچیدہ ساخت ہو سکتی ہے، جیسے کہ تاریخ کا وقفہ۔
> **نوٹ**: اس کے ساتھ موجود نوٹ بک [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb) میں پانڈاز کا کچھ تعارفی کوڈ موجود ہے۔ ہم یہاں صرف چند مثالیں پیش کرتے ہیں، اور آپ کو مکمل نوٹ بک دیکھنے کی دعوت دیتے ہیں۔
> **نوٹ**: اس کے ساتھ موجود نوٹ بک [`notebook.ipynb`](notebook.ipynb) میں کچھ تعارفی پانڈاز کوڈ موجود ہے۔ ہم یہاں صرف چند مثالیں پیش کرتے ہیں، اور آپ کو مکمل نوٹ بک دیکھنے کی دعوت دیتے ہیں۔
ایک مثال پر غور کریں: ہم اپنی آئس کریم کی دکان کی فروخت کا تجزیہ کرنا چاہتے ہیں۔ آئیے کچھ وقت کے لیے فروخت کے نمبروں (ہر دن فروخت ہونے والی اشیاء کی تعداد) کی سیریز بنائیں:
@ -73,27 +73,27 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![ٹائم سیریز گراف](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![ٹائم سیریز پلاٹ](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ur.png)
اب فرض کریں کہ ہر ہفتے ہم دوستوں کے لیے ایک پارٹی کا اہتمام کرتے ہیں، اور پارٹی کے لیے آئس کریم کے اضافی 10 پیک لیتے ہیں۔ ہم ایک اور سیریز بنا سکتے ہیں، جو ہفتے کے انڈیکس کے ذریعے ظاہر ہو:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
جب ہم دو سیریز کو جمع کرتے ہیں، تو ہمیں کل تعداد ملتی ہے:
جب ہم دو سیریز کو ایک ساتھ جمع کرتے ہیں، تو ہمیں کل تعداد ملتی ہے:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![ٹائم سیریز گراف](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![ٹائم سیریز پلاٹ](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ur.png)
> **نوٹ** کہ ہم سادہ نحو `total_items+additional_items` استعمال نہیں کر رہے ہیں۔ اگر ہم ایسا کرتے، تو ہمیں نتیجہ خیز سیریز میں بہت سے `NaN` (*Not a Number*) اقدار ملتی۔ اس کی وجہ یہ ہے کہ `additional_items` سیریز میں انڈیکس پوائنٹس کے لیے کچھ اقدار غائب ہیں، اور کسی بھی چیز میں `NaN` شامل کرنے سے نتیجہ `NaN` ہوتا ہے۔ اس لیے ہمیں جمع کرتے وقت `fill_value` پیرامیٹر کی وضاحت کرنے کی ضرورت ہے۔
> **نوٹ** کہ ہم سادہ سینٹیکس `total_items+additional_items` استعمال نہیں کر رہے ہیں۔ اگر ہم ایسا کرتے، تو ہمیں نتیجہ میں بہت سے `NaN` (*Not a Number*) اقدار ملتی۔ اس کی وجہ یہ ہے کہ `additional_items` سیریز میں انڈیکس پوائنٹس کے لیے کچھ اقدار غائب ہیں، اور کسی بھی چیز میں `NaN` شامل کرنے سے نتیجہ `NaN` ہوتا ہے۔ اس لیے ہمیں جمع کرتے وقت `fill_value` پیرامیٹر کی وضاحت کرنے کی ضرورت ہوتی ہے۔
ٹائم سیریز کے ساتھ، ہم مختلف وقت کے وقفوں کے ساتھ سیریز کو **دوبارہ نمونہ** بھی بنا سکتے ہیں۔ مثال کے طور پر، فرض کریں کہ ہم ماہانہ اوسط فروخت کا حجم شمار کرنا چاہتے ہیں۔ ہم درج ذیل کوڈ استعمال کر سکتے ہیں:
ٹائم سیریز کے ساتھ، ہم مختلف وقت کے وقفوں کے ساتھ سیریز کو **دوبارہ نمونہ** بنا سکتے ہیں۔ مثال کے طور پر، فرض کریں کہ ہم ماہانہ اوسط فروخت کا حجم شمار کرنا چاہتے ہیں۔ ہم درج ذیل کوڈ استعمال کر سکتے ہیں:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![ماہانہ ٹائم سیریز اوسط](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![ماہانہ ٹائم سیریز اوسط](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ur.png)
### ڈیٹا فریم
@ -109,7 +109,7 @@ df = pd.DataFrame([a,b])
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
ہم سیریز کو کالم کے طور پر بھی استعمال کر سکتے ہیں، اور لغت کے ذریعے کالم کے ناموں کی وضاحت کر سکتے ہیں:
ہم سیریز کو کالم کے طور پر بھی استعمال کر سکتے ہیں، اور لغت کا استعمال کرتے ہوئے کالم کے نام بتا سکتے ہیں:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -127,25 +127,25 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**نوٹ** کہ ہم پچھلے ٹیبل کو ٹرانسپوز کر کے بھی یہ ٹیبل لے آ سکتے ہیں، جیسے کہ لکھ کر
**نوٹ** کہ ہم اس ٹیبل کی ترتیب کو پچھلے ٹیبل کو ٹرانسپوز کر کے بھی حاصل کر سکتے ہیں، جیسے کہ لکھ کر
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
یہاں `.T` ڈیٹا فریم کو ٹرانسپوز کرنے کا آپریشن ہے، یعنی قطاروں اور کالموں کو تبدیل کرنا، اور `rename` آپریشن ہمیں کالموں کا نام تبدیل کرنے کی اجازت دیتا ہے تاکہ پچھلی مثال سے میل کھا سکے۔
یہاں `.T` ڈیٹا فریم کو ٹرانسپوز کرنے کا آپریشن ہے، یعنی قطاروں اور کالموں کو تبدیل کرنا، اور `rename` آپریشن ہمیں کالموں کو پچھلی مثال سے ملانے کے لیے نام تبدیل کرنے کی اجازت دیتا ہے۔
یہاں ڈیٹا فریمز پر انجام دی جانے والی چند اہم ترین آپریشنز ہیں:
یہاں چند اہم ترین آپریشنز ہیں جو ہم ڈیٹا فریمز پر انجام دے سکتے ہیں:
**کالم کا انتخاب**۔ ہم انفرادی کالمز کو `df['A']` لکھ کر منتخب کر سکتے ہیں - یہ آپریشن ایک سیریز واپس کرتا ہے۔ ہم کالمز کے ایک ذیلی سیٹ کو دوسرے ڈیٹا فریم میں منتخب کر سکتے ہیں `df[['B','A']]` لکھ کر - یہ ایک اور ڈیٹا فریم واپس کرتا ہے۔
**فلٹرنگ** صرف مخصوص قطاروں کو معیار کے مطابق۔ مثال کے طور پر، صرف ان قطاروں کو چھوڑنے کے لیے جن میں کالم `A` 5 سے زیادہ ہو، ہم لکھ سکتے ہیں `df[df['A']>5]`۔
> **نوٹ**: فلٹرنگ کا کام کرنے کا طریقہ درج ذیل ہے۔ اظہار `df['A']<5` ایک بولین سیریز واپس کرتا ہے، جو اس بات کی نشاندہی کرتا ہے کہ آیا اظہار ہر عنصر کے لیے `True` یا `False` ہے۔ جب بولین سیریز کو انڈیکس کے طور پر استعمال کیا جاتا ہے، تو یہ ڈیٹا فریم میں قطاروں کا ذیلی سیٹ واپس کرتا ہے۔ اس لیے کسی بھی صوابدیدی پائتھون بولین اظہار کا استعمال ممکن نہیں ہے، مثال کے طور پر، لکھنا `df[df['A']>5 and df['A']<7]` غلط ہوگا۔ اس کے بجائے، آپ کو بولین سیریز پر خاص `&` آپریشن استعمال کرنا چاہیے، لکھ کر `df[(df['A']>5) & (df['A']<7)]` (*یہاں بریکٹس اہم ہیں*)۔
> **نوٹ**: فلٹرنگ کا کام کرنے کا طریقہ درج ذیل ہے۔ اظہار `df['A']<5` ایک بولین سیریز واپس کرتا ہے، جو ظاہر کرتا ہے کہ آیا اظہار اصل سیریز `df['A']` کے ہر عنصر کے لیے `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'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
@ -178,9 +178,9 @@ df['LenB'] = df['B'].apply(len)
df.iloc[:5]
```
**گروپنگ** اکثر *پیوٹ ٹیبلز* جیسا نتیجہ حاصل کرنے کے لیے استعمال ہوتی ہے۔ فرض کریں کہ ہم `LenB` کے دیے گئے نمبر کے لیے کالم `A` کی اوسط قدر کا حساب لگانا چاہتے ہیں۔ پھر ہم اپنے ڈیٹا فریم کو `LenB` کے ذریعے گروپ کر سکتے ہیں، اور `mean` کال کر سکتے ہیں:
**گروپنگ** اکثر *پیوٹ ٹیبلز* جیسا نتیجہ حاصل کرنے کے لیے استعمال ہوتی ہے جیسا کہ ایکسل میں۔ فرض کریں کہ ہم `LenB` کی دی گئی تعداد کے لیے کالم `A` کی اوسط قدر کا حساب لگانا چاہتے ہیں۔ پھر ہم اپنے ڈیٹا فریم کو `LenB` کے ذریعے گروپ کر سکتے ہیں، اور `mean` کال کر سکتے ہیں:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
اگر ہمیں گروپ میں اوسط اور عناصر کی تعداد کا حساب لگانے کی ضرورت ہو، تو ہم زیادہ پیچیدہ `aggregate` فنکشن استعمال کر سکتے ہیں:
```python
@ -199,67 +199,67 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### ڈیٹا حاصل کرنا
ہم نے دیکھا کہ Python آبجیکٹس سے Series اور DataFrames بنانا کتنا آسان ہے۔ تاہم، ڈیٹا عام طور پر ٹیکسٹ فائل یا ایکسل ٹیبل کی شکل میں آتا ہے۔ خوش قسمتی سے، Pandas ہمیں ڈسک سے ڈیٹا لوڈ کرنے کا ایک آسان طریقہ فراہم کرتا ہے۔ مثال کے طور پر، CSV فائل پڑھنا اتنا ہی آسان ہے:
ہم نے دیکھا کہ Python اشیاء سے Series اور DataFrames بنانا کتنا آسان ہے۔ تاہم، ڈیٹا عام طور پر ٹیکسٹ فائل یا Excel ٹیبل کی شکل میں آتا ہے۔ خوش قسمتی سے، Pandas ہمیں ڈسک سے ڈیٹا لوڈ کرنے کا ایک آسان طریقہ فراہم کرتا ہے۔ مثال کے طور پر، CSV فائل پڑھنا اتنا ہی آسان ہے:
```python
df = pd.read_csv('file.csv')
```
ہم ڈیٹا لوڈ کرنے کی مزید مثالیں دیکھیں گے، بشمول اسے بیرونی ویب سائٹس سے حاصل کرنا، "چیلنج" سیکشن میں۔
ہم ڈیٹا لوڈ کرنے کی مزید مثالیں دیکھیں گے، بشمول اسے بیرونی ویب سائٹس سے حاصل کرنا، "Challenge" سیکشن میں۔
### پرنٹنگ اور پلاٹنگ
### ڈیٹا کی پرنٹنگ اور گراف بنانا
ایک ڈیٹا سائنٹسٹ کو اکثر ڈیٹا کو ایکسپلور کرنا پڑتا ہے، اس لیے اسے ویژولائز کرنے کے قابل ہونا ضروری ہے۔ جب DataFrame بڑا ہو، تو اکثر ہم صرف یہ یقینی بنانا چاہتے ہیں کہ ہم سب کچھ صحیح طریقے سے کر رہے ہیں، اور اس کے لیے ابتدائی چند قطاریں پرنٹ کر لیتے ہیں۔ یہ `df.head()` کال کر کے کیا جا سکتا ہے۔ اگر آپ اسے Jupyter Notebook سے چلا رہے ہیں، تو یہ DataFrame کو ایک خوبصورت ٹیبلر فارم میں پرنٹ کرے گا۔
ایک Data Scientist کو اکثر ڈیٹا کا تجزیہ کرنا پڑتا ہے، اس لیے اسے بصری طور پر دیکھنا ضروری ہے۔ جب DataFrame بڑا ہو، تو اکثر ہم صرف یہ یقینی بنانا چاہتے ہیں کہ ہم سب کچھ صحیح طریقے سے کر رہے ہیں، اور اس کے لیے ابتدائی چند قطاریں پرنٹ کرتے ہیں۔ یہ `df.head()` کال کرکے کیا جا سکتا ہے۔ اگر آپ اسے Jupyter Notebook سے چلا رہے ہیں، تو یہ DataFrame کو ایک خوبصورت ٹیبل کی شکل میں پرنٹ کرے گا۔
ہم نے `plot` فنکشن کا استعمال بھی دیکھا ہے تاکہ کچھ کالمز کو ویژولائز کیا جا سکے۔ اگرچہ `plot` بہت سے کاموں کے لیے مفید ہے اور `kind=` پیرامیٹر کے ذریعے مختلف قسم کے گرافز کو سپورٹ کرتا ہے، آپ ہمیشہ کچھ زیادہ پیچیدہ چیزوں کو پلاٹ کرنے کے لیے raw `matplotlib` لائبریری استعمال کر سکتے ہیں۔ ہم ڈیٹا ویژولائزیشن کو الگ کورس کے اسباق میں تفصیل سے کور کریں گے۔
ہم نے `plot` فنکشن کا استعمال بھی دیکھا ہے تاکہ کچھ کالمز کو بصری طور پر دکھایا جا سکے۔ اگرچہ `plot` بہت سے کاموں کے لیے مفید ہے اور `kind=` پیرامیٹر کے ذریعے مختلف قسم کے گرافز کو سپورٹ کرتا ہے، آپ ہمیشہ `matplotlib` لائبریری کا استعمال کرکے مزید پیچیدہ گراف بنا سکتے ہیں۔ ہم ڈیٹا کی بصری نمائندگی کو الگ کورس کے اسباق میں تفصیل سے کور کریں گے۔
یہ جائزہ Pandas کے سب سے اہم تصورات کا احاطہ کرتا ہے، تاہم، یہ لائبریری بہت وسیع ہے، اور آپ اس کے ساتھ جو کچھ کر سکتے ہیں اس کی کوئی حد نہیں! آئیے اب اس علم کو ایک مخصوص مسئلہ حل کرنے کے لیے استعمال کریں۔
یہ جائزہ Pandas کے سب سے اہم تصورات کو کور کرتا ہے، تاہم، یہ لائبریری بہت وسیع ہے، اور آپ اس کے ساتھ جو کچھ کر سکتے ہیں اس کی کوئی حد نہیں ہے! آئیے اب اس علم کو مخصوص مسائل کے حل کے لیے استعمال کریں۔
## 🚀 چیلنج 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 Repository](https://github.com/CSSEGISandData/COVID-19) میں دستیاب ہے۔
چونکہ ہم یہ دکھانا چاہتے ہیں کہ ڈیٹا کے ساتھ کیسے کام کیا جائے، ہم آپ کو دعوت دیتے ہیں کہ [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) کھولیں اور اسے اوپر سے نیچے تک پڑھیں۔ آپ سیلز کو چلا سکتے ہیں اور آخر میں ہمارے چھوڑے گئے کچھ چیلنجز کو حل کر سکتے ہیں۔
چونکہ ہم یہ دکھانا چاہتے ہیں کہ ڈیٹا کے ساتھ کیسے کام کیا جائے، ہم آپ کو دعوت دیتے ہیں کہ [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) کھولیں اور اسے شروع سے آخر تک پڑھیں۔ آپ سیلز کو چلا سکتے ہیں اور آخر میں دیے گئے کچھ چیلنجز کو حل کر سکتے ہیں۔
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ur.png)
> اگر آپ کو 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) میں 7000 سے زیادہ (لکھنے کے وقت) COVID پر مقالے دستیاب ہیں، جن میں میٹا ڈیٹا اور خلاصے شامل ہیں (اور ان میں سے تقریباً نصف کے لیے مکمل متن بھی فراہم کیا گیا ہے)۔
اس ڈیٹاسیٹ کا تجزیہ کرنے کی ایک مکمل مثال [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/) میں بیان کی گئی ہے۔ ہم اس تجزیے کا ایک آسان ورژن پر بات کریں گے۔
> **نوٹ**: ہم اس ریپوزٹری کے حصے کے طور پر ڈیٹاسیٹ کی کاپی فراہم نہیں کرتے۔ آپ کو پہلے [`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**: ہم اس ریپوزٹری کے حصے کے طور پر ڈیٹا سیٹ کی کاپی فراہم نہیں کرتے۔ آپ کو پہلے [`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) ڈیٹا سیٹ ڈاؤن لوڈ کر سکتے ہیں، لیکن اس میں میٹا ڈیٹا فائل کے علاوہ تمام مکمل متن شامل ہوں گے۔
[`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) کھولیں اور اسے اوپر سے نیچے تک پڑھیں۔ آپ سیلز کو چلا سکتے ہیں اور آخر میں ہمارے چھوڑے گئے کچھ چیلنجز کو حل کر سکتے ہیں۔
[`notebook-papers.ipynb`](notebook-papers.ipynb) کھولیں اور اسے شروع سے آخر تک پڑھیں۔ آپ سیلز کو چلا سکتے ہیں اور آخر میں دیے گئے کچھ چیلنجز کو حل کر سکتے ہیں۔
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ur.png)
## تصویری ڈیٹا کی پروسیسنگ
حال ہی میں، بہت طاقتور 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/) میں ہم انسٹاگرام تصاویر کا تجزیہ کرتے ہیں، یہ سمجھنے کی کوشش کرتے ہیں کہ کون سی چیز لوگوں کو کسی تصویر کو زیادہ لائکس دینے پر مجبور کرتی ہے۔ ہم پہلے [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 کو گہرائی سے سیکھنا شاید ایک اچھا خیال ہے!
## [لیکچر کے بعد کا کوئز](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -269,12 +269,12 @@ df = pd.read_csv('file.csv')
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**آن لائن وسائل**
* Pandas کا آفیشل [10 منٹ کا ٹیوٹوریل](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Pandas Visualization](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 Visualization پر دستاویزات](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](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) پر لرننگ پاتھ
* [Python کے ساتھ اپنے پہلے قدم اٹھائیں](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn پر لرننگ پاتھ
## اسائنمنٹ

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T23:33:32+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:51:08+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "vi"
}
@ -13,14 +13,14 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| Làm việc với Python - _Sketchnote của [@nitya](https://twitter.com/nitya)_ |
[![Video Giới thiệu](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![Video Giới thiệu](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.vi.png)](https://youtu.be/dZjWOGbsN4Y)
Mặc dù cơ sở dữ liệu cung cấp cách lưu trữ dữ liệu và truy vấn chúng rất hiệu quả bằng ngôn ngữ truy vấn, cách linh hoạt nhất để xử lý dữ liệu là viết chương trình của riêng bạn để thao tác dữ liệu. Trong nhiều trường hợp, việc thực hiện truy vấn cơ sở dữ liệu sẽ hiệu quả hơn. Tuy nhiên, trong một số trường hợp khi cần xử lý dữ liệu phức tạp hơn, điều này không thể thực hiện dễ dàng bằng SQL.
Xử lý dữ liệu có thể được lập trình bằng bất kỳ ngôn ngữ lập trình nào, nhưng có một số ngôn ngữ ở mức cao hơn khi làm việc với dữ liệu. Các nhà khoa học dữ liệu thường ưu tiên một trong các ngôn ngữ sau:
Xử lý dữ liệu có thể được lập trình bằng bất kỳ ngôn ngữ lập trình nào, nhưng có một số ngôn ngữ ở cấp độ cao hơn khi làm việc với dữ liệu. Các nhà khoa học dữ liệu thường ưu tiên một trong các ngôn ngữ sau:
* **[Python](https://www.python.org/)**, một ngôn ngữ lập trình đa mục đích, thường được coi là một trong những lựa chọn tốt nhất cho người mới bắt đầu nhờ sự đơn giản của nó. Python có rất nhiều thư viện bổ sung giúp bạn giải quyết nhiều vấn đề thực tế, chẳng hạn như trích xuất dữ liệu từ tệp ZIP hoặc chuyển đổi hình ảnh sang thang độ xám. Ngoài khoa học dữ liệu, Python cũng thường được sử dụng trong phát triển web.
* **[R](https://www.r-project.org/)** là một công cụ truyền thống được phát triển với mục đích xử lý dữ liệu thống kê. Nó cũng chứa một kho thư viện lớn (CRAN), làm cho nó trở thành một lựa chọn tốt cho xử lý dữ liệu. Tuy nhiên, R không phải là ngôn ngữ lập trình đa mục đích và hiếm khi được sử dụng ngoài lĩnh vực khoa học dữ liệu.
* **[Julia](https://julialang.org/)** là một ngôn ngữ khác được phát triển đặc biệt cho khoa học dữ liệu. Nó được thiết kế để cung cấp hiệu suất tốt hơn Python, làm cho nó trở thành công cụ tuyệt vời cho các thí nghiệm khoa học.
* **[R](https://www.r-project.org/)** là một công cụ truyền thống được phát triển với mục đích xử lý dữ liệu thống kê. Nó cũng chứa một kho thư viện lớn (CRAN), làm cho nó trở thành một lựa chọn tốt để xử lý dữ liệu. Tuy nhiên, R không phải là ngôn ngữ lập trình đa mục đích và hiếm khi được sử dụng ngoài lĩnh vực khoa học dữ liệu.
* **[Julia](https://julialang.org/)** là một ngôn ngữ khác được phát triển đặc biệt cho khoa học dữ liệu. Nó được thiết kế để cung cấp hiệu suất tốt hơn Python, làm cho nó trở thành một công cụ tuyệt vời cho các thí nghiệm khoa học.
Trong bài học này, chúng ta sẽ tập trung vào việc sử dụng Python để xử lý dữ liệu đơn giản. Chúng ta sẽ giả định rằng bạn đã quen thuộc cơ bản với ngôn ngữ này. Nếu bạn muốn tìm hiểu sâu hơn về Python, bạn có thể tham khảo một trong các tài nguyên sau:
@ -29,23 +29,23 @@ Trong bài học này, chúng ta sẽ tập trung vào việc sử dụng Python
Dữ liệu có thể xuất hiện dưới nhiều dạng. Trong bài học này, chúng ta sẽ xem xét ba dạng dữ liệu - **dữ liệu dạng bảng**, **văn bản****hình ảnh**.
Chúng ta sẽ tập trung vào một vài ví dụ về xử lý dữ liệu, thay vì cung cấp cái nhìn tổng quan đầy đủ về tất cả các thư viện liên quan. Điều này sẽ giúp bạn hiểu được những gì có thể làm được và biết cách tìm giải pháp cho vấn đề của mình khi cần.
Chúng ta sẽ tập trung vào một vài ví dụ về xử lý dữ liệu, thay vì cung cấp cho bạn cái nhìn tổng quan đầy đủ về tất cả các thư viện liên quan. Điều này sẽ giúp bạn hiểu được những gì có thể làm được và để lại cho bạn sự hiểu biết về nơi tìm giải pháp cho các vấn đề của mình khi cần.
> **Lời khuyên hữu ích nhất**. Khi bạn cần thực hiện một thao tác nào đó trên dữ liệu mà bạn không biết cách làm, hãy thử tìm kiếm trên internet. [Stackoverflow](https://stackoverflow.com/) thường chứa rất nhiều mẫu mã hữu ích bằng Python cho nhiều tác vụ điển hình.
## [Câu hỏi trước bài học](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Câu hỏi trước bài giảng](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Dữ liệu dạng bảng và Dataframes
Bạn đã gặp dữ liệu dạng bảng khi chúng ta nói về cơ sở dữ liệu quan hệ. Khi bạn có nhiều dữ liệu và nó được chứa trong nhiều bảng liên kết khác nhau, việc sử dụng SQL để làm việc với nó chắc chắn là hợp lý. Tuy nhiên, có nhiều trường hợp khi chúng ta có một bảng dữ liệu và cần tìm hiểu **sự phân bố** hoặc **mối tương quan** giữa các giá trị, v.v. Trong khoa học dữ liệu, có rất nhiều trường hợp chúng ta cần thực hiện một số chuyển đổi dữ liệu ban đầu, sau đó là trực quan hóa. Cả hai bước này đều có thể dễ dàng thực hiện bằng Python.
Bạn đã gặp dữ liệu dạng bảng khi chúng ta nói về cơ sở dữ liệu quan hệ. Khi bạn có nhiều dữ liệu và nó được chứa trong nhiều bảng liên kết khác nhau, việc sử dụng SQL để làm việc với nó chắc chắn là hợp lý. Tuy nhiên, có nhiều trường hợp khi chúng ta có một bảng dữ liệu và cần tìm hiểu hoặc có cái nhìn sâu sắc về dữ liệu này, chẳng hạn như phân phối, mối tương quan giữa các giá trị, v.v. Trong khoa học dữ liệu, có rất nhiều trường hợp chúng ta cần thực hiện một số chuyển đổi dữ liệu ban đầu, sau đó là trực quan hóa. Cả hai bước này đều có thể dễ dàng thực hiện bằng Python.
Có hai thư viện hữu ích nhất trong Python giúp bạn xử lý dữ liệu dạng bảng:
* **[Pandas](https://pandas.pydata.org/)** cho phép bạn thao tác với **Dataframes**, tương tự như các bảng quan hệ. Bạn có thể có các cột được đặt tên và thực hiện các thao tác khác nhau trên hàng, cột và toàn bộ dataframe.
* **[Numpy](https://numpy.org/)** là một thư viện để làm việc với **tensors**, tức là các **mảng** đa chiều. Mảng có các giá trị cùng kiểu dữ liệu cơ bản và đơn giản hơn dataframe, nhưng nó cung cấp nhiều phép toán toán học hơn và tạo ít chi phí hơn.
* **[Numpy](https://numpy.org/)** là một thư viện để làm việc với **tensors**, tức là các **mảng** đa chiều. Mảng có các giá trị cùng loại cơ bản và đơn giản hơn dataframe, nhưng nó cung cấp nhiều phép toán toán học hơn và tạo ít chi phí hơn.
Ngoài ra còn có một vài thư viện khác mà bạn nên biết:
* **[Matplotlib](https://matplotlib.org/)** là một thư viện được sử dụng để trực quan hóa dữ liệu và vẽ đồ thị
* **[SciPy](https://www.scipy.org/)** là một thư viện với một số chức năng khoa học bổ sung. Chúng ta đã gặp thư viện này khi nói về xác suất và thống kê
* **[SciPy](https://www.scipy.org/)** là một thư viện với một số hàm khoa học bổ sung. Chúng ta đã gặp thư viện này khi nói về xác suất và thống kê
Dưới đây là một đoạn mã mà bạn thường sử dụng để nhập các thư viện này vào đầu chương trình Python của mình:
```python
@ -59,9 +59,9 @@ Pandas tập trung vào một vài khái niệm cơ bản.
### Series
**Series** là một chuỗi các giá trị, tương tự như danh sách hoặc mảng numpy. Điểm khác biệt chính là series cũng có một **index**, và khi chúng ta thao tác trên series (ví dụ: cộng chúng), index sẽ được tính đến. Index có thể đơn giản như số hàng nguyên (đây là index được sử dụng mặc định khi tạo series từ danh sách hoặc mảng), hoặc nó có thể có cấu trúc phức tạp, chẳng hạn như khoảng thời gian.
**Series** là một chuỗi các giá trị, tương tự như danh sách hoặc mảng numpy. Điểm khác biệt chính là series cũng có một **index**, và khi chúng ta thao tác trên series (ví dụ: cộng chúng), index được tính đến. Index có thể đơn giản như số hàng nguyên (đây là index được sử dụng mặc định khi tạo series từ danh sách hoặc mảng), hoặc nó có thể có cấu trúc phức tạp, chẳng hạn như khoảng thời gian.
> **Lưu ý**: Có một số mã Pandas giới thiệu trong notebook đi kèm [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Chúng tôi chỉ phác thảo một số ví dụ ở đây, và bạn chắc chắn được khuyến khích kiểm tra toàn bộ notebook.
> **Lưu ý**: Có một số mã Pandas giới thiệu trong notebook đi kèm [`notebook.ipynb`](notebook.ipynb). Chúng tôi chỉ phác thảo một số ví dụ ở đây, và bạn chắc chắn được khuyến khích kiểm tra toàn bộ notebook.
Hãy xem xét một ví dụ: chúng ta muốn phân tích doanh số bán hàng của cửa hàng kem. Hãy tạo một series số lượng bán hàng (số lượng sản phẩm bán được mỗi ngày) trong một khoảng thời gian:
@ -73,7 +73,7 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Biểu đồ chuỗi thời gian](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![Biểu đồ chuỗi thời gian](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.vi.png)
Bây giờ giả sử rằng mỗi tuần chúng ta tổ chức một bữa tiệc cho bạn bè và lấy thêm 10 hộp kem cho bữa tiệc. Chúng ta có thể tạo một series khác, được index theo tuần, để minh họa điều đó:
```python
@ -84,7 +84,7 @@ Khi chúng ta cộng hai series lại với nhau, chúng ta sẽ có tổng số
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Biểu đồ chuỗi thời gian](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![Biểu đồ chuỗi thời gian](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.vi.png)
> **Lưu ý** rằng chúng ta không sử dụng cú pháp đơn giản `total_items+additional_items`. Nếu làm vậy, chúng ta sẽ nhận được rất nhiều giá trị `NaN` (*Not a Number*) trong series kết quả. Điều này là do có các giá trị bị thiếu cho một số điểm index trong series `additional_items`, và việc cộng `NaN` với bất kỳ giá trị nào sẽ dẫn đến `NaN`. Do đó, chúng ta cần chỉ định tham số `fill_value` trong quá trình cộng.
@ -93,7 +93,7 @@ Với chuỗi thời gian, chúng ta cũng có thể **resample** series với c
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Biểu đồ trung bình chuỗi thời gian hàng tháng](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![Biểu đồ trung bình chuỗi thời gian hàng tháng](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.vi.png)
### DataFrame
@ -113,7 +113,7 @@ Chúng ta cũng có thể sử dụng Series làm cột và chỉ định tên c
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Điều này sẽ cho chúng ta một bảng như sau:
Điều này sẽ tạo ra một bảng như sau:
| | A | B |
| --- | --- | ------ |
@ -180,7 +180,7 @@ df.iloc[:5]
**Nhóm** thường được sử dụng để có kết quả tương tự như *bảng pivot* trong Excel. Giả sử chúng ta muốn tính giá trị trung bình của cột `A` cho mỗi số `LenB` nhất định. Sau đó, chúng ta có thể nhóm DataFrame của mình theo `LenB` và gọi `mean`:
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
Nếu chúng ta cần tính giá trị trung bình và số lượng phần tử trong nhóm, thì chúng ta có thể sử dụng hàm `aggregate` phức tạp hơn:
```python
@ -199,67 +199,67 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### Lấy Dữ Liệu
Chúng ta đã thấy việc tạo Series và DataFrames từ các đối tượng Python dễ dàng như thế nào. Tuy nhiên, dữ liệu thường xuất hiện dưới dạng tệp văn bản hoặc bảng Excel. May mắn thay, Pandas cung cấp cho chúng ta một cách đơn giản để tải dữ liệu từ ổ đĩa. Ví dụ, đọc tệp CSV đơn giản như sau:
Chúng ta đã thấy việc tạo Series và DataFrames từ các đối tượng Python dễ dàng như thế nào. Tuy nhiên, dữ liệu thường xuất hiện dưới dạng tệp văn bản hoặc bảng Excel. May mắn thay, Pandas cung cấp cho chúng ta một cách đơn giản để tải dữ liệu từ ổ đĩa. Ví dụ, việc đọc tệp CSV đơn giản như sau:
```python
df = pd.read_csv('file.csv')
```
```
Chúng ta sẽ xem thêm các ví dụ về việc tải dữ liệu, bao gồm cả việc lấy dữ liệu từ các trang web bên ngoài, trong phần "Thử thách".
### In và Vẽ Biểu Đồ
Một Nhà Khoa Học Dữ Liệu thường phải khám phá dữ liệu, vì vậy việc có thể trực quan hóa dữ liệu là rất quan trọng. Khi DataFrame lớn, nhiều khi chúng ta chỉ muốn đảm bảo rằng mình đang làm đúng bằng cách in ra vài dòng đầu tiên. Điều này có thể thực hiện bằng cách gọi `df.head()`. Nếu bạn chạy nó từ Jupyter Notebook, nó sẽ in DataFrame dưới dạng bảng rất đẹp.
Một nhà khoa học dữ liệu thường phải khám phá dữ liệu, vì vậy việc có thể trực quan hóa dữ liệu là rất quan trọng. Khi DataFrame lớn, nhiều lần chúng ta chỉ muốn đảm bảo rằng mọi thứ đang được thực hiện đúng bằng cách in ra vài dòng đầu tiên. Điều này có thể thực hiện bằng cách gọi `df.head()`. Nếu bạn chạy nó từ Jupyter Notebook, nó sẽ in DataFrame dưới dạng bảng đẹp mắt.
Chúng ta cũng đã thấy cách sử dụng hàm `plot` để trực quan hóa một số cột. Mặc dù `plot` rất hữu ích cho nhiều tác vụ và hỗ trợ nhiều loại biểu đồ khác nhau thông qua tham số `kind=`, bạn luôn có thể sử dụng thư viện `matplotlib` để vẽ những biểu đồ phức tạp hơn. Chúng ta sẽ tìm hiểu chi tiết về trực quan hóa dữ liệu trong các bài học khác của khóa học.
Chúng ta cũng đã thấy cách sử dụng hàm `plot` để trực quan hóa một số cột. Mặc dù `plot` rất hữu ích cho nhiều nhiệm vụ và hỗ trợ nhiều loại biểu đồ khác nhau thông qua tham số `kind=`, bạn luôn có thể sử dụng thư viện `matplotlib` để vẽ những biểu đồ phức tạp hơn. Chúng ta sẽ tìm hiểu chi tiết về trực quan hóa dữ liệu trong các bài học riêng của khóa học.
Tổng quan này bao gồm các khái niệm quan trọng nhất của Pandas, tuy nhiên, thư viện này rất phong phú và không có giới hạn cho những gì bạn có thể làm với nó! Bây giờ, hãy áp dụng kiến thức này để giải quyết một vấn đề cụ thể.
Tổng quan này bao gồm các khái niệm quan trọng nhất của Pandas, tuy nhiên, thư viện này rất phong phú và không có giới hạn nào cho những gì bạn có thể làm với nó! Bây giờ hãy áp dụng kiến thức này để giải quyết các vấn đề cụ thể.
## 🚀 Thử thách 1: Phân Tích Sự Lây Lan của COVID
## 🚀 Thử thách 1: Phân tích Sự Lây Lan của COVID
Vấn đề đầu tiên chúng ta sẽ tập trung là mô hình hóa sự lây lan của dịch COVID-19. Để làm điều đó, chúng ta sẽ sử dụng dữ liệu về số lượng người bị nhiễm ở các quốc gia khác nhau, được cung cấp bởi [Trung tâm Khoa học Hệ thống và Kỹ thuật](https://systems.jhu.edu/) (CSSE) tại [Đại học Johns Hopkins](https://jhu.edu/). Bộ dữ liệu có sẵn tại [Kho lưu trữ GitHub này](https://github.com/CSSEGISandData/COVID-19).
Vì chúng ta muốn minh họa cách xử lý dữ liệu, hãy mở [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) và đọc từ đầu đến cuối. Bạn cũng có thể thực thi các ô lệnh và thực hiện một số thử thách mà chúng tôi đã để lại ở cuối.
Vì chúng ta muốn minh họa cách xử lý dữ liệu, hãy mở [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) và đọc từ đầu đến cuối. Bạn cũng có thể thực thi các ô lệnh và thực hiện một số thử thách mà chúng tôi đã để lại cho bạn ở cuối.
![COVID Spread](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.vi.png)
> Nếu bạn không biết cách chạy mã trong Jupyter Notebook, hãy xem [bài viết này](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Làm Việc Với Dữ Liệu Không Cấu Trúc
## Làm Việc Với Dữ Liệu Không Có Cấu Trúc
Mặc dù dữ liệu thường xuất hiện dưới dạng bảng, trong một số trường hợp, chúng ta cần xử lý dữ liệu ít cấu trúc hơn, ví dụ như văn bản hoặc hình ảnh. Trong trường hợp này, để áp dụng các kỹ thuật xử lý dữ liệu mà chúng ta đã thấy ở trên, chúng ta cần phải **trích xuất** dữ liệu có cấu trúc. Dưới đây là một vài ví dụ:
Mặc dù dữ liệu thường xuất hiện dưới dạng bảng, trong một số trường hợp chúng ta cần xử lý dữ liệu ít cấu trúc hơn, ví dụ như văn bản hoặc hình ảnh. Trong trường hợp này, để áp dụng các kỹ thuật xử lý dữ liệu mà chúng ta đã thấy ở trên, chúng ta cần **trích xuất** dữ liệu có cấu trúc. Dưới đây là một vài ví dụ:
* Trích xuất từ khóa từ văn bản và xem tần suất xuất hiện của các từ khóa đó
* Sử dụng mạng nơ-ron để trích xuất thông tin về các đối tượng trong hình ảnh
* Lấy thông tin về cảm xúc của con người từ luồng video camera
* Thu thập thông tin về cảm xúc của con người từ luồng video camera
## 🚀 Thử thách 2: Phân Tích Các Bài Báo Về COVID
## 🚀 Thử thách 2: Phân tích Các Bài Báo về COVID
Trong thử thách này, chúng ta sẽ tiếp tục với chủ đề đại dịch COVID và tập trung vào việc xử lý các bài báo khoa học về chủ đề này. Có một [Bộ Dữ Liệu CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) với hơn 7000 bài báo (tại thời điểm viết) về COVID, có sẵn với siêu dữ liệu và tóm tắt (và khoảng một nửa trong số đó cũng có toàn văn).
Trong thử thách này, chúng ta sẽ tiếp tục với chủ đề đại dịch COVID và tập trung vào việc xử lý các bài báo khoa học về chủ đề này. Có [Bộ dữ liệu CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) với hơn 7000 bài báo (tại thời điểm viết) về COVID, có sẵn với siêu dữ liệu và tóm tắt (và khoảng một nửa trong số đó cũng có toàn văn).
Một ví dụ đầy đủ về phân tích bộ dữ liệu này bằng cách sử dụng dịch vụ nhận thức [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) được mô tả [trong bài viết blog này](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Chúng ta sẽ thảo luận phiên bản đơn giản hóa của phân tích này.
Một ví dụ đầy đủ về việc phân tích bộ dữ liệu này bằng cách sử dụng dịch vụ nhận thức [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) được mô tả [trong bài viết blog này](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Chúng ta sẽ thảo luận phiên bản đơn giản hóa của phân tích này.
> **NOTE**: Chúng tôi không cung cấp bản sao của bộ dữ liệu như một phần của kho lưu trữ này. Bạn có thể cần tải xuống tệp [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) từ [bộ dữ liệu này trên Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Có thể cần đăng ký với Kaggle. Bạn cũng có thể tải xuống bộ dữ liệu mà không cần đăng ký [tại đây](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), nhưng nó sẽ bao gồm tất cả các văn bản đầy đủ ngoài tệp siêu dữ liệu.
Mở [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) và đọc từ đầu đến cuối. Bạn cũng có thể thực thi các ô lệnh và thực hiện một số thử thách mà chúng tôi đã để lại ở cuối.
Hãy mở [`notebook-papers.ipynb`](notebook-papers.ipynb) và đọc từ đầu đến cuối. Bạn cũng có thể thực thi các ô lệnh và thực hiện một số thử thách mà chúng tôi đã để lại cho bạn ở cuối.
![Covid Medical Treatment](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.vi.png)
## Xử Lý Dữ Liệu Hình Ảnh
Gần đây, các mô hình AI rất mạnh mẽ đã được phát triển, cho phép chúng ta hiểu được hình ảnh. Có nhiều tác vụ có thể được giải quyết bằng cách sử dụng các mạng nơ-ron được huấn luyện sẵn hoặc các dịch vụ đám mây. Một số ví dụ bao gồm:
Gần đây, các mô hình AI rất mạnh mẽ đã được phát triển, cho phép chúng ta hiểu hình ảnh. Có nhiều nhiệm vụ có thể được giải quyết bằng cách sử dụng các mạng nơ-ron đã được huấn luyện trước hoặc các dịch vụ đám mây. Một số ví dụ bao gồm:
* **Phân Loại Hình Ảnh**, giúp bạn phân loại hình ảnh vào một trong các lớp được định nghĩa trước. Bạn có thể dễ dàng huấn luyện bộ phân loại hình ảnh của riêng mình bằng các dịch vụ như [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Phát Hiện Đối Tượng** để phát hiện các đối tượng khác nhau trong hình ảnh. Các dịch vụ như [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) có thể phát hiện một số đối tượng phổ biến, và bạn có thể huấn luyện mô hình [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) để phát hiện các đối tượng cụ thể mà bạn quan tâm.
* **Phát Hiện Khuôn Mặt**, bao gồm phát hiện Tuổi, Giới tính và Cảm xúc. Điều này có thể được thực hiện thông qua [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Phân loại hình ảnh**, giúp bạn phân loại hình ảnh vào một trong các lớp đã được định nghĩa trước. Bạn có thể dễ dàng huấn luyện bộ phân loại hình ảnh của riêng mình bằng các dịch vụ như [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Phát hiện đối tượng** để phát hiện các đối tượng khác nhau trong hình ảnh. Các dịch vụ như [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) có thể phát hiện một số đối tượng phổ biến, và bạn có thể huấn luyện mô hình [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) để phát hiện một số đối tượng cụ thể mà bạn quan tâm.
* **Phát hiện khuôn mặt**, bao gồm tuổi, giới tính và cảm xúc. Điều này có thể được thực hiện thông qua [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Tất cả các dịch vụ đám mây này có thể được gọi bằng [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), và do đó có thể dễ dàng tích hợp vào quy trình khám phá dữ liệu của bạn.
Dưới đây là một số ví dụ về việc khám phá dữ liệu từ các nguồn dữ liệu hình ảnh:
* Trong bài viết blog [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), chúng tôi khám phá các bức ảnh trên Instagram, cố gắng hiểu điều gì khiến mọi người thích một bức ảnh nhiều hơn. Chúng tôi đầu tiên trích xuất càng nhiều thông tin từ hình ảnh càng tốt bằng cách sử dụng [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), và sau đó sử dụng [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) để xây dựng mô hình có thể giải thích được.
* Trong [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies), chúng tôi sử dụng [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) để trích xuất cảm xúc của mọi người trên các bức ảnh từ các sự kiện, nhằm cố gắng hiểu điều gì khiến mọi người hạnh phúc.
* Trong bài viết blog [Học Khoa Học Dữ Liệu mà Không Cần Lập Trình](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), chúng ta khám phá các bức ảnh trên Instagram, cố gắng hiểu điều gì khiến mọi người thích một bức ảnh nhiều hơn. Chúng ta đầu tiên trích xuất càng nhiều thông tin từ hình ảnh càng tốt bằng cách sử dụng [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), và sau đó sử dụng [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) để xây dựng mô hình có thể giải thích được.
* Trong [Hội Thảo Nghiên Cứu Khuôn Mặt](https://github.com/CloudAdvocacy/FaceStudies), chúng ta sử dụng [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) để trích xuất cảm xúc của mọi người trên các bức ảnh từ các sự kiện, nhằm cố gắng hiểu điều gì khiến mọi người hạnh phúc.
## Kết Luận
Dù bạn đã có dữ liệu có cấu trúc hay không cấu trúc, sử dụng Python, bạn có thể thực hiện tất cả các bước liên quan đến xử lý và hiểu dữ liệu. Đây có lẽ là cách linh hoạt nhất để xử lý dữ liệu, và đó là lý do tại sao phần lớn các nhà khoa học dữ liệu sử dụng Python như công cụ chính của họ. Học Python một cách sâu sắc có lẽ là một ý tưởng hay nếu bạn nghiêm túc với hành trình khoa học dữ liệu của mình!
Dù bạn đã có dữ liệu có cấu trúc hay không có cấu trúc, sử dụng Python bạn có thể thực hiện tất cả các bước liên quan đến xử lý và hiểu dữ liệu. Đây có lẽ là cách linh hoạt nhất để xử lý dữ liệu, và đó là lý do phần lớn các nhà khoa học dữ liệu sử dụng Python như công cụ chính của họ. Học Python một cách sâu sắc có lẽ là một ý tưởng tốt nếu bạn nghiêm túc về hành trình khoa học dữ liệu của mình!
## [Câu hỏi sau bài giảng](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -268,23 +268,23 @@ Dù bạn đã có dữ liệu có cấu trúc hay không cấu trúc, sử dụ
**Sách**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Tài Nguyên Trực Tuyến**
**Tài liệu trực tuyến**
* Hướng dẫn chính thức [10 phút với Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Tài liệu về Trực quan hóa Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Học Python**
* [Học Python một cách thú vị với Turtle Graphics và Fractals](https://github.com/shwars/pycourse)
* [Bắt đầu với Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) trên [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Học Python một cách thú vị với Đồ họa Turtle và Fractals](https://github.com/shwars/pycourse)
* [Bắt đầu học Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) trên [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Bài Tập
[Thực hiện nghiên cứu dữ liệu chi tiết hơn cho các thử thách trên](assignment.md)
[Thực hiện nghiên cứu dữ liệu chi tiết hơn cho các thử thách trên](assignment.md)
## Ghi Nhận
## Tín Dụng
Bài học này được viết với ♥️ bởi [Dmitry Soshnikov](http://soshnikov.com)
---
**Tuyên bố miễn trừ trách nhiệm**:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc sự không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "577a611517482c3ceaf76d3d8142cba9",
"translation_date": "2025-09-05T11:30:39+00:00",
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:26:30+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "zh"
}
@ -13,37 +13,37 @@ CO_OP_TRANSLATOR_METADATA:
| :-------------------------------------------------------------------------------------------------------: |
| 使用Python - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![介绍视频](../../../../2-Working-With-Data/07-python/images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y)
[![介绍视频](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.zh.png)](https://youtu.be/dZjWOGbsN4Y)
虽然数据库提供了非常高效的方式来存储数据并通过查询语言进行查询但最灵活的数据处理方式是编写自己的程序来操作数据。在许多情况下使用数据库查询可能更有效。然而当需要更复杂的数据处理时SQL可能无法轻松完成。
数据处理可以用任何编程语言编写,但有些语言在处理数据方面更高级。数据科学家通常偏好以下语言之一:
* **[Python](https://www.python.org/)** 是一种通用编程语言由于其简单性通常被认为是初学者的最佳选择之一。Python有许多额外的库可以帮助解决许多实际问题例如从ZIP压缩文件中提取数据或将图片转换为灰度。除了数据科学Python还常用于Web开发。
* **[R](https://www.r-project.org/)** 是一个传统工具箱,专为统计数据处理而开发。它包含大量的库资源CRAN使其成为数据处理的良好选择。然而R不是通用编程语言很少在数据科学领域之外使用。
* **[Python](https://www.python.org/)** 是一种通用编程语言由于其简单性通常被认为是初学者的最佳选择之一。Python有许多额外的库可以帮助解决许多实际问题例如从ZIP压缩文件中提取数据或将图片转换为灰度图像。除了数据科学Python还常用于Web开发。
* **[R](https://www.r-project.org/)** 是一个传统工具箱专为统计数据处理而开发。它包含大量的库资源CRAN使其成为数据处理的良好选择。然而R不是通用编程语言很少在数据科学领域之外使用。
* **[Julia](https://julialang.org/)** 是另一种专为数据科学开发的语言。它旨在提供比Python更好的性能是科学实验的绝佳工具。
在本课程中我们将重点使用Python进行简单的数据处理。我们假设您对该语言有基本的了解。如果您想深入学习Python可以参考以下资源之一
在本课程中我们将重点使用Python进行简单的数据处理。我们假设您对该语言有基本的了解。如果您想深入学习Python可以参考以下资源
* [通过Turtle Graphics和分形趣味学习Python](https://github.com/shwars/pycourse) - 基于GitHub的Python编程快速入门课程
* [迈出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)上的学习路径
数据可以有多种形式。在本课程中,我们将考虑三种数据形式——**表格数据**、**文本**和**图像**。
数据可以有多种形式。在本课程中,我们将讨论三种数据形式——**表格数据**、**文本**和**图像**。
我们将专注于几个数据处理的示例,而不是全面介绍所有相关库。这将使您了解主要的可能性,并帮助您在需要时找到解决问题的方法。
我们将专注于一些数据处理的示例,而不是全面介绍所有相关库。这将帮助您了解主要的可能性,并让您知道在需要时可以在哪里找到解决问题的方法。
> **最有用的建议**:当您需要对数据执行某些操作但不知道如何操作时,请尝试在互联网上搜索。[Stackoverflow](https://stackoverflow.com/)通常包含许多关于Python的典型任务的有用代码示例。
> **最有用的建议**:当您需要对数据执行某些操作但不知道如何操作时,请尝试在互联网上搜索。[Stackoverflow](https://stackoverflow.com/) 通常包含许多关于Python的典型任务的有用代码示例。
## [课前测验](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## 表格数据和数据框
当我们谈论关系型数据库时您已经接触过表格数据。当您拥有大量数据并且数据存储在许多不同的关联表中时使用SQL来处理它是非常合理的。然而在许多情况下我们有一个数据表并需要对这些数据进行一些**理解**或**洞察**,例如分布、值之间的相关性等。在数据科学中,我们经常需要对原始数据进行一些转换,然后进行可视化。这两个步骤都可以通过Python轻松完成。
在我们讨论关系型数据库时您已经接触过表格数据。当您拥有大量数据并且数据存储在许多不同的关联表中时使用SQL来处理它是非常合理的。然而在许多情况下我们有一个数据表并需要对这些数据进行一些**理解**或**洞察**,例如分布、值之间的相关性等。在数据科学中,我们经常需要对原始数据进行一些转换,然后进行可视化。这两个步骤都可以轻松使用Python完成。
Python中有两个最有用的库可以帮助您处理表格数据
* **[Pandas](https://pandas.pydata.org/)** 允许您操作所谓的**数据框Dataframes**,它类似于关系表。您可以拥有命名的列,并对行、列以及整个数据框执行各种操作。
* **[Pandas](https://pandas.pydata.org/)** 允许您操作所谓的**数据框Dataframes**,它类似于关系表。您可以拥有命名的列,并对行、列以及整个数据框执行不同的操作。
* **[Numpy](https://numpy.org/)** 是一个用于处理**张量Tensors**的库,即多维**数组Arrays**。数组的值具有相同的底层类型,它比数据框更简单,但提供了更多的数学操作,并减少了开销。
此外,还有几个其他库值得了解
此外,还有几个您应该了解的库
* **[Matplotlib](https://matplotlib.org/)** 是一个用于数据可视化和绘制图表的库
* **[SciPy](https://www.scipy.org/)** 是一个包含一些额外科学函数的库。我们在讨论概率和统计时已经接触过这个库
@ -55,16 +55,15 @@ import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
Pandas围绕几个基本概念展开
Pandas围绕几个基本概念构建
### Series序列
**Series** 是一组值的序列类似于列表或numpy数组。主要区别在于Series还有一个**索引**当我们对Series进行操作例如相加会考虑索引。索引可以简单到整数行号从列表或数组创建Series时默认使用的索引也可以具有复杂结构例如日期区间。
**Series** 是一组值类似于列表或numpy数组。主要区别在于Series还有一个**索引**当我们对Series进行操作例如相加会考虑索引。索引可以简单到整数行号从列表或数组创建Series时默认使用的索引也可以具有复杂结构例如日期区间。
> **注意**:在配套的笔记本文件[`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb)中有一些Pandas的入门代码。我们在这里仅概述一些示例您可以查看完整的笔记本文件。
举个例子:我们想分析冰淇淋店的销售情况。让我们生成一段时间内的销售数据(每天售出的商品数量)的序列:
> **注意**:在配套的笔记本文件 [`notebook.ipynb`](notebook.ipynb) 中有一些Pandas的入门代码。我们在这里仅概述一些示例您可以查看完整的笔记本文件。
举个例子:我们想分析冰淇淋店的销售情况。让我们生成一段时间内的销售数据(每天售出的商品数量):
```python
start_date = "Jan 1, 2020"
end_date = "Mar 31, 2020"
@ -73,37 +72,37 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![时间序列图](../../../../2-Working-With-Data/07-python/images/timeseries-1.png)
![时间序列图](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.zh.png)
假设每周我们都会举办一个朋友聚会并额外拿出10盒冰淇淋用于聚会。我们可以创建另一个以周为索引的序列来展示这一点:
假设每周我们都会举办一个朋友聚会并额外拿出10盒冰淇淋用于聚会。我们可以创建另一个以周为索引的Series来展示这一点:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
当我们将两个序列相加时,就得到了总数:
当我们将两个Series相加时,就得到了总数:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![时间序列图](../../../../2-Working-With-Data/07-python/images/timeseries-2.png)
![时间序列图](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.zh.png)
> **注意** 我们没有使用简单的语法 `total_items+additional_items`。如果使用这种方法,我们会在结果序列中得到许多`NaN`*Not a Number*)值。这是因为在`additional_items`序列的某些索引点上存在缺失值,而将`NaN`与任何值相加都会得到`NaN`。因此,我们需要在相加时指定`fill_value`参数。
> **注意** 我们没有使用简单的语法 `total_items+additional_items`。如果使用这种方法,我们会在结果Series中得到许多`NaN`*Not a Number*)值。这是因为在`additional_items`的某些索引点上缺少值,而将`NaN`与任何值相加都会得到`NaN`。因此,我们需要在相加时指定`fill_value`参数。
对于时间序列,我们还可以使用不同的时间间隔对序列进行**重采样**。例如,假设我们想计算每月的平均销售量可以使用以下代码:
对于时间序列,我们还可以使用不同的时间间隔对序列进行**重采样**。例如,假设我们想计算每月的平均销售量可以使用以下代码:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![月度时间序列平均值](../../../../2-Working-With-Data/07-python/images/timeseries-3.png)
![每月时间序列平均值](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.zh.png)
### DataFrame数据框
数据框本质上是具有相同索引的多个序列的集合。我们可以将几个序列组合成一个数据框:
数据框本质上是具有相同索引的多个Series的集合。我们可以将几个Series组合成一个数据框:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
这将创建如下的水平表:
这将创建如下的水平表
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
@ -127,7 +126,7 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**注意** 我们还可以通过转置前一个表格来获得这种表格布局,例如
**注意** 我们还可以通过转置前一个表格来获得这种表格布局,例如:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
@ -139,20 +138,20 @@ df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
**按条件过滤**某些行。例如,要仅保留列`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`返回一个布尔Series,指示原始Series`df['A']`中每个元素的表达式是否为`True`或`False`。当布尔Series用作索引时,它返回数据框中的行子集。因此,不能使用任意的Python布尔表达式,例如写`df[df['A']>5 and df['A']<7]`是错误的。相反,您应该使用布尔Series上的特殊`&`操作,写`df[(df['A']>5) & (df['A']<7)]`*括号在这里很重要*)。
**创建新的可计算列**。我们可以通过使用直观的表达式轻松为数据框创建新的可计算列:
```python
df['DivA'] = df['A']-df['A'].mean()
```
此示例计算列A与其平均值的偏差。这里实际发生的是我们计算了一个序列,然后将该序列分配给左侧,创建了另一个列。因此,我们不能使用与序列不兼容的任何操作,例如以下代码是错误的:
此示例计算列A与其平均值的偏差。这里实际发生的是我们计算了一个Series然后将其分配给左侧创建了另一个列。因此我们不能使用与Series不兼容的任何操作,例如以下代码是错误的:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
后一个示例虽然语法正确,但会给出错误结果,因为它将序列`B`的长度分配给列中的所有值,而不是我们想要的每个元素的长度。
后一个示例虽然语法正确,但会给出错误结果,因为它将Series`B`的长度分配给列中的所有值,而不是分配给每个元素的长度。
如果需要计算类似这样的复杂表达式,可以使用`apply`函数。最后一个示例可以写成如下:
如果我们需要计算类似这样的复杂表达式,可以使用`apply`函数。最后一个示例可以写成如下:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
@ -178,11 +177,11 @@ df['LenB'] = df['B'].apply(len)
df.iloc[:5]
```
**分组**通常用于获得类似Excel中*数据透视表*的结果。假设我们想计算列`A`的平均值,按`LenB`的每个值分组。我们可以按`LenB`分组数据框,然后调用`mean`
**分组**通常用于获得类似Excel中*数据透视表*的结果。假设我们想计算列`A`的平均值,按`LenB`的不同值分组。我们可以按`LenB`分组数据框,然后调用`mean`
```python
df.groupby(by='LenB').mean()
df.groupby(by='LenB')[['A','DivA']].mean()
```
如果我们需要计算组中的平均值和元素数量,可以使用更复杂的`aggregate`函数:
如果我们需要计算平均值和组中的元素数量,可以使用更复杂的`aggregate`函数:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -199,7 +198,7 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### 获取数据
我们已经看到如何轻松地从 Python 对象构建 Series 和 DataFrame。然而,数据通常以文本文件或 Excel 表格的形式出现。幸运的是Pandas 为我们提供了一种简单的方法来从磁盘加载数据。例如,读取 CSV 文件就像这样简单:
我们已经看到,从 Python 对象构建 Series 和 DataFrame 是多么简单。然而,数据通常以文本文件或 Excel 表格的形式出现。幸运的是Pandas 为我们提供了一种简单的方法来从磁盘加载数据。例如,读取 CSV 文件就像这样简单:
```python
df = pd.read_csv('file.csv')
```
@ -209,19 +208,19 @@ df = pd.read_csv('file.csv')
数据科学家经常需要探索数据,因此能够可视化数据非常重要。当 DataFrame 很大时,我们通常只需要打印出前几行以确保操作正确。这可以通过调用 `df.head()` 来完成。如果你在 Jupyter Notebook 中运行,它会以漂亮的表格形式打印出 DataFrame。
我们还见过使用 `plot` 函数来可视化某些列的用法。虽然 `plot` 对许多任务非常有用,并通过 `kind=` 参数支持多不同的图表类型,但你也可以使用原始的 `matplotlib` 库来绘制更复杂的图表。我们将在单独的课程中详细介绍数据可视化。
我们还见过使用 `plot` 函数来可视化某些列的用法。虽然 `plot` 对许多任务非常有用,并通过 `kind=` 参数支持多不同的图表类型,但你也可以使用原始的 `matplotlib` 库来绘制更复杂的内容。我们将在单独的课程中详细讲解数据可视化。
这个概述涵盖了 Pandas 的重要概念,但这个库非常丰富,你可以用它做无限多的事情!现在让我们应用这些知识来解决具体问题。
## 🚀 挑战 1分析 COVID 传播
我们将关注的第一个问题是 COVID-19 的流行病传播建模。为此,我们将使用由 [约翰霍普金斯大学](https://jhu.edu/) [系统科学与工程中心](https://systems.jhu.edu/) (CSSE) 提供的不同国家感染人数数据。数据集可以在 [这个 GitHub 仓库](https://github.com/CSSEGISandData/COVID-19) 中找到。
我们将关注的第一个问题是 COVID-19 的流行病传播建模。为此,我们将使用由 [约翰霍普金斯大学](https://jhu.edu/) [系统科学与工程中心](https://systems.jhu.edu/) (CSSE) 提供的不同国家感染人数数据。数据集可以在 [这个 GitHub 仓库](https://github.com/CSSEGISandData/COVID-19) 中找到。
由于我们想示如何处理数据,我们邀请你打开 [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) 并从头到尾阅读。你还可以执行单元格,并完成我们在最后为你留下的一些挑战。
由于我们想示如何处理数据,我们邀请你打开 [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) 并从头到尾阅读。你也可以执行单元格,并完成我们在最后留下的一些挑战。
![COVID 传播](../../../../2-Working-With-Data/07-python/images/covidspread.png)
![COVID 传播](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.zh.png)
> 如果你不知道如何在 Jupyter Notebook 中运行代码,查看 [这篇文章](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)。
> 如果你不知道如何在 Jupyter Notebook 中运行代码,可以查看 [这篇文章](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)。
## 处理非结构化数据
@ -229,37 +228,37 @@ df = pd.read_csv('file.csv')
* 从文本中提取关键词,并查看这些关键词出现的频率
* 使用神经网络从图片中提取有关对象的信息
* 获取视频摄像头画面中人物的情信息
* 获取视频摄像头画面中人物的情信息
## 🚀 挑战 2分析 COVID 论文
在这个挑战中,我们将继续关注 COVID 疫情的主题,重点处理关于该主题的科学论文。有一个 [CORD-19 数据集](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge),其中包含超过 7000 篇(撰写时)关于 COVID 的论文,提供了元数据和摘要(其中约一半还提供了全文)。
在这个挑战中,我们将继续讨论 COVID 疫情的主题,重点处理关于该主题的科学论文。有一个 [CORD-19 数据集](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge),其中包含超过 7000 篇(撰写时)关于 COVID 的论文,提供了元数据和摘要(其中约一半还提供了全文)。
使用 [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) 下载数据集无需注册,但它将包括所有全文以及元数据文件。
> **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) 下载数据集无需注册,但它将包括所有全文以及元数据文件。
打开 [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) 并从头到尾阅读。你还可以执行单元格,并完成我们在最后为你留下的一些挑战。
打开 [`notebook-papers.ipynb`](notebook-papers.ipynb) 并从头到尾阅读。你也可以执行单元格,并完成我们在最后留下的一些挑战。
![COVID 医疗处理](../../../../2-Working-With-Data/07-python/images/covidtreat.png)
![COVID 医疗处理](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.zh.png)
## 处理图像数据
最近,开发了非常强大的 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) 完成。
* **对象检测**,用于检测图像中的不同对象。诸如 [计算机视觉](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) 调用,因此可以轻松地集成到你的数据探索工作流中。
以下是一些从图像数据源探索数据的示例:
* 在博客文章 [如何在不编程的情况下学习数据科学](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) 提取活动照片中人物的情,以试图了解是什么让人们感到快乐。
* 在博客文章 [如何在没有编码的情况下学习数据科学](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) 中,我们探索 Instagram 照片,试图了解是什么让人们对照片点赞更多。我们首先使用 [计算机视觉](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) 构建可解释的模型。
* 在 [面部研究工作坊](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)
@ -274,7 +273,7 @@ df = pd.read_csv('file.csv')
**学习 Python**
* [通过 Turtle Graphics 和分形以有趣的方式学习 Python](https://github.com/shwars/pycourse)
* [通过 Microsoft Learn 学习路径](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) [迈出 Python 的第一步](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [迈出 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) 上的学习路径
## 作业
@ -287,4 +286,4 @@ df = pd.read_csv('file.csv')
---
**免责声明**
本文档使用AI翻译服务[Co-op Translator](https://github.com/Azure/co-op-translator)进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。原始语言的文档应被视为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。
本文档使用AI翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。
Loading…
Cancel
Save