[fa,ur,zh-CN] chore(i18n): sync translations

Sync translations with latest source changes.
Languages: Persian (Farsi) [fa], Urdu [ur], Chinese (Simplified) [zh-CN]
pull/798/head
localizeflow[bot] 2 months ago
parent 5b27f5ba7b
commit fd47b125b7

@ -96,8 +96,8 @@
"language_code": "fa" "language_code": "fa"
}, },
"2-Working-With-Data/07-python/README.md": { "2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3", "original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2025-09-06T15:24:30+00:00", "translation_date": "2026-07-17T18:53:28+00:00",
"source_file": "2-Working-With-Data/07-python/README.md", "source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "fa" "language_code": "fa"
}, },

@ -1,60 +1,62 @@
# کار با داده‌ها: پایتون و کتابخانه Pandas # کار با داده‌ها: پایتون و کتابخانهٔ پاندا
| ![طرح دستی توسط [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) | | ![نقاشی اسکچ توسط [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: | | :-------------------------------------------------------------------------------------------------------: |
| کار با پایتون - _طرح دستی توسط [@nitya](https://twitter.com/nitya)_ | | کار با پایتون - _نقاشی اسکچ توسط [@nitya](https://twitter.com/nitya)_ |
[![ویدئوی مقدمه](../../../../translated_images/fa/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y) [![ویدیوی معرفی](../../../../translated_images/fa/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
در حالی که پایگاه‌های داده روش‌های بسیار کارآمدی برای ذخیره‌سازی داده‌ها و جستجوی آن‌ها با استفاده از زبان‌های پرس‌وجو ارائه می‌دهند، انعطاف‌پذیرترین روش پردازش دادهها نوشتن برنامه‌ای است که داده‌ها را دستکاری کند. در بسیاری از موارد، انجام یک پرس‌وجوی پایگاه داده می‌تواند مؤثرتر باشد. اما در برخی موارد که پردازش داده‌های پیچیده‌تر مورد نیاز است، این کار به راحتی با SQL قابل انجام نیست. در حالی که پایگاه‌داده‌ها روش‌های بسیار مؤثری برای ذخیره‌سازی داده‌ها و پرسش آنها با استفاده از زبان‌های پرس‌وجو ارائه می‌دهند، انعطاف‌پذیرترین روش پردازش داده، نوشتن برنامهٔ خودتان برای دستکاری داده‌ها است. در بسیاری موارد، اجرای پرس‌وجوی پایگاه‌داده روشی مؤثرتر خواهد بود. اما در مواردی که پردازش داده‌های پیچیده‌تر لازم است، این کار به آسانی با SQL امکان‌پذیر نیست.
پردازش داده‌ها را می‌توان با هر زبان برنامه‌نویسی انجام داد، اما برخی زبان‌ها سطح بالاتری برای کار با داده‌ها دارند. دانشمندان داده معمولاً یکی از زبان‌های زیر را ترجیح می‌دهند: پردازش داده‌ها را می‌توان در هر زبان برنامه‌نویسی انجام داد، اما زبان‌هایی وجود دارند که سطح بالاتری از نظر کار با داده‌ها دارند. دانشمندان داده معمولاً یکی از زبان‌های زیر را ترجیح می‌دهند:
* **[پایتون](https://www.python.org/)**، یک زبان برنامه‌نویسی عمومی که به دلیل سادگی اغلب به عنوان یکی از بهترین گزینه‌ها برای مبتدیان در نظر گرفته می‌شود. پایتون دارای کتابخانه‌های زیادی است که می‌توانند به شما در حل بسیاری از مشکلات عملی کمک کنند، مانند استخراج داده‌ها از آرشیو ZIP یا تبدیل تصویر به حالت خاکستری. علاوه بر علم داده، پایتون اغلب برای توسعه وب نیز استفاده می‌شود. * **[پایتون](https://www.python.org/)**، یک زبان برنامه‌نویسی عمومی است که اغلب به دلیل سادگی‌اش به عنوان یکی از بهترین گزینه‌ها برای مبتدیان در نظر گرفته می‌شود. پایتون کتابخانه‌های اضافی زیادی دارد که می‌تواند به شما در حل بسیاری از مشکلات عملی کمک کند، مانند استخراج داده‌های شما از آرشیو ZIP یا تبدیل تصویر به خاکستری. علاوه بر علم داده، پایتون اغلب برای توسعهٔ وب نیز استفاده می‌شود.
* **[R](https://www.r-project.org/)** یک ابزار سنتی است که با هدف پردازش داده‌های آماری توسعه یافته است. این زبان همچنین دارای مخزن بزرگی از کتابخانه‌ها (CRAN) است که آن را به گزینه‌ای مناسب برای پردازش داده‌ها تبدیل می‌کند. با این حال، R یک زبان برنامه‌نویسی عمومی نیست و به ندرت خارج از حوزه علم داده استفاده می‌شود. * **[آر](https://www.r-project.org/)** جعبه‌ابزار سنتی است که برای پردازش داده‌های آماری توسعه یافته است. این زبان همچنین شامل مخزن بزرگی از کتابخانه‌ها (CRAN) است که آن را گزینهٔ خوبی برای پردازش داده می‌کند. با این حال، آر یک زبان برنامه‌نویسی عمومی نیست و معمولاً خارج از حوزه علم داده استفاده نمی‌شود.
* **[Julia](https://julialang.org/)** یک زبان دیگر است که به طور خاص برای علم داده توسعه یافته است. این زبان برای ارائه عملکرد بهتر نسبت به پایتون طراحی شده است و آن را به ابزاری عالی برای آزمایش‌های علمی تبدیل می‌کند. * **[جولیا](https://julialang.org/)** زبان دیگری است که مخصوص علم داده توسعه یافته است. هدف آن ارائه عملکرد بهتر نسبت به پایتون است و ابزاری عالی برای آزمایش‌های علمی محسوب می‌شود.
در این درس، ما بر استفاده از پایتون برای پردازش ساده داده‌ها تمرکز خواهیم کرد. فرض می‌کنیم که با اصول اولیه این زبان آشنا هستید. اگر می‌خواهید یک تور عمیق‌تر از پایتون داشته باشید، می‌توانید به یکی از منابع زیر مراجعه کنید: در این درس، تمرکز ما بر استفاده از پایتون برای پردازش ساده داده‌ها خواهد بود. فرض می‌کنیم آشنایی پایه با زبان دارید. اگر می‌خواهید سفری عمیق‌تر در پایتون داشته باشید، می‌توانید به یکی از منابع زیر مراجعه کنید:
* [یادگیری پایتون به روش سرگرم‌کننده با گرافیک لاک‌پشتی و فراکتال‌ها](https://github.com/shwars/pycourse) - دوره مقدماتی سریع در GitHub برای برنامه‌نویسی پایتون * [یادگیری پایتون به روشی سرگرم‌کننده با گرافیک لاک‌پشتی و فراکتال‌ها](https://github.com/shwars/pycourse) - دورهٔ سریع معرفی Python Programming در گیت‌هاب
* [اولین قدم‌های خود را با پایتون بردارید](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)
## داده‌های جدولی و Dataframes
شما قبلاً با داده‌های جدولی آشنا شده‌اید وقتی درباره پایگاه‌های داده رابطه‌ای صحبت کردیم. وقتی داده‌های زیادی دارید و این داده‌ها در جداول مختلف مرتبط قرار دارند، قطعاً استفاده از SQL برای کار با آن‌ها منطقی است. با این حال، موارد زیادی وجود دارد که ما یک جدول داده داریم و نیاز داریم تا برخی **درک** یا **بینش** درباره این داده‌ها کسب کنیم، مانند توزیع، همبستگی بین مقادیر و غیره. در علم داده، موارد زیادی وجود دارد که نیاز داریم برخی تغییرات در داده‌های اصلی انجام دهیم و سپس آن‌ها را بصری‌سازی کنیم. هر دو مرحله به راحتی با پایتون قابل انجام هستند. ## [آزمون پیش‌کلاس](https://ff-quizzes.netlify.app/en/ds/quiz/12)
دو کتابخانه بسیار مفید در پایتون وجود دارد که می‌توانند به شما در کار با داده‌های جدولی کمک کنند: ## داده‌های جدولی و دیتا‌فریم‌ها
* **[Pandas](https://pandas.pydata.org/)** به شما امکان می‌دهد تا با **Dataframes** کار کنید، که مشابه جداول رابطه‌ای هستند. شما می‌توانید ستون‌های نام‌گذاری شده داشته باشید و عملیات مختلفی روی ردیف‌ها، ستون‌ها و Dataframes به طور کلی انجام دهید.
* **[Numpy](https://numpy.org/)** یک کتابخانه برای کار با **تنسورها**، یعنی **آرایه‌های چندبعدی** است. آرایه دارای مقادیر از نوع پایه یکسان است و ساده‌تر از Dataframe است، اما عملیات ریاضی بیشتری ارائه می‌دهد و سربار کمتری ایجاد می‌کند.
چند کتابخانه دیگر نیز وجود دارد که باید با آن‌ها آشنا باشید: زمانی که دربارهٔ پایگاه‌داده‌های رابطه‌ای صحبت کردیم، با داده‌های جدولی آشنا شدید. وقتی حجم بسیاری از داده دارید و این داده‌ها در جداول زیادی مرتبط شده هستند، استفاده از SQL برای کار با آنها منطقی است. اما موارد زیادی وجود دارد که یک جدول داده داریم و نیاز داریم دربارهٔ این داده‌ها **درک** یا **بینش**ی کسب کنیم، مثل توزیع داده‌ها، همبستگی بین مقادیر و غیره. در علم داده، موارد زیادی وجود دارد که باید بعضی تبدیل‌های داده اصلی انجام شود و سپس تجسم داده صورت گیرد. هر دو این مراحل به سادگی با پایتون قابل انجام هستند.
* **[Matplotlib](https://matplotlib.org/)** یک کتابخانه برای بصری‌سازی داده‌ها و رسم نمودارها
* **[SciPy](https://www.scipy.org/)** یک کتابخانه با برخی توابع علمی اضافی. ما قبلاً هنگام صحبت درباره احتمال و آمار با این کتابخانه آشنا شده‌ایم.
در اینجا یک قطعه کد آورده شده است که معمولاً برای وارد کردن این کتابخانه‌ها در ابتدای برنامه پایتون خود استفاده می‌کنید: دو کتابخانهٔ بسیار مفید در پایتون هستند که می‌توانند به شما در کار با داده‌های جدولی کمک کنند:
* **[پاندا](https://pandas.pydata.org/)** به شما اجازه می‌دهد داده‌های به نام **دیتافریم‌ها** را دستکاری کنید، که معادل جداول رابطه‌ای هستند. می‌توانید ستون‌های نام‌گذاری شده داشته باشید و عملیات متفاوتی روی ردیف‌ها، ستون‌ها و دیتا‌فریم به طور کلی انجام دهید.
* **[نامپای](https://numpy.org/)** کتابخانه‌ای برای کار با **تنسورها** یا همان آرایه‌های چندبعدی است. آرایه‌ها مقادیری از یک نوع داده زیرین دارند و نسبت به دیتا‌فریم ساده‌تر هستند، ولی عملیات ریاضی بیشتری ارائه می‌دهند و سربار کمتری دارند.
همچنین چند کتابخانه دیگر که باید با آنها آشنا باشید:
* **[مت‌پلات‌لیب](https://matplotlib.org/)** کتابخانه‌ای برای تجسم داده و رسم نمودارها است.
* **[سای‌پای](https://www.scipy.org/)** کتابخانه‌ای با برخی توابع علمی اضافی است. ما قبلاً هنگام صحبت درباره احتمال و آمار با این کتابخانه آشنا شده‌ایم.
در اینجا کدی آمده که معمولاً در ابتدای برنامه پایتون برای وارد کردن این کتابخانه‌ها استفاده می‌شود:
```python ```python
import numpy as np import numpy as np
import pandas as pd import pandas as pd
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need from scipy import ... # شما باید زیربسته‌های دقیقی که نیاز دارید را مشخص کنید
``` ```
Pandas حول چند مفهوم اساسی متمرکز است. پاندا حول چند مفهوم پایه‌ای می‌چرخد.
### Series ### سری‌ها (Series)
**Series** یک دنباله از مقادیر است، مشابه لیست یا آرایه numpy. تفاوت اصلی این است که Series همچنین دارای یک **شاخص** است و وقتی روی Series عملیات انجام می‌دهیم (مثلاً آن‌ها را جمع می‌کنیم)، شاخص در نظر گرفته می‌شود. شاخص می‌تواند به سادگی شماره ردیف صحیح باشد (این شاخص به طور پیش‌فرض هنگام ایجاد یک Series از لیست یا آرایه استفاده می‌شود)، یا می‌تواند ساختار پیچیده‌ای مانند بازه زمانی داشته باشد. **سری** توالی‌ای از مقادیر است، مشابه یک لیست یا آرایهٔ نامپای. تفاوت اصلی این است که سری همچنین یک **شاخص** دارد و هنگام عملیات روی سری (مثلاً جمع‌شان) شاخص در نظر گرفته می‌شود. شاخص می‌تواند به سادگی شماره ردیف عدد صحیح باشد (که به‌طور پیش‌فرض هنگام ایجاد سری از لیست یا آرایه استفاده می‌شود)، یا ساختار پیچیده‌تری مثل بازه زمانی داشته باشد.
> **توجه**: برخی کدهای مقدماتی Pandas در دفترچه همراه [`notebook.ipynb`](notebook.ipynb) موجود است. ما فقط برخی از مثال‌ها را اینجا بیان می‌کنیم و شما قطعاً می‌توانید دفترچه کامل را بررسی کنید. > **توجه**: مقدمه‌ای بر کد پاندا در دفترکار همرا با این درس [`notebook.ipynb`](notebook.ipynb) آمده است. ما فقط چند مثال را اینجا شرح می‌دهیم و شما قطعاً می‌توانید دفترکار کامل را بررسی کنید.
به عنوان مثال: ما می‌خواهیم فروش یک مغازه بستنی‌فروشی را تحلیل کنیم. بیایید یک سری از اعداد فروش (تعداد اقلام فروخته شده در هر روز) برای یک دوره زمانی ایجاد کنیم: مثالی در نظر بگیرید: می‌خواهیم فروش فروشگاه بستنی‌فروشی خود را تحلیل کنیم. بیایید سری‌ای از اعداد فروش (تعداد آیتم‌های فروخته شده در هر روز) برای دورهٔ زمانی مشخصی تولید کنیم:
```python ```python
start_date = "Jan 1, 2020" start_date = "Jan 1, 2020"
@ -66,114 +68,114 @@ items_sold.plot()
``` ```
![نمودار سری زمانی](../../../../translated_images/fa/timeseries-1.80de678ab1cf727e.webp) ![نمودار سری زمانی](../../../../translated_images/fa/timeseries-1.80de678ab1cf727e.webp)
حالا فرض کنید که هر هفته یک مهمانی برای دوستان برگزار می‌کنیم و 10 بسته بستنی اضافی برای مهمانی می‌گیریم. می‌توانیم یک سری دیگر، با شاخص هفته، برای نشان دادن این موضوع ایجاد کنیم: حال فرض کنید هر هفته مهمانی‌ای برای دوستان برگزار می‌کنیم و ده بسته بستنی اضافی برای مهمانی می‌آوریم. می‌توانیم سری دیگری با شاخص هفته بسازیم تا این موضوع را نشان دهیم:
```python ```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W")) additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
``` ```
وقتی دو سری را با هم جمع می‌کنیم، تعداد کل را دریافت می‌کنیم: وقتی دو سری را به هم اضافه کنیم، مجموع تعداد را خواهیم داشت:
```python ```python
total_items = items_sold.add(additional_items,fill_value=0) total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot() total_items.plot()
``` ```
![نمودار سری زمانی](../../../../translated_images/fa/timeseries-2.aae51d575c55181c.webp) ![نمودار سری زمانی](../../../../translated_images/fa/timeseries-2.aae51d575c55181c.webp)
> **توجه** که ما از نحو ساده `total_items+additional_items` استفاده نمی‌کنیم. اگر این کار را می‌کردیم، تعداد زیادی مقدار `NaN` (*Not a Number*) در سری حاصل دریافت می‌کردیم. این به این دلیل است که مقادیر گم‌شده‌ای برای برخی از نقاط شاخص در سری `additional_items` وجود دارد و افزودن `NaN` به هر چیزی نتیجه `NaN` می‌دهد. بنابراین باید پارامتر `fill_value` را هنگام جمع مشخص کنیم. > **توجه** ما از نوشتار ساده `total_items+additional_items` استفاده نمی‌کنیم. اگر این کار را انجام می‌دادیم، تعداد زیادی مقدار `NaN` (*عدد نیست*) در سری نتیجه داشتیم. این به این دلیل است که در سری `additional_items` برخی از نقاط شاخص مقدار ندارند و افزودن `NaN` به هر چیزی نتیجه `NaN` می‌دهد. بنابراین باید در عملیات جمع، پارامتر `fill_value` را مشخص کنیم.
با سری‌های زمانی، می‌توانیم سری را با بازه‌های زمانی مختلف **نمونه‌گیری مجدد** کنیم. به عنوان مثال، فرض کنید می‌خواهیم حجم فروش متوسط ماهانه را محاسبه کنیم. می‌توانیم از کد زیر استفاده کنیم: با سری‌های زمانی می‌توانیم سری را با بازه‌های زمانی متفاوت **نمونه‌برداری مجدد (resample)** کنیم. مثلاً فرض کنید می‌خواهیم میانگین حجم فروش ماهانه را محاسبه کنیم. می‌توانیم از کد زیر استفاده کنیم:
```python ```python
monthly = total_items.resample("1M").mean() monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar') ax = monthly.plot(kind='bar')
``` ```
![میانگین‌های سری زمانی ماهانه](../../../../translated_images/fa/timeseries-3.f3147cbc8c624881.webp) ![میانگین‌های سری زمانی ماهانه](../../../../translated_images/fa/timeseries-3.f3147cbc8c624881.webp)
### DataFrame ### دیتا‌فریم (DataFrame)
یک DataFrame اساساً مجموعه‌ای از سری‌ها با همان شاخص است. می‌توانیم چند سری را با هم ترکیب کنیم تا یک DataFrame ایجاد کنیم: دیتا‌فریم در واقع مجموعه‌ای از سری‌ها با همان شاخص است. می‌توانیم چند سری را با هم ترکیب کنیم تا یک دیتا‌فریم بسازیم:
```python ```python
a = pd.Series(range(1,10)) a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9)) b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b]) df = pd.DataFrame([a,b])
``` ```
این یک جدول افقی مانند این ایجاد می‌کند: این یک جدول افقی مانند زیر ایجاد خواهد کرد:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- | | --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much | | 1 | من | دوست | دارم | از | پایتون | و | پاندا | خیلی | زیاد |
می‌توانیم از سری‌ها به عنوان ستون‌ها استفاده کنیم و نام ستون‌ها را با استفاده از دیکشنری مشخص کنیم: همچنین می‌توانیم از سری‌ها به عنوان ستون‌ها استفاده کنیم و نام ستون‌ها را با استفاده از دیکشنری مشخص کنیم:
```python ```python
df = pd.DataFrame({ 'A' : a, 'B' : b }) df = pd.DataFrame({ 'A' : a, 'B' : b })
``` ```
این جدول زیر را به ما می‌دهد: این یک جدول با این شکل خواهد داد:
| | A | B | | | A | B |
| --- | --- | ------ | | --- | --- | ------ |
| 0 | 1 | I | | 0 | 1 | من |
| 1 | 2 | like | | 1 | 2 | دوست |
| 2 | 3 | to | | 2 | 3 | دارم |
| 3 | 4 | use | | 3 | 4 | از |
| 4 | 5 | Python | | 4 | 5 | پایتون |
| 5 | 6 | and | | 5 | 6 | و |
| 6 | 7 | Pandas | | 6 | 7 | پاندا |
| 7 | 8 | very | | 7 | 8 | خیلی |
| 8 | 9 | much | | 8 | 9 | زیاد |
**توجه** که می‌توانیم این طرح جدول را با ترانهاده کردن جدول قبلی نیز دریافت کنیم، مثلاً با نوشتن **توجه** که می‌توانیم این چینش جدول را نیز با ترانهاده کردن جدول قبلی به دست آوریم، مثلاً با نوشتن
```python ```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' }) df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : 'B' })
``` ```
اینجا `.T` به معنای عملیات ترانهاده کردن DataFrame است، یعنی تغییر ردیف‌ها و ستون‌ها، و عملیات `rename` به ما اجازه می‌دهد تا ستون‌ها را برای مطابقت با مثال قبلی تغییر نام دهیم. در اینجا `.T` به معنی عملیات ترانهاده کردن دیتا‌فریم است، یعنی جابجایی ردیف‌ها و ستون‌ها، و عملیات `rename` به ما اجازه می‌دهد ستون‌ها را مطابق مثال قبلی نام‌گذاری کنیم.
در اینجا چند عملیات مهم که می‌توانیم روی DataFrames انجام دهیم آورده شده است: چند عملیات مهمی که می‌توانیم روی دیتا‌فریم‌ها انجام دهیم به شرح زیر است:
**انتخاب ستون‌ها**. می‌توانیم ستون‌های فردی را با نوشتن `df['A']` انتخاب کنیم - این عملیات یک Series را برمی‌گرداند. همچنین می‌توانیم زیرمجموعه‌ای از ستون‌ها را به یک DataFrame دیگر انتخاب کنیم با نوشتن `df[['B','A']]` - این یک DataFrame دیگر را برمی‌گرداند. **انتخاب ستون‌ها**. می‌توانیم ستون‌های منفرد را با نوشتن `df['A']` انتخاب کنیم - این عملیات یک سری باز می‌گرداند. همچنین می‌توانیم زیرمجموعه‌ای از ستون‌ها را به دیتا‌فریم دیگری با نوشتن `df[['B','A']]` انتخاب کنیم - که این هم یک دیتا‌فریم دیگر می‌دهد.
**فیلتر کردن** فقط ردیف‌های خاص بر اساس معیارها. به عنوان مثال، برای نگه داشتن فقط ردیف‌هایی که ستون `A` بزرگ‌تر از 5 است، می‌توانیم بنویسیم `df[df['A']>5]`. **فیلتر کردن** فقط ردیف‌های مشخص با معیار خاص. مثلاً برای نگه داشتن فقط ردیف‌هایی که ستون `A` بزرگ‌تر از ۵ است، می‌توانیم بنویسیم `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']` درست (`True`) یا نادرست (`False`) است. وقتی سری بولی به عنوان شاخص استفاده می‌شود، زیرمجموعه‌ای از ردیف‌های دیتا‌فریم را برمی‌گرداند. بنابراین استفاده از عبارت بولی دلخواه پایتون امکان‌پذیر نیست، به عنوان مثال نوشتن `df[df['A']>5 and df['A']<7]` اشتباه است. بجای آن باید از عملگر ویژه `&` روی سری بولی استفاده کنید، مانند `df[(df['A']>5) & (df['A']<7)]` (*پرانتزها اینجا مهم هستند*).
**ایجاد ستون‌های محاسباتی جدید**. می‌توانیم به راحتی ستون‌های محاسباتی جدیدی برای DataFrame خود ایجاد کنیم با استفاده از عبارت‌های شهودی مانند این: **ایجاد ستون‌های جدید قابل محاسبه**. به سادگی می‌توانیم ستون‌های جدید قابل محاسبه برای دیتا‌فریم خود بسازیم با نوشتن عبارتی شهودی مانند این:
```python ```python
df['DivA'] = df['A']-df['A'].mean() df['DivA'] = df['A']-df['A'].mean()
``` ```
این مثال انحراف A از مقدار میانگین آن را محاسبه می‌کند. آنچه در واقع اینجا اتفاق می‌افتد این است که ما یک سری محاسبه می‌کنیم و سپس این سری را به سمت چپ اختصاص می‌دهیم، یک ستون جدید ایجاد می‌کنیم. بنابراین نمی‌توانیم از هیچ عملیاتی که با سری‌ها سازگار نیست استفاده کنیم، به عنوان مثال، کد زیر اشتباه است: این مثال واگرایی A از مقدار میانگینش را محاسبه می‌کند. در واقع اینجا ما یک سری را محاسبه می‌کنیم و سپس آن را به سمت چپ انتساب می‌دهیم که در نتیجه یک ستون جدید ساخته می‌شود. بنابراین نمی‌توانیم از عملیات‌هایی استفاده کنیم که با سری سازگار نیستند، مثلاً کد زیر اشتباه است:
```python ```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi" # کد اشتباه -> df['ADescr'] = "کم" اگر df['A'] کمتر از ۵ باشد در غیر این صورت "زیاد"
df['LenB'] = len(df['B']) # <- Wrong result df['LenB'] = len(df['B']) # <- نتیجه اشتباه
``` ```
مثال آخر، در حالی که از نظر نحوی صحیح است، نتیجه اشتباهی به ما می‌دهد، زیرا طول سری `B` را به همه مقادیر در ستون اختصاص می‌دهد، نه طول عناصر فردی همان‌طور که قصد داشتیم. این مثال دوم، هرچند از نظر نوشتاری درست است، نتیجهٔ نادرستی می‌دهد چون طول سری `B` را به تمام مقادیر ستون اختصاص می‌دهد، نه طول عناصر منفرد را همانطور که قصد داشتیم.
اگر نیاز به محاسبه عبارات پیچیده مانند این داریم، می‌توانیم از تابع `apply` استفاده کنیم. مثال آخر را می‌توان به صورت زیر نوشت: اگر نیاز به محاسبهٔ عبارات پیچیده داریم می‌توانیم از تابع `apply` استفاده کنیم. مثال آخر می‌تواند به صورت زیر نوشته شود:
```python ```python
df['LenB'] = df['B'].apply(lambda x : len(x)) df['LenB'] = df['B'].apply(lambda x : len(x))
# or # یا
df['LenB'] = df['B'].apply(len) df['LenB'] = df['B'].apply(len)
``` ```
بعد از عملیات‌های بالا، ما به DataFrame زیر خواهیم رسید: پس از انجام عملیات فوق، دیتا‌فریم زیر حاصل می‌شود:
| | A | B | DivA | LenB | | | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- | | --- | --- | ------ | ---- | ---- |
| 0 | 1 | I | -4.0 | 1 | | 0 | 1 | من | -۴.۰ | ۱ |
| 1 | 2 | like | -3.0 | 4 | | 1 | 2 | دوست | -۳.۰ | ۴ |
| 2 | 3 | to | -2.0 | 2 | | 2 | 3 | دارم | -۲.۰ | ۲ |
| 3 | 4 | use | -1.0 | 3 | | 3 | 4 | از | -۱.۰ | ۳ |
| 4 | 5 | Python | 0.0 | 6 | | 4 | 5 | پایتون | ۰.۰ | ۶ |
| 5 | 6 | and | 1.0 | 3 | | 5 | 6 | و | ۱.۰ | ۳ |
| 6 | 7 | Pandas | 2.0 | 6 | | 6 | 7 | پاندا | ۲.۰ | ۶ |
| 7 | 8 | very | 3.0 | 4 | | 7 | 8 | خیلی | ۳.۰ | ۴ |
| 8 | 9 | much | 4.0 | 4 | | 8 | 9 | زیاد | ۴.۰ | ۴ |
**انتخاب ردیف‌ها بر اساس شمارهها** را می‌توان با استفاده از ساختار `iloc` انجام داد. به عنوان مثال، برای انتخاب 5 ردیف اول از DataFrame: **انتخاب ردیف‌ها بر اساس شماره** می‌تواند با سازه `iloc` انجام شود. مثلاً برای انتخاب ۵ ردیف اول از دیتا‌فریم:
```python ```python
df.iloc[:5] df.iloc[:5]
``` ```
**گروه‌بندی** اغلب برای دریافت نتیجه‌ای مشابه *جدول‌های محوری* در Excel استفاده می‌شود. فرض کنید که می‌خواهیم مقدار میانگین ستون `A` را برای هر عدد داده شده از `LenB` محاسبه کنیم. سپس می‌توانیم DataFrame خود را بر اساس `LenB` گروه‌بندی کنیم و `mean` را فراخوانی کنیم: **گروه‌بندی** اغلب برای به دست آوردن نتیجه‌ای مشابه *جداول محوری (pivot)* در اکسل استفاده می‌شود. فرض کنید می‌خواهیم میانگین ستون `A` را برای هر مقدار داده شده از `LenB` محاسبه کنیم. می‌توانیم دیتا‌فریم خود را بر اساس `LenB` گروه‌بندی کنیم و تابع `mean` را فراخوانی کنیم:
```python ```python
df.groupby(by='LenB')[['A','DivA']].mean() df.groupby(by='LenB')[['A','DivA']].mean()
``` ```
اگر نیاز به محاسبه میانگین و تعداد عناصر در گروه داریم، می‌توانیم از تابع پیچیده‌تر `aggregate` استفاده کنیم: اگر بخواهیم میانگین و تعداد عناصر در گروه را به طور همزمان محاسبه کنیم، می‌توانیم از تابع پیچیده‌تر `aggregate` استفاده کنیم:
```python ```python
df.groupby(by='LenB') \ df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \ .aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -181,101 +183,106 @@ df.groupby(by='LenB') \
``` ```
این جدول زیر را به ما می‌دهد: این جدول زیر را به ما می‌دهد:
| LenB | Count | Mean | | LenB | تعداد | میانگین |
| ---- | ----- | -------- | | ---- | ----- | -------- |
| 1 | 1 | 1.000000 | | 1 | 1 | ۱.۰۰۰۰۰۰ |
| 2 | 1 | 3.000000 | | 2 | 1 | ۳.۰۰۰۰۰۰ |
| 3 | 2 | 5.000000 | | 3 | 2 | ۵.۰۰۰۰۰۰ |
| 4 | 3 | 6.333333 | | 4 | 3 | ۶.۳۳۳۳۳۳ |
| 6 | 2 | 6.000000 | | 6 | 2 | ۶.۰۰۰۰۰۰ |
### دریافت داده‌ها ### دریافت داده‌ها
ما دیده‌ایم که چقدر ساختن Series و DataFrames از اشیاء پایتون آسان است. با این حال، داده‌ها معمولاً به صورت یک فایل متنی یا جدول اکسل ارائه می‌شوند. خوشبختانه، Pandas راه ساده‌ای برای بارگذاری داده‌ها از دیسک به ما ارائه می‌دهد. به عنوان مثال، خواندن فایل CSV به سادگی زیر است:
ما دیده‌ایم که ساختن Series و DataFrame از اشیاء پایتون چقدر آسان است. اما داده‌ها معمولاً به شکل یک فایل متنی یا جدول اکسل هستند. خوشبختانه، Pandas روش ساده‌ای برای بارگذاری داده‌ها از دیسک به ما ارائه می‌دهد. به عنوان مثال، خواندن فایل CSV به همین سادگی است:
```python ```python
df = pd.read_csv('file.csv') 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
اولین مشکلی که روی آن تمرکز خواهیم کرد مدل‌سازی گسترش اپیدمی 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`](notebook-covidspread.ipynb) را باز کنید و از ابتدا تا انتها بخوانید. همچنین می‌توانید سلول‌ها را اجرا کنید و برخی چالش‌هایی که در انتها برای شما گذاشته‌ایم را انجام دهید. از آنجا که می‌خواهیم نشان دهیم چگونه با داده‌ها کار کنیم، شما را دعوت می‌کنیم تا [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) را باز و از ابتدا تا انتها مطالعه کنید. همچنین می‌توانید سلول‌ها را اجرا کنید و چالش‌هایی را که در پایان باقی گذاشته‌ایم انجام دهید.
![COVID Spread](../../../../translated_images/fa/covidspread.f3d131c4f1d260ab.webp) ![گسترش COVID](../../../../translated_images/fa/covidspread.f3d131c4f1d260ab.webp)
> اگر نمی‌دانید چگونه کد را در 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 ## 🚀 چالش ۲: تحلیل مقالات COVID
در این چالش، موضوع همه‌گیری COVID را ادامه می‌دهیم و بر پردازش مقالات علمی در این زمینه تمرکز می‌کنیم. مجموعه داده [CORD-19](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/) توضیح داده شده است. ما نسخه ساده‌شده‌ای از این تحلیل را بررسی خواهیم کرد. یک مثال کامل از تحلیل این مجموعه داده با استفاده از سرویس شناختی [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) دانلود کنید، اما شامل تمام متن‌های کامل علاوه بر فایل متادیتا خواهد بود. > **توجه**: ما کپی از این مجموعه داده را به عنوان بخشی از این مخزن ارائه نمی‌دهیم. ممکن است ابتدا لازم باشد فایل [`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`](notebook-papers.ipynb) را باز کنید و از ابتدا تا انتها بخوانید. همچنین می‌توانید سلول‌ها را اجرا کنید و برخی چالش‌هایی که در انتها برای شما گذاشته‌ایم را انجام دهید. [`notebook-papers.ipynb`](notebook-papers.ipynb) را باز و از ابتدا تا انتها مطالعه کنید. می‌توانید سلول‌ها را اجرا کرده و برخی چالش‌های باقی‌مانده را انجام دهید.
![Covid Medical Treatment](../../../../translated_images/fa/covidtreat.b2ba59f57ca45fbc.webp) ![درمان پزشکی COVID](../../../../translated_images/fa/covidtreat.b2ba59f57ca45fbc.webp)
## پردازش داده‌های تصویری ## پردازش داده‌های تصویری
اخیراً مدل‌های هوش مصنوعی بسیار قدرتمندی توسعه یافته‌اند که به ما امکان درک تصاویر را می‌دهند. بسیاری از وظایف را می‌توان با استفاده از شبکه‌های عصبی از پیش آموزش‌دیده یا خدمات ابری حل کرد. برخی از مثال‌ها شامل موارد زیر است: اخیراً مدل‌های هوش مصنوعی قدرتمندی توسعه یافته‌اند که به ما امکان درک تصاویر را می‌دهند. بسیاری از وظایف را می‌توان با استفاده از شبکه‌های عصبی پیش‌آموزش دیده یا خدمات ابری حل کرد. چند مثال عبارتند از:
* **طبقه‌بندی تصویر**، که می‌تواند به شما کمک کند تصویر را در یکی از کلاس‌های از پیش تعریف‌شده دسته‌بندی کنید. شما می‌توانید به راحتی طبقه‌بندی‌کننده‌های تصویر خود را با استفاده از خدماتی مانند [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) را برای شناسایی برخی اشیاء خاص مورد علاقه آموزش دهید. * **تشخیص اشیاء** برای یافتن اشیاء مختلف در تصویر. خدماتی مانند [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) فراخوانی کرد و بنابراین به راحتی می‌توان آن‌ها را در جریان کاری اکتشاف داده‌های خود گنجاند. همه این خدمات ابری را می‌توان با استفاده از [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/) ما عکس‌های اینستاگرام را بررسی می‌کنیم و سعی می‌کنیم بفهمیم چه چیزی باعث می‌شود افراد به یک عکس بیشتر لایک بدهند. ابتدا تا حد ممکن اطلاعات را از تصاویر با استفاده از [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/) ما عکس‌های اینستاگرام را بررسی می‌کنیم تا بفهمیم چه چیزی باعث می‌شود مردم عکس را بیشتر لایک کنند. ابتدا بیشترین اطلاعات ممکن را از تصاویر با استفاده از [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) برای استخراج احساسات افراد در عکس‌های رویدادها استفاده می‌کنیم تا بفهمیم چه چیزی انسان‌ها را شاد می‌کند.
## نتیجه‌گیری ## نتیجه‌گیری
چه داده‌های ساختاریافته داشته باشید یا غیرساختاریافته، با استفاده از پایتون می‌توانید تمام مراحل مربوط به پردازش و درک داده‌ها را انجام دهید. این احتمالاً انعطاف‌پذیرترین روش پردازش دادهها است و به همین دلیل اکثر دانشمندان داده از پایتون به عنوان ابزار اصلی خود استفاده می‌کنند. یادگیری عمیق پایتون احتمالاً ایده خوبی است اگر در مسیر علم داده جدی هستید! چه داده‌های ساختارمند داشته باشید و چه داده‌های غیرساختارمند، با استفاده از پایتون می‌توانید تمام مراحل مربوط به پردازش و درک داده‌ها را انجام دهید. احتمالاً این انعطاف‌پذیرترین روش پردازش داده است و به همین دلیل است که اکثر دانشمندان داده پایتون را به عنوان ابزار اصلی خود انتخاب می‌کنند. یادگیری عمیق پایتون احتمالاً ایده خوبی است اگر قصد دارید در مسیر داده‌کاوی جدی باشید!
## [آزمون پس از درس](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) * [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/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)
**یادگیری پایتون** **یادگیری پایتون**
* [یادگیری پایتون به روشی سرگرم‌کننده با گرافیک Turtle و فراکتال‌ها](https://github.com/shwars/pycourse) * [یادگیری پایتون به روشی سرگرم‌کننده با گرافیک لاک‌پشتی و فراکتال‌ها](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) * [گام‌های اولیه خود را با پایتون بردارید](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 DISCLAIMER START -->
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. **سلب مسئولیت**:
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -96,8 +96,8 @@
"language_code": "ur" "language_code": "ur"
}, },
"2-Working-With-Data/07-python/README.md": { "2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3", "original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2025-09-06T15:25:28+00:00", "translation_date": "2026-07-17T18:55:19+00:00",
"source_file": "2-Working-With-Data/07-python/README.md", "source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "ur" "language_code": "ur"
}, },

@ -1,60 +1,62 @@
# ڈیٹا کے ساتھ کام کرنا: پائتھون اور پانڈاز لائبریری # ڈیٹا کے ساتھ کام کرنا: پائتھن اور پانڈاز لائبریری
| ![ [(@sketchthedocs)](https://sketchthedocs.dev) کی طرف سے اسکیچ نوٹ ](../../sketchnotes/07-WorkWithPython.png) | | ![ اسکیچنوٹ بذریعہ [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: | | :-------------------------------------------------------------------------------------------------------: |
| پائتھون کے ساتھ کام کرنا - _[@nitya](https://twitter.com/nitya) کی طرف سے اسکیچ نوٹ_ | | پائتھن کے ساتھ کام کرنا - _اسکیچنوٹ بذریعہ [@nitya](https://twitter.com/nitya)_ |
[![تعارفی ویڈیو](../../../../translated_images/ur/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y) [![تعارفی ویڈیو](../../../../translated_images/ur/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
اگرچہ ڈیٹا بیسز ڈیٹا کو محفوظ کرنے اور انہیں کوئری لینگویجز کے ذریعے تلاش کرنے کے لیے بہت مؤثر طریقے فراہم کرتے ہیں، ڈیٹا پروسیسنگ کا سب سے لچکدار طریقہ اپنا پروگرام لکھ کر ڈیٹا کو تبدیل کرنا ہے۔ اکثر اوقات، ڈیٹا بیس کوئری کرنا زیادہ مؤثر ہوگا۔ لیکن کچھ معاملات میں جب زیادہ پیچیدہ ڈیٹا پروسیسنگ کی ضرورت ہو، تو یہ کام آسانی سے SQL کے ذریعے نہیں کیا جا سکتا۔ جہاں ڈیٹا بیس ڈیٹا ذخیرہ کرنے اور کوئری لینگویجز کے ذریعے ان سے سوالات کرنے کے بہت مؤثر طریقے فراہم کرتے ہیں، سب سے زیادہ لچکدار طریقہ یہ ہے کہ آپ اپنا اپنا پروگرام لکھیں تاکہ ڈیٹا کو سنبھالا جا سکے۔ بہت سے معاملات میں، ڈیٹا بیس کوئری زیادہ مؤثر طریقہ ہوگی۔ تاہم، بعض صورتوں میں جب مزید پیچیدہ ڈیٹا پروسیسنگ کی ضرورت ہو، اسے آسانی سے SQL کے ذریعے نہیں کیا جا سکتا۔
ڈیٹا پروسیسنگ کسی بھی پروگرامنگ زبان میں کی جا سکتی ہے، لیکن کچھ زبانیں ڈیٹا کے ساتھ کام کرنے کے لحاظ سے زیادہ اعلیٰ سطح کی ہوتی ہیں۔ ڈیٹا سائنسدان عام طور پر درج ذیل زبانوں میں سے کسی ایک کو ترجیح دیتے ہیں: ڈیٹا پروسیسنگ کسی بھی پروگرامنگ زبان میں پروگرام کی جا سکتی ہے، لیکن کچھ زبانیں ڈیٹا کے ساتھ کام کرنے کے لیے اعلیٰ سطح کی سمجھی جاتی ہیں۔ ڈیٹا سائنسدان عام طور پر درج ذیل زبانوں میں سے ایک کو ترجیح دیتے ہیں:
* **[پائتھون](https://www.python.org/)**، ایک عمومی مقصد کی پروگرامنگ زبان، جو اپنی سادگی کی وجہ سے اکثر ابتدائی افراد کے لیے بہترین آپشن سمجھی جاتی ہے۔ پائتھون میں بہت سی اضافی لائبریریاں موجود ہیں جو آپ کو عملی مسائل حل کرنے میں مدد دے سکتی ہیں، جیسے کہ ZIP آرکائیو سے ڈیٹا نکالنا یا تصویر کو گرے اسکیل میں تبدیل کرنا۔ ڈیٹا سائنس کے علاوہ، پائتھون ویب ڈیولپمنٹ کے لیے بھی اکثر استعمال ہوتی ہے۔ * **[پائتھن](https://www.python.org/)**، ایک عمومی مقصد کی پروگرامنگ زبان، جو اپنی سادگی کے باعث اکثر ابتدائ کے لیے بہتر انتخاب سمجھی جاتی ہے۔ پائتھن میں بہت سی اضافی لائبریریاں موجود ہیں جو آپ کو بہت سے عملی مسائل حل کرنے میں مدد دیتی ہیں، مثلاً ZIP آرکائیو سے ڈیٹا نکالنا، یا تصویر کو گرے اسکیل میں تبدیل کرنا۔ ڈیٹا سائنس کے علاوہ، پائتھن اکثر ویب ڈویلپمنٹ کے لیے بھی استعمال ہوتی ہے۔
* **[آر](https://www.r-project.org/)** ایک روایتی ٹول باکس ہے جو شماریاتی ڈیٹا پروسیسنگ کے لیے بنایا گیا ہے۔ اس میں لائبریریوں کا بڑا ذخیرہ (CRAN) موجود ہے، جو اسے ڈیٹا پروسیسنگ کے لیے ایک اچھا انتخاب بناتا ہے۔ تاہم، آر ایک عمومی مقصد کی پروگرامنگ زبان نہیں ہے اور ڈیٹا سائنس کے دائرے سے باہر شاذ و نادر ہی استعمال ہوتی ہے۔ * **[آر](https://www.r-project.org/)** ایک روایتی ٹول باکس ہے جو شماریاتی ڈیٹا پروسیسنگ کے لیے تیار کیا گیا ہے۔ اس میں لائبریریوں کا ایک بڑا ذخیرہ (CRAN) بھی موجود ہے، جو اسے ڈیٹا پروسیسنگ کے لیے اچھا انتخاب بناتا ہے۔ تاہم، آر عمومی مقصد کی پروگرامنگ زبان نہیں ہے، اور ڈیٹا سائنس کے علاوہ کم ہی استعمال ہوتی ہے۔
* **[جولیا](https://julialang.org/)** ایک اور زبان ہے جو خاص طور پر ڈیٹا سائنس کے لیے تیار کی گئی ہے۔ یہ پائتھون کے مقابلے میں بہتر کارکردگی فراہم کرنے کے لیے بنائی گئی ہے، جو اسے سائنسی تجربات کے لیے ایک بہترین ٹول بناتی ہے۔ * **[جولیا](https://julialang.org/)** ایک اور زبان ہے جو خاص طور پر ڈیٹا سائنس کے لیے تیار کی گئی ہے۔ اس کا مقصد پائتھن کی نسبت بہتر کارکردگی دینا ہے، جو اسے سائنسی تجربات کے لیے بہترین اوزار بناتی ہے۔
اس سبق میں، ہم پائتھون کا استعمال کرتے ہوئے سادہ ڈیٹا پروسیسنگ پر توجہ مرکوز کریں گے۔ ہم زبان کی بنیادی واقفیت فرض کریں گے۔ اگر آپ پائتھون کا گہرا جائزہ لینا چاہتے ہیں، تو آپ درج ذیل وسائل میں سے کسی ایک کا حوالہ دے سکتے ہیں: اس سبق میں، ہم سادہ ڈیٹا پروسیسنگ کے لیے پائتھن کے استعمال پر توجہ دیں گے۔ ہم زبان کی بنیادی واقفیت فرض کریں گے۔ اگر آپ پائتھن کا گہرا تعارف چاہتے ہیں، تو آپ درج ذیل ذرائع کی طرف رجوع کر سکتے ہیں:
* [پائتھون کو تفریحی طریقے سے سیکھیں: ٹرٹل گرافکس اور فرکٹلز کے ساتھ](https://github.com/shwars/pycourse) - پائتھون پروگرامنگ کا گٹ ہب پر مبنی تعارفی کورس * [تفریحی انداز میں پائتھن سیکھیں، ٹرٹل گرافکس اور فراکٹلز کے ساتھ](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) پر لرننگ پاتھ * [پائتھن کے ساتھ اپنے پہلے قدم اٹھائیں](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) مائیکروسافٹ لرن پر لرننگ پاتھ
ڈیٹا مختلف شکلوں میں آ سکتا ہے۔ اس سبق میں، ہم ڈیٹا کی تین شکلوں پر غور کریں گے - **ٹیبلر ڈیٹا**، **متن** اور **تصاویر**۔ ڈیٹا کئی اشکال میں آ سکتا ہے۔ اس سبق میں، ہم تین قسم کے ڈیٹا پر غور کریں گے - **جدولی ڈیٹا**, **متن** اور **تصاویر**۔
ہم آپ کو متعلقہ لائبریریوں کا مکمل جائزہ دینے کے بجائے ڈیٹا پروسیسنگ کی چند مثالوں پر توجہ مرکوز کریں گے۔ اس سے آپ کو یہ سمجھنے میں مدد ملے گی کہ کیا ممکن ہے، اور جب آپ کو ضرورت ہو تو اپنے مسائل کے حل تلاش کرنے کے لیے کہاں جانا ہے۔ ہم مختلف لائبریریوں کا مکمل جائزہ دینے کے بجائے چند ڈیٹا پروسیسنگ کی مثالوں پر توجہ دیں گے۔ اس سے آپ کو بنیادی تصور سمجھنے میں مدد ملے گی کہ کیا ممکن ہے، اور یہ سمجھ بھی ملے گی کہ جب آپ کو ضرورت ہو تو اپنے مسائل کے حل کہاں تلاش کرنا ہے۔
> **سب سے مفید مشورہ**۔ جب آپ کو ڈیٹا پر کوئی خاص آپریشن کرنے کی ضرورت ہو اور آپ کو معلوم نہ ہو کہ اسے کیسے کرنا ہے، تو انٹرنیٹ پر تلاش کرنے کی کوشش کریں۔ [Stackoverflow](https://stackoverflow.com/) عام طور پر پائتھون میں بہت سے عام کاموں کے لیے مفید کوڈ نمونے فراہم کرتا ہے۔ > **سب سے مفید نصیحت**۔ جب آپ کو ڈیٹا پر کوئی مخصوص عمل انجام دینا ہو اور آپ نہیں جانتے کہ کیسے کرنا ہے، تو انٹرنیٹ پر تلاش کرنے کی کوشش کریں۔ [Stackoverflow](https://stackoverflow.com/) عام طور پر بہت سے عام کاموں کے لیے پائتھن میں مفید کوڈ نمونے رکھتا ہے۔
## [لیکچر سے پہلے کا کوئز](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## ٹیبلر ڈیٹا اور ڈیٹا فریمز
آپ پہلے ہی ٹیبلر ڈیٹا سے واقف ہو چکے ہیں جب ہم نے ریلیشنل ڈیٹا بیسز کے بارے میں بات کی تھی۔ جب آپ کے پاس بہت زیادہ ڈیٹا ہو، اور وہ مختلف جڑی ہوئی ٹیبلز میں موجود ہو، تو اس کے ساتھ کام کرنے کے لیے SQL کا استعمال کرنا یقینی طور پر سمجھ میں آتا ہے۔ تاہم، بہت سے معاملات میں جب ہمارے پاس ڈیٹا کی ایک ٹیبل ہو، اور ہمیں اس ڈیٹا کے بارے میں کچھ **سمجھ** یا **بصیرت** حاصل کرنی ہو، جیسے کہ تقسیم، اقدار کے درمیان تعلق، وغیرہ۔ ڈیٹا سائنس میں، بہت سے معاملات میں ہمیں اصل ڈیٹا کی کچھ تبدیلیاں کرنے کی ضرورت ہوتی ہے، جس کے بعد بصری نمائندگی کی جاتی ہے۔ یہ دونوں مراحل پائتھون کا استعمال کرتے ہوئے آسانی سے کیے جا سکتے ہیں۔ ## [سبق سے پہلے کوئز](https://ff-quizzes.netlify.app/en/ds/quiz/12)
پائتھون میں دو سب سے زیادہ مفید لائبریریاں ہیں جو آپ کو ٹیبلر ڈیٹا کے ساتھ کام کرنے میں مدد دے سکتی ہیں: ## جدولی ڈیٹا اور ڈیٹافریم
* **[پانڈاز](https://pandas.pydata.org/)** آپ کو **ڈیٹا فریمز** کے ساتھ کام کرنے کی اجازت دیتا ہے، جو ریلیشنل ٹیبلز کے مترادف ہیں۔ آپ کے پاس نامزد کالم ہو سکتے ہیں، اور قطاروں، کالموں اور ڈیٹا فریمز پر مختلف آپریشنز انجام دے سکتے ہیں۔
* **[نمپائی](https://numpy.org/)** ایک لائبریری ہے جو **ٹینسرز**، یعنی کثیر جہتی **ارے** کے ساتھ کام کرنے کے لیے ہے۔ ارے میں ایک ہی بنیادی قسم کی اقدار ہوتی ہیں، اور یہ ڈیٹا فریم سے زیادہ سادہ ہوتا ہے، لیکن یہ زیادہ ریاضیاتی آپریشنز فراہم کرتا ہے اور کم اوور ہیڈ پیدا کرتا ہے۔
کچھ دیگر لائبریریاں بھی ہیں جن کے بارے میں آپ کو معلوم ہونا چاہیے: آپ پہلے ہی جب ہم نے تعلقاتی ڈیٹا بیسز کے بارے میں بات کی تھی، تو آپ جدول نما ڈیٹا سے آشنا ہو چکے ہیں۔ جب آپ کے پاس بہت زیادہ ڈیٹا ہوتا ہے اور یہ مختلف جڑے ہوئے جدولوں میں ہوتا ہے، تو واقعی SQL کا استعمال اس پر کام کرنے کے لیے معقول ہوتا ہے۔ تاہم، بہت سی صورتوں میں جب ہمارے پاس ایک جدول کی شکل میں ڈیٹا ہوتا ہے، اور ہم اس ڈیٹا کے بارے میں کچھ **سمجھ** یا **بصیرت** حاصل کرنا چاہتے ہیں، جیسے تقسیم، اقدار کے درمیان تعلق وغیرہ۔ ڈیٹا سائنس میں بہت سے مواقع ہوتے ہیں جب ہمیں اصلی ڈیٹا کی کچھ تبدیلیاں کرنی پڑتی ہیں، اور پھر اس کی ویژولائزیشن کی جاتی ہے۔ یہ دونوں کام پائتھن کی مدد سے آسانی سے کیے جا سکتے ہیں۔
* **[میٹپلاٹلب](https://matplotlib.org/)** ڈیٹا کی بصری نمائندگی اور گراف بنانے کے لیے استعمال ہونے والی لائبریری ہے
* **[سائپائی](https://www.scipy.org/)** کچھ اضافی سائنسی فنکشنز کے ساتھ ایک لائبریری ہے۔ ہم پہلے ہی اس لائبریری سے اس وقت مل چکے ہیں جب ہم احتمال اور شماریات کے بارے میں بات کر رہے تھے
یہاں ایک کوڈ کا ٹکڑا ہے جو آپ عام طور پر اپنے پائتھون پروگرام کے آغاز میں ان لائبریریوں کو درآمد کرنے کے لیے استعمال کریں گے: پائتھن میں دو سب سے زیادہ مفید لائبریریاں ہیں جو آپ کو جدول نما ڈیٹا سے نمٹنے میں مدد دے سکتی ہیں:
* **[Pandas](https://pandas.pydata.org/)** آپ کو وہ چیزیں سنبھالنے دیتا ہے جنہیں **ڈیٹافریم** کہا جاتا ہے، جو تعلقاتی جدولوں کی طرح ہوتے ہیں۔ آپ کے پاس نامزد کالم ہو سکتے ہیں، اور آپ قطاروں، کالموں اور عمومی طور پر ڈیٹافریم پر مختلف عمل انجام دے سکتے ہیں۔
* **[Numpy](https://numpy.org/)** تینسروں، یعنی کثیر الجہتی **ارے** کے ساتھ کام کرنے کے لیے ایک لائبریری ہے۔ ارے میں سبھی اقدار ایک ہی قسم کی ہوتی ہیں، اور یہ ڈیٹافریم کی نسبت آسان ہے، لیکن یہ زیادہ ریاضیاتی عمل فراہم کرتا ہے اور کم اضافی بوجھ پیدا کرتا ہے۔
چند دیگر لائبریریاں بھی ہیں جن سے آپ واقف ہونا چاہیں گے:
* **[Matplotlib](https://matplotlib.org/)** ایک لائبریری ہے جو ڈیٹا کی ویژولائزیشن اور گراف بنانے کے لیے استعمال ہوتی ہے
* **[SciPy](https://www.scipy.org/)** کچھ اضافی سائنسی فنکشنز کی لائبریری ہے۔ ہم اس لائبریری سے پہلے ہی احتمال اور شماریات کے بارے میں بات کرتے ہوئے مل چکے ہیں
یہاں ایک کوڈ کا ٹکڑا ہے جو آپ معمولاً اپنے پائتھن پروگرام کے شروع میں ان لائبریریوں کو امپورٹ کرنے کے لیے استعمال کریں گے:
```python ```python
import numpy as np import numpy as np
import pandas as pd import pandas as pd
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need from scipy import ... # آپ کو مخصوص ذیلی پیکجز کی وضاحت کرنا ہوگی جن کی آپ کو ضرورت ہے
``` ```
پانڈاز چند بنیادی تصورات کے گرد مرکوز ہے۔ پانڈاز چند بنیادی تصورات کے گرد مرکوز ہے۔
### سیریز ### سیریز
**سیریز** اقدار کی ترتیب ہے، جو فہرست یا نمپائی ارے کی طرح ہے۔ بنیادی فرق یہ ہے کہ سیریز میں ایک **انڈیکس** بھی ہوتا ہے، اور جب ہم سیریز پر آپریشن کرتے ہیں (جیسے، انہیں جمع کرتے ہیں)، تو انڈیکس کو مدنظر رکھا جاتا ہے۔ انڈیکس اتنا سادہ ہو سکتا ہے جتنا کہ عددی قطار نمبر (یہ وہ انڈیکس ہے جو فہرست یا ارے سے سیریز بناتے وقت ڈیفالٹ کے طور پر استعمال ہوتا ہے)، یا اس کی پیچیدہ ساخت ہو سکتی ہے، جیسے کہ تاریخ کا وقفہ۔ **سیریز** اقدار کا ایک تسلسل ہے، جو ایک فہرست یا نمپائی ارے کی طرح ہے۔ اس کا بنیادی فرق یہ ہے کہ سیریز کا ایک **انڈیکس** بھی ہوتا ہے، اور جب ہم سیریز پر عمل کرتے ہیں (مثلاً، انہیں جمع کرتے ہیں)، تو انڈیکس کو بھی مدنظر رکھا جاتا ہے۔ انڈیکس جتنا سادہ ہو سکتا ہے، جیسے کہ عددی قطار نمبر (جو لسٹ یا ارے سے سیریز بنانے پر بطور ڈیفالٹ استعمال ہوتا ہے)، یا پیچیدہ ساخت رکھ سکتا ہے، جیسے تاریخ کا وقفہ۔
> **نوٹ**: اس کے ساتھ موجود نوٹ بک [`notebook.ipynb`](notebook.ipynb) میں کچھ تعارفی پانڈاز کوڈ موجود ہے۔ ہم یہاں صرف چند مثالیں پیش کرتے ہیں، اور آپ کو مکمل نوٹ بک دیکھنے کی دعوت دیتے ہیں۔ > **نوٹ**: ایک ابتدائی پانڈاز کا کوڈ ساتھ موجود نوٹ بک [`notebook.ipynb`](notebook.ipynb) میں موجود ہے۔ ہم یہاں صرف چند مثالیں پیش کرتے ہیں، اور آپ یقیناً مکمل نوٹ بک کو دیکھنے کے لیے خوش آمدید ہیں۔
ایک مثال پر غور کریں: ہم اپنی آئس کریم کی دکان کی فروخت کا تجزیہ کرنا چاہتے ہیں۔ آئیے کچھ وقت کے لیے فروخت کے نمبروں (ہر دن فروخت ہونے والی اشیاء کی تعداد) کی سیریز بنائیں: ایک مثال پر غور کریں: ہم اپنی آئس کریم کی دکان کی فروخت کا تجزیہ کرنا چاہتے ہیں۔ آئیے کسی مدت کے لیے فروخت کی تعداد کی ایک سیریز تیار کرتے ہیں (روزانہ فروخت شدہ اشیاء کی تعداد):
```python ```python
start_date = "Jan 1, 2020" start_date = "Jan 1, 2020"
@ -66,7 +68,7 @@ items_sold.plot()
``` ```
![ٹائم سیریز پلاٹ](../../../../translated_images/ur/timeseries-1.80de678ab1cf727e.webp) ![ٹائم سیریز پلاٹ](../../../../translated_images/ur/timeseries-1.80de678ab1cf727e.webp)
اب فرض کریں کہ ہر ہفتے ہم دوستوں کے لیے ایک پارٹی کا اہتمام کرتے ہیں، اور پارٹی کے لیے آئس کریم کے اضافی 10 پیک لیتے ہیں۔ ہم ایک اور سیریز بنا سکتے ہیں، جو ہفتے کے انڈیکس کے ذریعے ظاہر ہو: اب فرض کریں کہ ہر ہفتے ہم دوستوں کے لیے پارٹی کا اہتمام کرتے ہیں، اور پارٹی کے لیے اضافی 10 پیک آئس کریم لے جاتے ہیں۔ ہم ہفتہ وار انڈیکس والی ایک اور سیریز بنا سکتے ہیں تاکہ اسے ظاہر کیا جا سکے:
```python ```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W")) additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
``` ```
@ -77,34 +79,34 @@ total_items.plot()
``` ```
![ٹائم سیریز پلاٹ](../../../../translated_images/ur/timeseries-2.aae51d575c55181c.webp) ![ٹائم سیریز پلاٹ](../../../../translated_images/ur/timeseries-2.aae51d575c55181c.webp)
> **نوٹ** کہ ہم سادہ سینٹیکس `total_items+additional_items` استعمال نہیں کر رہے ہیں۔ اگر ہم ایسا کرتے، تو ہمیں نتیجہ میں بہت سے `NaN` (*Not a Number*) اقدار ملتی۔ اس کی وجہ یہ ہے کہ `additional_items` سیریز میں انڈیکس پوائنٹس کے لیے کچھ اقدار غائب ہیں، اور کسی بھی چیز میں `NaN` شامل کرنے سے نتیجہ `NaN` ہوتا ہے۔ اس لیے ہمیں جمع کرتے وقت `fill_value` پیرامیٹر کی وضاحت کرنے کی ضرورت ہوتی ہے۔ > **نوٹ** کہ ہم سادہ ترکیب `total_items+additional_items` استعمال نہیں کر رہے ہیں۔ اگر ہم ایسا کرتے، تو نتیجے میں بہت سی `NaN` (*نمبر نہیں*) کی قدریں ملتیں۔ اس کی وجہ یہ ہے کہ `additional_items` سیریز کے کچھ انڈیکس پوائنٹس کے لیے قدریں موجود نہیں ہیں، اور Nan کو کسی بھی چیز سے جمع کرنے کا نتیجہ `NaN` ہوتا ہے۔ اس لیے ہمیں جمع کرتے وقت `fill_value` پیرا میٹر بیان کرنا پڑتا ہے۔
ٹائم سیریز کے ساتھ، ہم مختلف وقت کے وقفوں کے ساتھ سیریز کو **دوبارہ نمونہ** بنا سکتے ہیں۔ مثال کے طور پر، فرض کریں کہ ہم ماہانہ اوسط فروخت کا حجم شمار کرنا چاہتے ہیں۔ ہم درج ذیل کوڈ استعمال کر سکتے ہیں: وقت کی سیریز کے ساتھ، ہم مختلف وقت کے وقفوں کے ساتھ سیریز کو **ریسمپل** بھی کر سکتے ہیں۔ مثال کے طور پر، فرض کریں ہم ماہانہ اوسط فروخت کا حساب کرنا چاہتے ہیں۔ ہم درج ذیل کوڈ استعمال کر سکتے ہیں:
```python ```python
monthly = total_items.resample("1M").mean() monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar') ax = monthly.plot(kind='bar')
``` ```
![ماہانہ ٹائم سیریز اوسط](../../../../translated_images/ur/timeseries-3.f3147cbc8c624881.webp) ![ماہانہ ٹائم سیریز اوسط](../../../../translated_images/ur/timeseries-3.f3147cbc8c624881.webp)
### ڈیٹا فریم ### ڈیٹافریم
ڈیٹا فریم بنیادی طور پر ایک ہی انڈیکس کے ساتھ سیریز کا مجموعہ ہے۔ ہم کئی سیریز کو ایک ساتھ ڈیٹا فریم میں جمع کر سکتے ہیں: ایک ڈیٹافریم بنیادی طور پر ایک ہی انڈیکس والی سیریز کا مجموعہ ہے۔ ہم کئی سیریز کو مل کر ایک ڈیٹافریم بنا سکتے ہیں:
```python ```python
a = pd.Series(range(1,10)) a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9)) b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b]) df = pd.DataFrame([a,b])
``` ```
یہ ہمیں ایک افقی ٹیبل دے گا جیسے: یہ ایک عمودی جدول بنائے گا:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- | | --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | | 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 ```python
df = pd.DataFrame({ 'A' : a, 'B' : b }) df = pd.DataFrame({ 'A' : a, 'B' : b })
``` ```
یہ ہمیں ایک ٹیبل دے گا جیسے: یہ ہمیں ایک جدول دے گا:
| | A | B | | | A | B |
| --- | --- | ------ | | --- | --- | ------ |
@ -118,39 +120,39 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very | | 7 | 8 | very |
| 8 | 9 | much | | 8 | 9 | much |
**نوٹ** کہ ہم اس ٹیبل کی ترتیب کو پچھلے ٹیبل کو ٹرانسپوز کر کے بھی حاصل کر سکتے ہیں، جیسے کہ لکھ کر **نوٹ** کہ ہم اس جدول کی ترتیب پچھلے جدول کو ٹرانسپوز کر کے بھی حاصل کر سکتے ہیں، مثلاً لکھ کر
```python ```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' }) 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` 5 سے زیادہ ہو، ہم لکھ سکتے ہیں `df[df['A']>5]`۔ **صرف مخصوص قطاروں کو فلٹر کرنا**۔ مثال کے طور پر، کالم `A` کی قیمت 5 سے زیادہ والی قطاریں رکھنا ہو، تو ہم لکھیں `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` ایک Boolean سیریز واپس کرتا ہے، جو ظاہر کرتی ہے کہ کیا ہر عنصر کے لیے اظہار `True` یا `False` ہے۔ جب Boolean سیریز کو انڈیکس کے طور پر استعمال کیا جاتا ہے، تو یہ ڈیٹافریم میں قطاروں کا ذیلی مجموعہ واپس دیتا ہے۔ چنانچہ کسی بھی عام پائتھن Boolean اظہار کو استعمال کرنا ممکن نہیں ہے، مثلا، `df[df['A']>5 and df['A']<7]` غلط ہوگا۔ اس کے بجائے، آپ Boolean سیریز پر خاص `&` آپریٹر استعمال کریں، لکھ کر `df[(df['A']>5) & (df['A']<7)]` (*یہاں پر بریکٹ ضروری ہیں*)۔
**نئے قابل حساب کالمز بنانا**۔ ہم اپنے ڈیٹا فریم کے لیے نئے قابل حساب کالمز کو آسانی سے بنا سکتے ہیں جیسے کہ درج ذیل اظہار کا استعمال کرتے ہوئے: **نئے قابل حساب کالمز بنانا**۔ ہم اپنے ڈیٹافریم کے لیے نیا قابل حساب کالم آسانی سے اس طرح بنا سکتے ہیں:
```python ```python
df['DivA'] = df['A']-df['A'].mean() df['DivA'] = df['A']-df['A'].mean()
``` ```
یہ مثال `A` کی اس کے اوسط قدر سے انحراف کا حساب لگاتی ہے۔ یہاں جو اصل میں ہوتا ہے وہ یہ ہے کہ ہم ایک سیریز کا حساب لگا رہے ہیں، اور پھر اس سیریز کو بائیں طرف تفویض کر رہے ہیں، ایک اور کالم بنا رہے ہیں۔ اس لیے، ہم کسی بھی آپریشنز کا استعمال نہیں کر سکتے جو سیریز کے ساتھ مطابقت نہیں رکھتے، مثال کے طور پر، نیچے دیا گیا کوڈ غلط ہے: یہ مثال A کی اوسط سے اس کی انحراف کو حساب کرتی ہے۔ حقیقت میں ہم ایک سیریز کا حساب کر رہے ہیں، اور پھر اس سیریز کو بائیں ہاتھ کی طرف تفویض کر رہے ہیں، ایک اور کالم بناتے ہوئے۔ چنانچہ، ہم کوئی بھی ایسا عمل استعمال نہیں کر سکتے جو سیریز کے ساتھ موافق نہ ہو، مثلاً نیچے دیا گیا کوڈ غلط ہے:
```python ```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi" # غلط کوڈ -> df['ADescr'] = "کم" اگر df['A'] < 5 ورنہ "زیادہ"
df['LenB'] = len(df['B']) # <- Wrong result df['LenB'] = len(df['B']) # <- غلط نتیجہ
``` ```
آخری مثال، اگرچہ نحوی طور پر درست ہے، ہمیں غلط نتیجہ دیتی ہے، کیونکہ یہ سیریز `B` کی لمبائی کو کالم کے تمام اقدار پر تفویض کرتی ہے، اور انفرادی عناصر کی لمبائی کو نہیں جیسا کہ ہم نے ارادہ کیا تھا۔ آخری مثال، حالانکہ نحوی اعتبار سے درست ہے، غلط نتیجہ دیتی ہے، کیونکہ یہ سیریز `B` کی لمبائی کو کالم کے تمام اقدار پر تفویض کرتی ہے، بجائے اس کے کہ انفرادی عناصر کی لمبائی جیسی ہم نے ارادہ کیا تھا۔
اگر ہمیں اس طرح کے پیچیدہ اظہار کا حساب لگانے کی ضرورت ہو، تو ہم `apply` فنکشن استعمال کر سکتے ہیں۔ آخری مثال کو درج ذیل کے طور پر لکھا جا سکتا ہے: اگر ہمیں پیچیدہ اظہار کا حساب کرنا ہو تو ہم `apply` فنکشن استعمال کر سکتے ہیں۔ آخری مثال کو یوں لکھا جا سکتا ہے:
```python ```python
df['LenB'] = df['B'].apply(lambda x : len(x)) df['LenB'] = df['B'].apply(lambda x : len(x))
# or # یا
df['LenB'] = df['B'].apply(len) df['LenB'] = df['B'].apply(len)
``` ```
اوپر دیے گئے آپریشنز کے بعد، ہم درج ذیل ڈیٹا فریم کے ساتھ ختم ہوں گے: مذکورہ بالا عمل کے بعد، ہمیں درج ذیل ڈیٹافریم ملے گا:
| | A | B | DivA | LenB | | | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- | | --- | --- | ------ | ---- | ---- |
@ -164,22 +166,22 @@ df['LenB'] = df['B'].apply(len)
| 7 | 8 | very | 3.0 | 4 | | 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 | | 8 | 9 | much | 4.0 | 4 |
**نمبرز کی بنیاد پر قطاروں کا انتخاب** `iloc` کنسٹرکٹ کا استعمال کرتے ہوئے کیا جا سکتا ہے۔ مثال کے طور پر، ڈیٹا فریم سے پہلی 5 قطاروں کو منتخب کرنے کے لیے: **نمبر کے حساب سے قطاروں کا انتخاب** `iloc` کنسٹرکٹ استعمال کر کے کیا جا سکتا ہے۔ مثال کے طور پر، ڈیٹافریم کی پہلی 5 قطاریں منتخب کرنے کے لیے:
```python ```python
df.iloc[:5] df.iloc[:5]
``` ```
**گروپنگ** اکثر *پیوٹ ٹیبلز* جیسا نتیجہ حاصل کرنے کے لیے استعمال ہوتی ہے جیسا کہ ایکسل میں۔ فرض کریں کہ ہم `LenB` کی دی گئی تعداد کے لیے کالم `A` کی اوسط قدر کا حساب لگانا چاہتے ہیں۔ پھر ہم اپنے ڈیٹا فریم کو `LenB` کے ذریعے گروپ کر سکتے ہیں، اور `mean` کال کر سکتے ہیں: **گروپ بندی** اکثر اس طرح کے نتائج حاصل کرنے کے لیے استعمال ہوتی ہے جیسے Excel میں *pivot tables* ہوتے ہیں۔ فرض کریں ہم کالم `A` کی مقدار کو `LenB` کی ہر مخصوص عددی مقدار کے لیے اوسط نکالنا چاہتے ہیں۔ پھر ہم اپنے ڈیٹافریم کو `LenB` کے لحاظ سے گروپ کر کے `mean` کال کر سکتے ہیں:
```python ```python
df.groupby(by='LenB')[['A','DivA']].mean() df.groupby(by='LenB')[['A','DivA']].mean()
``` ```
اگر ہمیں گروپ میں اوسط اور عناصر کی تعداد کا حساب لگانے کی ضرورت ہو، تو ہم زیادہ پیچیدہ `aggregate` فنکشن استعمال کر سکتے ہیں: اگر ہمیں گروپ میں اوسط اور عناصر کی تعداد دونوں کا حساب چاہیے، تو ہم زیادہ پیچیدہ `aggregate` فنکشن استعمال کر سکتے ہیں:
```python ```python
df.groupby(by='LenB') \ df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \ .aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'}) .rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
``` ```
یہ ہمیں درج ذیل ٹیبل دیتا ہے: اس سے ہمیں درج ذیل جدول ملتا ہے:
| LenB | Count | Mean | | LenB | Count | Mean |
| ---- | ----- | -------- | | ---- | ----- | -------- |
@ -190,92 +192,97 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 | | 6 | 2 | 6.000000 |
### ڈیٹا حاصل کرنا ### ڈیٹا حاصل کرنا
ہم نے دیکھا کہ Python اشیاء سے Series اور DataFrames بنانا کتنا آسان ہے۔ تاہم، ڈیٹا عام طور پر ٹیکسٹ فائل یا Excel ٹیبل کی شکل میں آتا ہے۔ خوش قسمتی سے، Pandas ہمیں ڈسک سے ڈیٹا لوڈ کرنے کا ایک آسان طریقہ فراہم کرتا ہے۔ مثال کے طور پر، CSV فائل پڑھنا اتنا ہی آسان ہے:
ہم نے دیکھا ہے کہ Python اشیاء سے Series اور DataFrames تیار کرنا کتنا آسان ہے۔ تاہم، ڈیٹا عام طور پر ایک ٹیکسٹ فائل یا ایکسل ٹیبل کی صورت میں آتا ہے۔ خوش قسمتی سے، Pandas ہمیں ڈیٹا کو ڈسک سے لوڈ کرنے کا ایک آسان طریقہ فراہم کرتا ہے۔ مثال کے طور پر، CSV فائل پڑھنا اس قدر آسان ہے:
```python ```python
df = pd.read_csv('file.csv') 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=` پیرامیٹر کے ذریعے مختلف قسم کے گرافز کو سپورٹ کرتا ہے، آپ ہمیشہ `matplotlib` لائبریری کا استعمال کرکے مزید پیچیدہ گراف بنا سکتے ہیں۔ ہم ڈیٹا کی بصری نمائندگی کو الگ کورس کے اسباق میں تفصیل سے کور کریں گے۔ ہم نے کچھ کالمز کو دیکھنے کے لیے `plot` فنکشن کا استعمال بھی دیکھا ہے۔ جبکہ `plot` بہت سارے کاموں کے لیے مفید ہے، اور `kind=` پیرا میٹر کے ذریعے بہت سی مختلف گراف اقسام کی حمایت کرتا ہے، آپ ہمیشہ پیچیدہ گراف بنانے کے لیے خام `matplotlib` لائبریری استعمال کر سکتے ہیں۔ ہم ڈیٹا کی بصری نمائندگی کو تفصیل سے الگ کورس کے اسباق میں کور کریں گے۔
یہ جائزہ Pandas کے سب سے اہم تصورات کو کور کرتا ہے، تاہم، یہ لائبریری بہت وسیع ہے، اور آپ اس کے ساتھ جو کچھ کر سکتے ہیں اس کی کوئی حد نہیں ہے! آئیے اب اس علم کو مخصوص مسائل کے حل کے لیے استعمال کریں۔ یہ جائزہ Pandas کے سب سے اہم تصورات کو کور کرتا ہے، تاہم، یہ لائبریری بہت وسیع ہے، اور آپ اس کے ساتھ جو کچھ بھی کرنا چاہتے ہیں اس کی کوئی حد نہیں ہے! آئیے اب اس علم کو کسی مخصوص مسئلے کو حل کرنے کے لیے استعمال کرتے ہیں۔
## 🚀 چیلنج 1: COVID کے پھیلاؤ کا تجزیہ ## 🚀 چیلنج 1: COVID پھیلاؤ کا تجزیہ
پہلا مسئلہ جس پر ہم توجہ مرکوز کریں گے وہ COVID-19 کے وبائی پھیلاؤ کی ماڈلنگ ہے۔ ایسا کرنے کے لیے، ہم مختلف ممالک میں متاثرہ افراد کی تعداد کے ڈیٹا کا استعمال کریں گے، جو [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) نے [Johns Hopkins University](https://jhu.edu/) کے ذریعے فراہم کیا ہے۔ ڈیٹا سیٹ [اس GitHub Repository](https://github.com/CSSEGISandData/COVID-19) میں دستیاب ہے۔ پہلا مسئلہ جس پر ہم توجہ مرکوز کریں گے وہ COVID-19 کی وباء کے پھیلاؤ کی ماڈلنگ ہے۔ اس کے لیے، ہم مختلف ممالک میں متاثرہ افراد کی تعداد کے بارے میں ڈیٹا استعمال کریں گے، جو [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) نے [Johns Hopkins University](https://jhu.edu/) میں فراہم کیا ہے۔ ڈیٹا سیٹ [اس GitHub ریپوزٹری](https://github.com/CSSEGISandData/COVID-19) میں دستیاب ہے۔
چونکہ ہم یہ دکھانا چاہتے ہیں کہ ڈیٹا کے ساتھ کیسے کام کیا جائے، ہم آپ کو دعوت دیتے ہیں کہ [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) کھولیں اور اسے شروع سے آخر تک پڑھیں۔ آپ سیلز کو چلا سکتے ہیں اور آخر میں دیے گئے کچھ چیلنجز کو حل کر سکتے ہیں۔ چونکہ ہم یہ دکھانا چاہتے ہیں کہ ڈیٹا کے ساتھ کیسے کام کیا جائے، اس لیے آپ سے گزارش ہے کہ [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) کھولیں اور اسے اوپر سے نیچے تک پڑھیں۔ آپ سیلز کو بھی چلا سکتے ہیں، اور ہمارے چھوڑے ہوئے چیلنجز بھی حل کر سکتے ہیں۔
![COVID Spread](../../../../translated_images/ur/covidspread.f3d131c4f1d260ab.webp) ![COVID Spread](../../../../translated_images/ur/covidspread.f3d131c4f1d260ab.webp)
> اگر آپ کو 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) کوگنیٹو سروس کا استعمال کرتے ہوئے [اس بلاگ پوسٹ میں](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) ڈیٹا سیٹ ڈاؤن لوڈ کر سکتے ہیں، لیکن اس میں میٹا ڈیٹا فائل کے علاوہ تمام مکمل متن شامل ہوں گے۔ > **نوٹ**: ہم اس ذخیرہ میں ڈیٹا سیٹ کی نقل فراہم نہیں کرتے۔ آپ کو پہلے [اس Kaggle ڈیٹا سیٹ](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) سے [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) فائل ڈاؤن لوڈ کرنا ہوگی۔ Kaggle پر رجسٹریشن ضروری ہو سکتی ہے۔ آپ بغیر رجسٹریشن کے بھی اس ڈیٹا سیٹ کو [یہاں](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) سے ڈاؤن لوڈ کر سکتے ہیں، لیکن اس میں تمام مکمل متون کے علاوہ میٹا ڈیٹا فائل شامل ہوگی۔
[`notebook-papers.ipynb`](notebook-papers.ipynb) کھولیں اور اسے شروع سے آخر تک پڑھیں۔ آپ سیلز کو چلا سکتے ہیں اور آخر میں دیے گئے کچھ چیلنجز کو حل کر سکتے ہیں۔ [`notebook-papers.ipynb`](notebook-papers.ipynb) کو کھولیں اور اسے اوپر سے نیچے پڑھیں۔ آپ سیلز بھی چلا سکتے ہیں، اور کچھ چیلنجز جو ہم نے آپ کے لیے چھوڑے ہیں، کر سکتے ہیں۔
![Covid Medical Treatment](../../../../translated_images/ur/covidtreat.b2ba59f57ca45fbc.webp) ![Covid Medical Treatment](../../../../translated_images/ur/covidtreat.b2ba59f57ca45fbc.webp)
## تصویری ڈیٹا کی پروسیسنگ ## تصویر کے ڈیٹا کی پروسیسنگ
حال ہی میں، بہت طاقتور 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) ماڈل کو مخصوص اشیاء کی شناخت کے لیے تربیت دے سکتے ہیں۔ * **آبجیکٹ ڈیٹیکشن** تاکہ تصویر میں مختلف اشیاء کا پتہ لگایا جا سکے۔ [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) کا استعمال کرکے کال کی جا سکتی ہیں، اور اس طرح آپ کے ڈیٹا کے تجزیے کے ورک فلو میں آسانی سے شامل کی جا سکتی ہیں۔ یہ تمام کلاؤڈ سروسز [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) کا استعمال کرکے ایک قابل وضاحت ماڈل بناتے ہیں۔ * بلاگ پوسٹ [کوڈنگ کے بغیر ڈیٹا سائنس کیسے سیکھیں](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) کا استعمال کرتے ہیں تاکہ ایونٹس کی تصاویر میں لوگوں کے جذبات نکال سکیں، یہ سمجھنے کی کوشش کرتے ہوئے کہ کون سی چیز لوگوں کو خوش کرتی ہے۔ * [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) ## [لیکچر کے بعد کا کوئز](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) * [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 منٹ میں 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) * [Pandas Visualization کی دستاویزات](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Python سیکھنا** **Python سیکھنا**
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) * [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 پر لرننگ پاتھ * [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) نے تحریر کیا ہے۔
--- ---
**ڈسکلیمر**: <!-- CO-OP TRANSLATOR DISCLAIMER START -->
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ **ڈس کلیمر**:
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے ترجمہ کی گئی ہے۔ جبکہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنے مادری زبان میں مستند ماخذ سمجھی جائے گی۔ حساس معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم قبول نہیں کرتے۔
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -96,8 +96,8 @@
"language_code": "zh-CN" "language_code": "zh-CN"
}, },
"2-Working-With-Data/07-python/README.md": { "2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3", "original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2025-09-06T15:26:30+00:00", "translation_date": "2026-07-17T18:56:26+00:00",
"source_file": "2-Working-With-Data/07-python/README.md", "source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "zh-CN" "language_code": "zh-CN"
}, },

@ -1,60 +1,63 @@
# 使用数据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) 制作的速写笔记_ |
[![介绍视频](../../../../translated_images/zh-CN/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y) [![介绍视频](../../../../translated_images/zh-CN/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
虽然数据库提供了非常高效的方式来存储数据并通过查询语言进行查询但最灵活的数据处理方式是编写自己的程序来操作数据。在许多情况下使用数据库查询可能更有效。然而当需要更复杂的数据处理时SQL可能无法轻松完成 虽然数据库提供了非常高效的存储数据和使用查询语言查询数据的方式,但数据处理最灵活的方式是编写自己的程序来操作数据。在许多情况下,执行数据库查询会更有效。然而,有些情况需要更复杂的数据处理,使用 SQL 很难实现
数据处理可以用任何编程语言编写,但有些语言在处理数据方面更高级。数据科学家通常偏好以下语言之一 数据处理可以用任何编程语言来编写,不过有些语言在处理数据方面有更高级的表现。数据科学家通常偏好以下几种语言
* **[Python](https://www.python.org/)** 是一种通用编程语言由于其简单性通常被认为是初学者的最佳选择之一。Python有许多额外的库可以帮助解决许多实际问题例如从ZIP压缩文件中提取数据或将图片转换为灰度图像。除了数据科学Python还常用于Web开发。 * **[Python](https://www.python.org/)**一种通用编程语言通常因其简洁性被视为初学者的最佳选择之一。Python 拥有大量额外库,可以帮助解决许多实际问题,比如从 ZIP 压缩包中提取数据或将图片转换为灰度图。除了数据科学之外Python 也常用于网页开发。
* **[R](https://www.r-project.org/)** 是一个传统工具箱专为统计数据处理而开发。它包含大量的库资源CRAN使其成为数据处理的良好选择。然而R不是通用编程语言很少在数据科学领域之外使用。 * **[R](https://www.r-project.org/)** 是一个传统的工具箱专门为统计数据处理开发。它还包含大型库仓库CRAN是进行数据处理的不错选择。然而R 不是通用编程语言,在数据科学领域外很少使用。
* **[Julia](https://julialang.org/)** 是另一种专为数据科学开发的语言。它旨在提供比Python更好的性能是科学实验的绝佳工具。 * **[Julia](https://julialang.org/)** 是另一种专为数据科学开发的语言。它旨在比 Python 提供更好的性能,是科学实验的优秀工具。
在本课程中我们将重点使用Python进行简单的数据处理。我们假设您对该语言有基本的了解。如果您想深入学习Python可以参考以下资源 本课将重点介绍使用 Python 进行简单数据处理。我们假设你对该语言有基本了解。如果你想更深入学习 Python可以参考以下资源
* [通过Turtle Graphics和分形趣味学习Python](https://github.com/shwars/pycourse) - 基于GitHub的Python编程快速入门课程 * [用 Turtle 图形和分形有趣地学习 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 的第一步](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum),微软学习平台上的学习路径
数据可以有多种形式。在本课程中,我们将讨论三种数据形式——**表格数据**、**文本**和**图像**。 数据可以有多种形式。本课将考虑三种数据形式——<strong>表格数据</strong><strong>文本</strong><strong>图像</strong>
我们将重点介绍几种数据处理示例,而不是详尽介绍所有相关库。这有助于你掌握主要思想,并让你了解在需要时去哪里寻找解决方案。
> <strong>最有用的建议</strong>。当你需要对数据执行某种操作但不知道如何操作时,试着在网上搜索。[Stackoverflow](https://stackoverflow.com/) 通常包含很多关于典型任务的 Python 代码示例。
我们将专注于一些数据处理的示例,而不是全面介绍所有相关库。这将帮助您了解主要的可能性,并让您知道在需要时可以在哪里找到解决问题的方法。
> **最有用的建议**:当您需要对数据执行某些操作但不知道如何操作时,请尝试在互联网上搜索。[Stackoverflow](https://stackoverflow.com/) 通常包含许多关于Python的典型任务的有用代码示例。
## [课前测验](https://ff-quizzes.netlify.app/en/ds/quiz/12) ## [课前测验](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## 表格数据数据框 ## 表格数据数据框
在我们讨论关系型数据库时您已经接触过表格数据。当您拥有大量数据并且数据存储在许多不同的关联表中时使用SQL来处理它是非常合理的。然而在许多情况下我们有一个数据表并需要对这些数据进行一些**理解**或**洞察**例如分布、值之间的相关性等。在数据科学中我们经常需要对原始数据进行一些转换然后进行可视化。这两个步骤都可以轻松使用Python完成。 当我们谈论关系型数据库时,你已经接触过表格数据。若数据量很大且包含多个相互关联的表,使用 SQL 处理数据显然更合适。不过,很多情况下仅有一张数据表,我们需要对数据获得一些<strong>理解</strong><strong>洞见</strong>,比如分布情况、值之间的相关性等。在数据科学中,常常需要对原始数据做一些变换,然后进行可视化。上述步骤都可以用 Python 轻松完成。
Python中有两个最有用的库可以帮助您处理表格数据: Python 中有两个非常有用的库可以帮助你处理表格数据:
* **[Pandas](https://pandas.pydata.org/)** 允许您操作所谓的**数据框Dataframes**,它类似于关系表。您可以拥有命名的列,并对行、列以及整个数据框执行不同的操作。 * **[Pandas](https://pandas.pydata.org/)** 支持操作所谓的 **数据框Dataframes**,类似关系型表。你可以有命名列,并对行、列以及整体数据框执行各种操作。
* **[Numpy](https://numpy.org/)** 是一个用于处理**张量Tensors**的库,即多维**数组Arrays**。数组的值具有相同的底层类型,它比数据框更简单,但提供了更多的数学操作,并减少了开销 * **[Numpy](https://numpy.org/)** 是用于处理 <strong>张量</strong>,即多维 <strong>数组</strong> 的库。数组内元素类型相同,结构比数据框简单,但提供更多数学运算,且占用开销更小
此外,还有几个您应该了解的库: 另外还有几个你应该了解的库:
* **[Matplotlib](https://matplotlib.org/)** 是一个用于数据可视化和绘表的库 * **[Matplotlib](https://matplotlib.org/)** 用于数据可视化和绘图
* **[SciPy](https://www.scipy.org/)** 是一个包含一些额外科学函数的库。我们在讨论概率和统计时已经接触过这个库 * **[SciPy](https://www.scipy.org/)** 附加科学计算功能的库。我们在讲概率和统计时已经遇到过它
以下是您通常在Python程序开头导入这些库的代码 下面这段代码是你通常在 Python 程序开头导入上述库的写法
```python ```python
import numpy as np import numpy as np
import pandas as pd import pandas as pd
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need from scipy import ... # 你需要指定你需要的确切子包
``` ```
Pandas围绕几个基本概念构建。 Pandas 围绕几个基本概念展开。
### 序列Series
### Series序列 **Series** 是值的序列,类似列表或 numpy 数组。主要区别是序列还有一个<strong>索引</strong>,操作序列时(如相加)会考虑索引。索引可以是简单的整数行号(当从列表或数组创建序列时默认索引),也可以是复杂结构,比如日期区间。
**Series** 是一组值类似于列表或numpy数组。主要区别在于Series还有一个**索引**当我们对Series进行操作例如相加会考虑索引。索引可以简单到整数行号从列表或数组创建Series时默认使用的索引也可以具有复杂结构例如日期区间 > <strong></strong>:伴随教材中有一些基础 Pandas 代码,见 [`notebook.ipynb`](notebook.ipynb)。这里仅列举部分示例,你可以查看完整笔记本
> **注意**:在配套的笔记本文件 [`notebook.ipynb`](notebook.ipynb) 中有一些Pandas的入门代码。我们在这里仅概述一些示例您可以查看完整的笔记本文件。 举个例子:我们想分析冰淇淋店的销售额。生成一个销售数量序列(每天售出数量)如下:
举个例子:我们想分析冰淇淋店的销售情况。让我们生成一段时间内的销售数据(每天售出的商品数量):
```python ```python
start_date = "Jan 1, 2020" start_date = "Jan 1, 2020"
end_date = "Mar 31, 2020" end_date = "Mar 31, 2020"
@ -65,45 +68,45 @@ items_sold.plot()
``` ```
![时间序列图](../../../../translated_images/zh-CN/timeseries-1.80de678ab1cf727e.webp) ![时间序列图](../../../../translated_images/zh-CN/timeseries-1.80de678ab1cf727e.webp)
假设每周我们都会举办一个朋友聚会并额外拿出10盒冰淇淋用于聚会。我们可以创建另一个以周为索引的Series来展示这一点 假设每周我们为朋友举办派对,额外准备 10 包冰淇淋。可以创建另一个以周为索引的序列表示
```python ```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W")) additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
``` ```
当我们将两个Series相加时就得到了总数: 把两个序列相加,得到总数:
```python ```python
total_items = items_sold.add(additional_items,fill_value=0) total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot() total_items.plot()
``` ```
![时间序列图](../../../../translated_images/zh-CN/timeseries-2.aae51d575c55181c.webp) ![时间序列图](../../../../translated_images/zh-CN/timeseries-2.aae51d575c55181c.webp)
> **注意** 我们没有使用简单的语法 `total_items+additional_items`。如果使用这种方法我们会在结果Series中得到许多`NaN`*Not a Number*)值。这是因为在`additional_items`的某些索引点上缺少值,而将`NaN`与任何值相加都会得到`NaN`。因此,我们需要在相加时指定`fill_value`参数。 > <strong>注意</strong>,这里没有使用简单写法 `total_items+additional_items`。若用简单写法,会得到很多 `NaN`(非数字)值。因为 `additional_items` 序列在某些索引处缺失值,而任何数加 `NaN` 仍为 `NaN`。所以相加时要指定 `fill_value` 参数。
于时间序列,我们还可以使用不同的时间间隔对序列进行**重采样**。例如,假设我们想计算每月的平均销售量,可以使用以下代码: 时间序列,还可以用不同时间间隔进行<strong>重采样</strong>。例如要计算月均销售量,可以用以下代码:
```python ```python
monthly = total_items.resample("1M").mean() monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar') ax = monthly.plot(kind='bar')
``` ```
![月时间序列平均值](../../../../translated_images/zh-CN/timeseries-3.f3147cbc8c624881.webp) ![时间序列平均值](../../../../translated_images/zh-CN/timeseries-3.f3147cbc8c624881.webp)
### DataFrame(数据框 ### 数据框(DataFrame
数据框本质上是具有相同索引的多个Series的集合。我们可以将几个Series组合成一个数据框: 数据框本质上是同一索引的多个序列集合。我们可以把几个序列合并为一个数据框:
```python ```python
a = pd.Series(range(1,10)) a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9)) b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b]) df = pd.DataFrame([a,b])
``` ```
将创建如下的水平表格: 会创建如下横向表格:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- | | --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | | 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 |
我们还可以将Series作为列并使用字典指定列名: 也可以用序列作为列,通过字典指定列名:
```python ```python
df = pd.DataFrame({ 'A' : a, 'B' : b }) df = pd.DataFrame({ 'A' : a, 'B' : b })
``` ```
这将生成如下表格: 生成如下表格:
| | A | B | | | A | B |
| --- | --- | ------ | | --- | --- | ------ |
@ -117,39 +120,39 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very | | 7 | 8 | very |
| 8 | 9 | much | | 8 | 9 | much |
**注意** 我们还可以通过转置前一个表格来获得这种表格布局,例如: <strong>注意</strong>也可以通过转置上表得到这种布局,例如写成
```python ```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' }) df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : 'B' })
``` ```
这里`.T`表示转置数据框的操作,即交换行和列,而`rename`操作允许我们重命名列以匹配前面的示例。 这里 `.T` 表示转置操作,即行列转换,`rename` 操作用于重命名列使其匹配上述示例。
以下是我们可以对数据框执行的一些最重要操作: 以下是我们常用的数据框操作:
**列选择**。我们可以通过写`df['A']`选择单个列——此操作返回一个Series。我们还可以通过写`df[['B','A']]`选择列的子集到另一个数据框——此操作返回另一个数据框。 <strong>选列</strong>。用 `df['A']` 选择单列返回序列。用 `df[['B','A']]` 选择多列返回数据框。
**按条件过滤**某些行。例如,要仅保留列`A`大于5的行可以写`df[df['A']>5]` <strong>按条件过滤行</strong>。例如保留列 `A` 大于 5 的行,可以写 `df[df['A']>5]`
> **注意**:过滤的工作原理如下。表达式`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)]`*括号在这里很重要*)。 > <strong>注意</strong>:过滤通过布尔序列实现。表达式 `df['A']<5` 返回布尔序列表示每个元素是否满足条件,布尔序列用作索引返回满足条件的行。不能使用普通布尔表达式,比如 `df[df['A']>5 and df['A']<7]` 是错误的。应使用专用的 `&` 运算符,写成 `df[(df['A']>5) & (df['A']<7)]`(括号很重要)。
**创建新的可计算列**。我们可以通过使用直观的表达式轻松为数据框创建新的可计算列: <strong>创建可计算新列</strong>。可以用直观表达式轻松创建新列:
```python ```python
df['DivA'] = df['A']-df['A'].mean() df['DivA'] = df['A']-df['A'].mean()
``` ```
此示例计算列A与其平均值的偏差。这里实际发生的是我们计算了一个Series然后将其分配给左侧创建了另一个列。因此我们不能使用与Series不兼容的任何操作例如以下代码是错误的 示例中计算了列 A 与其均值的差值。实际上是先计算出一个序列,然后赋值为新列。故不能用不支持序列的操作,例如,下面代码是错误写法
```python ```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi" # 错误的代码 -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result df['LenB'] = len(df['B']) # <-
``` ```
后一个示例虽然语法正确但会给出错误结果因为它将Series`B`的长度分配给列中的所有值,而不是分配给每个元素的长度。 该例语法正确,但返回错误结果,因为它将序列 `B` 的长度赋给所有单元格,而不是每个元素的长度。
如果我们需要计算类似这样的复杂表达式,可以使用`apply`函数。最后一个示例可以写成如下 若计算复杂表达式,可用 `apply` 函数。上述例子可写成
```python ```python
df['LenB'] = df['B'].apply(lambda x : len(x)) df['LenB'] = df['B'].apply(lambda x : len(x))
# or # 或者
df['LenB'] = df['B'].apply(len) df['LenB'] = df['B'].apply(len)
``` ```
经过上述操作后,我们将得到以下数据框: 经过上述操作,我们将得到如下数据框:
| | A | B | DivA | LenB | | | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- | | --- | --- | ------ | ---- | ---- |
@ -163,22 +166,22 @@ df['LenB'] = df['B'].apply(len)
| 7 | 8 | very | 3.0 | 4 | | 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 | | 8 | 9 | much | 4.0 | 4 |
**基于数字选择行**可以使用`iloc`构造。例如,要选择数据框的前5行 <strong>基于行号选择行</strong>,可用 `iloc`。比如选择前5行
```python ```python
df.iloc[:5] df.iloc[:5]
``` ```
**分组**通常用于获得类似Excel中*数据透视表*的结果。假设我们想计算列`A`的平均值,按`LenB`的不同值分组。我们可以按`LenB`分组数据框,然后调用`mean` <strong>分组</strong>常用于实现类似 Excel 数据透视表的功能。假设想对每个 `LenB` 值计算列 `A` 的均值,可以用 `LenB` 分组,再调用 `mean`
```python ```python
df.groupby(by='LenB')[['A','DivA']].mean() df.groupby(by='LenB')[['A','DivA']].mean()
``` ```
如果我们需要计算平均值和组中的元素数量,可以使用更复杂的`aggregate`函数: 如果要计算均值和组内元素数量,可用更复杂的 `aggregate` 函数:
```python ```python
df.groupby(by='LenB') \ df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \ .aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'}) .rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
``` ```
这将生成以下表格 得到如下表
| LenB | Count | Mean | | LenB | Count | Mean |
| ---- | ----- | -------- | | ---- | ----- | -------- |
@ -189,92 +192,97 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 | | 6 | 2 | 6.000000 |
### 获取数据 ### 获取数据
我们已经看到,从 Python 对象构建 Series 和 DataFrame 是多么简单。然而,数据通常以文本文件或 Excel 表格的形式出现。幸运的是Pandas 为我们提供了一种简单的方法来从磁盘加载数据。例如,读取 CSV 文件就像这样简单:
我们已经看到从Python对象构建Series和DataFrame是多么简单。然而数据通常以文本文件或Excel表格的形式出现。幸运的是Pandas为我们提供了一种简便的方法从磁盘加载数据。例如读取CSV文件就像这样简单
```python ```python
df = pd.read_csv('file.csv') 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 传播 ## 🚀 挑战1分析COVID传播
我们将关注的第一个问题是 COVID-19 的流行病传播建模。为此,我们将使用由 [约翰霍普金斯大学](https://jhu.edu/) [系统科学与工程中心](https://systems.jhu.edu/) (CSSE) 提供的不同国家感染人数数据。数据集可以在 [这个 GitHub 仓库](https://github.com/CSSEGISandData/COVID-19) 中找到。 我们首先关注的问题是COVID-19流行病传播建模。为此我们将使用约翰霍普金斯大学[Johns Hopkins University](https://jhu.edu/)[系统科学与工程中心](https://systems.jhu.edu/)CSSE提供的不同国家感染人数数据。数据集可在[此GitHub仓库](https://github.com/CSSEGISandData/COVID-19)找到。
由于我们想演示如何处理数据,我们邀请你打开 [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) 并从头到尾阅读。你也可以执行单元格,并完成我们在最后留下的一些挑战。 由于我们想展示如何处理数据,邀请你打开[`notebook-covidspread.ipynb`](notebook-covidspread.ipynb)从头到尾阅读。你也可以执行代码单元,并完成我们在最后留下的挑战。
![COVID 传播](../../../../translated_images/zh-CN/covidspread.f3d131c4f1d260ab.webp) ![COVID传播](../../../../translated_images/zh-CN/covidspread.f3d131c4f1d260ab.webp)
> 如果你不知道如何在 Jupyter Notebook 中运行代码,可以查看 [这篇文章](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)。 > 如果你不知道如何在Jupyter Notebook中运行代码请查看[这篇文章](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)。
## 处理非结构化数据 ## 处理非结构化数据
虽然数据通常以表格形式出现,但在某些情况下我们需要处理较少结构化的数据,例如文本或图像。在这种情况下,为了应用我们上面看到的数据处理技术,我们需要以某种方式**提取**结构化数据。以下是一些示例 虽然数据经常以表格形式出现,但有些情况下我们需要处理较少结构化的数据,例如文本或图像。此时,要应用之前看到的数据处理技术,我们需要以某种方式<strong>提取</strong>结构化数据。这里有几个例子
* 从文本中提取关键词,并查看这些关键词出现的频率 * 从文本中提取关键词,并统计关键词出现的频率
* 使用神经网络从图片中提取有关对象的信息 * 使用神经网络提取图像中对象的信息
* 获取视频摄像头画面中人物的情绪信息 * 从视频摄像头画面中获取人物情绪信息
## 🚀 挑战 2分析 COVID 论文 ## 🚀 挑战2分析COVID论文
在这个挑战中,我们将继续讨论 COVID 疫情的主题,重点处理关于该主题的科学论文。有一个 [CORD-19 数据集](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge),其中包含超过 7000 篇(撰写时)关于 COVID 的论文,提供了元数据和摘要(其中约一半还提供了全文)。 这次挑战我们将继续聚焦COVID疫情主题处理相关科学论文。CORD-19数据集[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) 下载数据集,无需注册,但它将包括所有全文以及元数据文件。 > <strong>注意</strong>:我们不提供数据集副本作为本仓库的一部分。你首先可能需要从[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`](notebook-papers.ipynb)从头到尾阅读。你也可以执行单元,并完成我们在最后留下的一些挑战。 打开[`notebook-papers.ipynb`](notebook-papers.ipynb)从头到尾阅读。你也可以执行代码单元,并完成我们在最后留下的挑战。
![COVID 医疗处理](../../../../translated_images/zh-CN/covidtreat.b2ba59f57ca45fbc.webp) ![COVID医疗治疗](../../../../translated_images/zh-CN/covidtreat.b2ba59f57ca45fbc.webp)
## 处理图像数据 ## 处理图像数据
最近,开发了非常强大的 AI 模型,可以帮助我们理解图像。通过预训练的神经网络或云服务,可以解决许多任务。一些示例包括: 最近,开发了非常强大的AI模型使我们能够理解图像。有许多任务可以使用预训练神经网络或云服务解决。例子包括:
* **图像分类**,可以帮助你将图像分类到预定义的类别中。你可以使用诸如 [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) 的服务轻松训练自己的图像分类器。 * <strong>图像分类</strong>,可以帮助你将图像归类到预定义类别之一。你可以使用如[Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?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) 模型来检测一些特定的兴趣对象 * <strong>物体检测</strong>,检测图像中的不同物体。像[计算机视觉](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) 完成。 * <strong>人脸检测</strong>,包括年龄、性别和情绪检测。可以通过[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 照片,试图了解是什么让人们对照片点赞更多。我们首先使用 [计算机视觉](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照片尝试理解什么因素令照片获得更多点赞。我们首先使用[计算机视觉](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum)提取尽可能多的图像信息,然后使用[Azure机器学习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)提取活动照片中人物的情绪,以尝试理解什么让人快乐。
## 结论 ## 结论
无论你已经拥有结构化数据还是非结构化数据,使用 Python 都可以完成与数据处理和理解相关的所有步骤。这可能是数据处理最灵活的方式,这也是为什么大多数数据科学家将 Python 作为主要工具的原因。如果你对数据科学之旅很认真,深入学习 Python 可能是一个好主意! 无论你已经拥有结构化还是非结构化数据使用Python你都可以完成所有与数据处理和理解相关的步骤。这可能是数据处理最灵活的方式这也是为何大多数数据科学家将Python作为主要工具的原因。如果你认真对待数据科学之路深入学习Python是个好主意!
## [课后测验](https://ff-quizzes.netlify.app/en/ds/quiz/13) ## [课后测验](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## 复习与自学 ## 复习与自学
**书籍** <strong>书籍</strong>
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662) * [Wes McKinney. Python数据分析用Pandas、NumPy和IPython进行数据处理](https://www.amazon.com/gp/product/1491957662)
**在线资源** <strong>在线资源</strong>
* 官方 [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) * [Pandas可视化文档](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**学习 Python** **学习Python**
* [通过 Turtle Graphics 和分形以有趣的方式学习 Python](https://github.com/shwars/pycourse) * [通过海龟绘图和分形以有趣方式学习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) 上的学习路径 * 在[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)
## 作业 ## 作业
[挑战进行更详细的数据研究](assignment.md) [上挑战进行更详细的数据研究](assignment.md)
## 致谢 ## 致谢
本课程由 [Dmitry Soshnikov](http://soshnikov.com) 倾情创作。 本课由[Dmitry Soshnikov](http://soshnikov.com)满载 ♥️ 撰写
--- ---
**免责声明** <!-- CO-OP TRANSLATOR DISCLAIMER START -->
本文档使用AI翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。 **免责声明**
本文件由 AI 翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻译完成。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原始语言版文件应视为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save