در حالی که پایگاههای داده روشهای بسیار کارآمدی برای ذخیرهسازی دادهها و جستجوی آنها با استفاده از زبانهای پرسوجو ارائه میدهند، انعطافپذیرترین روش پردازش دادهها نوشتن برنامهای است که دادهها را دستکاری کند. در بسیاری از موارد، انجام یک پرسوجوی پایگاه داده میتواند مؤثرتر باشد. اما در برخی موارد که پردازش دادههای پیچیدهتر مورد نیاز است، این کار به راحتی با SQL قابل انجام نیست.
پردازش دادهها را میتوان با هر زبان برنامهنویسی انجام داد، اما برخی زبانها سطح بالاتری برای کار با دادهها دارند. دانشمندان داده معمولاً یکی از زبانهای زیر را ترجیح میدهند:
در حالی که پایگاهدادهها روشهای بسیار مؤثری برای ذخیرهسازی دادهها و پرسش آنها با استفاده از زبانهای پرسوجو ارائه میدهند، انعطافپذیرترین روش پردازش داده، نوشتن برنامهٔ خودتان برای دستکاری دادهها است. در بسیاری موارد، اجرای پرسوجوی پایگاهداده روشی مؤثرتر خواهد بود. اما در مواردی که پردازش دادههای پیچیدهتر لازم است، این کار به آسانی با SQL امکانپذیر نیست.
پردازش دادهها را میتوان در هر زبان برنامهنویسی انجام داد، اما زبانهایی وجود دارند که سطح بالاتری از نظر کار با دادهها دارند. دانشمندان داده معمولاً یکی از زبانهای زیر را ترجیح میدهند:
* **[پایتون](https://www.python.org/)**، یک زبان برنامهنویسی عمومی که به دلیل سادگی اغلب به عنوان یکی از بهترین گزینهها برای مبتدیان در نظر گرفته میشود. پایتون دارای کتابخانههای زیادی است که میتوانند به شما در حل بسیاری از مشکلات عملی کمک کنند، مانند استخراج دادهها از آرشیو ZIP یا تبدیل تصویر به حالت خاکستری. علاوه بر علم داده، پایتون اغلب برای توسعه وب نیز استفاده میشود.
* **[R](https://www.r-project.org/)** یک ابزار سنتی است که با هدف پردازش دادههای آماری توسعه یافته است. این زبان همچنین دارای مخزن بزرگی از کتابخانهها (CRAN) است که آن را به گزینهای مناسب برای پردازش دادهها تبدیل میکند. با این حال، R یک زبان برنامهنویسی عمومی نیست و به ندرت خارج از حوزه علم داده استفاده میشود.
* **[Julia](https://julialang.org/)** یک زبان دیگر است که به طور خاص برای علم داده توسعه یافته است. این زبان برای ارائه عملکرد بهتر نسبت به پایتون طراحی شده است و آن را به ابزاری عالی برای آزمایشهای علمی تبدیل میکند.
* **[پایتون](https://www.python.org/)**، یک زبان برنامهنویسی عمومی است که اغلب به دلیل سادگیاش به عنوان یکی از بهترین گزینهها برای مبتدیان در نظر گرفته میشود. پایتون کتابخانههای اضافی زیادی دارد که میتواند به شما در حل بسیاری از مشکلات عملی کمک کند، مانند استخراج دادههای شما از آرشیو ZIP یا تبدیل تصویر به خاکستری. علاوه بر علم داده، پایتون اغلب برای توسعهٔ وب نیز استفاده میشود.
* **[آر](https://www.r-project.org/)** جعبهابزار سنتی است که برای پردازش دادههای آماری توسعه یافته است. این زبان همچنین شامل مخزن بزرگی از کتابخانهها (CRAN) است که آن را گزینهٔ خوبی برای پردازش داده میکند. با این حال، آر یک زبان برنامهنویسی عمومی نیست و معمولاً خارج از حوزه علم داده استفاده نمیشود.
* **[جولیا](https://julialang.org/)** زبان دیگری است که مخصوص علم داده توسعه یافته است. هدف آن ارائه عملکرد بهتر نسبت به پایتون است و ابزاری عالی برای آزمایشهای علمی محسوب میشود.
در این درس، ما بر استفاده از پایتون برای پردازش ساده دادهها تمرکز خواهیم کرد. فرض میکنیم که با اصول اولیه این زبان آشنا هستید. اگر میخواهید یک تور عمیقتر از پایتون داشته باشید، میتوانید به یکی از منابع زیر مراجعه کنید:
در این درس، تمرکز ما بر استفاده از پایتون برای پردازش ساده دادهها خواهد بود. فرض میکنیم آشنایی پایه با زبان دارید. اگر میخواهید سفری عمیقتر در پایتون داشته باشید، میتوانید به یکی از منابع زیر مراجعه کنید:
* [یادگیری پایتون به روش سرگرمکننده با گرافیک لاکپشتی و فراکتالها](https://github.com/shwars/pycourse) - دوره مقدماتی سریع در GitHub برای برنامهنویسی پایتون
* [اولین قدمهای خود را با پایتون بردارید](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) مسیر یادگیری در [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [یادگیری پایتون به روشی سرگرمکننده با گرافیک لاکپشتی و فراکتالها](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)
دادهها میتوانند اشکال مختلفی داشته باشند. در این درس، ما سه شکل داده را در نظر خواهیم گرفت - **دادههای جدولی**، **متن** و **تصاویر**.
دادهها میتوانند اشکال مختلفی داشته باشند. در این درس، سه شکل داده را بررسی خواهیم کرد - **دادههای جدولی**، **متن** و **تصاویر**.
ما بر چند مثال از پردازش دادهها تمرکز خواهیم کرد، به جای اینکه نمای کلی از همه کتابخانههای مرتبط ارائه دهیم. این به شما اجازه میدهد تا ایده اصلی از آنچه ممکن است را دریافت کنید و درک کنید که کجا میتوانید راهحلهایی برای مشکلات خود پیدا کنید.
ما بر چند مثال از پردازش داده تمرکز خواهیم کرد، به جای اینکه به مرور کامل تمام کتابخانههای مرتبط بپردازیم. این کار به شما اجازه میدهد ایدهٔ اصلی ممکنها را درک کنید و بدانید وقتی به راهحلهای مشکلتان نیاز دارید، کجا باید جستجو کنید.
> **مفیدترین توصیه**. وقتی نیاز دارید عملیاتی خاص روی دادهها انجام دهید که نمیدانید چگونه انجام دهید، سعی کنید آن را در اینترنت جستجو کنید. [Stackoverflow](https://stackoverflow.com/) معمولاً شامل نمونههای کد مفید زیادی در پایتون برای بسیاری از وظایف معمول است.
> **مفیدترین توصیه**. وقتی نیاز دارید عملی روی داده انجام دهید که نمیدانید چگونه، سعی کنید در اینترنت جستجو کنید. [Stackoverflow](https://stackoverflow.com/) معمولاً نمونههای کد زیادی در پایتون برای بسیاری از کارهای متداول دارد.
شما قبلاً با دادههای جدولی آشنا شدهاید وقتی درباره پایگاههای داده رابطهای صحبت کردیم. وقتی دادههای زیادی دارید و این دادهها در جداول مختلف مرتبط قرار دارند، قطعاً استفاده از SQL برای کار با آنها منطقی است. با این حال، موارد زیادی وجود دارد که ما یک جدول داده داریم و نیاز داریم تا برخی **درک** یا **بینش** درباره این دادهها کسب کنیم، مانند توزیع، همبستگی بین مقادیر و غیره. در علم داده، موارد زیادی وجود دارد که نیاز داریم برخی تغییرات در دادههای اصلی انجام دهیم و سپس آنها را بصریسازی کنیم. هر دو مرحله به راحتی با پایتون قابل انجام هستند.
دو کتابخانه بسیار مفید در پایتون وجود دارد که میتوانند به شما در کار با دادههای جدولی کمک کنند:
* **[Pandas](https://pandas.pydata.org/)** به شما امکان میدهد تا با **Dataframes** کار کنید، که مشابه جداول رابطهای هستند. شما میتوانید ستونهای نامگذاری شده داشته باشید و عملیات مختلفی روی ردیفها، ستونها و Dataframes به طور کلی انجام دهید.
* **[Numpy](https://numpy.org/)** یک کتابخانه برای کار با **تنسورها**، یعنی **آرایههای چندبعدی** است. آرایه دارای مقادیر از نوع پایه یکسان است و سادهتر از Dataframe است، اما عملیات ریاضی بیشتری ارائه میدهد و سربار کمتری ایجاد میکند.
## دادههای جدولی و دیتافریمها
چند کتابخانه دیگر نیز وجود دارد که باید با آنها آشنا باشید:
* **[Matplotlib](https://matplotlib.org/)** یک کتابخانه برای بصریسازی دادهها و رسم نمودارها
* **[SciPy](https://www.scipy.org/)** یک کتابخانه با برخی توابع علمی اضافی. ما قبلاً هنگام صحبت درباره احتمال و آمار با این کتابخانه آشنا شدهایم.
زمانی که دربارهٔ پایگاهدادههای رابطهای صحبت کردیم، با دادههای جدولی آشنا شدید. وقتی حجم بسیاری از داده دارید و این دادهها در جداول زیادی مرتبط شده هستند، استفاده از SQL برای کار با آنها منطقی است. اما موارد زیادی وجود دارد که یک جدول داده داریم و نیاز داریم دربارهٔ این دادهها **درک** یا **بینش**ی کسب کنیم، مثل توزیع دادهها، همبستگی بین مقادیر و غیره. در علم داده، موارد زیادی وجود دارد که باید بعضی تبدیلهای داده اصلی انجام شود و سپس تجسم داده صورت گیرد. هر دو این مراحل به سادگی با پایتون قابل انجام هستند.
در اینجا یک قطعه کد آورده شده است که معمولاً برای وارد کردن این کتابخانهها در ابتدای برنامه پایتون خود استفاده میکنید:
دو کتابخانهٔ بسیار مفید در پایتون هستند که میتوانند به شما در کار با دادههای جدولی کمک کنند:
* **[پاندا](https://pandas.pydata.org/)** به شما اجازه میدهد دادههای به نام **دیتافریمها** را دستکاری کنید، که معادل جداول رابطهای هستند. میتوانید ستونهای نامگذاری شده داشته باشید و عملیات متفاوتی روی ردیفها، ستونها و دیتافریم به طور کلی انجام دهید.
* **[نامپای](https://numpy.org/)** کتابخانهای برای کار با **تنسورها** یا همان آرایههای چندبعدی است. آرایهها مقادیری از یک نوع داده زیرین دارند و نسبت به دیتافریم سادهتر هستند، ولی عملیات ریاضی بیشتری ارائه میدهند و سربار کمتری دارند.
همچنین چند کتابخانه دیگر که باید با آنها آشنا باشید:
* **[متپلاتلیب](https://matplotlib.org/)** کتابخانهای برای تجسم داده و رسم نمودارها است.
* **[سایپای](https://www.scipy.org/)** کتابخانهای با برخی توابع علمی اضافی است. ما قبلاً هنگام صحبت درباره احتمال و آمار با این کتابخانه آشنا شدهایم.
در اینجا کدی آمده که معمولاً در ابتدای برنامه پایتون برای وارد کردن این کتابخانهها استفاده میشود:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
from scipy import ... # شما باید زیربستههای دقیقی که نیاز دارید را مشخص کنید
```
Pandas حول چند مفهوم اساسی متمرکز است.
پاندا حول چند مفهوم پایهای میچرخد.
### Series
### سریها (Series)
**Series** یک دنباله از مقادیر است، مشابه لیست یا آرایه numpy. تفاوت اصلی این است که Series همچنین دارای یک **شاخص** است و وقتی روی Series عملیات انجام میدهیم (مثلاً آنها را جمع میکنیم)، شاخص در نظر گرفته میشود. شاخص میتواند به سادگی شماره ردیف صحیح باشد (این شاخص به طور پیشفرض هنگام ایجاد یک Series از لیست یا آرایه استفاده میشود)، یا میتواند ساختار پیچیدهای مانند بازه زمانی داشته باشد.
**سری** توالیای از مقادیر است، مشابه یک لیست یا آرایهٔ نامپای. تفاوت اصلی این است که سری همچنین یک **شاخص** دارد و هنگام عملیات روی سری (مثلاً جمعشان) شاخص در نظر گرفته میشود. شاخص میتواند به سادگی شماره ردیف عدد صحیح باشد (که بهطور پیشفرض هنگام ایجاد سری از لیست یا آرایه استفاده میشود)، یا ساختار پیچیدهتری مثل بازه زمانی داشته باشد.
> **توجه**: برخی کدهای مقدماتی Pandas در دفترچه همراه [`notebook.ipynb`](notebook.ipynb) موجود است. ما فقط برخی از مثالها را اینجا بیان میکنیم و شما قطعاً میتوانید دفترچه کامل را بررسی کنید.
> **توجه**: مقدمهای بر کد پاندا در دفترکار همرا با این درس [`notebook.ipynb`](notebook.ipynb) آمده است. ما فقط چند مثال را اینجا شرح میدهیم و شما قطعاً میتوانید دفترکار کامل را بررسی کنید.
به عنوان مثال: ما میخواهیم فروش یک مغازه بستنیفروشی را تحلیل کنیم. بیایید یک سری از اعداد فروش (تعداد اقلام فروخته شده در هر روز) برای یک دوره زمانی ایجاد کنیم:
مثالی در نظر بگیرید: میخواهیم فروش فروشگاه بستنیفروشی خود را تحلیل کنیم. بیایید سریای از اعداد فروش (تعداد آیتمهای فروخته شده در هر روز) برای دورهٔ زمانی مشخصی تولید کنیم:
حالا فرض کنید که هر هفته یک مهمانی برای دوستان برگزار میکنیم و 10 بسته بستنی اضافی برای مهمانی میگیریم. میتوانیم یک سری دیگر، با شاخص هفته، برای نشان دادن این موضوع ایجاد کنیم:
حال فرض کنید هر هفته مهمانیای برای دوستان برگزار میکنیم و ده بسته بستنی اضافی برای مهمانی میآوریم. میتوانیم سری دیگری با شاخص هفته بسازیم تا این موضوع را نشان دهیم:
> **توجه** که ما از نحو ساده `total_items+additional_items` استفاده نمیکنیم. اگر این کار را میکردیم، تعداد زیادی مقدار `NaN` (*Not a Number*) در سری حاصل دریافت میکردیم. این به این دلیل است که مقادیر گمشدهای برای برخی از نقاط شاخص در سری `additional_items` وجود دارد و افزودن `NaN` به هر چیزی نتیجه `NaN` میدهد. بنابراین باید پارامتر `fill_value` را هنگام جمع مشخص کنیم.
> **توجه** ما از نوشتار ساده `total_items+additional_items` استفاده نمیکنیم. اگر این کار را انجام میدادیم، تعداد زیادی مقدار `NaN` (*عدد نیست*) در سری نتیجه داشتیم. این به این دلیل است که در سری `additional_items` برخی از نقاط شاخص مقدار ندارند و افزودن `NaN` به هر چیزی نتیجه `NaN` میدهد. بنابراین باید در عملیات جمع، پارامتر `fill_value` را مشخص کنیم.
با سریهای زمانی، میتوانیم سری را با بازههای زمانی مختلف **نمونهگیری مجدد** کنیم. به عنوان مثال، فرض کنید میخواهیم حجم فروش متوسط ماهانه را محاسبه کنیم. میتوانیم از کد زیر استفاده کنیم:
با سریهای زمانی میتوانیم سری را با بازههای زمانی متفاوت **نمونهبرداری مجدد (resample)** کنیم. مثلاً فرض کنید میخواهیم میانگین حجم فروش ماهانه را محاسبه کنیم. میتوانیم از کد زیر استفاده کنیم:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```

### DataFrame
### دیتافریم (DataFrame)
یک DataFrame اساساً مجموعهای از سریها با همان شاخص است. میتوانیم چند سری را با هم ترکیب کنیم تا یک DataFrame ایجاد کنیم:
دیتافریم در واقع مجموعهای از سریها با همان شاخص است. میتوانیم چند سری را با هم ترکیب کنیم تا یک دیتافریم بسازیم:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
اینجا `.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
df['DivA'] = df['A']-df['A'].mean()
```
این مثال انحراف A از مقدار میانگین آن را محاسبه میکند. آنچه در واقع اینجا اتفاق میافتد این است که ما یک سری محاسبه میکنیم و سپس این سری را به سمت چپ اختصاص میدهیم، یک ستون جدید ایجاد میکنیم. بنابراین نمیتوانیم از هیچ عملیاتی که با سریها سازگار نیست استفاده کنیم، به عنوان مثال، کد زیر اشتباه است:
این مثال واگرایی A از مقدار میانگینش را محاسبه میکند. در واقع اینجا ما یک سری را محاسبه میکنیم و سپس آن را به سمت چپ انتساب میدهیم که در نتیجه یک ستون جدید ساخته میشود. بنابراین نمیتوانیم از عملیاتهایی استفاده کنیم که با سری سازگار نیستند، مثلاً کد زیر اشتباه است:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Wrongresult
# کد اشتباه -> df['ADescr'] = "کم" اگر df['A'] کمتر از ۵ باشد در غیر این صورت "زیاد"
df['LenB'] = len(df['B']) # <-نتیجهاشتباه
```
مثال آخر، در حالی که از نظر نحوی صحیح است، نتیجه اشتباهی به ما میدهد، زیرا طول سری `B` را به همه مقادیر در ستون اختصاص میدهد، نه طول عناصر فردی همانطور که قصد داشتیم.
این مثال دوم، هرچند از نظر نوشتاری درست است، نتیجهٔ نادرستی میدهد چون طول سری `B` را به تمام مقادیر ستون اختصاص میدهد، نه طول عناصر منفرد را همانطور که قصد داشتیم.
اگر نیاز به محاسبه عبارات پیچیده مانند این داریم، میتوانیم از تابع `apply` استفاده کنیم. مثال آخر را میتوان به صورت زیر نوشت:
اگر نیاز به محاسبهٔ عبارات پیچیده داریم میتوانیم از تابع `apply` استفاده کنیم. مثال آخر میتواند به صورت زیر نوشته شود:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# یا
df['LenB'] = df['B'].apply(len)
```
بعد از عملیاتهای بالا، ما به DataFrame زیر خواهیم رسید:
پس از انجام عملیات فوق، دیتافریم زیر حاصل میشود:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
| 0 | 1 | I | -4.0 | 1 |
| 1 | 2 | like | -3.0 | 4 |
| 2 | 3 | to | -2.0 | 2 |
| 3 | 4 | use | -1.0 | 3 |
| 4 | 5 | Python | 0.0 | 6 |
| 5 | 6 | and | 1.0 | 3 |
| 6 | 7 | Pandas | 2.0 | 6 |
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**انتخاب ردیفها بر اساس شمارهها** را میتوان با استفاده از ساختار `iloc` انجام داد. به عنوان مثال، برای انتخاب 5 ردیف اول از DataFrame:
| 0 | 1 | من | -۴.۰ | ۱ |
| 1 | 2 | دوست | -۳.۰ | ۴ |
| 2 | 3 | دارم | -۲.۰ | ۲ |
| 3 | 4 | از | -۱.۰ | ۳ |
| 4 | 5 | پایتون | ۰.۰ | ۶ |
| 5 | 6 | و | ۱.۰ | ۳ |
| 6 | 7 | پاندا | ۲.۰ | ۶ |
| 7 | 8 | خیلی | ۳.۰ | ۴ |
| 8 | 9 | زیاد | ۴.۰ | ۴ |
**انتخاب ردیفها بر اساس شماره** میتواند با سازه `iloc` انجام شود. مثلاً برای انتخاب ۵ ردیف اول از دیتافریم:
```python
df.iloc[:5]
```
**گروهبندی** اغلب برای دریافت نتیجهای مشابه *جدولهای محوری* در Excel استفاده میشود. فرض کنید که میخواهیم مقدار میانگین ستون `A` را برای هر عدد داده شده از `LenB` محاسبه کنیم. سپس میتوانیم DataFrame خود را بر اساس `LenB` گروهبندی کنیم و `mean` را فراخوانی کنیم:
**گروهبندی** اغلب برای به دست آوردن نتیجهای مشابه *جداول محوری (pivot)* در اکسل استفاده میشود. فرض کنید میخواهیم میانگین ستون `A` را برای هر مقدار داده شده از `LenB` محاسبه کنیم. میتوانیم دیتافریم خود را بر اساس `LenB` گروهبندی کنیم و تابع`mean` را فراخوانی کنیم:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
اگر نیاز به محاسبه میانگین و تعداد عناصر در گروه داریم، میتوانیم از تابع پیچیدهتر `aggregate` استفاده کنیم:
اگر بخواهیم میانگین و تعداد عناصر در گروه را به طور همزمان محاسبه کنیم، میتوانیم از تابع پیچیدهتر `aggregate` استفاده کنیم:
ما دیدهایم که چقدر ساختن Series و DataFrames از اشیاء پایتون آسان است. با این حال، دادهها معمولاً به صورت یک فایل متنی یا جدول اکسل ارائه میشوند. خوشبختانه، Pandas راه سادهای برای بارگذاری دادهها از دیسک به ما ارائه میدهد. به عنوان مثال، خواندن فایل CSV به سادگی زیر است:
ما دیدهایم که ساختن Series و DataFrame از اشیاء پایتون چقدر آسان است. اما دادهها معمولاً به شکل یک فایل متنی یا جدول اکسل هستند. خوشبختانه، Pandas روش سادهای برای بارگذاری دادهها از دیسک به ما ارائه میدهد. به عنوان مثال، خواندن فایل CSV به همین سادگی است:
```python
df = pd.read_csv('file.csv')
```
ما مثالهای بیشتری از بارگذاری دادهها، از جمله دریافت آن از وبسایتهای خارجی، در بخش "چالش" خواهیم دید.
مثالهای بیشتری از بارگذاری دادهها، از جمله دریافت آنها از وبسایتهای خارجی، در بخش «چالش» خواهیم دید.
### چاپ و ترسیم
### چاپ و ترسیم نمودار
یک دانشمند داده اغلب باید دادهها را بررسی کند، بنابراین توانایی بصریسازی آنها بسیار مهم است. وقتی DataFrame بزرگ است، بسیاری مواقع فقط میخواهیم مطمئن شویم که همه چیز را درست انجام میدهیم، با چاپ چند ردیف اول. این کار با فراخوانی `df.head()` انجام میشود. اگر آن را از Jupyter Notebook اجرا کنید، DataFrame را به صورت یک جدول زیبا چاپ میکند.
یک دانشمند داده اغلب باید دادهها را بررسی کند، بنابراین توانایی دیداری کردن دادهها اهمیت دارد. وقتی DataFrame بزرگ است، اغلب میخواهیم فقط مطمئن شویم که همه چیز درست است، با چاپ چند ردیف اول. این کار با فراخوانی `df.head()` انجام میشود. اگر از Jupyter Notebook استفاده کنید، این DataFrame را به صورت جدولی زیبا چاپ خواهد کرد.
ما همچنین استفاده از تابع `plot`را برای بصریسازی برخی ستونها دیدهایم. در حالی که `plot` برای بسیاری از وظایف بسیار مفید است و انواع مختلف نمودارها را از طریق پارامتر `kind=` پشتیبانی میکند، شما همیشه میتوانید از کتابخانه خام `matplotlib` برای ترسیم چیزی پیچیدهتر استفاده کنید. ما بصریسازی دادهها را به طور مفصل در درسهای جداگانه پوشش خواهیم داد.
ما همچنین استفاده از تابع `plot`برای ترسیم برخی ستونها را دیدهایم. در حالی که `plot` برای بسیاری از وظایف بسیار مفید است و از انواع مختلف نمودارها از طریق پارامتر `kind=` پشتیبانی میکند، شما همیشه میتوانید از کتابخانه خام `matplotlib` برای ترسیم موارد پیچیدهتر استفاده کنید. در درسهای جداگانه درباره مصورسازی دادهها به تفصیل صحبت خواهیم کرد.
این مرور کلی مهمترین مفاهیم Pandas را پوشش میدهد، اما این کتابخانه بسیار غنی است و هیچ محدودیتی برای کاری که میتوانید با آن انجام دهید وجود ندارد! حالا بیایید این دانش را برای حل یک مشکل خاص به کار ببریم.
این مرور کلی مهمترین مفاهیم Pandas را پوشش میدهد، با این حال این کتابخانه بسیار غنی است و محدودیتی در کاری که میتوانید با آن انجام دهید وجود ندارد! بیایید اکنون این دانش را برای حل یک مسئله خاص به کار ببریم.
## 🚀 چالش ۱: تحلیل گسترش COVID
اولین مشکلی که روی آن تمرکز خواهیم کرد مدلسازی گسترش اپیدمی COVID-19 است. برای این کار، از دادههای مربوط به تعداد افراد مبتلا در کشورهای مختلف استفاده خواهیم کرد که توسط [مرکز علوم سیستمها و مهندسی](https://systems.jhu.edu/) (CSSE) در [دانشگاه جانز هاپکینز](https://jhu.edu/) ارائه شده است. مجموعه داده در [این مخزن GitHub](https://github.com/CSSEGISandData/COVID-19) موجود است.
اولین مسئلهای که روی آن تمرکز خواهیم کرد مدلسازی انتشار اپیدمی 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) را باز و از ابتدا تا انتها مطالعه کنید. همچنین میتوانید سلولها را اجرا کنید و چالشهایی را که در پایان باقی گذاشتهایم انجام دهید.
> اگر نمیدانید چگونه کد را در 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 را ادامه میدهیم و بر پردازش مقالات علمی در این زمینه تمرکز میکنیم. مجموعه داده [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) را باز و از ابتدا تا انتها مطالعه کنید. میتوانید سلولها را اجرا کرده و برخی چالشهای باقیمانده را انجام دهید.

اخیراً مدلهای هوش مصنوعی بسیار قدرتمندی توسعه یافتهاند که به ما امکان درک تصاویر را میدهند. بسیاری از وظایف را میتوان با استفاده از شبکههای عصبی از پیش آموزشدیده یا خدمات ابری حل کرد. برخی از مثالها شامل موارد زیر است:
اخیراً مدلهای هوش مصنوعی قدرتمندی توسعه یافتهاند که به ما امکان درک تصاویر را میدهند. بسیاری از وظایف را میتوان با استفاده از شبکههای عصبی پیشآموزش دیده یا خدمات ابری حل کرد. چند مثال عبارتند از:
* **طبقهبندی تصویر**، که میتواند به شما کمک کند تصویر را در یکی از کلاسهای از پیش تعریفشده دستهبندی کنید. شما میتوانید به راحتی طبقهبندیکنندههای تصویر خود را با استفاده از خدماتی مانند [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) آموزش دهید.
* **تشخیص اشیاء** برای شناسایی اشیاء مختلف در تصویر. خدماتی مانند [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) میتوانند تعداد زیادی از اشیاء رایج را شناسایی کنند و شما میتوانید مدل [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) را برای شناسایی برخی اشیاء خاص مورد علاقه آموزش دهید.
* **تشخیص چهره**، شامل سن، جنسیت و تشخیص احساسات. این کار را میتوان از طریق [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) انجام داد.
* **طبقهبندی تصویر،** که به شما کمک میکند تصویر را در یکی از کلاسهای از پیش تعریف شده دستهبندی کنید. میتوانید بهراحتی طبقهبندهای تصویر خود را با استفاده از خدماتی مانند [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) آموزش دهید
* **تشخیص اشیاء** برای یافتن اشیاء مختلف در تصویر. خدماتی مانند [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) میتوانند تعداد زیادی از اشیاء رایج را تشخیص دهند و میتوانید مدل [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) را برای تشخیص برخی اشیاء خاص آموزش دهید.
* **تشخیص چهره،** شامل سن، جنسیت و تشخیص حالت چهره. این کار از طریق [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) انجام میشود.
تمام این خدمات ابری را میتوان با استفاده از [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) فراخوانی کرد و بنابراین به راحتی میتوان آنها را در جریان کاری اکتشاف دادههای خود گنجاند.
همه این خدمات ابری را میتوان با استفاده از [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://github.com/CloudAdvocacy/FaceStudies) ما از [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) برای استخراج احساسات افراد در عکسهای گرفتهشده از رویدادها استفاده میکنیم تا سعی کنیم بفهمیم چه چیزی باعث خوشحالی افراد میشود.
در اینجا چند مثال از کاوش دادههای منابع تصویری آورده شده است:
* در نوشته بلاگ [چگونه بدون کدنویسی دیتاساینس یاد بگیریم](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) ما عکسهای اینستاگرام را بررسی میکنیم تا بفهمیم چه چیزی باعث میشود مردم عکس را بیشتر لایک کنند. ابتدا بیشترین اطلاعات ممکن را از تصاویر با استفاده از [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) استخراج میکنیم، سپس از [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) برای ساخت مدل قابل تفسیر استفاده میکنیم.
* در [کارگاه مطالعات چهره](https://github.com/CloudAdvocacy/FaceStudies) از [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) برای استخراج احساسات افراد در عکسهای رویدادها استفاده میکنیم تا بفهمیم چه چیزی انسانها را شاد میکند.
## نتیجهگیری
چه دادههای ساختاریافته داشته باشید یا غیرساختاریافته، با استفاده از پایتون میتوانید تمام مراحل مربوط به پردازش و درک دادهها را انجام دهید. این احتمالاً انعطافپذیرترین روش پردازش دادهها است و به همین دلیل اکثر دانشمندان داده از پایتون به عنوان ابزار اصلی خود استفاده میکنند. یادگیری عمیق پایتون احتمالاً ایده خوبی است اگر در مسیر علم داده جدی هستید!
چه دادههای ساختارمند داشته باشید و چه دادههای غیرساختارمند، با استفاده از پایتون میتوانید تمام مراحل مربوط به پردازش و درک دادهها را انجام دهید. احتمالاً این انعطافپذیرترین روش پردازش داده است و به همین دلیل است که اکثر دانشمندان داده پایتون را به عنوان ابزار اصلی خود انتخاب میکنند. یادگیری عمیق پایتون احتمالاً ایده خوبی است اگر قصد دارید در مسیر دادهکاوی جدی باشید!
## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## مرور و مطالعه خودآموز
## بازبینی و خودآموزی
**کتابها**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**منابع آنلاین**
* آموزش رسمی [10 دقیقه با Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [مستندات درباره بصریسازی Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* آموزش رسمی [۱۰ دقیقه با Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [مستندات درباره مصورسازی در Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**یادگیری پایتون**
* [یادگیری پایتون به روشی سرگرمکننده با گرافیک Turtle و فراکتالها](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://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)
## تکلیف
[مطالعه دقیقتر دادهها برای چالشهای بالا انجام دهید](assignment.md)
[مطالعه دقیقتر دادهها برای چالشهای فوق](assignment.md)
## اعتبارها
## قدردانیها
این درس با ♥️ توسط [Dmitry Soshnikov](http://soshnikov.com) نوشته شده است.
این درس با ♥️ توسط [دیمیتری سوشنیکوف](http://soshnikov.com) تهیه شده است.
---
**سلب مسئولیت**:
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**سلب مسئولیت**:
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.
اگرچہ ڈیٹا بیسز ڈیٹا کو محفوظ کرنے اور انہیں کوئری لینگویجز کے ذریعے تلاش کرنے کے لیے بہت مؤثر طریقے فراہم کرتے ہیں، ڈیٹا پروسیسنگ کا سب سے لچکدار طریقہ اپنا پروگرام لکھ کر ڈیٹا کو تبدیل کرنا ہے۔ اکثر اوقات، ڈیٹا بیس کوئری کرنا زیادہ مؤثر ہوگا۔ لیکن کچھ معاملات میں جب زیادہ پیچیدہ ڈیٹا پروسیسنگ کی ضرورت ہو، تو یہ کام آسانی سے SQL کے ذریعے نہیں کیا جا سکتا۔
ڈیٹا پروسیسنگ کسی بھی پروگرامنگ زبان میں کی جا سکتی ہے، لیکن کچھ زبانیں ڈیٹا کے ساتھ کام کرنے کے لحاظ سے زیادہ اعلیٰ سطح کی ہوتی ہیں۔ ڈیٹا سائنسدان عام طور پر درج ذیل زبانوں میں سے کسی ایک کو ترجیح دیتے ہیں:
جہاں ڈیٹا بیس ڈیٹا ذخیرہ کرنے اور کوئری لینگویجز کے ذریعے ان سے سوالات کرنے کے بہت مؤثر طریقے فراہم کرتے ہیں، سب سے زیادہ لچکدار طریقہ یہ ہے کہ آپ اپنا اپنا پروگرام لکھیں تاکہ ڈیٹا کو سنبھالا جا سکے۔ بہت سے معاملات میں، ڈیٹا بیس کوئری زیادہ مؤثر طریقہ ہوگی۔ تاہم، بعض صورتوں میں جب مزید پیچیدہ ڈیٹا پروسیسنگ کی ضرورت ہو، اسے آسانی سے SQL کے ذریعے نہیں کیا جا سکتا۔
ڈیٹا پروسیسنگ کسی بھی پروگرامنگ زبان میں پروگرام کی جا سکتی ہے، لیکن کچھ زبانیں ڈیٹا کے ساتھ کام کرنے کے لیے اعلیٰ سطح کی سمجھی جاتی ہیں۔ ڈیٹا سائنسدان عام طور پر درج ذیل زبانوں میں سے ایک کو ترجیح دیتے ہیں:
* **[پائتھون](https://www.python.org/)**، ایک عمومی مقصد کی پروگرامنگ زبان، جو اپنی سادگی کی وجہ سے اکثر ابتدائی افراد کے لیے بہترین آپشن سمجھی جاتی ہے۔ پائتھون میں بہت سی اضافی لائبریریاں موجود ہیں جو آپ کو عملی مسائل حل کرنے میں مدد دے سکتی ہیں، جیسے کہ ZIP آرکائیو سے ڈیٹا نکالنا یا تصویر کو گرے اسکیل میں تبدیل کرنا۔ ڈیٹا سائنس کے علاوہ، پائتھون ویب ڈیولپمنٹ کے لیے بھی اکثر استعمال ہوتی ہے۔
* **[آر](https://www.r-project.org/)** ایک روایتی ٹول باکس ہے جو شماریاتی ڈیٹا پروسیسنگ کے لیے بنایا گیا ہے۔ اس میں لائبریریوں کا بڑا ذخیرہ (CRAN) موجود ہے، جو اسے ڈیٹا پروسیسنگ کے لیے ایک اچھا انتخاب بناتا ہے۔ تاہم، آر ایک عمومی مقصد کی پروگرامنگ زبان نہیں ہے اور ڈیٹا سائنس کے دائرے سے باہر شاذ و نادر ہی استعمال ہوتی ہے۔
* **[جولیا](https://julialang.org/)** ایک اور زبان ہے جو خاص طور پر ڈیٹا سائنس کے لیے تیار کی گئی ہے۔ یہ پائتھون کے مقابلے میں بہتر کارکردگی فراہم کرنے کے لیے بنائی گئی ہے، جو اسے سائنسی تجربات کے لیے ایک بہترین ٹول بناتی ہے۔
* **[پائتھن](https://www.python.org/)**، ایک عمومی مقصد کی پروگرامنگ زبان، جو اپنی سادگی کے باعث اکثر ابتدائ کے لیے بہتر انتخاب سمجھی جاتی ہے۔ پائتھن میں بہت سی اضافی لائبریریاں موجود ہیں جو آپ کو بہت سے عملی مسائل حل کرنے میں مدد دیتی ہیں، مثلاً ZIP آرکائیو سے ڈیٹا نکالنا، یا تصویر کو گرے اسکیل میں تبدیل کرنا۔ ڈیٹا سائنس کے علاوہ، پائتھن اکثر ویب ڈویلپمنٹ کے لیے بھی استعمال ہوتی ہے۔
* **[آر](https://www.r-project.org/)** ایک روایتی ٹول باکس ہے جو شماریاتی ڈیٹا پروسیسنگ کے لیے تیار کیا گیا ہے۔ اس میں لائبریریوں کا ایک بڑا ذخیرہ (CRAN) بھی موجود ہے، جو اسے ڈیٹا پروسیسنگ کے لیے اچھا انتخاب بناتا ہے۔ تاہم، آر عمومی مقصد کی پروگرامنگ زبان نہیں ہے، اور ڈیٹا سائنس کے علاوہ کم ہی استعمال ہوتی ہے۔
* **[جولیا](https://julialang.org/)** ایک اور زبان ہے جو خاص طور پر ڈیٹا سائنس کے لیے تیار کی گئی ہے۔ اس کا مقصد پائتھن کی نسبت بہتر کارکردگی دینا ہے، جو اسے سائنسی تجربات کے لیے بہترین اوزار بناتی ہے۔
اس سبق میں، ہم پائتھون کا استعمال کرتے ہوئے سادہ ڈیٹا پروسیسنگ پر توجہ مرکوز کریں گے۔ ہم زبان کی بنیادی واقفیت فرض کریں گے۔ اگر آپ پائتھون کا گہرا جائزہ لینا چاہتے ہیں، تو آپ درج ذیل وسائل میں سے کسی ایک کا حوالہ دے سکتے ہیں:
اس سبق میں، ہم سادہ ڈیٹا پروسیسنگ کے لیے پائتھن کے استعمال پر توجہ دیں گے۔ ہم زبان کی بنیادی واقفیت فرض کریں گے۔ اگر آپ پائتھن کا گہرا تعارف چاہتے ہیں، تو آپ درج ذیل ذرائع کی طرف رجوع کر سکتے ہیں:
* [پائتھون کو تفریحی طریقے سے سیکھیں: ٹرٹل گرافکس اور فرکٹلز کے ساتھ](https://github.com/shwars/pycourse) - پائتھون پروگرامنگ کا گٹ ہب پر مبنی تعارفی کورس
* [پائتھون کے ساتھ اپنے پہلے قدم اٹھائیں](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) پر لرننگ پاتھ
* [تفریحی انداز میں پائتھن سیکھیں، ٹرٹل گرافکس اور فراکٹلز کے ساتھ](https://github.com/shwars/pycourse) - گٹ ہب پر مبنی پائتھن پروگرامنگ کا فوری تعارف کورس
* [پائتھن کے ساتھ اپنے پہلے قدم اٹھائیں](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/)** ایک لائبریری ہے جو **ٹینسرز**، یعنی کثیر جہتی **ارے** کے ساتھ کام کرنے کے لیے ہے۔ ارے میں ایک ہی بنیادی قسم کی اقدار ہوتی ہیں، اور یہ ڈیٹا فریم سے زیادہ سادہ ہوتا ہے، لیکن یہ زیادہ ریاضیاتی آپریشنز فراہم کرتا ہے اور کم اوور ہیڈ پیدا کرتا ہے۔
## جدولی ڈیٹا اور ڈیٹافریم
کچھ دیگر لائبریریاں بھی ہیں جن کے بارے میں آپ کو معلوم ہونا چاہیے:
* **[میٹپلاٹلب](https://matplotlib.org/)** ڈیٹا کی بصری نمائندگی اور گراف بنانے کے لیے استعمال ہونے والی لائبریری ہے
* **[سائپائی](https://www.scipy.org/)** کچھ اضافی سائنسی فنکشنز کے ساتھ ایک لائبریری ہے۔ ہم پہلے ہی اس لائبریری سے اس وقت مل چکے ہیں جب ہم احتمال اور شماریات کے بارے میں بات کر رہے تھے
آپ پہلے ہی جب ہم نے تعلقاتی ڈیٹا بیسز کے بارے میں بات کی تھی، تو آپ جدول نما ڈیٹا سے آشنا ہو چکے ہیں۔ جب آپ کے پاس بہت زیادہ ڈیٹا ہوتا ہے اور یہ مختلف جڑے ہوئے جدولوں میں ہوتا ہے، تو واقعی SQL کا استعمال اس پر کام کرنے کے لیے معقول ہوتا ہے۔ تاہم، بہت سی صورتوں میں جب ہمارے پاس ایک جدول کی شکل میں ڈیٹا ہوتا ہے، اور ہم اس ڈیٹا کے بارے میں کچھ **سمجھ** یا **بصیرت** حاصل کرنا چاہتے ہیں، جیسے تقسیم، اقدار کے درمیان تعلق وغیرہ۔ ڈیٹا سائنس میں بہت سے مواقع ہوتے ہیں جب ہمیں اصلی ڈیٹا کی کچھ تبدیلیاں کرنی پڑتی ہیں، اور پھر اس کی ویژولائزیشن کی جاتی ہے۔ یہ دونوں کام پائتھن کی مدد سے آسانی سے کیے جا سکتے ہیں۔
یہاں ایک کوڈ کا ٹکڑا ہے جو آپ عام طور پر اپنے پائتھون پروگرام کے آغاز میں ان لائبریریوں کو درآمد کرنے کے لیے استعمال کریں گے:
پائتھن میں دو سب سے زیادہ مفید لائبریریاں ہیں جو آپ کو جدول نما ڈیٹا سے نمٹنے میں مدد دے سکتی ہیں:
* **[Pandas](https://pandas.pydata.org/)** آپ کو وہ چیزیں سنبھالنے دیتا ہے جنہیں **ڈیٹافریم** کہا جاتا ہے، جو تعلقاتی جدولوں کی طرح ہوتے ہیں۔ آپ کے پاس نامزد کالم ہو سکتے ہیں، اور آپ قطاروں، کالموں اور عمومی طور پر ڈیٹافریم پر مختلف عمل انجام دے سکتے ہیں۔
* **[Numpy](https://numpy.org/)** تینسروں، یعنی کثیر الجہتی **ارے** کے ساتھ کام کرنے کے لیے ایک لائبریری ہے۔ ارے میں سبھی اقدار ایک ہی قسم کی ہوتی ہیں، اور یہ ڈیٹافریم کی نسبت آسان ہے، لیکن یہ زیادہ ریاضیاتی عمل فراہم کرتا ہے اور کم اضافی بوجھ پیدا کرتا ہے۔
چند دیگر لائبریریاں بھی ہیں جن سے آپ واقف ہونا چاہیں گے:
* **[Matplotlib](https://matplotlib.org/)** ایک لائبریری ہے جو ڈیٹا کی ویژولائزیشن اور گراف بنانے کے لیے استعمال ہوتی ہے
* **[SciPy](https://www.scipy.org/)** کچھ اضافی سائنسی فنکشنز کی لائبریری ہے۔ ہم اس لائبریری سے پہلے ہی احتمال اور شماریات کے بارے میں بات کرتے ہوئے مل چکے ہیں
یہاں ایک کوڈ کا ٹکڑا ہے جو آپ معمولاً اپنے پائتھن پروگرام کے شروع میں ان لائبریریوں کو امپورٹ کرنے کے لیے استعمال کریں گے:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
from scipy import ... # آپ کو مخصوص ذیلی پیکجز کی وضاحت کرنا ہوگی جن کی آپ کو ضرورت ہے
```
پانڈاز چند بنیادی تصورات کے گرد مرکوز ہے۔
### سیریز
### سیریز
**سیریز** اقدار کی ترتیب ہے، جو فہرست یا نمپائی ارے کی طرح ہے۔ بنیادی فرق یہ ہے کہ سیریز میں ایک **انڈیکس** بھی ہوتا ہے، اور جب ہم سیریز پر آپریشن کرتے ہیں (جیسے، انہیں جمع کرتے ہیں)، تو انڈیکس کو مدنظر رکھا جاتا ہے۔ انڈیکس اتنا سادہ ہو سکتا ہے جتنا کہ عددی قطار نمبر (یہ وہ انڈیکس ہے جو فہرست یا ارے سے سیریز بناتے وقت ڈیفالٹ کے طور پر استعمال ہوتا ہے)، یا اس کی پیچیدہ ساخت ہو سکتی ہے، جیسے کہ تاریخ کا وقفہ۔
**سیریز** اقدار کا ایک تسلسل ہے، جو ایک فہرست یا نمپائی ارے کی طرح ہے۔ اس کا بنیادی فرق یہ ہے کہ سیریز کا ایک **انڈیکس** بھی ہوتا ہے، اور جب ہم سیریز پر عمل کرتے ہیں (مثلاً، انہیں جمع کرتے ہیں)، تو انڈیکس کو بھی مدنظر رکھا جاتا ہے۔ انڈیکس جتنا سادہ ہو سکتا ہے، جیسے کہ عددی قطار نمبر (جو لسٹ یا ارے سے سیریز بنانے پر بطور ڈیفالٹ استعمال ہوتا ہے)، یا پیچیدہ ساخت رکھ سکتا ہے، جیسے تاریخ کا وقفہ۔
> **نوٹ**: اس کے ساتھ موجود نوٹ بک [`notebook.ipynb`](notebook.ipynb) میں کچھ تعارفی پانڈاز کوڈ موجود ہے۔ ہم یہاں صرف چند مثالیں پیش کرتے ہیں، اور آپ کو مکمل نوٹ بک دیکھنے کی دعوت دیتے ہیں۔
> **نوٹ**: ایک ابتدائی پانڈاز کا کوڈ ساتھ موجود نوٹ بک [`notebook.ipynb`](notebook.ipynb) میں موجود ہے۔ ہم یہاں صرف چند مثالیں پیش کرتے ہیں، اور آپ یقیناً مکمل نوٹ بک کو دیکھنے کے لیے خوش آمدید ہیں۔
ایک مثال پر غور کریں: ہم اپنی آئس کریم کی دکان کی فروخت کا تجزیہ کرنا چاہتے ہیں۔ آئیے کچھ وقت کے لیے فروخت کے نمبروں (ہر دن فروخت ہونے والی اشیاء کی تعداد) کی سیریز بنائیں:
ایک مثال پر غور کریں: ہم اپنی آئس کریم کی دکان کی فروخت کا تجزیہ کرنا چاہتے ہیں۔ آئیے کسی مدت کے لیے فروخت کی تعداد کی ایک سیریز تیار کرتے ہیں (روزانہ فروخت شدہ اشیاء کی تعداد):
اب فرض کریں کہ ہر ہفتے ہم دوستوں کے لیے ایک پارٹی کا اہتمام کرتے ہیں، اور پارٹی کے لیے آئس کریم کے اضافی 10 پیک لیتے ہیں۔ ہم ایک اور سیریز بنا سکتے ہیں، جو ہفتے کے انڈیکس کے ذریعے ظاہر ہو:
اب فرض کریں کہ ہر ہفتے ہم دوستوں کے لیے پارٹی کا اہتمام کرتے ہیں، اور پارٹی کے لیے اضافی 10 پیک آئس کریم لے جاتے ہیں۔ ہم ہفتہ وار انڈیکس والی ایک اور سیریز بنا سکتے ہیں تاکہ اسے ظاہر کیا جا سکے:
> **نوٹ** کہ ہم سادہ سینٹیکس`total_items+additional_items` استعمال نہیں کر رہے ہیں۔ اگر ہم ایسا کرتے، تو ہمیں نتیجہ میں بہت سے `NaN` (*Not a Number*) اقدار ملتی۔ اس کی وجہ یہ ہے کہ `additional_items` سیریز میں انڈیکس پوائنٹس کے لیے کچھ اقدار غائب ہیں، اور کسی بھی چیز میں `NaN` شامل کرنے سے نتیجہ `NaN` ہوتا ہے۔ اس لیے ہمیں جمع کرتے وقت `fill_value` پیرامیٹر کی وضاحت کرنے کی ضرورت ہوتی ہے۔
> **نوٹ** کہ ہم سادہ ترکیب`total_items+additional_items` استعمال نہیں کر رہے ہیں۔ اگر ہم ایسا کرتے، تو نتیجے میں بہت سی `NaN` (*نمبر نہیں*) کی قدریں ملتیں۔ اس کی وجہ یہ ہے کہ `additional_items` سیریز کے کچھ انڈیکس پوائنٹس کے لیے قدریں موجود نہیں ہیں، اور Nan کو کسی بھی چیز سے جمع کرنے کا نتیجہ `NaN` ہوتا ہے۔ اس لیے ہمیں جمع کرتے وقت `fill_value` پیرا میٹر بیان کرنا پڑتا ہے۔
ٹائم سیریز کے ساتھ، ہم مختلف وقت کے وقفوں کے ساتھ سیریز کو **دوبارہ نمونہ** بنا سکتے ہیں۔ مثال کے طور پر، فرض کریں کہ ہم ماہانہ اوسط فروخت کا حجم شمار کرنا چاہتے ہیں۔ ہم درج ذیل کوڈ استعمال کر سکتے ہیں:
وقت کی سیریز کے ساتھ، ہم مختلف وقت کے وقفوں کے ساتھ سیریز کو **ریسمپل** بھی کر سکتے ہیں۔ مثال کے طور پر، فرض کریں ہم ماہانہ اوسط فروخت کا حساب کرنا چاہتے ہیں۔ ہم درج ذیل کوڈ استعمال کر سکتے ہیں:
یہاں `.T`ڈیٹا فریم کو ٹرانسپوز کرنے کا آپریشن ہے، یعنی قطاروں اور کالموں کو تبدیل کرنا، اور `rename` آپریشن ہمیں کالموں کو پچھلی مثال سے ملانے کے لیے نام تبدیل کرنے کی اجازت دیتا ہے۔
یہاں `.T`کا مطلب ہے ڈیٹافریم کا ٹرانسپوز کرنا، یعنی قطاروں اور کالموں کو تبدیل کرنا، اور `rename` عمل ہمیں کالموں کو پچھلے مثال سے ہم آہنگ نام دینے کی اجازت دیتا ہے۔
یہاں چند اہم ترین آپریشنز ہیں جو ہم ڈیٹا فریمز پر انجام دے سکتے ہیں:
یہاں چند اہم ترین عمل ہیں جو ہم ڈیٹافریمز پر انجام دے سکتے ہیں:
**کالم کا انتخاب**۔ ہم انفرادی کالمز کو `df['A']` لکھ کر منتخب کر سکتے ہیں - یہ آپریشن ایک سیریز واپس کرتا ہے۔ ہم کالمز کے ایک ذیلی سیٹ کو دوسرے ڈیٹا فریم میں منتخب کر سکتے ہیں `df[['B','A']]` لکھ کر - یہ ایک اور ڈیٹا فریم واپس کرتا ہے۔
**کالم کا انتخاب**۔ ہم کالموں کو انفرادی طور پر `df['A']` لکھ کر منتخب کر سکتے ہیں - یہ عمل ایک سیریز واپس دیتا ہے۔ ہم کالموں کے ایک ذیلی سیٹ کو دوسرے ڈیٹافریم میں `df[['B','A']]` لکھ کر منتخب کر سکتے ہیں - یہ ایک دوسرا ڈیٹافریم واپس دیتا ہے۔
**فلٹرنگ** صرف مخصوص قطاروں کو معیار کے مطابق۔ مثال کے طور پر، صرف ان قطاروں کو چھوڑنے کے لیے جن میں کالم `A` 5 سے زیادہ ہو، ہم لکھ سکتے ہیں `df[df['A']>5]`۔
**صرف مخصوص قطاروں کو فلٹر کرنا**۔ مثال کے طور پر، کالم `A` کی قیمت 5 سے زیادہ والی قطاریں رکھنا ہو، تو ہم لکھیں `df[df['A']>5]`۔
> **نوٹ**: فلٹرنگ کا کام کرنے کا طریقہ درج ذیل ہے۔ اظہار `df['A']<5` ایک بولین سیریز واپس کرتا ہے، جو ظاہر کرتا ہے کہ آیا اظہار اصل سیریز `df['A']` کے ہر عنصر کے لیے `True` یا `False` ہے۔ جب بولین سیریز کو انڈیکس کے طور پر استعمال کیا جاتا ہے، تو یہ ڈیٹا فریم میں قطاروں کا ذیلی سیٹ واپس کرتا ہے۔ اس لیے کسی بھی صوابدیدی پائتھون بولین اظہار کا استعمال ممکن نہیں ہے، مثال کے طور پر، لکھنا`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
df['DivA'] = df['A']-df['A'].mean()
```
یہ مثال `A` کی اس کے اوسط قدر سے انحراف کا حساب لگاتی ہے۔ یہاں جو اصل میں ہوتا ہے وہ یہ ہے کہ ہم ایک سیریز کا حساب لگا رہے ہیں، اور پھر اس سیریز کو بائیں طرف تفویض کر رہے ہیں، ایک اور کالم بنا رہے ہیں۔ اس لیے، ہم کسی بھی آپریشنز کا استعمال نہیں کر سکتے جو سیریز کے ساتھ مطابقت نہیں رکھتے، مثال کے طور پر، نیچے دیا گیا کوڈ غلط ہے:
یہ مثال A کی اوسط سے اس کی انحراف کو حساب کرتی ہے۔ حقیقت میں ہم ایک سیریز کا حساب کر رہے ہیں، اور پھر اس سیریز کو بائیں ہاتھ کی طرف تفویض کر رہے ہیں، ایک اور کالم بناتے ہوئے۔ چنانچہ، ہم کوئی بھی ایسا عمل استعمال نہیں کر سکتے جو سیریز کے ساتھ موافق نہ ہو، مثلاً نیچے دیا گیا کوڈ غلط ہے:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Wrongresult
# غلط کوڈ -> df['ADescr'] = "کم" اگر df['A'] <5ورنہ"زیادہ"
df['LenB'] = len(df['B']) # <-غلطنتیجہ
```
آخری مثال، اگرچہ نحوی طور پر درست ہے، ہمیں غلط نتیجہ دیتی ہے، کیونکہ یہ سیریز `B` کی لمبائی کو کالم کے تمام اقدار پر تفویض کرتی ہے، اور انفرادی عناصر کی لمبائی کو نہیں جیسا کہ ہم نے ارادہ کیا تھا۔
آخری مثال، حالانکہ نحوی اعتبار سے درست ہے، غلط نتیجہ دیتی ہے، کیونکہ یہ سیریز `B` کی لمبائی کو کالم کے تمام اقدار پر تفویض کرتی ہے، بجائے اس کے کہ انفرادی عناصر کی لمبائی جیسی ہم نے ارادہ کیا تھا۔
اگر ہمیں اس طرح کے پیچیدہ اظہار کا حساب لگانے کی ضرورت ہو، تو ہم `apply` فنکشن استعمال کر سکتے ہیں۔ آخری مثال کو درج ذیل کے طور پر لکھا جا سکتا ہے:
اگر ہمیں پیچیدہ اظہار کا حساب کرنا ہو تو ہم `apply` فنکشن استعمال کر سکتے ہیں۔ آخری مثال کو یوں لکھا جا سکتا ہے:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# یا
df['LenB'] = df['B'].apply(len)
```
اوپر دیے گئے آپریشنز کے بعد، ہم درج ذیل ڈیٹا فریم کے ساتھ ختم ہوں گے:
مذکورہ بالا عمل کے بعد، ہمیں درج ذیل ڈیٹافریم ملے گا:
**نمبرز کی بنیاد پر قطاروں کا انتخاب** `iloc` کنسٹرکٹ کا استعمال کرتے ہوئے کیا جا سکتا ہے۔ مثال کے طور پر، ڈیٹا فریم سے پہلی 5 قطاروں کو منتخب کرنے کے لیے:
**نمبر کے حساب سے قطاروں کا انتخاب** `iloc` کنسٹرکٹ استعمال کر کے کیا جا سکتا ہے۔ مثال کے طور پر، ڈیٹافریم کی پہلی 5 قطاریں منتخب کرنے کے لیے:
```python
df.iloc[:5]
```
**گروپنگ** اکثر *پیوٹ ٹیبلز* جیسا نتیجہ حاصل کرنے کے لیے استعمال ہوتی ہے جیسا کہ ایکسل میں۔ فرض کریں کہ ہم `LenB` کی دی گئی تعداد کے لیے کالم `A` کی اوسط قدر کا حساب لگانا چاہتے ہیں۔ پھر ہم اپنے ڈیٹا فریم کو `LenB` کے ذریعے گروپ کر سکتے ہیں، اور`mean` کال کر سکتے ہیں:
**گروپ بندی** اکثر اس طرح کے نتائج حاصل کرنے کے لیے استعمال ہوتی ہے جیسے Excel میں *pivot tables* ہوتے ہیں۔ فرض کریں ہم کالم `A` کی مقدار کو `LenB` کی ہر مخصوص عددی مقدار کے لیے اوسط نکالنا چاہتے ہیں۔ پھر ہم اپنے ڈیٹافریم کو `LenB` کے لحاظ سے گروپ کر کے`mean` کال کر سکتے ہیں:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
اگر ہمیں گروپ میں اوسط اور عناصر کی تعداد کا حساب لگانے کی ضرورت ہو، تو ہم زیادہ پیچیدہ `aggregate` فنکشن استعمال کر سکتے ہیں:
اگر ہمیں گروپ میں اوسط اور عناصر کی تعداد دونوں کا حساب چاہیے، تو ہم زیادہ پیچیدہ `aggregate` فنکشن استعمال کر سکتے ہیں:
ہم نے دیکھا کہ Python اشیاء سے Series اور DataFrames بنانا کتنا آسان ہے۔ تاہم، ڈیٹا عام طور پر ٹیکسٹ فائل یا Excel ٹیبل کی شکل میں آتا ہے۔ خوش قسمتی سے، Pandas ہمیں ڈسک سے ڈیٹا لوڈ کرنے کا ایک آسان طریقہ فراہم کرتا ہے۔ مثال کے طور پر، CSV فائل پڑھنا اتنا ہی آسان ہے:
ہم نے دیکھا ہے کہ Python اشیاء سے Series اور DataFrames تیار کرنا کتنا آسان ہے۔ تاہم، ڈیٹا عام طور پر ایک ٹیکسٹ فائل یا ایکسل ٹیبل کی صورت میں آتا ہے۔ خوش قسمتی سے، Pandas ہمیں ڈیٹا کو ڈسک سے لوڈ کرنے کا ایک آسان طریقہ فراہم کرتا ہے۔ مثال کے طور پر، CSV فائل پڑھنا اس قدر آسان ہے:
```python
df = pd.read_csv('file.csv')
```
ہم ڈیٹا لوڈ کرنے کی مزید مثالیں دیکھیں گے، بشمول اسے بیرونی ویب سائٹس سے حاصل کرنا، "Challenge" سیکشن میں۔
ہم "Challenge" سیکشن میں مزید ڈیٹا لوڈ کرنے کی مثالیں دیکھیں گے، بشمول اسے بیرونی ویب سائٹس سے حاصل کرنے کے۔
### ڈیٹا کی پرنٹنگ اور گراف بنانا
### پرنٹنگ اور پلاٹنگ
ایک Data Scientist کو اکثر ڈیٹا کا تجزیہ کرنا پڑتا ہے، اس لیے اسے بصری طور پر دیکھنا ضروری ہے۔ جب DataFrame بڑا ہو، تو اکثر ہم صرف یہ یقینی بنانا چاہتے ہیں کہ ہم سب کچھ صحیح طریقے سے کر رہے ہیں، اور اس کے لیے ابتدائی چند قطاریں پرنٹ کرتے ہیں۔ یہ `df.head()` کال کرکے کیا جا سکتا ہے۔ اگر آپ اسے Jupyter Notebook سے چلا رہے ہیں، تو یہ DataFrame کو ایک خوبصورت ٹیبل کی شکل میں پرنٹ کرے گا۔
ایک Data Scientist کو اکثر ڈیٹا کو دریافت کرنا ہوتا ہے، اس لیے اسے قابلِ دید بنانا ضروری ہوتا ہے۔ جب DataFrame بڑا ہوتا ہے، تو اکثر ہم صرف یہ یقین کرنے کے لیے چاہتے ہیں کہ ہم سب کچھ صحیح کر رہے ہیں، پہلے چند قطاریں پرنٹ کر کے۔ یہ `df.head()` کال کر کے کیا جا سکتا ہے۔ اگر آپ Jupyter Notebook سے اسے چلا رہے ہیں، تو یہ DataFrame کو خوبصورت جدول کی شکل میں پرنٹ کرے گا۔
ہم نے `plot` فنکشن کا استعمال بھی دیکھا ہے تاکہ کچھ کالمز کو بصری طور پر دکھایا جا سکے۔ اگرچہ `plot` بہت سے کاموں کے لیے مفید ہے اور `kind=` پیرامیٹر کے ذریعے مختلف قسم کے گرافز کو سپورٹ کرتا ہے، آپ ہمیشہ `matplotlib` لائبریری کا استعمال کرکے مزید پیچیدہ گراف بنا سکتے ہیں۔ ہم ڈیٹا کی بصری نمائندگی کو الگ کورس کے اسباق میں تفصیل سے کور کریں گے۔
ہم نے کچھ کالمز کو دیکھنے کے لیے `plot` فنکشن کا استعمال بھی دیکھا ہے۔ جبکہ `plot` بہت سارے کاموں کے لیے مفید ہے، اور `kind=` پیرا میٹر کے ذریعے بہت سی مختلف گراف اقسام کی حمایت کرتا ہے، آپ ہمیشہ پیچیدہ گراف بنانے کے لیے خام `matplotlib` لائبریری استعمال کر سکتے ہیں۔ ہم ڈیٹا کی بصری نمائندگی کو تفصیل سے الگ کورس کے اسباق میں کور کریں گے۔
یہ جائزہ Pandas کے سب سے اہم تصورات کو کور کرتا ہے، تاہم، یہ لائبریری بہت وسیع ہے، اور آپ اس کے ساتھ جو کچھ کر سکتے ہیں اس کی کوئی حد نہیں ہے! آئیے اب اس علم کو مخصوص مسائل کے حل کے لیے استعمال کریں۔
یہ جائزہ Pandas کے سب سے اہم تصورات کو کور کرتا ہے، تاہم، یہ لائبریری بہت وسیع ہے، اور آپ اس کے ساتھ جو کچھ بھی کرنا چاہتے ہیں اس کی کوئی حد نہیں ہے! آئیے اب اس علم کو کسی مخصوص مسئلے کو حل کرنے کے لیے استعمال کرتے ہیں۔
## 🚀 چیلنج 1: COVID کے پھیلاؤ کا تجزیہ
## 🚀 چیلنج 1: COVID پھیلاؤ کا تجزیہ
پہلا مسئلہ جس پر ہم توجہ مرکوز کریں گے وہ COVID-19 کے وبائی پھیلاؤ کی ماڈلنگ ہے۔ ایسا کرنے کے لیے، ہم مختلف ممالک میں متاثرہ افراد کی تعداد کے ڈیٹا کا استعمال کریں گے، جو [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) نے [Johns Hopkins University](https://jhu.edu/) کے ذریعے فراہم کیا ہے۔ ڈیٹا سیٹ [اس GitHub Repository](https://github.com/CSSEGISandData/COVID-19) میں دستیاب ہے۔
پہلا مسئلہ جس پر ہم توجہ مرکوز کریں گے وہ COVID-19 کی وباء کے پھیلاؤ کی ماڈلنگ ہے۔ اس کے لیے، ہم مختلف ممالک میں متاثرہ افراد کی تعداد کے بارے میں ڈیٹا استعمال کریں گے، جو [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) نے [Johns Hopkins University](https://jhu.edu/) میں فراہم کیا ہے۔ ڈیٹا سیٹ [اس GitHub ریپوزٹری](https://github.com/CSSEGISandData/COVID-19) میں دستیاب ہے۔
چونکہ ہم یہ دکھانا چاہتے ہیں کہ ڈیٹا کے ساتھ کیسے کام کیا جائے، ہم آپ کو دعوت دیتے ہیں کہ [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) کھولیں اور اسے شروع سے آخر تک پڑھیں۔ آپ سیلز کو چلا سکتے ہیں اور آخر میں دیے گئے کچھ چیلنجز کو حل کر سکتے ہیں۔
چونکہ ہم یہ دکھانا چاہتے ہیں کہ ڈیٹا کے ساتھ کیسے کام کیا جائے، اس لیے آپ سے گزارش ہے کہ [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) کھولیں اور اسے اوپر سے نیچے تک پڑھیں۔ آپ سیلز کو بھی چلا سکتے ہیں، اور ہمارے چھوڑے ہوئے چیلنجز بھی حل کر سکتے ہیں۔
> اگر آپ کو Jupyter Notebook میں کوڈ چلانے کا طریقہ معلوم نہیں ہے، تو [اس مضمون](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) کو دیکھیں۔
> اگر آپ کو معلوم نہیں کہ Jupyter Notebook میں کوڈ کیسے چلانا ہے، تو [اس مضمون](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) کو دیکھیں۔
## غیر ساختہ ڈیٹا کے ساتھ کام کرنا
## غیر منظم شدہ ڈیٹا کے ساتھ کام کرنا
اگرچہ ڈیٹا اکثر ٹیبل کی شکل میں آتا ہے، کچھ معاملات میں ہمیں کم ساختہ ڈیٹا جیسے کہ ٹیکسٹ یا تصاویر کے ساتھ کام کرنا پڑتا ہے۔ اس صورت میں، اوپر دیکھے گئے ڈیٹا پروسیسنگ تکنیکوں کو لاگو کرنے کے لیے، ہمیں کسی طرح **ساختہ** ڈیٹا نکالنا ہوگا۔ یہاں کچھ مثالیں ہیں:
جب کہ ڈیٹا اکثر جدول کی شکل میں آتا ہے، بعض صورتوں میں ہمیں کم منظم شدہ ڈیٹا، جیسے کہ متن یا تصاویر، کے ساتھ کام کرنا پڑتا ہے۔ اس صورت میں، ڈیٹا پروسیسنگ کی تکنیکوں کو نافذ کرنے کے لیے ہمیں کسی طرح سے منظم شدہ ڈیٹا **نکالنا** ضروری ہوتا ہے۔ یہاں چند مثالیں ہیں:
* ٹیکسٹ سے کلیدی الفاظ نکالنا اور یہ دیکھنا کہ وہ کتنی بار ظاہر ہوتے ہیں
* نیورل نیٹ ورکس کا استعمال کرکے تصویر میں موجود اشیاء کے بارے میں معلومات نکالنا
* ویڈیو کیمرہ فیڈ پر لوگوں کے جذبات کے بارے میں معلومات حاصل کرنا
* متن سے کلیدی الفاظ نکالنا، اور دیکھنا کہ وہ کلیدی الفاظ کتنی بار ظاہر ہوتے ہیں
* نیورل نیٹ ورکس کا استعمال کرتے ہوئے تصویر میں موجود اشیاء کی معلومات نکالنا
* ویڈیو کیمرا فیڈ میں لوگوں کے جذبات کی معلومات حاصل کرنا
## 🚀 چیلنج 2: COVID پر تحقیقی مقالوں کا تجزیہ
## 🚀 چیلنج 2: COVID رپورٹس کا تجزیہ
اس چیلنج میں، ہم COVID وبائی مرض کے موضوع کو جاری رکھیں گے اور اس موضوع پر سائنسی مقالوں کی پروسیسنگ پر توجہ مرکوز کریں گے۔ [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) میں 7000 سے زیادہ (لکھنے کے وقت) COVID پر مقالے دستیاب ہیں، جن میں میٹا ڈیٹا اور خلاصے شامل ہیں (اور ان میں سے تقریباً نصف کے لیے مکمل متن بھی فراہم کیا گیا ہے)۔
اس چیلنج میں، ہم COVID وباء کے موضوع پر جاری رکھیں گے، اور اس موضوع پر سائنسی مقالوں کی پروسیسنگ پر توجہ مرکوز کریں گے۔ [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) میں 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) کو کھولیں اور اسے اوپر سے نیچے پڑھیں۔ آپ سیلز بھی چلا سکتے ہیں، اور کچھ چیلنجز جو ہم نے آپ کے لیے چھوڑے ہیں، کر سکتے ہیں۔

## تصویری ڈیٹا کی پروسیسنگ
## تصویر کے ڈیٹا کی پروسیسنگ
حال ہی میں، بہت طاقتور AI ماڈلز تیار کیے گئے ہیں جو تصاویر کو سمجھنے کی صلاحیت رکھتے ہیں۔ بہت سے کام ایسے ہیں جو پہلے سے تربیت یافتہ نیورل نیٹ ورکس یا کلاؤڈ سروسز کا استعمال کرکے حل کیے جا سکتے ہیں۔ کچھ مثالیں شامل ہیں:
حال ہی میں، بہت طاقتور AI ماڈلز تیار کیے گئے ہیں جو ہمیں تصاویر کو سمجھنے کی اجازت دیتے ہیں۔ بہت سے کام ایسے ہیں جو پری ٹرینڈ نیورل نیٹ ورکس یا کلاؤڈ سروسز کا استعمال کرکے حل کیے جا سکتے ہیں۔ کچھ مثالیں یہ ہیں:
* **تصویری درجہ بندی**، جو آپ کو تصویر کو پہلے سے طے شدہ کلاسز میں سے کسی ایک میں تقسیم کرنے میں مدد دے سکتی ہے۔ آپ آسانی سے [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) جیسی سروسز کا استعمال کرکے اپنی تصویری درجہ بندی کرنے والے ماڈلز بنا سکتے ہیں۔
* **اشیاء کی شناخت** تاکہ تصویر میں مختلف اشیاء کی شناخت کی جا سکے۔ [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) جیسی سروسز عام اشیاء کی شناخت کر سکتی ہیں، اور آپ [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) ماڈل کو مخصوص اشیاء کی شناخت کے لیے تربیت دے سکتے ہیں۔
* **چہرے کی شناخت**، جس میں عمر، جنس اور جذبات کی شناخت شامل ہے۔ یہ [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) کے ذریعے کیا جا سکتا ہے۔
* **امیج کلاسفیکیشن**، جو آپ کی تصویر کو پہلے سے متعین شدہ کلاسوں میں سے ایک میں تقسیم کرنے میں مدد دیتی ہے۔ آپ آسانی سے اپنی خود کی تصویر کی درجہ بندی کے لیے [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) جیسی سروسز استعمال کر کے ٹرین کر سکتے ہیں۔
* **آبجیکٹ ڈیٹیکشن** تاکہ تصویر میں مختلف اشیاء کا پتہ لگایا جا سکے۔ [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) جیسی سروسز عام اشیاء کو ڈیٹیکٹ کر سکتی ہیں، اور آپ مخصوص دلچسپی کی اشیاء کے لیے [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) ماڈل ٹرین کر سکتے ہیں۔
* **چہرے کی شناخت**، بشمول عمر، صنف اور جذبات کی شناخت۔ یہ [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) کے ذریعے کیا جا سکتا ہے۔
یہ تمام کلاؤڈ سروسز [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) کا استعمال کرکے کال کی جا سکتی ہیں، اور اس طرح آپ کے ڈیٹا کے تجزیے کے ورک فلو میں آسانی سے شامل کی جا سکتی ہیں۔
یہ تمام کلاؤڈ سروسز [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) کے ذریعے کال کی جا سکتی ہیں، اور اس طرح آپ کے ڈیٹا تلاش کے ورک فلو میں آسانی سے شامل کی جا سکتی ہیں۔
یہاں تصویری ڈیٹا کے ذرائع سے ڈیٹا کو دریافت کرنے کی کچھ مثالیں ہیں:
* بلاگ پوسٹ [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) میں ہم Instagram تصاویر کا تجزیہ کرتے ہیں، یہ سمجھنے کی کوشش کرتے ہیں کہ کون سی چیز لوگوں کو تصویر پر زیادہ لائکس دینے پر مجبور کرتی ہے۔ ہم پہلے [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) کا استعمال کرکےتصاویر سے زیادہ سے زیادہ معلومات نکالتے ہیں، اور پھر [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) کا استعمال کرکے ایک قابل وضاحت ماڈل بناتے ہیں۔
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) میں ہم[Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) کا استعمال کرتے ہیں تاکہ ایونٹس کی تصاویر میں لوگوں کے جذبات نکال سکیں، یہ سمجھنے کی کوشش کرتے ہوئے کہ کون سی چیز لوگوں کو خوش کرتی ہے۔
یہاں تصویر کے ڈیٹا ذرائع سے ڈیٹا دریافت کرنے کی چند مثالیں ہیں:
* بلاگ پوسٹ [کوڈنگ کے بغیر ڈیٹا سائنس کیسے سیکھیں](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) میں ہم انسٹاگرام کی تصاویر کا تجزیہ کرتے ہیں تاکہ سمجھ سکیں کہ لوگ کسی تصویر کو زیادہ لائیکس کیوں دیتے ہیں۔ ہم پہلے تصاویر سے زیادہ سے زیادہ معلومات نکالتے ہیں [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) کا استعمال کر کے، پھر [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) کے ذریعے سمجھنے والی ماڈل تیار کرتے ہیں۔
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) میں ہم[Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) استعمال کر کے واقعات کی تصاویر میں لوگوں کے جذبات نکالتے ہیں تاکہ سمجھ سکیں کہ لوگوں کو خوش کیا کرتا ہے۔
## نتیجہ
چاہے آپ کے پاس پہلے سے ساختہ یا غیر ساختہ ڈیٹا ہو، Python کا استعمال کرکے آپ ڈیٹا پروسیسنگ اور سمجھنے سے متعلق تمام مراحل انجام دے سکتے ہیں۔ یہ ڈیٹا پروسیسنگ کا سب سے لچکدار طریقہ ہے، اور یہی وجہ ہے کہ زیادہ تر ڈیٹا سائنسدان Python کو اپنا بنیادی ٹول کے طور پر استعمال کرتے ہیں۔ اگر آپ اپنے ڈیٹا سائنس کے سفر میں سنجیدہ ہیں تو Python کو گہرائی سے سیکھنا شاید ایک اچھا خیال ہے!
چاہے آپ کے پاس پہلے سے منظم شدہ ہو یا غیر منظم شدہ ڈیٹا، Python استعمال کرتے ہوئے آپ ڈیٹا پروسیسنگ اور سمجھ بوجھ کے تمام مراحل انجام دے سکتے ہیں۔ یہ شاید ڈیٹا پروسیسنگ کا سب سے زیادہ لچکدار طریقہ ہے، اور یہی وجہ ہے کہ زیادہ تر ڈیٹا سائنسدان Python کو اپنا بنیادی آلہ استعمال کرتے ہیں۔ اگر آپ اپنے ڈیٹا سائنس کے سفر کو سنجیدگی سے لیتے ہیں تو Python کو گہرائی سے سیکھنا ایک اچھا خیال ہے!
## [لیکچر کے بعد کا کوئز](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## جائزہ اور خود مطالعہ
## جائزہ اور خود کی تعلیم
**کتب**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**آن لائن وسائل**
* آفیشل [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) ٹیوٹوریل
* [Pandas Visualization پر دستاویزات](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* سرکاری [10 منٹ میں Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) سبق
* [Pandas Visualization کی دستاویزات](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Python سیکھنا**
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
* [Python کے ساتھ اپنے پہلے قدم اٹھائیں](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn پر لرننگ پاتھ
* [Turtle Graphics اور Fractals کے ساتھ Python مزے سے سیکھیں](https://github.com/shwars/pycourse)
* [Python میں اپنے پہلے قدم اٹھائیں](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) مائیکروسافٹ لرن پر لرننگ پاتھ (Microsoft Learn)
## اسائنمنٹ
[اوپر دیے گئے چیلنجز کے لیے مزید تفصیلی ڈیٹا اسٹڈی کریں](assignment.md)
[اوپر دئیے گئے چیلنجز کے لیے مزید تفصیلی ڈیٹا اسٹڈی کریں](assignment.md)
## کریڈٹس
## شکریہ
یہ سبق [Dmitry Soshnikov](http://soshnikov.com) نے ♥️ کے ساتھ لکھا ہے۔
یہ سبق ♥️ [Dmitry Soshnikov](http://soshnikov.com) نے تحریر کیا ہے۔
---
**ڈسکلیمر**:
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ڈس کلیمر**:
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے ترجمہ کی گئی ہے۔ جبکہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنے مادری زبان میں مستند ماخذ سمجھی جائے گی۔ حساس معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم قبول نہیں کرتے۔
使用[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/)。我们将讨论此分析的简化版本。