ডেটাবেস ডেটা সংরক্ষণ এবং কুয়েরি করার জন্য খুবই কার্যকর পদ্ধতি প্রদান করে, তবে ডেটা প্রক্রিয়াকরণের সবচেয়ে নমনীয় উপায় হল আপনার নিজের প্রোগ্রাম লিখে ডেটা ম্যানিপুলেট করা। অনেক ক্ষেত্রে, ডেটাবেস কুয়েরি করা আরও কার্যকর হতে পারে। তবে, কিছু ক্ষেত্রে যখন আরও জটিল ডেটা প্রক্রিয়াকরণের প্রয়োজন হয়, তখন এটি সহজে SQL ব্যবহার করে করা সম্ভব হয় না।
ডেটা প্রক্রিয়াকরণ যেকোনো প্রোগ্রামিং ভাষায় করা যেতে পারে, তবে কিছু ভাষা ডেটার সাথে কাজ করার জন্য উচ্চতর স্তরের সুবিধা প্রদান করে। ডেটা বিজ্ঞানীরা সাধারণত নিম্নলিখিত ভাষাগুলোর একটি পছন্দ করেন:
যেখানে ডেটাবেস খুব দক্ষভাবে ডেটা সংরক্ষণ এবং ক্যোয়ারি ভাষা ব্যবহার করে ক্যোয়ারি করার উপায় প্রদান করে, তথ্য প্রক্রিয়াকরণের সবচেয়ে নমনীয় উপায় হল নিজস্ব প্রোগ্রাম লিখে ডেটা প্রক্রিয়াকরণ করা। অনেক ক্ষেত্রে, ডেটাবেস ক্যোয়ারি করা একটি কার্যকরী উপায় হতে পারে। তবে কিছু ক্ষেত্রে যখন জটিল ডেটা প্রক্রিয়াকরণ প্রয়োজন, তখন এটি সহজে SQL ব্যবহার করে করা যায় না।
ডেটা প্রক্রিয়াকরণ যেকোনো প্রোগ্রামিং ভাষায় প্রোগ্রাম করা যেতে পারে, কিন্তু ডেটার সাথে কাজ করার জন্য কিছু ভাষা উচ্চতর স্তরের হয়ে থাকে। তথ্য বিজ্ঞানীরা সাধারণত নিম্নলিখিত ভাষাগুলোর মধ্যে একটি পছন্দ করেন:
* **[Python](https://www.python.org/)**: এটি একটি সাধারণ উদ্দেশ্য প্রোগ্রামিং ভাষা, যা এর সরলতার কারণে প্রায়শই শিক্ষার্থীদের জন্য সেরা বিকল্প হিসাবে বিবেচিত হয়। পাইথনের অনেক অতিরিক্ত লাইব্রেরি রয়েছে যা আপনাকে অনেক বাস্তব সমস্যার সমাধান করতে সাহায্য করতে পারে, যেমন ZIP আর্কাইভ থেকে ডেটা বের করা বা ছবি গ্রেস্কেলে রূপান্তর করা। ডেটা বিজ্ঞানের পাশাপাশি, পাইথন ওয়েব ডেভেলপমেন্টেও প্রায়শই ব্যবহৃত হয়।
* **[R](https://www.r-project.org/)**: এটি একটি ঐতিহ্যবাহী টুলবক্স যা পরিসংখ্যানগত ডেটা প্রক্রিয়াকরণের জন্য তৈরি। এটি একটি বড় লাইব্রেরি সংগ্রহ (CRAN) ধারণ করে, যা এটিকে ডেটা প্রক্রিয়াকরণের জন্য একটি ভালো পছন্দ করে তোলে। তবে, R একটি সাধারণ উদ্দেশ্য প্রোগ্রামিং ভাষা নয় এবং এটি ডেটা বিজ্ঞানের বাইরে খুব কমই ব্যবহৃত হয়।
* **[Julia](https://julialang.org/)**: এটি ডেটা বিজ্ঞানের জন্য বিশেষভাবে তৈরি একটি ভাষা। এটি পাইথনের চেয়ে ভালো পারফরম্যান্স দেওয়ার জন্য ডিজাইন করা হয়েছে, যা এটিকে বৈজ্ঞানিক পরীক্ষার জন্য একটি চমৎকার টুল করে তোলে।
* **[Python](https://www.python.org/)**, একটি সাধারণ উদ্দেশ্যের প্রোগ্রামিং ভাষা, যা এর সরলতার কারণে শুরুকারীদের জন্য সবচেয়ে ভাল বিকল্পগুলোর মধ্যে গণ্য। পাইথনের অনেক অতিরিক্ত লাইব্রেরি রয়েছে যা আপনাকে অনেক ব্যবহারিক সমস্যার সমাধানে সাহায্য করে, যেমন ZIP আর্কাইভ থেকে ডেটা বের করা,অথবা ছবিটিকে গ্রেস্কেলে রূপান্তর করা। ডেটা সায়েন্স ছাড়াও পাইথন প্রায়শই ওয়েব ডেভেলপমেন্টেও ব্যবহৃত হয়।
* **[R](https://www.r-project.org/)** একটি ঐতিহ্যবাহী টুলবক্স যা পরিসংখ্যানগত ডেটা প্রক্রিয়াকরণ লক্ষ্যে তৈরি করা হয়েছে। এতে বড় একটি লাইব্রেরির সংগ্রহ (CRAN) রয়েছে, যা এটিকে ডেটা প্রক্রিয়াকরণের জন্য একটি ভাল পছন্দ করে তোলে। তবে, R একটি সাধারণ উদ্দেশ্যের প্রোগ্রামিং ভাষা নয় এবং এটি সাধারণত তথ্য বিজ্ঞান ক্ষেত্রে বাইরে খুব কম ব্যবহৃত হয়।
* **[Julia](https://julialang.org/)** আরেকটি ভাষা যা বিশেষভাবে ডেটা সায়েন্সের জন্য তৈরি। এটি পাইথনের থেকে উন্নত কর্মক্ষমতা দেওয়ার উদ্দেশ্যে উন্নত করা হয়েছে, যা এটিকে বৈজ্ঞানিক পরীক্ষার জন্য একটি দুর্দান্ত সরঞ্জাম করে তোলে।
এই পাঠে, আমরা সহজ ডেটা প্রক্রিয়াকরণের জন্য পাইথন ব্যবহার করার উপর ফোকাস করব। আমরা ভাষার মৌলিক পরিচিতি ধরে নেব। যদি আপনি পাইথন সম্পর্কে আরও গভীরভাবে জানতে চান, তাহলে নিম্নলিখিত রিসোর্সগুলো দেখতে পারেন:
এই পাঠে আমরা পাইথন ব্যবহার করে সহজ ডেটা প্রক্রিয়াকরণের ওপর কেন্দ্রিত থাকব। আমরা ভাষাটির মৌলিক পরিচিতি থাকার কথা فرض করব। যদি আপনি পাইথনের আরও গভীর পাথ দেখতেই চান, তাহলে নিম্নলিখিত উৎসগুলো দেখতে পারেন:
* [Turtle Graphics এবং Fractals দিয়ে মজার উপায়ে পাইথন শিখুন](https://github.com/shwars/pycourse) - পাইথন প্রোগ্রামিংয়ের জন্য একটি গিটহাব-ভিত্তিক দ্রুত পরিচিতি কোর্স
* [পাইথনের সাথে আপনার প্রথম পদক্ষেপ নিন](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) এ লার্নিং পাথ
* [আমোদপ্রদ উপায়ে পাইথন শিখুন টার্টল গ্রাফিক্স এবং ফ্র্যাক্টালস এর মাধ্যমে](https://github.com/shwars/pycourse) - গিটহাব ভিত্তিক দ্রুত পরিচিতি কোর্স পাইথনপ্রোগ্রামিংয়ে
* [পাইথনের সাথে আপনার প্রথম পদক্ষেপ নিন](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)-এ লার্নিং পাথ
ডেটা বিভিন্ন ফর্মে আসতে পারে। এই পাঠে, আমরা তিনটি ফর্মের ডেটা বিবেচনা করব - **টেবুলার ডেটা**, **টেক্সট** এবং **ইমেজ**।
ডেটা বিভিন্ন আকারে আসতে পারে। এই পাঠে, আমরা তিনটি ডেটা ফর্ম বিবেচনা করব - **ট্যাবুলার ডেটা**, **টেক্সট** এবং **ছবি**।
আমরা সমস্ত সম্পর্কিত লাইব্রেরির পূর্ণ পর্যালোচনা দেওয়ার পরিবর্তে কয়েকটি ডেটা প্রক্রিয়াকরণের উদাহরণে ফোকাস করব। এটি আপনাকে কী কী সম্ভব তা বোঝার মূল ধারণা দেবে এবং যখন প্রয়োজন হবে তখন আপনার সমস্যার সমাধান কোথায় খুঁজে পাবেন তা বোঝার সুযোগ দেবে।
আমরা ডেটা প্রক্রিয়াকরণের কয়েকটি উদাহরণে মনোযোগ দিব, পুরো সম্পর্কিত লাইব্রেরিগুলোর পূর্ণ প্রিভিউ দেওয়ার পরিবর্তে। এটি আপনাকে সম্ভাব্য মূল ধারণা পেতে সাহায্য করবে, এবং যখন প্রয়োজন তখন সমস্যা সমাধানের জন্য কোথায় যেতে হবে সেই বিষয়ে ধারনা দিবে।
> **সবচেয়ে কার্যকর পরামর্শ**: যখন আপনাকে ডেটার উপর একটি নির্দিষ্ট অপারেশন করতে হবে এবং আপনি জানেন না কীভাবে করবেন, তখন ইন্টারনেটে এটি খুঁজে দেখুন। [Stackoverflow](https://stackoverflow.com/) প্রায়শই অনেক সাধারণ কাজের জন্য পাইথনে দরকারী কোড নমুনা সরবরাহ করে।
> **সবচেয়ে দরকারী পরামর্শ**। যখন আপনি এমন কোনও ডেটা অপারেশন করতে চান যা আপনি জানেন না কীভাবে করবেন, তখন ইন্টারনেটে খুঁজুন। [Stackoverflow](https://stackoverflow.com/) সাধারণত অনেক প্রায়োগিক কাজের জন্য পাইথনে কোডের উদাহরণ প্রদান করে।
আপনি ইতিমধ্যে টেবুলার ডেটার সাথে পরিচিত হয়েছেন যখন আমরা রিলেশনাল ডেটাবেস নিয়ে আলোচনা করেছি। যখন আপনার কাছে অনেক ডেটা থাকে এবং এটি বিভিন্ন সংযুক্ত টেবিলে থাকে, তখন এটি পরিচালনার জন্য SQL ব্যবহার করা অবশ্যই যৌক্তিক। তবে, অনেক ক্ষেত্রে আমাদের একটি ডেটার টেবিল থাকে এবং আমরা এই ডেটা সম্পর্কে কিছু **বোঝাপড়া** বা **অন্তর্দৃষ্টি** পেতে চাই, যেমন ডিস্ট্রিবিউশন, মানগুলোর মধ্যে সম্পর্ক ইত্যাদি। ডেটা বিজ্ঞানে, অনেক সময় আমাদের মূল ডেটার কিছু রূপান্তর করতে হয়, তারপর ভিজ্যুয়ালাইজেশন করতে হয়। এই দুটি ধাপই পাইথন ব্যবহার করে সহজেই করা যায়।
পাইথনে টেবুলার ডেটার সাথে কাজ করার জন্য দুটি সবচেয়ে দরকারী লাইব্রেরি হল:
* **[Pandas](https://pandas.pydata.org/)**: এটি আপনাকে **ডেটাফ্রেম** ম্যানিপুলেট করতে দেয়, যা রিলেশনাল টেবিলের অনুরূপ। আপনি নামকৃত কলাম পেতে পারেন এবং সারি, কলাম এবং ডেটাফ্রেমের উপর বিভিন্ন অপারেশন করতে পারেন।
* **[Numpy](https://numpy.org/)**: এটি **টেনসর**, অর্থাৎ বহু-মাত্রিক **অ্যারে** নিয়ে কাজ করার জন্য একটি লাইব্রেরি। অ্যারেতে একই ধরনের মান থাকে এবং এটি ডেটাফ্রেমের চেয়ে সহজ, তবে এটি আরও গাণিতিক অপারেশন প্রদান করে এবং কম ওভারহেড তৈরি করে।
## ট্যাবুলার ডেটা এবং ডেটাফ্রেম
এছাড়াও, আরও কিছু লাইব্রেরি রয়েছে যা আপনার জানা উচিত:
* **[Matplotlib](https://matplotlib.org/)**: এটি ডেটা ভিজ্যুয়ালাইজেশন এবং গ্রাফ আঁকার জন্য ব্যবহৃত একটি লাইব্রেরি
* **[SciPy](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 ... # আপনি নির্দিষ্ট করতে হবে ঠিক কোন উপ-প্যাকেজগুলি আপনার প্রয়োজন
```
Pandas কয়েকটি মৌলিক ধারণার উপর ভিত্তি করে কাজ করে।
প্যান্ডাস কয়েকটি মৌলিক ধারণার উপর কেন্দ্রীভূত।
### সিরিজ (Series)
### সিরিজ
**সিরিজ** হল মানগুলোর একটি ক্রম, যা একটি তালিকা বা numpy অ্যারের মতো। প্রধান পার্থক্য হল সিরিজের একটি **ইনডেক্স** থাকে, এবং যখন আমরা সিরিজের উপর অপারেশন করি (যেমন, যোগ করি), তখন ইনডেক্সটি বিবেচনায় নেওয়া হয়। ইনডেক্সটি একটি সাধারণ পূর্ণসংখ্যা সারি নম্বর হতে পারে (যখন তালিকা বা অ্যারে থেকে সিরিজ তৈরি করা হয়, এটি ডিফল্ট ইনডেক্স), অথবা এটি একটি জটিল কাঠামো, যেমন তারিখের সময়কাল হতে পারে।
**সিরিজ** হল মানগুলোর একটি ক্রম, যা তালিকা বা নুম্পাই অ্যারের অনুরূপ। প্রধান পার্থক্য হল সিরিজের একটি **ইন্ডেক্স** থাকে, এবং যখন আমরা সিরিজের ওপর অপারেশন করি (উদা., যোগ করি), তখন ইন্ডেক্স বিবেচনায় নেওয়া হয়। ইন্ডেক্স সাধারণত পূর্ণসংখ্যা সারি নম্বর হতে পারে (যা তালিকা বা অ্যারে থেকে সিরিজ তৈরি করার সময় ডিফল্ট ইন্ডেক্স হিসেবে ব্যবহৃত হয়), অথবা একটি জটিল কাঠামো থাকতে পারে, যেমন তারিখের পরিসীমা।
> **নোট**: সহগামী নোটবুক [`notebook.ipynb`](notebook.ipynb)-এ কিছু প্রাথমিক Pandas কোড রয়েছে। আমরা এখানে কিছু উদাহরণ উল্লেখ করেছি, এবং আপনি অবশ্যই পুরো নোটবুকটি দেখতে পারেন।
> **নোট**: সংযুক্ত নোটবুক [`notebook.ipynb`](notebook.ipynb) এ কিছু প্রাথমিক প্যান্ডাস কোড রয়েছে। আমরা এখানে শুধুমাত্র কিছু উদাহরণ তুলে ধরি, এবং আপনি অবশ্যই সম্পূর্ণ নোটবুকটি দেখতে পারেন।
উদাহরণস্বরূপ, আমরা আমাদের আইসক্রিম দোকানের বিক্রয় বিশ্লেষণ করতে চাই। চলুন একটি নির্দিষ্ট সময়ের জন্য বিক্রয়ের সংখ্যা (প্রতিদিন বিক্রি হওয়া আইটেমের সংখ্যা) তৈরি করি:
একটি উদাহরণ বিবেচনা করুন: আমরা আমাদের আইসক্রিম স্পটের বিক্রয় বিশ্লেষণ করতে চাই। নির্দিষ্ট সময়ের জন্য প্রতিদিন বিক্রি হওয়া আইটেম সংখ্যার সিরিজ তৈরি করি:
এখন ধরুন প্রতি সপ্তাহে আমরা বন্ধুদের জন্য একটি পার্টি আয়োজন করি এবং পার্টির জন্য অতিরিক্ত ১০ প্যাক আইসক্রিম নিই। আমরা এটি দেখানোর জন্য সপ্তাহ অনুযায়ী ইনডেক্স করা আরেকটি সিরিজ তৈরি করতে পারি:
এখন ধরুন প্রতি সপ্তাহে আমরা বন্ধুদের জন্য একটি পার্টি আয়োজন করি, এবং পার্টির জন্য অতিরিক্ত ১০ প্যাক্স আইসক্রিম নিয়ে যাই। আমরা সপ্তাহ দ্বারা ইনডেক্স করা আরেকটি সিরিজ তৈরি করতে পারি যাতা প্রদর্শন করবে:
> **নোট** যে আমরা সাধারণ সিনট্যাক্স `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` ৫-এর চেয়ে বড়, আমরা লিখতে পারি `df[df['A']>5]`।
**শর্তসাপেক্ষে ফিল্টারিং**। উদাহরণস্বরূপ, কলাম `A` এর মান ৫ এর বেশি এমন সারিগুলো রাখতে, আমরা `df[df['A']>5]` লিখতে পারি।
> **নোট**: ফিল্টারিং যেভাবে কাজ করে তা হলো নিম্নরূপ। `df['A']<5` এক্সপ্রেশন একটি বুলিয়ান সিরিজ প্রদান করে, যা নির্দেশ করে যে মূল সিরিজ `df['A']`-এর প্রতিটি উপাদানের জন্য এক্সপ্রেশনটি `True` বা `False`। যখন বুলিয়ান সিরিজটি ইনডেক্স হিসেবে ব্যবহার করা হয়, এটি ডেটাফ্রেমের সারিগুলোর একটি সাবসেট প্রদান করে। তাই যেকোনো পাইথন বুলিয়ান এক্সপ্রেশন ব্যবহার করা সম্ভব নয়, উদাহরণস্বরূপ,`df[df['A']>5 and df['A']<7]`লেখা ভুল হবে। পরিবর্তে, আপনাকে বুলিয়ান সিরিজে বিশেষ `&` অপারেশন ব্যবহার করতে হবে, যেমন লিখতে হবে `df[(df['A']>5) & (df['A']<7)]` (*এখানে বন্ধনীগুলো গুরুত্বপূর্ণ*)।
> **নোট**: ফিল্টারিং যেভাবে কাজ করে তা হলো। এক্সপ্রেশন `df['A']<5` একটি বুলিয়ান সিরিজ দেয়, যা মূল সিরিজ `df['A']` এর প্রতিটি উপাদানের জন্য সত্য বা মিথ্যা নির্দেশ করে। যখন বুলিয়ান সিরিজকে ইন্ডেক্স হিসেবে ব্যবহার করা হয়, তখন এটি ডেটাফ্রেম থেকে ঐ সারিগুলো প্রদান করে যেগুলি শর্ত পূরণ করে। তাই যেকোনো পাইথন বুলিয়ান এক্সপ্রেশনের ব্যবহার সম্ভব নয়, যেমন`df[df['A']>5 and df['A']<7]` ভুল হবে। এর পরিবর্তে, আপনাকে বুলিয়ান সিরিজের উপর বিশেষ `&` অপারেশন ব্যবহার করতে হবে, যেমন `df[(df['A']>5) & (df['A']<7)]` (*ব্র্যাকেট গুরুত্বপূর্ণ এখানে*)।
**নতুন গণনাযোগ্য কলাম তৈরি করা**। আমরা সহজেই আমাদের ডেটাফ্রেমের জন্য নতুন গণনাযোগ্য কলাম তৈরি করতে পারি, যেমন:
**নতুন গাণিতিক কলাম তৈরি**। আমরা সহজেই আমাদের ডেটাফ্রেমে নতুন গাণিতিক কলাম তৈরি করতে পারি নিম্নরূপ অভিব্যক্তি ব্যবহার করে:
```python
df['DivA'] = df['A']-df['A'].mean()
```
এই উদাহরণটি A-এর গড় মান থেকে তার বিচ্যুতি গণনা করে। এখানে যা ঘটে তা হলো আমরা একটি সিরিজ গণনা করছি এবং তারপর এই সিরিজটি বাম দিকে অ্যাসাইন করছি, একটি নতুন কলাম তৈরি করছি। তাই, আমরা এমন কোনো অপারেশন ব্যবহার করতে পারি না যা সিরিজের সাথে সামঞ্জস্যপূর্ণ নয়, উদাহরণস্বরূপ, নিচের কোডটি ভুল:
```
এই উদাহরণটি A এর গড় মান থেকে বিচ্যুতি হিসাব করে। যা আসলে ঘটে তা হল আমরা একটি সিরিজ হিসাব করছি, তারপর সিরিজকে বাম পাশের কাছে অ্যাসাইন করছি, নতুন কলাম তৈরি করছি। তাই, আমরা এমন কোন অপারেশন ব্যবহার করতে পারব না যা সিরিজের সাথে সঙ্গতিপূর্ণ নয়, উদাহরণস্বরূপ, নিম্নের কোডটি ভুল:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Wrongresult
```
শেষ উদাহরণটি, যদিও সিনট্যাক্সগতভাবে সঠিক, আমাদের ভুল ফলাফল দেয়, কারণ এটি সিরিজ `B`-এর দৈর্ঘ্য কলামের সমস্ত মানে অ্যাসাইন করে, এবং আমরা যা চেয়েছিলাম তা নয়।
# ভুল কোড -> df['ADescr'] = "Low" যদি df['A'] <5হয়অন্যথায়"Hi"
df['LenB'] = len(df['B']) # <-ভুলফলাফল
```
পরবর্তী উদাহরণ যদিও সিনট্যাকটিক্যালি সঠিক, তবে এটি ভুল ফলাফল দেয়, কারণ এটি সিরিজ B এর দৈর্ঘ্য সব মানে অ্যাসাইন করে, আমাদের প্রত্যাশিত পৃথক উপাদানের দৈর্ঘ্য নয়।
যদি আমাদের এই ধরনের জটিল এক্সপ্রেশন গণনা করতে হয়, তবে আমরা `apply` ফাংশন ব্যবহার করতে পারি। শেষ উদাহরণটি নিম্নরূপ লেখা যেতে পারে:
যদি জটিল এক্সপ্রেশন হিসাব করতে হয়, আমরা `apply` ফাংশন ব্যবহার করতে পারি। শেষ উদাহরণটি এইভাবে লেখা যেতে পারে:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# অথবা
df['LenB'] = df['B'].apply(len)
```
```
উপরের অপারেশনগুলোর পরে, আমরা নিম্নলিখিত ডেটাফ্রেম পাব:
ওপরের অপারেশনের পরে, আমাদের নিম্নলিখিত ডেটাফ্রেম পাওয়া যাবে:
**সংখ্যার উপর ভিত্তিকরে সারি নির্বাচন** `iloc` কন্সট্রাক্ট ব্যবহার করে করা যেতে পারে। উদাহরণস্বরূপ, ডেটাফ্রেম থেকে প্রথম ৫টি সারি নির্বাচন করতে:
**সংখ্যাভিত্তিক সারি নির্বাচন** `iloc` কন্সট্রাক্ট ব্যবহার করে করা যায়। উদাহরণস্বরূপ, ডেটাফ্রেম থেকে প্রথম ৫টি সারি নির্বাচন করতে:
```python
df.iloc[:5]
```
```
**গ্রুপিং** প্রায়শই এক্সেলে *পিভট টেবিল* এর মতো ফলাফল পেতে ব্যবহৃত হয়। ধরুন আমরা `LenB`-এর প্রতিটি নির্দিষ্ট সংখ্যার জন্য কলাম `A`-এর গড় মান গণনা করতে চাই। তখন আমরা আমাদের ডেটাফ্রেমকে`LenB` দ্বারা গ্রুপ করতে পারি এবং `mean` কল করতে পারি:
**গ্রুপিং** প্রায়শই এক্সেলে *পিভট টেবিল* এর মত ফলাফল পেতে ব্যবহৃত হয়। ধরুন আমরা প্রতিটি `LenB` মানের জন্য কলাম `A` এর গড় মান গণনা করতে চাই। তাহলে আমরা আমাদের ডেটাফ্রেম `LenB` দ্বারা গ্রুপ করবো, এবং `mean` কল করবো:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
যদি আমাদের গ্রুপে গড় এবং উপাদানের সংখ্যা গণনা করতে হয়, তবে আমরা আরও জটিল `aggregate` ফাংশন ব্যবহার করতে পারি:
```
যদি গড় এবং গ্রুপের উপাদান সংখ্যা উভয় গণনা করতে হয়, তাহলে আমরা আরও জটিল `aggregate` ফাংশন ব্যবহার করতে পারি:
আমরা দেখেছি কীভাবে Python অবজেক্ট থেকে সহজেই Series এবং DataFrames তৈরি করা যায়। তবে, ডেটা সাধারণত টেক্সট ফাইল বা Excel টেবিলের আকারে আসে। সৌভাগ্যক্রমে, Pandas আমাদের ডিস্ক থেকে ডেটা লোড করার একটি সহজ উপায় প্রদান করে। উদাহরণস্বরূপ, CSV ফাইল পড়া এতটাই সহজ:
আমরা দেখেছি কিভাবে সহজে সিরিজ এবং ডেটাফ্রেম তৈরি করা যায় পাইথনের অবজেক্ট থেকে। তবে, ডেটা সাধারণত আসে একটি টেক্সট ফাইল বা একটি এক্সেল টেবিলের আকারে। সৌভাগ্যবশত, প্যান্ডাস আমাদের জন্য একটি সহজ উপায় অফার করে ডিস্ক থেকে ডেটা লোড করার। উদাহরণস্বরূপ, সিএসভি ফাইল পড়া এমন সহজ:
```python
df = pd.read_csv('file.csv')
```
আমরা "Challenge" সেকশনে আরও উদাহরণ দেখব, যেখানে বাইরের ওয়েবসাইট থেকে ডেটা আনার বিষয়টি অন্তর্ভুক্ত থাকবে।
আমরা লোড করার আরও উদাহরণ দেখব, যার মধ্যে থাকবে বাইরের ওয়েবসাইট থেকে ডেটা আনা, "চ্যালেঞ্জ" অংশে
### প্রিন্টিং এবং প্লটিং
একজন Data Scientist প্রায়ই ডেটা অন্বেষণ করতে হয়, তাই এটি ভিজ্যুয়ালাইজ করার ক্ষমতা থাকা গুরুত্বপূর্ণ। যখন DataFrame বড় হয়, তখন অনেক সময় আমরা নিশ্চিত হতে চাই যে আমরা সবকিছু সঠিকভাবে করছি, এবং এর জন্য প্রথম কয়েকটি সারি প্রিন্ট করা দরকার। এটি `df.head()` কল করে করা যায়। যদি আপনি Jupyter Notebook থেকে এটি চালান, এটি DataFrame-কে সুন্দর টেবিল আকারে প্রিন্ট করবে।
একজন ডেটা সায়েন্টিস্ট প্রায়শই ডেটা অনুসন্ধান করতে হয়, তাই এটি গুরুত্বপূর্ণ যে ডেটা ভিজ্যুয়ালাইজেশন করতে সক্ষম হওয়া। যখন ডেটাফ্রেম বড় হয়, অনেক সময় আমরা শুধু নিশ্চিত হতে চাই যে আমরা সঠিক কাজ করছি প্রথম কয়েকটি সারি প্রিন্ট করে। এটি করা যায় `df.head()` কল করে। আপনি যদি এটি জুপিটার নোটবুক থেকে চালাচ্ছেন, তাহলে এটি সুন্দর টেবিল আকারে ডেটাফ্রেমটি প্রিন্ট করবে।
আমরা `plot` ফাংশনের ব্যবহারও দেখেছি কিছু কলাম ভিজ্যুয়ালাইজ করার জন্য। যদিও `plot` অনেক কাজের জন্য খুবই উপযোগী এবং `kind=` প্যারামিটারের মাধ্যমে বিভিন্ন গ্রাফ টাইপ সমর্থন করে, আপনি সবসময় কাঁচা `matplotlib` লাইব্রেরি ব্যবহার করে আরও জটিল কিছু প্লট করতে পারেন। আমরা আলাদা কোর্স লেসনে ডেটা ভিজ্যুয়ালাইজেশন বিস্তারিতভাবে আলোচনা করব।
আমরা `plot` ফাংশনের ব্যবহারও দেখেছি কিছু কলাম ভিজ্যুয়ালাইজ করার জন্য। যদিও `plot` অনেক কাজের জন্য খুবই উপকারী, এবং `kind=` প্যারামিটারের মাধ্যমে বিভিন্ন গ্রাফ টাইপ সাপোর্ট করে, তবুও আপনি যেকোনো সময় কাঁচা `matplotlib` লাইব্রেরি ব্যবহার করতে পারেন আরও জটিল কিছু প্লট করার জন্য। আমরা ডেটা ভিজ্যুয়ালাইজেশনের বিস্তারিত আলাদা কোর্স লেসনে আলোচনা করব।
এই ওভারভিউ Pandas-এর সবচেয়ে গুরুত্বপূর্ণ ধারণাগুলো কভার করে, তবে লাইব্রেরিটি খুবই সমৃদ্ধ এবং এর মাধ্যমে আপনি অসীম কাজ করতে পারেন! এখন চলুন এই জ্ঞান ব্যবহার করে একটি নির্দিষ্ট সমস্যার সমাধান করি।
এই ওভারভিউ প্যান্ডাস এর সবচেয়ে গুরুত্বপূর্ণ ধারণাগুলো কভার করে, তবে লাইব্রেরিটি খুবই সমৃদ্ধ, এবং আপনি এর মাধ্যমে যা করতে পারবেন তার কোনো সীমা নেই! এখন এই জ্ঞানটি নির্দিষ্ট সমস্যার সমাধানে প্রয়োগ করি।
## 🚀 চ্যালেঞ্জ ১: COVID ছড়ানোর বিশ্লেষণ
## 🚀 চ্যালেঞ্জ ১: কোভিড সংক্রমণ বিশ্লেষণ
প্রথম সমস্যাটি আমরা ফোকাস করব COVID-19-এর মহামারী ছড়ানোর মডেলিংয়ে। এটি করার জন্য, আমরা বিভিন্ন দেশে আক্রান্ত ব্যক্তিদের সংখ্যা সম্পর্কিত ডেটা ব্যবহার করব, যা [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) দ্বারা [Johns Hopkins University](https://jhu.edu/) থেকে সরবরাহ করা হয়েছে। ডেটাসেটটি [এই GitHub Repository](https://github.com/CSSEGISandData/COVID-19)-এ উপলব্ধ।
প্রথম সমস্যাটি যা আমরা ফোকাস করব তা হলো কোভিড-১৯ মহামারীর সংক্রমণ মডেলিং। এর জন্য, আমরা বিভিন্ন দেশেগুলোর সংক্রমিত ব্যক্তিদের সংখ্যা সম্পর্কিত তথ্য ব্যবহার করব, যা [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/) দেখুন।
> আপনি যদি না জানেন জুপিটার নোটবুকে কিভাবে কোড চালাতে হয়, তাহলে দেখতে পারেন [এই নিবন্ধটি](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)।
## অসংগঠিত ডেটার সাথে কাজ করা
যদিও ডেটা প্রায়ই টেবুলার আকারে আসে, কিছু ক্ষেত্রে আমাদের কম সংগঠিত ডেটার সাথে কাজ করতে হয়, যেমন টেক্সট বা ছবি। এই ক্ষেত্রে, উপরে দেখা ডেটা প্রসেসিং কৌশল প্রয়োগ করতে, আমাদের **সংগঠিত** ডেটা বের করতে হয়। এখানে কিছু উদাহরণ দেওয়া হলো:
যখন ডেটা খুব সময় টেবিল আকারে আসে, কিছু ক্ষেত্রে আমাদের কম সংগঠিত ডেটার সাথে কাজ করতে হয়, যেমন, টেক্সট বা ছবি। এই ক্ষেত্রে, উপরে আমরা যে ডেটা প্রক্রিয়াকরণ পদ্ধতি দেখেছি তা প্রয়োগ করার জন্য আমাদের সংগঠিত ডেটা কিছুভাবে **এক্সট্র্যাক্ট** করতে হবে। এখানে কয়েকটি উদাহরণ:
* টেক্সট থেকে কীওয়ার্ড বের করা এবং কীভাবে সেগুলো কতবার উপস্থিত হয় তা দেখা
* ছবিতে অবজেক্ট সম্পর্কে তথ্য বের করতে নিউরাল নেটওয়ার্ক ব্যবহার করা
* ভিডিও ক্যামেরা ফিডে মানুষের আবেগ সম্পর্কে তথ্য পাওয়া
* টেক্সট থেকে কীওয়ার্ড এক্সট্র্যাক্ট করে দেখা কতবার ঐ কীওয়ার্ডগুলো আসে
* নিউরাল নেটওয়ার্ক ব্যবহার করে ছবির বস্তুর সম্পর্কে তথ্য এক্সট্র্যাক্ট করা
* ভিডিও ক্যামেরার ফিড থেকে মানুষের আবেগের তথ্য পাওয়া
## 🚀 চ্যালেঞ্জ ২: COVID পেপার বিশ্লেষণ
## 🚀 চ্যালেঞ্জ ২: কোভিড পেপার বিশ্লেষণ
এই চ্যালেঞ্জে, আমরা COVID মহামারীর বিষয়টি নিয়ে আলোচনা চালিয়ে যাব এবং এই বিষয়ে বৈজ্ঞানিক পেপার প্রসেসিংয়ে ফোকাস করব। [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge)-এ ৭০০০-এর বেশি (লেখার সময়) COVID সম্পর্কিত পেপার রয়েছে, যা মেটাডেটা এবং অ্যাবস্ট্রাক্টসহ উপলব্ধ (এবং এর মধ্যে প্রায় অর্ধেকের জন্য পূর্ণ টেক্সটও সরবরাহ করা হয়েছে)।
এই চ্যালেঞ্জে, আমরা কোভিড মহামারীর বিষয় নিয়েই চালিয়ে যাব, এবং বৈজ্ঞানিক পত্রের প্রক্রিয়াকরণে ফোকাস করব। এখানে [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) আছে, যার মধ্যে COVID সম্পর্কিত ৭০০০ এর বেশি (লিখার সময়) পেপার রয়েছে, মিডিয়া এবং সারাংশসহ (এবং প্রায় অর্ধেকের জন্য সম্পূর্ণ টেক্সটও পাওয়া যায়)।
এই ডেটাসেট বিশ্লেষণের একটি পূর্ণ উদাহরণ [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) কগনিটিভ সার্ভিস ব্যবহার করে [এই ব্লগ পোস্টে](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) বর্ণনা করা হয়েছে। আমরা এই বিশ্লেষণের সরলীকৃত সংস্করণ আলোচনা করব।
[Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) কগনিটিভ সার্ভিস ব্যবহার করে এই ডেটাসেট বিশ্লেষণের পূর্ণ উদাহরণ [এই ব্লগ পোস্টে](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) বর্ণিত হয়েছে। আমরা এর একটি সরলীকৃত সংস্করণ আলোচনা করব।
> **NOTE**: আমরা এই রিপোজিটরির অংশ হিসেবে ডেটাসেটের একটি কপি সরবরাহ করি না। প্রথমে আপনাকে [এই ডেটাসেটের Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) থেকে [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) ফাইলটি ডাউনলোড করতে হতে পারে। Kaggle-এ রেজিস্ট্রেশন প্রয়োজন হতে পারে। আপনি রেজিস্ট্রেশন ছাড়াও [এখান থেকে](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) ডেটাসেট ডাউনলোড করতে পারেন, তবে এটি মেটাডেটা ফাইলের পাশাপাশি সমস্ত পূর্ণ টেক্সট অন্তর্ভুক্ত করবে।
> **NOTE**: এই রিপোজিটরির অংশ হিসেবে আমরা ডেটাসেটের কোনও কপি প্রদান করছি না। প্রথমে আপনাকে [এই Dataset](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) ফাইলটি ডাউনলোড করতে হতে পারে। কাগল রেজিস্ট্রেশন প্রয়োজন হতে পারে। আপনি রেজিস্ট্রেশন ছাড়াই ডেটাসেট [এখান থেকে](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) ব্যবহার করে কল করা যায়, এবং তাই সহজেই আপনার ডেটা অনুসন্ধান ওয়ার্কফ্লোতে অন্তর্ভুক্ত করা যায়।
এখানে ইমেজ ডেটা সোর্স থেকে ডেটা এক্সপ্লোর করার কিছু উদাহরণ দেওয়া হলো:
* ব্লগ পোস্ট [কোডিং ছাড়াই ডেটা সায়েন্স শেখার উপায়](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 গভীরভাবে শেখা সম্ভবত একটি ভালো ধারণা!
আপনি হোক সংগঠিত ডেটা থাকুক বা অসংগঠিত, পাইথন ব্যবহার করে আপনি ডেটা প্রক্রিয়াকরণ এবং বোঝার সব ধাপ করতে পারবেন। এটি সম্ভবত সবচেয়ে নমনীয় ডেটা প্রক্রিয়াকরণ পদ্ধতি, এবং এ কারণেই বেশিরভাগ ডেটা সায়েন্টিস্টদের প্রধান টুল পাইথন। যদি আপনি আপনার ডেটা সায়েন্স যাত্রা নিয়ে সিরিয়াস হন, পাইথন গভীরভাবে শেখা সম্ভবত ভালো এক ধারণা!
* [Turtle Graphics এবং Fractals দিয়ে Python মজার উপায়ে শেখা](https://github.com/shwars/pycourse)
* [Python-এ আপনার প্রথম পদক্ষেপ নিন](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)-এ লার্নিং পাথ
**পাইথন শেখা**
* [Turtle Graphics এবং Fractals দিয়ে মজার মাধ্যমে পাইথন শিখুন](https://github.com/shwars/pycourse)
* [Python First Steps নিয়ে শুরু করুন](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) মাইক্রোসফট লার্নে [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## অ্যাসাইনমেন্ট
[উপরের চ্যালেঞ্জগুলোর জন্য আরও বিস্তারিত ডেটা স্টাডি সম্পন্ন করুন](assignment.md)
[উপরের চ্যালেঞ্জগুলোর জন্য বিস্তারিত ডেটা স্টাডি করুন](assignment.md)
## ক্রেডিট
## ক্রেডিটস
এই লেসনটি ♥️ দিয়ে [Dmitry Soshnikov](http://soshnikov.com) দ্বারা রচিত।
এই লেসনটি ♥️ দিয়ে রচিত করেছেন [Dmitry Soshnikov](http://soshnikov.com)
---
**অস্বীকৃতি**:
এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না।
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**অস্বীকৃতি**:
এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।
डेटाबेस डेटा साठवण्यासाठी आणि क्वेरी भाषांचा वापर करून त्यावर क्वेरी करण्यासाठी अत्यंत कार्यक्षम पद्धती प्रदान करतात, परंतु डेटा प्रक्रिया करण्याचा सर्वात लवचिक मार्ग म्हणजे स्वतःचा प्रोग्राम लिहून डेटा हाताळणे. अनेक वेळा, डेटाबेस क्वेरी करणे अधिक प्रभावी ठरते. परंतु काही वेळा जेव्हा अधिक जटिल डेटा प्रक्रिया आवश्यक असते, तेव्हा ती SQL वापरून सहजपणे करता येत नाही.
डेटा प्रक्रिया कोणत्याही प्रोग्रामिंग भाषेत प्रोग्राम केली जाऊ शकते, परंतु काही भाषा डेटा सोबत काम करण्याच्या दृष्टीने उच्च स्तरावर असतात. डेटा वैज्ञानिक सामान्यतः खालील भाषांपैकी एक निवडतात:
जरी डेटाबेस डेटा संग्रहित करण्यासाठी आणि क्वेरी भाषा वापरून त्यांना क्वेरी करण्याच्या खूप कार्यक्षम मार्गांना ऑफर करत असले तरी, डेटा प्रक्रिया करण्याचा सर्वात लवचिक मार्ग म्हणजे डेटा हाताळण्यासाठी आपला स्वतःचा प्रोग्राम लिहिणे. अनेक प्रकरणांमध्ये डेटाबेस क्वेरी करणे अधिक प्रभावी ठरू शकते. तथापि, जेव्हा अधिक गुंतागुंतीची डेटा प्रक्रिया आवश्यक असते, तेव्हा ती SQL वापरून सोप्या पद्धतीने होऊ शकत नाही.
डेटा प्रक्रिया कोणत्याही प्रोग्रामिंग भाषेत करता येऊ शकते, परंतु काही भाषा डेटा सह काम करताना अधिक उंच पातळीवर असतात. डेटा सायंटिस्ट सामान्यतः पुढील भाषांपैकी एक पसंत करतात:
* **[Python](https://www.python.org/)**, एक सामान्य-उद्देश प्रोग्रामिंग भाषा, जी तिच्या साधेपणामुळे सुरुवातीसाठी सर्वोत्तम पर्याय मानली जाते. Python मध्ये अनेक अतिरिक्त लायब्ररी आहेत ज्या तुम्हाला अनेक व्यावहारिक समस्या सोडवण्यास मदत करू शकतात, जसे की ZIP आर्काइव्हमधून डेटा काढणे किंवा चित्र ग्रेस्केलमध्ये रूपांतरित करणे. डेटा विज्ञानाशिवाय, Python वेब विकासासाठी देखील मोठ्या प्रमाणावर वापरली जाते.
* **[R](https://www.r-project.org/)** ही पारंपरिक टूलबॉक्स आहे जी सांख्यिकीय डेटा प्रक्रिया लक्षात घेऊन विकसित केली गेली आहे. यात मोठ्या प्रमाणात लायब्ररींचा संग्रह (CRAN) आहे, ज्यामुळे डेटा प्रक्रिया करण्यासाठी हा एक चांगला पर्याय बनतो. तथापि, R ही सामान्य-उद्देश प्रोग्रामिंग भाषा नाही आणि डेटा विज्ञानाच्या क्षेत्राबाहेर क्वचितच वापरली जाते.
* **[Julia](https://julialang.org/)** ही आणखी एक भाषा आहे जी विशेषतः डेटा विज्ञानासाठी विकसित केली गेली आहे. Python पेक्षा चांगली कार्यक्षमता देण्याच्या उद्देशाने विकसित केली गेली आहे, ज्यामुळे ती वैज्ञानिक प्रयोगांसाठी एक उत्कृष्ट साधन बनते.
* **[Python](https://www.python.org/)**, एक सर्वसाधारण उद्देशांची प्रोग्रामिंग भाषा, जी तिच्या सुलभतेमुळे नवशिक्यांसाठी सर्वोत्तम पर्यायांपैकी एक मानली जाते. Python मध्ये अनेक अतिरिक्त लायब्ररी आहेत ज्या आपल्याला अनेक व्यावहारिक समस्या सोडवायला मदत करतात, जसे की ZIP आर्काइवमधून डेटा काढणे किंवा चित्राला ग्रेस्केलमध्ये रूपांतर करणे. डेटा सायन्सव्यतिरिक्त, Python वेब विकासासाठी देखील वापरली जाते.
* **[R](https://www.r-project.org/)** ही एक पारंपरिक टूलबॉक्स आहे जी सांख्यिकी डेटा प्रक्रियेच्या दृष्टीने विकसित केलेली आहे. यात मोठ्या प्रमाणावर लायब्ररींसाठी संग्रह (CRAN) आहे, ज्यामुळे डेटा प्रक्रिया करण्यासाठी चांगला पर्याय आहे. परंतु, R ही एक सर्वसाधारण उद्देशांची प्रोग्रामिंग भाषा नाही, आणि डेटा सायन्सच्या क्षेत्राबाहेर कमी वापरली जाते.
* **[Julia](https://julialang.org/)** ही दुसरी भाषा आहे जी विशेषतः डेटा सायन्ससाठी विकसित केली गेली आहे. ती Python पेक्षा चांगली कार्यक्षमता देण्यासाठी उद्दिष्ट केली गेली आहे, ज्यामुळे ती वैज्ञानिक प्रयोगांसाठी एक उत्तम साधन आहे.
या धड्यात, आपण साध्या डेटा प्रक्रियेसाठी Python वापरण्यावर लक्ष केंद्रित करू. आम्ही भाषेची मूलभूत ओळख गृहीत धरू. जर तुम्हाला Python चा सखोल अभ्यास करायचा असेल, तर तुम्ही खालील संसाधनांचा संदर्भ घेऊ शकता:
या धड्यात, आपण साध्या डेटा प्रक्रियेसाठी Python वापरण्यावर लक्ष केंद्रित करू. आपण भाषेबाबत मूलभूत परिचय समजल्याचे गृहीत धरू. जर आपण Python बद्दल सखोल जाणून घेऊ इच्छित असाल, तर आपण पुढील संसाधनांपैकी कोणताही वापर करू शकता:
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - GitHub-आधारित Python प्रोग्रामिंगचा जलद परिचय कोर्स
* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn वरील [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) शिक्षण मार्ग
* [तुटलेले ग्राफिक्स आणि फ्रॅक्टलसह मजेशीर पद्धतीने Python शिका](https://github.com/shwars/pycourse) - GitHub आधारित Python प्रोग्रामिंगसाठी झटपट परिचयात्मक कोर्स
* [Python सह आपले पहिले पाऊल टाका](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) वरील शिक्षण मार्ग
डेटा अनेक स्वरूपात येऊ शकतो. या धड्यात, आपण तीन प्रकारच्या डेटाचा विचार करू - **टॅब्युलर डेटा**, **टेक्स्ट** आणि **प्रतिमा**.
डेटा अनेक प्रकारांमध्ये येऊ शकतो. या धड्यात, आपण तीन प्रकारचे डेटा पाहणार आहोत - **तक्त्याचा डेटा**, **मजकूर**, आणि **प्रतिमा**.
आपण संबंधित लायब्ररींचा संपूर्ण आढावा देण्याऐवजी डेटा प्रक्रियेच्या काही उदाहरणांवर लक्ष केंद्रित करू. यामुळे तुम्हाला काय शक्य आहे याची मुख्य कल्पना मिळेल आणि जेव्हा तुम्हाला गरज असेल तेव्हा तुमच्या समस्यांचे समाधान कुठे सापडेल याची समज मिळेल.
आम्ही डेटा प्रक्रियेची काही उदाहरणे पाहणार आहोत, सर्व संबंधित लायब्ररींचा पूर्ण आढावा देण्याऐवजी. हे आपल्याला काय शक्य आहे याची मुख्य कल्पना देईल, आणि जेव्हा आपल्याला गरज भासेल तेव्हा आपल्या समस्यांचे निराकरण कुठे शोधायचे हे समजून घेण्यात मदत करेल.
> **सर्वात उपयुक्त सल्ला**. जेव्हा तुम्हाला डेटावर विशिष्ट ऑपरेशन करायचे असते आणि ते कसे करायचे हे माहित नसते, तेव्हा इंटरनेटवर शोधण्याचा प्रयत्न करा. [Stackoverflow](https://stackoverflow.com/) वर अनेक सामान्य कार्यांसाठी Python मधील उपयुक्त कोड नमुने असतात.
> **सर्वात उपयुक्त सल्ला**. जेव्हा आपल्याला डेटा वर विशिष्ट ऑपरेशन करायचे असते पण ते कसे करायचे माहित नसते, तेव्हा त्याचा शोध इंटरनेटवर घ्या. [Stackoverflow](https://stackoverflow.com/) मध्ये Python साठी अनेक सामान्य कार्यांसाठी उपयुक्त कोड नमुने असतात.
तुम्ही टॅब्युलर डेटा आधीच पाहिला आहे जेव्हा आपण रिलेशनल डेटाबेसबद्दल बोललो होतो. जेव्हा तुमच्याकडे मोठ्या प्रमाणात डेटा असतो आणि तो अनेक वेगवेगळ्या लिंक केलेल्या टेबल्समध्ये असतो, तेव्हा त्यावर काम करण्यासाठी SQL वापरणे निश्चितच योग्य ठरते. तथापि, अनेक वेळा आपल्याकडे डेटा टेबल असतो आणि आपल्याला या डेटाबद्दल काही **समज** किंवा **अंतर्दृष्टी** मिळवायची असते, जसे की वितरण, मूल्यांमधील संबंध इत्यादी. डेटा विज्ञानामध्ये, अनेक वेळा आपल्याला मूळ डेटाचे काही रूपांतरण करावे लागते, त्यानंतर व्हिज्युअलायझेशन करावे लागते. Python वापरून दोन्ही टप्पे सहजपणे करता येतात.
Python मध्ये टॅब्युलर डेटा हाताळण्यासाठी दोन सर्वात उपयुक्त लायब्ररी आहेत:
* **[Pandas](https://pandas.pydata.org/)** तुम्हाला **Dataframes** हाताळण्याची परवानगी देते, जे रिलेशनल टेबल्ससारखे असतात. तुम्ही नाव दिलेले कॉलम असू शकता आणि पंक्ती, कॉलम आणि डेटा फ्रेम्सवर सामान्यतः वेगवेगळ्या ऑपरेशन्स करू शकता.
* **[Numpy](https://numpy.org/)** ही **tensors**, म्हणजेच बहु-आयामी **arrays** सोबत काम करण्यासाठी लायब्ररी आहे. Array मध्ये समान अंतर्निहित प्रकाराचे मूल्य असते आणि ते डेटा फ्रेमपेक्षा सोपे असते, परंतु ते अधिक गणितीय ऑपरेशन्स ऑफर करते आणि कमी ओव्हरहेड तयार करते.
## तक्त्याचा डेटा आणि Dataframes
तुम्हाला खालील लायब्ररींबद्दल देखील माहिती असणे आवश्यक आहे:
* **[Matplotlib](https://matplotlib.org/)** ही डेटा व्हिज्युअलायझेशन आणि ग्राफ्स प्लॉट करण्यासाठी वापरली जाणारी लायब्ररी आहे
* **[SciPy](https://www.scipy.org/)** ही काही अतिरिक्त वैज्ञानिक फंक्शन्ससह लायब्ररी आहे. आपण आधीच संभाव्यता आणि सांख्यिकीबद्दल बोलताना या लायब्ररीचा उल्लेख केला आहे
आपण रिलेशनल डेटाबेसबद्दल बोलताना तक्त्याचा डेटाचा सामना केला आहे. जेव्हा आपल्याकडे खूप डेटा असतो आणि तो अनेक वेगळ्या जोडलेल्या तक्त्यांमध्ये असतो, तेव्हा त्यावर काम करण्यासाठी SQL वापरणे निश्चितपणे योग्य ठरते. परंतु असे अनेक प्रसंग असतात जेव्हा आपल्याकडे डेटा तक्ता असतो आणि आपल्याला त्या डेटाबद्दल काही **आकलन** किंवा **अंतर्दृष्टी** प्राप्त करायची असते, जसे वितरण, मूल्यांमधील सहसंबंध, इत्यादी. डेटा सायन्समध्ये, अनेकवेळा मूळ डेटामध्ये काही रूपांतरणे करणे आवश्यक असते, त्यानंतर व्हिज्युअलायजेशन केले जाते. दोन्ही टप्पे Python वापरून सहज करता येऊ शकतात.
Python प्रोग्रामच्या सुरुवातीला तुम्ही सामान्यतः या लायब्ररी आयात करण्यासाठी खालील कोड वापराल:
Python मध्ये तक्त्याचा डेटा हाताळण्यासाठी दोन सर्वात उपयुक्त लायब्ररी आहेत:
* **[Pandas](https://pandas.pydata.org/)** आपल्याला तथाकथित **Dataframes** हाताळण्याची परवानगी देते, जे relational tables प्रमाणे असतात. आपल्याला नाव दिलेल्या स्तंभांचा वापर करता येतो, आणि रांगा, स्तंभ आणि Dataframes वर विविध क्रिया केली जाऊ शकतात.
* **[Numpy](https://numpy.org/)** ही बहुआयामी **arrays** किंवा **tensors** वर काम करण्यासाठी लायब्ररी आहे. Array मध्ये सारखे प्रकारचे मूल्ये आहेत, आणि ते dataframe च्या तुलनेत सोपे आहे, पण अधिक गणितीय ऑपरेशन्स देते आणि कमी ओव्हरहेड तयार करते.
अजून काही लायब्ररीज देखील आहेत ज्यांची माहिती असणे आवश्यक आहे:
* **[Matplotlib](https://matplotlib.org/)** ही डेटा व्हिज्युअलायजेशन आणि ग्राफ काढण्यासाठी वापरली जाणारी लायब्ररी आहे
* **[SciPy](https://www.scipy.org/)** यात काही अतिरिक्त वैज्ञानिक फंक्शन्स आहेत. आपण संभाव्यता आणि सांख्यिकीवर बोलताना या लायब्ररीचा आधीच अनुभव घेतला आहे
येथे त्याचं एक कोड आहे ज्याचा वापर आपण सामान्यतः आपल्या Python प्रोग्रामच्या सुरुवातीला या लायब्ररी आयात करण्यासाठी करतो:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
from scipy import ... # आपल्याला आवश्यक असलेल्या अचूक उप-पॅकेजेस निर्दिष्ट करण्याची गरज आहे
```
Pandas काही मूलभूत संकल्पनांवर केंद्रित आहे.
Pandas काही मूलभूत संकल्पनाभोवती केंद्रित आहे.
### Series
### Series
**Series** ही मूल्यांची अनुक्रम आहे, जी सूची किंवा numpy array सारखी आहे. मुख्य फरक म्हणजे series मध्ये**index** देखील असतो, आणि जेव्हा आपण series वर ऑपरेशन करतो (उदा., त्यांना जोडतो), तेव्हा index विचारात घेतला जातो. Index साधा पूर्णांक पंक्ती क्रमांक असू शकतो (जेव्हा सूची किंवा array मधून series तयार केली जाते तेव्हा वापरला जाणारा index), किंवा त्यात date interval सारखी जटिल रचना असू शकते.
**Series** म्हणजे मूल्यांची शृंखला, जी यादी किंवा numpy array सारखी असते. मुख्य फरक असा की series मध्ये एक**index** देखील असतो, आणि जेव्हा आपण series वर क्रिया करतो (उदा., त्यांना जोडणे), तेव्हा index लक्षात घेतला जातो. Index साध्या पूर्णांक रांगा क्रमांकाप्रमाणे असू शकतो (जे series तयार करताना लिस्ट किंवा array वापरल्यास डीफॉल्ट असतो), किंवा तो तारीख कालावधीसारखी गुंतागुंतीची रचना असू शकते.
> **Note**: Pandas चा काही परिचयात्मक कोड सोबतच्या नोटबुकमध्ये [`notebook.ipynb`](notebook.ipynb) मध्ये आहे. आम्ही येथे काही उदाहरणे outline करतो, आणि तुम्ही पूर्ण नोटबुक तपासण्यासाठी नक्कीच स्वागत आहे.
> **टीप**: समवेत येणाऱ्या नोटबुकमध्ये [`notebook.ipynb`](notebook.ipynb) काही प्रारंभिक Pandas कोड आहे. येथे आपण काही उदाहरणेच संक्षेपात देतो, आणि आपण नक्कीच पूर्ण नोटबुक पाहू शकता.
उदाहरण विचार करा: आम्हाला आमच्या ice-cream spot च्या विक्रीचे विश्लेषण करायचे आहे. काही कालावधीसाठी विक्रीच्या संख्येची (प्रत्येक दिवशी विकल्या गेलेल्या वस्तूंची संख्या) series तयार करूया:
एक उदाहरण विचार करूया: आपण आपल्या आईस-क्रीम दुकानाची विक्री विश्लेषण करू इच्छितो. काही काळासाठी विक्री संख्यांची (प्रत्येक दिवशी विकलेल्या वस्तूंची संख्या) series तयार करूयात:
```python
start_date = "Jan 1, 2020"
@ -66,20 +68,20 @@ items_sold.plot()
```

आता समजा प्रत्येक आठवड्यात आम्ही मित्रांसाठी पार्टी आयोजित करतो आणि पार्टीसाठी अतिरिक्त 10 ice-cream पॅक्स घेतो. आम्ही हे दाखवण्यासाठी आठवड्याने index केलेली आणखी एक series तयार करू शकतो:
आता समजा की प्रत्येक आठवड्यात आपण मित्रांसाठी पार्टी आयोजित करतो, आणि पार्टीसाठी अतिरिक्त 10 पॅक आईस-क्रीम घेतो. आपण दुसरी series तयार करू शकतो, जी आठवड्यांनी अनुक्रमांकित असेल, आणि ती दाखवूया:

> **Note** की आम्ही साधी syntax `total_items+additional_items` वापरत नाही. जर आम्ही तसे केले असते, तर आम्हाला resulting series मध्ये अनेक `NaN` (*Not a Number*) मूल्ये मिळाली असती. कारण `additional_items` series मध्ये काही index point साठी missing values आहेत, आणि `NaN` कशाशीही जोडल्यास `NaN` मिळते. त्यामुळे addition दरम्यान `fill_value` parameter specify करणे आवश्यक आहे.
> **टीप**: आपण सोप्या सिंटॅक्स `total_items+additional_items` वापरत नाही. जर तसे केले असते, तर परिणामी series मध्ये बर्याच `NaN` (*Not a Number*) मूल्ये प्राप्त झाली असती. याचा कारण असा की `additional_items` series मध्ये काही index points साठी मूल्ये गहाळ आहेत, आणि `NaN` मध्ये कोणतीही संख्या जोडल्यास परिणामी `NaN` येते. म्हणून जोडणी करताना `fill_value` पॅरामीटर निर्दिष्ट करणे आवश्यक आहे.
Time series सोबत, आपण वेगवेगळ्या time intervals सह series **resample** करू शकतो. उदाहरणार्थ, समजा आपल्याला मासिक mean sales volume गणना करायची आहे. आपण खालील कोड वापरू शकतो:
टाइम सिरीजसह, आपण वेगळ्या कालावधीने series **पुन:नमुना** (resample) देखील करू शकतो. उदाहरणार्थ, आपल्याला मासिक विक्रीचे सरासरी गणना करायची असल्यास, आपण खालील कोड वापरू शकतो:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
@ -88,23 +90,23 @@ ax = monthly.plot(kind='bar')
### DataFrame
DataFrame मूलत: समान index असलेल्या series चा संग्रह आहे. आपण अनेक series एकत्र करून DataFrame तयार करू शकतो:
DataFrame मूलतः एकाच index सह अनेक series चा संच आहे. आपण अनेक series एकत्र करून DataFrame तयार करू शकतो:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
यामुळे खालीलप्रमाणे एक horizontal table तयार होईल:
येथे `.T` म्हणजे DataFrame transpose करण्याची operation, म्हणजेच rows आणि columns बदलणे, आणि `rename` operation आम्हाला कॉलमचे नाव बदलण्याची परवानगी देते जेणेकरून ते मागील उदाहरणाशी जुळेल.
येथे `.T` म्हणजे DataFrame चे ट्रान्सपोजिंग ऑपरेशन, म्हणजे रांगा आणि स्तंभ बदलणे, आणि `rename` ऑपरेशन आपल्याला स्तंभांची नावे मागील उदाहरणाशी जुळवण्यासाठी बदलण्याची परवानगी देते.
DataFrames वर आपण काही महत्त्वाच्या ऑपरेशन्स करू शकतो:
**Column selection**. आपण `df['A']` लिहून individual कॉलम निवडू शकतो - ही operation Series परत करते. आपण `df[['B','A']]` लिहून कॉलम subset दुसऱ्या DataFrame मध्ये निवडू शकतो - हे दुसरे DataFrame परत करते.
**स्तंभ निवडणे**. आपण एकल स्तंभ निवडू शकतो `df['A']` लिहून - ही ऑपरेशन एक Series परत देते. आपण `df[['B','A']]` लिहून काही स्तंभ निवडून दुसऱ्या DataFrame मध्ये सुद्धा ठेवू शकतो - हे दुसरे DataFrame परत देते.
**Filtering** विशिष्ट criteria नुसार फक्त काही rows. उदाहरणार्थ, कॉलम `A` 5 पेक्षा जास्त असलेल्या rows ठेवण्यासाठी आपण `df[df['A']>5]` लिहू शकतो.
**विशिष्ट रांगा निवडणे निकषांनुसार.** उदाहरणार्थ, फक्त अशा रांगा ठेवण्यासाठी जिथे स्तंभ `A` चे मूल्य 5 पेक्षा जास्त आहे, आपण `df[df['A']>5]` लिहू शकतो.
> **Note**: Filtering कसे कार्य करते ते खालीलप्रमाणे आहे. Expression `df['A']<5` एक boolean series परत करते, जी मूळ series `df['A']` च्या प्रत्येक element साठी expression `True` किंवा `False` आहे का हे दर्शवते. Boolean series index म्हणून वापरली जाते तेव्हा ती DataFrame मधील rows subset परत करते. त्यामुळे arbitrary Python boolean expression वापरणे शक्य नाही, उदाहरणार्थ, `df[df['A']>5 and df['A']<7]` लिहिणे चुकीचे ठरेल. त्याऐवजी, तुम्ही boolean series वर विशेष `&` operation वापरून लिहा, उदा. `df[(df['A']>5) & (df['A']<7)]` (*brackets येथे महत्त्वाचे आहेत*).
> **टीप:** फिल्टर कसे कार्य करते ते खालीलप्रमाणे आहे. `df['A']<5` ही अभिव्यक्ती boolean series परत करते, जी प्रत्येक मूळ series `df['A']` मधील घटकासाठी True किंवा False दाखवते. जेव्हा boolean series ला index म्हणून वापरले जाते, तेव्हा DataFrame मध्ये त्या रांगा परत मिळतात जिथे नियम पूर्ण होतो. म्हणून कोणतीही सामान्य Python boolean अभिव्यक्ती वापरता येत नाही, उदा. `df[df['A']>5 and df['A']<7]` वापरणे चुकीचे आहे. त्याऐवजी, boolean series साठी खास `&` ऑपरेशन वापरावे, उदा. `df[(df['A']>5) & (df['A']<7)]` (*अधिक महत्त्वाचे म्हणजे कोष्ठक योग्यरित्या लावणे*).
**नवीन computable कॉलम तयार करणे**. आपण सहजपणे खालीलप्रमाणे intuitive expression वापरून DataFrame साठी नवीन computable कॉलम तयार करू शकतो:
**नवीन संगणनिय स्तंभ तयार करणे**. आपण सहजपणे DataFrame साठी नवीन संगणनिय स्तंभ तयार करू शकतो अशा सोप्या अभिव्यक्ती वापरून:
```python
df['DivA'] = df['A']-df['A'].mean()
```
हे उदाहरण A च्या mean value पासून divergence गणना करते. येथे प्रत्यक्षात काय होते ते म्हणजे आपण एक series गणना करतो आणि नंतर ही series left-hand-side ला assign करतो, नवीन कॉलम तयार करतो. त्यामुळे, आपण series सोबत compatible नसलेल्या कोणत्याही ऑपरेशन्स वापरू शकत नाही, उदाहरणार्थ, खालील कोड चुकीचा आहे:
हे उदाहरण स्तंभ `A` च्या सरासरीपासूनची विचलन (divergence) गणना करते. प्रत्यक्षात आपण एक series तयार करत आहोत, आणि नंतर त्या series ला डाव्या बाजूला असलेल्या स्तंभाला नियुक्त करत आहोत, ज्यामुळे दुसरा स्तंभ तयार होतो. म्हणून, series सह सुसंगत नसलेल्या कोणत्याही ऑपरेशन्सचा वापर करता येत नाही, उदा. खालील कोड चुकीचा आहे:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Wrongresult
# चुकीचा कोड -> df['ADescr'] = "Low" जर df['A'] <5असेलतरअन्यथा"Hi"
df['LenB'] = len(df['B']) # <-चुकीचानिकाल
```
मागील उदाहरण, syntactically योग्य असले तरी, चुकीचा परिणाम देते, कारण ते series `B` ची लांबी कॉलममधील सर्व values ला assign करते, आणि intended individual elements ची लांबी नाही.
हा शेवटचा उदाहरण, जरी सिंटॅक्सदृष्ट्या बरोबर आहे, तेव्हा चुकीचा परिणाम देतो, कारण तो `B` series चा लांब (length) सर्व मूल्यांसाठी नियुक्त करतो, आणि व्यक्तिशः घटकाचा लांब जसा अपेक्षित होता तसा नाही.
जर आपल्याला अशा complex expressions गणना करायच्या असतील, तर आपण `apply` function वापरू शकतो. मागील उदाहरण खालीलप्रमाणे लिहिले जाऊ शकते:
जर संकुचित अभिव्यक्ती गणना करायच्या असतील, तर आपण `apply` फंक्शन वापरू शकतो. शेवटचं उदाहरण पुढीलप्रमाणे लिहिता येऊ शकते:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# किंवा
df['LenB'] = df['B'].apply(len)
```
वरील ऑपरेशन्सनंतर, आपल्याला खालील DataFrame मिळेल:
वरील ऑपरेशन्सनंतर, आपल्याकडे खालील DataFrame तयार होईल:
**नंबरवर आधारित rows निवडणे** `iloc` construct वापरून करता येते. उदाहरणार्थ, DataFrame मधील पहिल्या 5 rows निवडण्यासाठी:
**संख्या आधारित रांग निवडणे** `iloc` संरचना वापरून करता येते. उदाहरणार्थ, DataFrame मधून पहिला 5 रांगे निवडण्यासाठी:
```python
df.iloc[:5]
```
**Grouping** अनेकदा Excel मधील *pivot tables* सारखा परिणाम मिळवण्यासाठी वापरला जातो. समजा आपल्याला `LenB` च्या प्रत्येक दिलेल्या नंबरसाठी कॉलम `A` चे mean value गणना करायचे आहे. मग आपण `LenB` द्वारे DataFrame group करू शकतो आणि `mean` कॉल करू शकतो:
**गटबद्ध करणे (Grouping)** बऱ्याचदा Excel मधील *pivot tables* सारखा परिणाम मिळवण्यासाठी वापरले जाते. समजा आपल्याला प्रत्येक दिलेल्या `LenB` संख्येसाठी `A` चा सरासरी मूल्य गणना करायचा आहे. मग आपण आपला DataFrame `LenB` नुसार गटबद्ध करू शकतो आणि `mean` कॉल करू शकतो:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
जर आपल्याला group मधील mean आणि elements ची संख्या गणना करायची असेल, तर आपण अधिक complex `aggregate` function वापरू शकतो:
जर आपल्याला गटातील संख्या आणि सरासरी दोन्ही गटवायचे असतील, तर आपण अधिक क्लिष्ट `aggregate` फंक्शन वापरू शकतो:
आम्ही पाहिले आहे की Python ऑब्जेक्ट्समधून Series आणि DataFrames तयार करणे किती सोपे आहे. मात्र, डेटा सामान्यतः टेक्स्ट फाइल किंवा Excel टेबलच्या स्वरूपात येतो. सुदैवाने, Pandas आपल्याला डिस्कवरून डेटा लोड करण्याचा सोपा मार्ग देते. उदाहरणार्थ, CSV फाइल वाचणे इतके सोपे आहे:
आपण पाहिले आहे की Python ऑब्जेक्ट्समधून Series आणि DataFrames तयार करणे किती सोपे आहे. तथापि, डेटा सहसा टेक्स्ट फाइल किंवा Excel तक्त्याच्या स्वरूपात येतो. सुदैवाने, Pandas आपल्याला डिस्कवरून डेटा लोड करण्याचा एक सोपा मार्ग प्रदान करते. उदाहरणार्थ, CSV फाइल वाचणे हे इतके सोपे आहे:
```python
df = pd.read_csv('file.csv')
```
आम्ही डेटा लोड करण्याचे अधिक उदाहरणे पाहू, ज्यामध्ये बाह्य वेबसाइट्समधून डेटा मिळवणे समाविष्ट आहे, "Challenge" विभागात.
आम्ही अधिक डेटा लोडिंगच्या उदाहरणांवर पाहू, ज्यात बाह्य वेब साइट्सहून डेटा घेणे यासुद्धा समाविष्ट आहे, "Challenge" विभागात
### प्रिंटिंग आणि प्लॉटिंग
### छपाई आणि प्लॉटिंग
डेटा सायंटिस्टला अनेकदा डेटा एक्सप्लोर करावा लागतो, त्यामुळे डेटा व्हिज्युअलाइझ करणे महत्त्वाचे आहे. जेव्हा DataFrame मोठा असतो, तेव्हा अनेकदा आपल्याला फक्त काही रांगा प्रिंट करून सर्वकाही योग्य प्रकारे चालू आहे याची खात्री करायची असते. हे `df.head()` कॉल करून करता येते. जर तुम्ही Jupyter Notebook वरून हे चालवत असाल, तर ते DataFrame चा सुंदर टेबल स्वरूपात प्रिंट करेल.
डेटा सायंटिस्टला अनेकदा डेटा शोधणे आवश्यक असते, त्यामुळे त्याचे दर्शन करणे महत्त्वाचे असते. जेव्हा DataFrame मोठा असतो, तेव्हा अनेक वेळा आपण फक्त खात्री करायची असते की आपण सर्व काही योग्यरित्या करत आहोत का, यासाठी पहिल्या काही ओळी छापणे उपयुक्त ठरते. हे `df.head()` कॉल करून करता येते. आपण Jupyter Notebook मधून हे चालवत असल्यास, ते DataFrame ला एका छान तक्त्याच्या स्वरूपात छापेल.
आम्ही `plot` फंक्शनचा वापर करून काही कॉलम्स व्हिज्युअलाइझ करण्याचा उपयोग देखील पाहिला आहे. `plot` अनेक कामांसाठी उपयुक्त आहे आणि `kind=` पॅरामीटरद्वारे अनेक वेगवेगळ्या ग्राफ प्रकारांना समर्थन देते, परंतु तुम्ही नेहमीच अधिक जटिल गोष्टी प्लॉट करण्यासाठी raw `matplotlib` लायब्ररी वापरू शकता. आम्ही डेटा व्हिज्युअलायझेशनचा सविस्तर अभ्यास स्वतंत्र कोर्स लेसनमध्ये करू.
आपण `plot` फंक्शनचा वापर काही स्तंभांचे दर्शन करण्यासाठी कसे करतात हेही पाहिले आहे. `plot` अनेक कामांसाठी उपयुक्त आहे, आणि `kind=` पॅरामीटरद्वारे अनेक वेगवेगळ्या ग्राफ प्रकारांना समर्थन देते, परंतु आपल्याला नेहमीच मूळ `matplotlib` लायब्ररी वापरून काही अधिक जटिल प्लॉट तयार करता येतात. आपण डेटा व्हिज्युअलायझेशनचा तपशील वेगळ्या कोर्सच्या धड्यांमध्ये पाहू.
या ओव्हरव्ह्यूमध्ये Pandas चे सर्वात महत्त्वाचे संकल्पना समाविष्ट आहेत, परंतु लायब्ररी खूप समृद्ध आहे आणि तुम्ही त्यासह काय करू शकता याला मर्यादा नाही! आता आपण विशिष्ट समस्येचे निराकरण करण्यासाठी हे ज्ञान लागू करूया.
हे आढावा Pandas च्या सर्वात महत्त्वाच्या संकल्पनांचा समावेश करतो, तरीसुद्धा, ही लायब्ररी फार समृद्ध आहे, आणि तुम्ही यामध्ये काहीही करू शकता! चला आता या ज्ञानाचा उपयोग विशिष्ट समस्यांचे निराकरण करण्यासाठी करूया.
## 🚀 Challenge 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/) पहा.
## असंरचित डेटासोबत काम करणे
## असंरचित डेटासह काम करणे
डेटा अनेकदा टेबल स्वरूपात येतो, परंतु काही प्रकरणांमध्ये आपल्याला कमी संरचित डेटा, उदाहरणार्थ, टेक्स्ट किंवा प्रतिमा हाताळावी लागते. अशा परिस्थितीत, वर पाहिलेल्या डेटा प्रोसेसिंग तंत्रांचा उपयोग करण्यासाठी, आपल्याला संरचित डेटा **काढणे** आवश्यक आहे. काही उदाहरणे येथे दिली आहेत:
जरी डेटा खूप वेळा तक्त्यासारखा असला तरी, काही प्रकरणांमध्ये आपल्याला कमी रचनेचा डेटा हाताळावा लागतो, जसे की टेक्स्ट किंवा प्रतिमा. या वेळी, वर पाहिलेल्या डेटा प्रक्रिया तंत्रांचा वापर करण्यासाठी आपल्याला रचनाबद्ध डेटा काही प्रकारे **काढून टाकावा** लागतो. येथे काही उदाहरणे आहेत:
* टेक्स्टमधून कीवर्ड्स काढणे आणि ते कीवर्ड्स किती वेळा दिसतात ते पाहणे
* चित्रातील वस्तूंबद्दल माहिती काढण्यासाठी न्यूरल नेटवर्क्सचा वापर करणे
* व्हिडिओ कॅमेरा फीडवर लोकांच्या भावना जाणून घेणे
* टेक्स्टमधून कीवर्ड्स काढणे, आणि त्या कीवर्ड्स किती वेळा दिसतात हे पाहणे
* प्रतिमेवरील वस्तूंविषयी माहिती काढण्यासाठी न्यूरल नेटवर्क्सचा वापर करणे
* व्हिडिओ कॅमेरा फीडवरील लोकांच्या भावना मिळविणे
## 🚀 Challenge 2: COVID पेपर्सचा विश्लेषण
## 🚀 चॅलेंज 2: COVID पेपर्सचे विश्लेषण
या आव्हानात, आम्ही COVID महामारीच्या विषयावर पुढे जाऊ आणि या विषयावरील वैज्ञानिक पेपर्सच्या प्रोसेसिंगवर लक्ष केंद्रित करू. [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) मध्ये 7000 हून अधिक (लेखनाच्या वेळी) COVID वर पेपर्स उपलब्ध आहेत, ज्यामध्ये मेटाडेटा आणि अॅब्स्ट्रॅक्ट्स (आणि त्यापैकी सुमारे अर्ध्या पेपर्ससाठी पूर्ण टेक्स्ट देखील प्रदान केले आहे).
या आव्हानात, आपण COVID महामारी विषयावरचे वैज्ञानिक पेपर्स प्रक्रिया करण्यावर लक्ष केंद्रित करू. COVID वर 7000 पेक्षा जास्त (लेखनाच्या वेळी) पेपर्ससह [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) उपलब्ध आहे, ज्यात मेटाडेटा आणि सारांश (आणि त्यापैकी अर्ध्यावर पूर्ण मजकूर देखील दिलेला आहे).
[Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) कॉग्निटिव्ह सर्विस वापरून या डेटासेटचे विश्लेषण करण्याचे पूर्ण उदाहरण [या ब्लॉग पोस्टमध्ये](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) वर्णन केले आहे. आम्ही या विश्लेषणाचा सोपा आवृत्ती चर्चा करू.
या डेटासेटचे विश्लेषण [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) कॉग्निटिव्ह सेवेच्या मदतीने कसे करायचे याचे एक पूर्ण उदाहरण [या ब्लॉग पोस्ट](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) मध्ये दिले आहे. आपण या विश्लेषणाचा साधा प्रकार स्वतः पाहू.
> **NOTE**: आम्ही या रिपॉझिटरीचा भाग म्हणून डेटासेटची प्रत प्रदान करत नाही. तुम्हाला प्रथम [`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) उघडा आणि वरून खालीपर्यंत वाचा. तुम्ही सेल्स चालवू शकता, आणि शेवटी आम्ही तुम्हाला दिलेल्या काही आव्हानांवर काम करू शकता.

## प्रतिमा डेटाचे प्रोसेसिंग
## प्रतिमा डेटाचे प्रक्रिया करणे
अलीकडे, खूप शक्तिशाली AI मॉडेल्स विकसित केली गेली आहेत जी प्रतिमा समजून घेण्यास सक्षम आहेत. अनेक कामे प्री-ट्रेन न्यूरल नेटवर्क्स किंवा क्लाउड सर्विसेस वापरून सोडवता येतात. काही उदाहरणे:
अलीकडे, फार शक्तिशाली AI मॉडेल्स विकसित झाले आहेत जे प्रतिमा समजून घेण्यास मदत करतात. अनेक कामे पूर्व-प्रशिक्षित न्यूरल नेटवर्क्स किंवा क्लाउड सेवा वापरून सोडवता येतात. काही उदाहरणे यप्रमाणे आहेत:
* **प्रतिमा वर्गीकरण**, जे तुम्हाला प्रतिमेला पूर्व-निर्धारित वर्गांपैकी एका वर्गात वर्गीकृत करण्यात मदत करू शकते. तुम्ही [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) सारख्या सेवांचा वापर करून तुमचे स्वतःचे प्रतिमा वर्गीकरणकर्ता सहजपणे प्रशिक्षित करू शकता.
* **ऑब्जेक्ट डिटेक्शन** प्रतिमेमध्ये वेगवेगळ्या वस्तू शोधण्यासाठी. [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) सारख्या सेवा अनेक सामान्य वस्तू शोधू शकतात, आणि तुम्ही [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) मॉडेल काही विशिष्ट वस्तू शोधण्यासाठी प्रशिक्षित करू शकता.
* **फेस डिटेक्शन**, ज्यामध्ये वय, लिंग आणि भावना शोधणे समाविष्ट आहे. हे [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) द्वारे केले जाऊ शकते.
* **प्रतिमा वर्गीकरण**, जे तुम्हाला प्रतिमा पूर्व-निर्धारित वर्गांपैकी एका वर्गात विभागण्यास मदत करते. तुम्ही स्वतःचे प्रतिमा वर्गीकरण करणारे मॉडेल [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) सारख्या सेवांचा वापर करून सहज प्रशिक्षित करू शकता
* **वस्तू शोध**, प्रतिमेमध्ये वेगवेगळ्या वस्तू शोधण्यासाठी. [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) सारख्या सेवा अनेक सामान्य वस्तू शोधू शकतात, आणि तुम्ही विशिष्ट आवडीच्या वस्तू शोधण्यासाठी [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) मॉडेल प्रशिक्षित करू शकता.
* **चेहरा ओळखणे**, त्यात वय, लिंग आणि भावना ओळखणे. हे [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) वापरून करता येते.
सर्व क्लाउड सेवा [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) वापरून कॉल करता येतात आणि त्यामुळे तुमच्या डेटा एक्सप्लोरेशन वर्कफ्लोमध्ये सहज समाविष्ट करता येतात.
या सर्व क्लाउड सेवा [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) वापरून कॉल केल्या जाऊ शकतात, त्यामुळे ते सहजपणे तुमच्या डेटा एक्सप्लोरेशन कार्यप्रवाहात समाकलित करता येऊ शकतात.
प्रतिमा डेटा स्रोतांमधून डेटा एक्सप्लोर करण्याची काही उदाहरणे येथे आहेत:
* [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) या ब्लॉग पोस्टमध्ये आम्ही Instagram फोटो एक्सप्लोर करतो, लोकांना एखाद्या फोटोला अधिक लाईक्स का देतात हे समजून घेण्याचा प्रयत्न करतो. आम्ही प्रथम [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) वापरून चित्रांमधून शक्य तितकी माहिती काढतो आणि नंतर [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) वापरून इंटरप्रिटेबल मॉडेल तयार करतो.
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) मध्ये आम्ही [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) वापरून इव्हेंट्समधील लोकांच्या फोटोवर भावना काढतो, लोकांना आनंदी काय करते हे समजून घेण्याचा प्रयत्न करतो.
येथे प्रतिमा डेटास्रोतांमधील डेटा एक्सप्लोर करण्याची काही उदाहरणे आहेत:
* ब्लॉग पोस्ट [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) मध्ये आम्ही Instagram फोटोंचा अभ्यास करतो, समजून घेण्यासाठी की लोक फोटोला जास्त लाईक्स का देतात. आम्ही प्रथम [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) वापरून शक्य तितकी माहिती फोटोंमधून काढतो, आणि मग [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) वापरून अर्थ लावू शकणारे मॉडेल तयार करतो.
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) मध्ये आम्ही [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) वापरून कार्यक्रमांतील लोकांच्या फोटोमधील भावना काढतो, समजून घेण्यासाठी की लोकांना काय आनंदी करते.
## निष्कर्ष
तुमच्याकडे आधीच संरचित किंवा असंरचित डेटा असो, Python वापरून तुम्ही डेटा प्रोसेसिंग आणि समजण्याशी संबंधित सर्व पायऱ्या पार पाडू शकता. डेटा प्रोसेसिंगसाठी हा कदाचित सर्वात लवचिक मार्ग आहे, आणि याच कारणामुळे बहुसंख्य डेटा सायंटिस्ट्स Python ला त्यांचे प्राथमिक साधन म्हणून वापरतात. तुमच्या डेटा सायन्स प्रवासात गंभीर असल्यास Python सखोल शिकणे कदाचित चांगली कल्पना आहे!
तुम्ही आधीपासूनच रचनाबद्ध किंवा असंरचित डेटा वापरत असाल, Python वापरून तुम्ही डेटा प्रक्रिया आणि समज यासंबंधी सर्व टप्पे पार पाडू शकता. बहुधा, डेटा प्रक्रिया करण्याचा हा सर्वात लवचीक मार्ग आहे, आणि हेच कारण आहे की बहुतेक डेटा सायंटिस्ट्स Python त्यांचे प्राथमिक साधन म्हणून वापरतात. तुमच्या डेटा सायन्स प्रवासात गंभीर असाल तर Python मध्ये सखोल शिक्षण घेणे चांगले ठरेल!
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**ऑनलाइन संसाधने**
* अधिकृत [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) ट्यूटोरियल
**ऑनलाइन स्त्रोत**
* अधिकृत [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) ट्युटोरियल
* [Pandas Visualization वर दस्तऐवज](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Python शिकणे**
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
* [Take your First Steps with Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path on [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Turtle Graphics आणि Fractals सह मजेशीर पद्धतीने Python शिकणे](https://github.com/shwars/pycourse)
* [Python मध्ये पहिले पाऊल उचला](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) लर्निंग पथ [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) वर
## असाइनमेंट
@ -273,9 +278,11 @@ df = pd.read_csv('file.csv')
## क्रेडिट्स
हे लेसन [Dmitry Soshnikov](http://soshnikov.com) यांनी ♥️ सह तयार केले आहे.
हा धडा ♥️ [Dmitry Soshnikov](http://soshnikov.com) यांनी लिहिला आहे
---
**अस्वीकरण**:
हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**अस्वीकरण**:
हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही.
डाटाबेसहरूले डाटा भण्डारण गर्न र क्वेरी भाषाहरू प्रयोग गरेर तिनीहरूलाई सोधपुछ गर्न धेरै प्रभावकारी तरिका प्रदान गर्छन्। तर, डाटा प्रशोधनको सबैभन्दा लचिलो तरिका भनेको आफ्नो प्रोग्राम लेखेर डाटालाई हेरफेर गर्नु हो। धेरै अवस्थामा, डाटाबेस क्वेरी गर्नु अझ प्रभावकारी हुन्छ। तर, कहिलेकाहीँ जटिल डाटा प्रशोधन आवश्यक पर्दा, SQL प्रयोग गरेर सजिलै गर्न सकिँदैन।
जहाँ डेटाबेसहरूले डेटा भण्डारण गर्ने र सोधपुछ भाषाहरू प्रयोग गरी सोधपुछ गर्ने धेरै प्रभावकारी तरिका प्रदान गर्दछन्, डाटा प्रक्रियाको सबैभन्दा लचिलो तरिका भनेको तपाइँको आफ्नै प्रोग्राम लेखेर डेटा व्यवस्थापन गर्नु हो। धेरै अवस्थामा, डेटाबेस सोधपुछ गर्ने तरिका प्रभावकारी हुन सक्छ। तथापि, केहि जटिल डेटा प्रक्रिया आवश्यक पर्दा, यो सजिलै SQL प्रयोग गरेर गर्न सकिँदैन।
डेटा प्रक्रिया कुनै पनि प्रोग्रामिङ भाषा मा प्रोग्राम गर्न सकिन्छ, तर केही भाषाहरू डेटा सँग काम गर्नेमा उच्च स्तरका मानिन्छन्। डेटा वैज्ञानिकहरूले सामान्यतया तलका मध्ये कुनै एक भाषा रोज्छन्:
डाटा प्रशोधन कुनै पनि प्रोग्रामिङ भाषामा गर्न सकिन्छ, तर केही भाषाहरू डाटासँग काम गर्न उच्च स्तरका हुन्छन्। डाटा वैज्ञानिकहरूले प्रायः निम्न भाषाहरू प्रयोग गर्न रुचाउँछन्:
* **[Python](https://www.python.org/)**, एउटा सामान्य प्रयोजनको प्रोग्रामिङ भाषा, जुन यसको सरलताका कारण सुरु गर्नेलाई सबैभन्दा राम्रो विकल्पमध्ये एक मानिन्छ। Python मा धेरै अतिरिक्त लाइब्रेरीहरू छन् जसले तपाइँलाई ZIP आर्काइभबाट डेटा निकालन, वा चित्रलाई ग्रेस्केलमा रूपान्तरण गर्ने जस्ता धेरै व्यावहारिक समस्याहरू समाधान गर्न मद्दत गर्छ। डेटा विज्ञानका साथै, Python वेब विकासका लागि पनि प्रायः प्रयोग गरिन्छ।
* **[R](https://www.r-project.org/)** परम्परागत उपकरण बाकस हो जुन सांख्यिकीय डेटा प्रक्रिया ध्यानमा राखेर विकास गरिएको हो। यसमा ठूलो संख्यामा पुस्तकालयहरू (CRAN) छन्, जसले यसलाई डेटा प्रक्रिया गर्न राम्रो विकल्प बनाउँछ। तर R सामान्य प्रयोजनको प्रोग्रामिङ भाषा होइन, र साधारणतया डेटा विज्ञान क्षेत्र बाहिर प्रयोग हुँदैन।
* **[Julia](https://julialang.org/)** अर्को भाषा हो जुन विशेष गरी डेटा विज्ञानका लागि विकास गरिएको हो। यसको उद्देश्य Python भन्दा राम्रो प्रदर्शन दिनु हो, जसले यसलाई वैज्ञानिक प्रयोगको लागि उत्कृष्ट उपकरण बनाउँछ।
* **[Python](https://www.python.org/)**: यो सामान्य उद्देश्यको प्रोग्रामिङ भाषा हो, जसलाई यसको सरलताका कारण प्रायः सुरुवातकर्ताहरूका लागि उत्कृष्ट विकल्प मानिन्छ। पाइथनसँग धेरै अतिरिक्त लाइब्रेरीहरू छन् जसले तपाईंलाई व्यावहारिक समस्याहरू समाधान गर्न मद्दत गर्न सक्छ, जस्तै ZIP आर्काइभबाट डाटा निकाल्ने, वा तस्बिरलाई ग्रेस्केलमा रूपान्तरण गर्ने। डाटा विज्ञान बाहेक, पाइथन वेब विकासका लागि पनि प्रायः प्रयोग गरिन्छ।
* **[R](https://www.r-project.org/)**: यो सांख्यिकीय डाटा प्रशोधनको लागि विकास गरिएको परम्परागत उपकरण हो। यसमा ठूलो लाइब्रेरी भण्डार (CRAN) छ, जसले यसलाई डाटा प्रशोधनको लागि राम्रो विकल्प बनाउँछ। तर, R सामान्य उद्देश्यको प्रोग्रामिङ भाषा होइन, र डाटा विज्ञानको क्षेत्र बाहिर कमै प्रयोग गरिन्छ।
* **[Julia](https://julialang.org/)**: यो डाटा विज्ञानका लागि विशेष रूपमा विकास गरिएको अर्को भाषा हो। यसले पाइथनभन्दा राम्रो प्रदर्शन दिनको लागि बनाइएको हो, जसले यसलाई वैज्ञानिक प्रयोगका लागि उत्कृष्ट उपकरण बनाउँछ।
यस पाठमा, हामी सरल डेटा प्रक्रिया को लागि Python को प्रयोगमा केन्द्रित हुने छौं। हामी भाषा सँग आधारभूत परिचय मान्ने छौं। यदि तपाईं Python को विस्तृत यात्रा चाहनुहुन्छ भने, तपाईं तलका स्रोतहरू मध्ये कुनै एकमा सन्दर्भ गर्न सक्नुहुन्छ:
यस पाठमा, हामी पाइथन प्रयोग गरेर साधारण डाटा प्रशोधनमा केन्द्रित हुनेछौं। हामीले भाषाको आधारभूत ज्ञान भएको मान्नेछौं। यदि तपाईं पाइथनको गहिरो अध्ययन गर्न चाहनुहुन्छ भने, निम्न स्रोतहरू हेर्न सक्नुहुन्छ:
* [टर्टल ग्राफिक्स र फ्र्याक्टल्स सँग रमाइलो तरिकामा 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) माइक्रोसफ्ट लर्न मा सिकाइ मार्ग
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - पाइथन प्रोग्रामिङको लागि GitHub-आधारित छोटो परिचयात्मक पाठ
* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) मा उपलब्ध लर्निङ पाथ
डेटा धेरै रूपहरूमा आउन सक्छ। यस पाठमा, हामी तीन प्रकारका डाटाहरूमा विचार गर्नेछौँ - **तालिकागत डेटा**, **पाठ्य सामग्री** र **छविहरू**।
डाटा धेरै प्रकारका हुन सक्छ। यस पाठमा, हामी तीन प्रकारका डाटालाई विचार गर्नेछौं - **तालिकात्मक डाटा**, **पाठ** र **तस्बिरहरू**।
हामी केही डेटा प्रक्रिया उदाहरणहरूमा केन्द्रित हुने छौं, सबै सम्बन्धित लाइब्रेरीहरूको पूर्ण ओभरभ्यू दिने सट्टा। यसले तपाईंलाई के सम्भव छ भन्ने मुख्य विचार प्राप्त गर्न अनुमति दिनेछ, र जब आवश्यक पर्छ तब समाधान कहाबाट खोज्ने बुझाइ दिनेछ।
हामी सबै सम्बन्धित लाइब्रेरीहरूको पूर्ण अवलोकन दिनुको सट्टा डाटा प्रशोधनका केही उदाहरणहरूमा केन्द्रित हुनेछौं। यसले तपाईंलाई के सम्भव छ भन्ने मुख्य विचार दिन्छ, र तपाईंलाई आवश्यक पर्दा समस्याहरूको समाधान कहाँ खोज्ने भन्ने बुझाइ दिन्छ।
> **सबैभन्दा उपयोगी सल्लाह**। जब तपाईंलाई डेटा मा कुनै निश्चित अपरेशन गर्नुपर्ने हुन्छ जुन तपाईंलाई थाहा छैन, इन्टरनेटमा खोज्ने प्रयास गर्नुहोस्। [Stackoverflow](https://stackoverflow.com/) मा धेरै सामान्य कार्यहरूका लागि Python को धेरै उपयोगी कोड नमूना पाइन्छ।
> **सबैभन्दा उपयोगी सल्लाह**: जब तपाईंलाई डाटामा कुनै निश्चित अपरेशन गर्न आवश्यक पर्छ, तर तपाईंलाई कसरी गर्ने थाहा छैन, इन्टरनेटमा खोज्ने प्रयास गर्नुहोस्। [Stackoverflow](https://stackoverflow.com/) मा पाइथनमा धेरै सामान्य कार्यहरूको लागि उपयोगी कोड नमूनाहरू पाइन्छ।
## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ds/quiz/12)
तपाईंले तालिकात्मक डाटासँग पहिले नै भेट गर्नुभएको छ जब हामीले सम्बन्धित डाटाबेसहरूको बारेमा कुरा गर्यौं। जब तपाईंसँग धेरै डाटा हुन्छ, र यो धेरै फरक-फरक तालिकाहरूमा जोडिएको हुन्छ, SQL प्रयोग गरेर काम गर्नु उपयुक्त हुन्छ। तर, धेरै अवस्थामा, हामीसँग एउटा तालिका हुन्छ, र हामीले यस डाटाको बारेमा केही **बुझाइ** वा **अन्तर्दृष्टि** प्राप्त गर्न आवश्यक पर्छ, जस्तै वितरण, मानहरू बीचको सम्बन्ध, आदि। डाटा विज्ञानमा, धेरै अवस्थामा हामीले मूल डाटाको केही रूपान्तरण गर्न आवश्यक पर्छ, त्यसपछि भिजुअलाइजेसन। यी दुवै चरणहरू पाइथन प्रयोग गरेर सजिलै गर्न सकिन्छ।
## तालिकागत डेटा र डेटा फ्रेमहरू
पाइथनमा तालिकात्मक डाटासँग काम गर्न मद्दत गर्ने दुई सबैभन्दा उपयोगी लाइब्रेरीहरू छन्:
* **[Pandas](https://pandas.pydata.org/)**: यसले तथाकथित **डाटाफ्रेमहरू** हेरफेर गर्न अनुमति दिन्छ, जुन सम्बन्धित तालिकाहरूको समानान्तर हुन्छ। तपाईंले नाम दिइएका स्तम्भहरू राख्न सक्नुहुन्छ, र पङ्क्ति, स्तम्भ र डाटाफ्रेमहरूमा विभिन्न अपरेशनहरू गर्न सक्नुहुन्छ।
* **[Numpy](https://numpy.org/)**: यो **टेन्सरहरू**, अर्थात् बहु-आयामिक **एरेहरू**सँग काम गर्नको लागि लाइब्रेरी हो। एरेमा एउटै प्रकारका मानहरू हुन्छन्, र यो डाटाफ्रेमभन्दा सरल हुन्छ, तर यसले थप गणितीय अपरेशनहरू प्रदान गर्दछ, र कम ओभरहेड सिर्जना गर्दछ।
तपाईंले पहिले नै तालिकागत डेटा देख्नुभएको छ जब हामीले सम्बन्धित डेटाबेसहरूबारे कुरा गर्यौं। धेरै डेटा हुँदा र त्यो धेरै विभिन्न लिङ्क भएका तालिकाहरूमा हुने हुँदा, यसमा SQL प्रयोग गरी काम गर्नु बुद्धिमानी हुन्छ। तर धेरै अवस्थाहरूमा, जब हामीसँग एउटा तालिका हुन्छ र हामीलाई यस डेटा को बारेमा केही **बुझाइ** वा **दृष्टिकोण** चाहिन्छ, जस्तो वितरण, मानहरू बीचको सम्बन्ध आदि। डेटा विज्ञानमा, धेरै अवस्थामा हामीलाई मूल डाटामा केहि रूपान्तरणहरू गर्नुपर्छ, त्यसपछि दृश्यांकन गर्नुपर्छ। यी दुबै चरणहरू Python प्रयोग गरेर सजिलै गर्न सकिन्छ।
त्यसैगरी, तपाईंले जान्नुपर्ने अन्य केही लाइब्रेरीहरू छन्:
* **[Matplotlib](https://matplotlib.org/)**: यो डाटा भिजुअलाइजेसन र ग्राफहरू बनाउने लाइब्रेरी हो।
* **[SciPy](https://www.scipy.org/)**: यो केही अतिरिक्त वैज्ञानिक कार्यहरू भएको लाइब्रेरी हो। हामीले यस लाइब्रेरीलाई सम्भाव्यता र तथ्यांकको बारेमा कुरा गर्दा पहिले नै भेट गरेका छौं।
Python मा दुई सबैभन्दा उपयोगी पुस्तकालयहरू छन् जुनले तपाईंलाई तालिकागत डेटा सँग काम गर्न मद्दत गर्छन्:
* **[Pandas](https://pandas.pydata.org/)** ले तपाइँलाई तथाकथित **Dataframes** सँग काम गर्ने अनुमति दिन्छ, जुन सम्बन्धित तालिकाहरू जस्तै हुन्छ। तपाईंले नामित स्तम्भहरू राख्न सक्नुहुन्छ र पङ्क्तिहरू, स्तम्भहरू र डेटा फ्रेमहरूमा भिन्न अपरेशन्स गर्न सक्नुहुन्छ।
* **[Numpy](https://numpy.org/)** मल्टी-डाइमेन्सनल **array** अर्थात् **tensors** सँग काम गर्न लाइब्रेरी हो। array मा एउटै प्रकारका मानहरू हुन्छन्, र यो डेटा फ्रेम भन्दा सरल हुन्छ, तर यसले अधिक गणितीय अपरेशन्स दिन्छ र कम छ।
यहाँ तपाईंले आफ्नो पाइथन प्रोग्रामको सुरुवातमा यी लाइब्रेरीहरू आयात गर्न प्रयोग गर्ने कोडको टुक्रा छ:
केहि अन्य लाइब्रेरीहरू पनि छन् जुन तपाईंलाई थाहा हुनु आवश्यक छ:
* **[Matplotlib](https://matplotlib.org/)** डेटा दृश्याङ्कन र ग्राफहरू प्लट गर्नको लागि पुस्तकालय हो।
* **[SciPy](https://www.scipy.org/)** केही थप वैज्ञानिक फङ्क्शन्स सहितको लाइब्रेरी हो। हामीले यो लाइब्रेरी पहिले सम्भाव्यता र सांख्यिकी बारे कुराकानी गर्दा देखेको छौं।
यहाँ केहि कोड छ जुन तपाईंले सामान्यतया Python प्रोग्रामको सुरुवातमा ती पुस्तकालयहरू आयात गर्न प्रयोग गर्नुहुन्छ:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
from scipy import ... # तपाईंले आवश्यक उप-प्याकेजहरू स्पष्ट रूपमा निर्दिष्ट गर्न आवश्यक छ
```
पाण्डास केही आधारभूत अवधारणाहरू वरिपरि केन्द्रित छ।
Pandas केही आधारभूत अवधारणाहरू वरिपरि केन्द्रित छ।
### सिरिज
### श्रृंखला (Series)
**सिरिज** भनेको मानहरूको अनुक्रम हो, जुन सूची वा नम्पाइ एरेसँग मिल्दोजुल्दो हुन्छ। मुख्य भिन्नता भनेको सिरिजसँग **इन्डेक्स** पनि हुन्छ, र जब हामी सिरिजमा अपरेशन गर्छौं (जस्तै, तिनीहरूलाई जोड्छौं), इन्डेक्सलाई ध्यानमा राखिन्छ। इन्डेक्स साधारण पूर्णांक पङ्क्ति नम्बर (सूची वा एरेबाट सिरिज सिर्जना गर्दा प्रयोग गरिने डिफल्ट इन्डेक्स) जत्तिकै सरल हुन सक्छ, वा यसले जटिल संरचना, जस्तै मिति अन्तराल, लिन सक्छ।
**Series** मानहरूको एउटा अनुक्रम हो, जस्तो कि लिस्ट वा numpy array को जस्तै। मुख्य फरक भनेको seriesसँग पनि **index** हुन्छ, र जब हामी series मा अपरेशन गर्छौं (जस्तै थप्न), त हामी index लाई विचार गर्छौं। Index साधारण रूपमा पूर्णांक पङ्क्ति संख्या हुन सक्छ (यदि तपाईंले सूची वा एर्रेबाट series बनाउनु भयो भने यो डिफल्ट हुन्छ), वा यो जटिल संरचना हुन सक्छ, जस्तै मिति अन्तराल।
> **नोट**: पाण्डासको केही प्रारम्भिक कोड संग्लग्न नोटबुक [`notebook.ipynb`](notebook.ipynb) मा छ। हामी यहाँ केही उदाहरणहरू मात्र उल्लेख गर्छौं, र तपाईंलाई पूर्ण नोटबुक हेर्न स्वागत छ।
> **टिप**: सङ्गै रहेको नोटबुक [`notebook.ipynb`](notebook.ipynb) मा केही introductory Pandas कोड छन्। हामी यहाँ केहि उदाहरणहरू मात्र सारांश गर्छौं, र तपाईंलाई पूर्ण नोटबुक अवश्य हेर्न सल्लाह दिइन्छ।
उदाहरणको रूपमा विचार गर्नुहोस्: हामी हाम्रो आइसक्रिम पसलको बिक्री विश्लेषण गर्न चाहन्छौं। केही समय अवधिको लागि बिक्री सङ्ख्याहरू (प्रत्येक दिन बेचिएका वस्तुहरूको सङ्ख्या) को सिरिज उत्पन्न गरौं:
एउटा उदाहरण लिनुहोस्: हामीलाई हाम्रो आइस्क्रीम पसलको बिक्री विश्लेषण गर्नुछ। केही समय अवधिका लागि दैनिक बिक्री संख्याहरूको श्रृंखला (विक्री भएका आइटमहरूको संख्या) बनाऔं:
```python
start_date = "Jan 1, 2020"
@ -65,47 +66,47 @@ print(f"Length of index is {len(idx)}")
अब कल्पना गर्नुहोस् कि प्रत्येक हप्ता हामी साथीहरूको लागि पार्टी आयोजना गर्छौं, र पार्टीको लागि १० प्याक आइसक्रिम थप्छौं। हामी अर्को सिरिज सिर्जना गर्न सक्छौं, हप्ताद्वारा इन्डेक्स गरिएको, यो देखाउन:
अब मानौँ हाम्रा हरेक हप्ता साथीहरूको लागि पार्टी आयोजना हुन्छ, र हामी पार्टीका लागि थप 10 प्याक आइस्क्रीम लिन्छौं। हामी अर्को श्रृंखला, जुन हप्ताको सूचकाङ्कद्वारा निर्देशित छ, बनाउन सक्छौं:
> **नोट** कि हामीले साधारण`total_items+additional_items` सिन्ट्याक्स प्रयोग गरेका छैनौं। यदि हामीले त्यसो गरेका भए, हामीले परिणामस्वरूप धेरै `NaN` (*Not a Number*) मानहरू पाउने थियौं। यो किनभने `additional_items` सिरिजमा केही इन्डेक्स बिन्दुहरूको लागि मानहरू हराइरहेका छन्, र `NaN` लाई कुनै पनि चीजमा जोड्दा `NaN` परिणाम दिन्छ। त्यसैले हामीले थप गर्दा `fill_value` प्यारामिटर निर्दिष्ट गर्न आवश्यक छ।
> **टिप**: हामीले सरल`total_items+additional_items` सिन्ट्याक्स प्रयोग गरेका छैनौं। यदि प्रयोग गर्थ्यौं भने, नतिजा श्रृंखलामा धेरै `NaN` (*संख्या होइन*) मानहरू प्राप्त गर्थ्यौं। किनभने `additional_items` श्रृंखलामा केही index बिन्दुहरूको मानहरू हराइरहेका छन्, र `NaN` लाई केहीमा थप्दा `NaN` नै हुन्छ। त्यसैले थप्दाखेरी `fill_value` प्यारामिटर सेट गर्नु आवश्यक हुन्छ।
समय सिरिजको साथ, हामी फरक समय अन्तरालहरूसँग सिरिजलाई **पुनःनमूना** गर्न सक्छौं। उदाहरणका लागि, मानौं हामी मासिक औसत बिक्री मात्रा गणना गर्न चाहन्छौं। हामी निम्न कोड प्रयोग गर्न सक्छौं:
टाइम श्रृंखलाहरूको सँगै, हामी श्रृंखलालाई फरक-फरक समयावधिहरूमा **पुनः नमूना गर्न** सक्छौं। उदाहरणका लागि, हामी महिनावारी औसत बिक्री गणना गर्न चाहन्छौं भने, तलको कोड प्रयोग गर्न सकिन्छ:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```


### डाटाफ्रेम
### डेटा फ्रेम (DataFrame)
डाटाफ्रेम भनेको मूलतः एउटै इन्डेक्स भएका सिरिजहरूको सङ्ग्रह हो। हामी धेरै सिरिजहरूलाई डाटाफ्रेममा संयोजन गर्न सक्छौं:
डेटा फ्रेम मूलमा एउटै index भएका धेरै श्रृंखलाहरूको संग्रह हो। हामी केही sériesलाई एकसाथ डेटा फ्रेममा मिलाउन सक्छौं:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
यहाँ `.T` ले डाटाफ्रेमलाई ट्रान्सपोज गर्ने अपरेशनलाई जनाउँछ, अर्थात् पङ्क्ति र स्तम्भहरू परिवर्तन गर्ने, र `rename` अपरेशनले स्तम्भहरूलाई अघिल्लो उदाहरणसँग मिलाउन नाम परिवर्तन गर्न अनुमति दिन्छ।
यहाँ `.T` ले डेटा फ्रेमको पङ्क्ति र स्तम्भ बदल्ने ट्रान्सपोज अपरेशन जनाउँछ, र `rename` अपरेशनले स्तम्भहरूको नाम पहिलेको उदाहरणसँग मिलाउन परिवर्तन गर्छ।
डाटाफ्रेमहरूमा गर्न सकिने केही सबैभन्दा महत्त्वपूर्ण अपरेशनहरू यहाँ छन्:
यहाँ डेटा फ्रेमहरूमा गर्न सकिने केही सबैभन्दा महत्वपूर्ण कार्यहरू छन्:
**स्तम्भ चयन**। हामी `df['A']` लेखेर व्यक्तिगत स्तम्भहरू चयन गर्न सक्छौं - यो अपरेशनले सिरिज फर्काउँछ। हामी `df[['B','A']]` लेखेर अर्को डाटाफ्रेममा स्तम्भहरूको उपसमूह चयन गर्न सक्छौं - यसले अर्को डाटाफ्रेम फर्काउँछ।
**स्तम्भ चयन**। हामी `df['A']` लेखेर व्यक्तिगत स्तम्भहरू चयन गर्न सक्छौं - यसले Series फिर्ता गर्छ। हामी `df[['B','A']]` लेखेर कुनै स्तम्भ subset चयन गरी अर्को DataFrame पनि बनाउन सक्छौं - यसले अर्को DataFrame फिर्ता गर्छ।
**केवल निश्चित पङ्क्तिहरू फिल्टर गर्ने**। उदाहरणका लागि, स्तम्भ `A` ५ भन्दा ठूलो भएका पङ्क्तिहरू मात्र राख्न, हामी `df[df['A']>5]` लेख्न सक्छौं।
**केवल केही पङ्क्तिहरूलाई फिल्टर गर्ने**, मानदण्ड अनुसार। उदाहरणका लागि, `A` स्तम्भ ५ भन्दा ठुलो मान भएका पङ्क्तिहरू मात्र राख्न, `df[df['A']>5]` लेख्न सकिन्छ।
> **नोट**: फिल्टरिङ्गले काम गर्ने तरिका यस्तो छ। `df['A']<5` अभिव्यक्तिले बूलियन सिरिज फर्काउँछ, जसले मूल सिरिज `df['A']` को प्रत्येक तत्त्वको लागि अभिव्यक्ति `True` वा `False` छ कि छैन भनेर जनाउँछ। जब बूलियन सिरिजलाई इन्डेक्सको रूपमा प्रयोग गरिन्छ, यसले डाटाफ्रेममा पङ्क्तिहरूको उपसमूह फर्काउँछ। त्यसैले मनमानी पाइथन बूलियन अभिव्यक्ति प्रयोग गर्न सम्भव छैन, उदाहरणका लागि, `df[df['A']>5 and df['A']<7]` लेख्नु गलत हुनेछ। यसको सट्टा, तपाईंले बूलियन सिरिजमा विशेष `&` अपरेशन प्रयोग गर्नुपर्छ, जस्तै `df[(df['A']>5) & (df['A']<7)]` (*ब्र्याकेटहरू यहाँ महत्त्वपूर्ण छन्*)।
> **टिप**: फिल्टर यस्तो काम गर्छ। अभिव्यक्ति `df['A']<5` boolean श्रृंखला फिर्ता गर्छ, जुन प्रदर्शन गर्छ कि मूल श्रृंखला `df['A']` को प्रत्येक तत्वको लागि त्यो साँचो छ कि झुटो। जब boolean श्रृंखला सूचकांकको रूपमा प्रयोग हुन्छ, यसले डेटा फ्रेमको पङ्क्तिहरूको उपसमूह फिर्ता गर्छ। त्यसैले सामान्य Python boolean अभिव्यक्ति प्रयोग गर्न सकिन्न, जस्तै `df[df['A']>5 and df['A']<7]` गलत हुन्छ। यसको सट्टामा, boolean श्रृंखलामा विशेष `&` अपरेटर प्रयोग गर्नु पर्छ, `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'] = "Low" if df['A'] <5else"Hi"
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 हुनेछ:
**संख्याहरूको आधारमा पङ्क्तिहरू चयन गर्ने** `iloc` संरचना प्रयोग गरेर गर्न सकिन्छ। उदाहरणका लागि, डाटाफ्रेमबाट पहिलो ५ पङ्क्तिहरू चयन गर्न:
**संख्या अनुसार पङ्क्तिहरू चयन** `iloc` संरचना प्रयोग गरेर गर्न सकिन्छ। उदाहरणका लागि, DataFrame बाट पहिलो ५ पङ्क्तिहरू चयन गर्न:
```python
df.iloc[:5]
```
**समूह बनाउने** प्रायः *पिभट तालिकाहरू* जस्तै परिणाम प्राप्त गर्न प्रयोग गरिन्छ। मानौं हामी `LenB` को प्रत्येक संख्याको लागि स्तम्भ `A` को औसत मान गणना गर्न चाहन्छौं। त्यसपछि हामी हाम्रो डाटाफ्रेमलाई `LenB` द्वारा समूहबद्ध गर्न सक्छौं, र`mean` कल गर्न सक्छौं:
**समूहबद्धीकरण** प्रायः Excel मा *pivot table* जस्तै नतिजा प्राप्त गर्न प्रयोग गरिन्छ। मानौँ हामी `LenB` को प्रत्येक मानको लागि स्तम्भ `A` को माध्य मान गणना गर्न चाहन्छौं। त्यसपछि हामी DataFrame लाई `LenB` द्वारा समूहबद्ध गरी`mean` कल गर्न सक्छौं:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
यदि हामीलाई समूहमा औसत र तत्त्वहरूको सङ्ख्या गणना गर्न आवश्यक छ भने, हामी थप जटिल `aggregate` फङ्क्शन प्रयोग गर्न सक्छौं:
यदि हामीलाई समूहमा माध्य र संख्या दुवै गणना गर्नुपर्छ भने, हामी थप जटिल `aggregate` फंक्शन प्रयोग गर्न सक्छौं:
हामीले देख्यौं कि Python वस्तुहरूबाट Series र DataFrames निर्माण गर्न कति सजिलो छ। तर, डाटा प्रायः पाठ फाइल वा Excel तालिकाको रूपमा आउँछ। सौभाग्यवश, Pandas ले हामीलाई डिस्कबाट डाटा लोड गर्न सजिलो तरिका प्रदान गर्दछ। उदाहरणका लागि, CSV फाइल पढ्न यति सजिलो छ:
### डेटा प्राप्ति
हामीले देख्यौं कि Python वस्तुहरूबाट कसरि सजिलै Series र DataFrames निर्माण गर्न सकिन्छ। तर, डेटा प्रायः एउटा टेक्स्ट फाइल वा Excel तालिकाको रूपमा आउँछ। सौभाग्यवश, Pandas ले हामीलाई डिस्कबाट डेटा लोड गर्न साधारण तरिका प्रदान गर्दछ। उदाहरणका लागि, CSV फाइल पढ्न यो जति सरल छ:
```python
df = pd.read_csv('file.csv')
```
हामी "Challenge" खण्डमा बाह्य वेबसाइटहरूबाट डाटा ल्याउने सहित लोड गर्ने थप उदाहरणहरू हेर्नेछौं।
हामीले "Challenge" सेक्सनमा बाह्य वेब साइटहरूबाट डेटा ल्याउने लगायत डेटा लोड गर्ने अझ धेरै उदाहरणहरू हेर्नेछौं
### प्रिन्टिंग र प्लटिंग
### प्रिन्टिङ र प्लटिङ
एक Data Scientist ले प्रायः डाटालाई अन्वेषण गर्नुपर्छ, त्यसैले यसलाई दृश्यात्मक बनाउन सक्षम हुनु महत्त्वपूर्ण छ। जब DataFrame ठूलो हुन्छ, धेरै पटक हामी केवल सुनिश्चित गर्न चाहन्छौं कि हामी सबै कुरा सही गरिरहेका छौं, त्यसका लागि पहिलो केही पङ्क्तिहरू प्रिन्ट गर्न चाहन्छौं। यो `df.head()` कल गरेर गर्न सकिन्छ। यदि तपाईंले यसलाई Jupyter Notebook बाट चलाउनुहुन्छ भने, यो DataFrame लाई राम्रो टेबलर रूपमा प्रिन्ट गर्नेछ।
एक Data Scientist ले प्रायः डेटा अन्वेषण गर्नुपर्छ, त्यसैले यसलाई दृश्यात्मक रूपमा देखाउन सक्नु महत्वपूर्ण छ। जब DataFrame ठूलो हुन्छ, धेरै पटक हामीले सही रूपमा कार्य गरिरहेका छौं वा छैन भनेर सुनिश्चित गर्न सुरुका केही पंक्तिहरू मात्र प्रिन्ट गर्न चाहन्छौं। यो `df.head()` कल गरेर गर्न सकिन्छ। यदि तपाईं Jupyter Notebook बाट चलाउँदै हुनुहुन्छ भने, यसले DataFrameलाई राम्रो टेबल फारममा प्रिन्ट गर्नेछ।
हामीले केही स्तम्भहरूलाई दृश्यात्मक बनाउन `plot` फङ्क्शनको प्रयोग पनि देखेका छौं। जबकि `plot` धेरै कार्यहरूको लागि उपयोगी छ, र `kind=` प्यारामिटर मार्फत धेरै प्रकारका ग्राफहरू समर्थन गर्दछ, तपाईं सधैं कच्चा `matplotlib` लाइब्रेरी प्रयोग गरेर केही जटिल कुरा प्लट गर्न सक्नुहुन्छ। हामी अलग पाठहरूमा डाटा दृश्यात्मकता विस्तारमा कभर गर्नेछौं।
हामीले पनि केही स्तम्भहरू दृश्यात्मक बनाउन `plot` फंक्शनको प्रयोग देखेका छौं। `plot` धेरै कामहरूका लागि धेरै उपयोगी छ र `kind=` प्यारामिटरको माध्यमबाट विभिन्न ग्राफ प्रकारहरू समर्थन गर्दछ, तर तपाईं जहिले पनि अझ जटिल कुरा प्लट गर्न कच्चा `matplotlib` लाइब्रेरी प्रयोग गर्न सक्नुहुन्छ। हामी डाटाभिजुअलाइजेशनलाई अलग पाठहरूमा विस्तारमा छलफल गर्नेछौं।
यो अवलोकनले Pandas का सबैभन्दा महत्त्वपूर्ण अवधारणाहरू समेट्छ, तर लाइब्रेरी धेरै समृद्ध छ, र तपाईंले यसबाट गर्न सक्ने कुराको कुनै सीमा छैन! अब हामी यो ज्ञानलाई विशिष्ट समस्याहरू समाधान गर्न लागू गरौं।
यो अवलोकनले Pandas का सबैभन्दा महत्वपूर्ण अवधारणाहरू समेट्छ, यद्यपि यो लाइब्रेरी धेरै समृद्ध छ, र तपाईंले यससँग गर्न सक्ने कुराको कुनै सीमा छैन! अब यस ज्ञानलाई विशिष्ट समस्याको समाधान गर्न प्रयोग गरौं।
## 🚀 Challenge 1: COVID फैलावटको विश्लेषण
## 🚀 चुनौती १: COVID फैलावट विश्लेषण
पहिलो समस्या जसमा हामी केन्द्रित हुनेछौं, COVID-19 को महामारी फैलावटको मोडलिङ हो। यसका लागि, हामी विभिन्न देशहरूमा संक्रमित व्यक्तिहरूको संख्या सम्बन्धी डाटा प्रयोग गर्नेछौं, जुन [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) द्वारा [Johns Hopkins University](https://jhu.edu/) मा प्रदान गरिएको छ। Dataset [यस GitHub Repository](https://github.com/CSSEGISandData/COVID-19) मा उपलब्ध छ।
पहिलो समस्या जुन हामीले केन्द्रित गर्नेछौं त्यो हो COVID-19 को महामारी फैलावटको मोडेलिङ। त्यसका लागि, हामीले विभिन्न देशहरूमा संक्रमित व्यक्तिहरूको संख्या सम्बन्धी डेटा प्रयोग गर्नेछौं, जुन [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) ले [Johns Hopkins University](https://jhu.edu/) मा प्रदान गरेको छ। डेटासेट [यस 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/) मा हेर्नुहोस्।
## असंरचित डाटासँग काम गर्ने
## गैर-संरचित डेटा सँग काम गर्ने
डाटा प्रायः टेबलर रूपमा आउँछ, तर केही अवस्थामा हामी कम संरचित डाटासँग व्यवहार गर्नुपर्छ, जस्तै पाठ वा छविहरू। यस अवस्थामा, माथि देखिएका डाटा प्रशोधन प्रविधिहरू लागू गर्न, हामीले कुनै प्रकारको **संरचित डाटा निकाल्न** आवश्यक छ। यहाँ केही उदाहरणहरू छन्:
डेटा प्रायः तालिकागत फारममा आउँछ, तर कतिपय अवस्थामा हामी कम संरचित डेटा जस्तै टेक्स्ट वा छविहरूसँग काम गर्न आवश्यक पर्छ। यस्तो अवस्थामा माथि देखाइएका डेटा प्रशोधन प्रविधिहरू प्रयोग गर्न हामीले कुनै प्रकारले **संरचित** डेटा **निकाल्न** आवश्यक हुन्छ। यहाँ केही उदाहरणहरू छन्:
* पाठबाट मुख्य शब्दहरू निकाल्ने, र ती शब्दहरू कति पटक देखा परेका छन् हेर्ने।
* तस्बिरमा वस्तुहरूको बारेमा जानकारी निकाल्न न्युरल नेटवर्क प्रयोग गर्ने।
* भिडियो क्यामेरा फिडमा व्यक्तिहरूको भावनाको जानकारी प्राप्त गर्ने।
* टेक्स्टबाट मुख्य शब्दहरू निकाल्नु, र ती शब्दहरू कति पटक देखा पर्दछ हेर्नु
* तस्बिरमा वस्तुहरूको बारेमा जानकारी निकाल्न न्यूरल नेटवर्कहरू प्रयोग गर्नु
* भिडीयो क्यामेरा फिडमा मानिसहरूको भावनाको बारेमा जानकारी प्राप्त गर्नु
## 🚀 Challenge 2: COVID कागजातहरूको विश्लेषण
## 🚀 चुनौती २: COVID कागजातहरूको विश्लेषण
यस चुनौतीमा, हामी COVID महामारीको विषयलाई जारी राख्नेछौं, र यस विषयमा वैज्ञानिक कागजातहरूको प्रशोधनमा केन्द्रित हुनेछौं। [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) मा 7000 भन्दा बढी (लेखनको समयमा) COVID सम्बन्धी कागजातहरू उपलब्ध छन्, जसमा मेटाडाटा र सारांशहरू छन् (र लगभग आधा कागजातहरूको पूर्ण पाठ पनि प्रदान गरिएको छ)।
यस चुनौतीमा, हामी COVID महामारी विषयमा वैज्ञानिक कागजातहरू प्रसंस्करण गर्ने विषयमा ध्यान केन्द्रित गर्नेछौं। [CORD-19 डेटासेट](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) मा ७००० भन्दा बढी (लेखिरहेका बेला) COVID सम्बन्धी कागजातहरू छन्, जुन मेटाडाटा र सारांसहित उपलब्ध छन् (र करिब आधाका लागि पूर्ण पाठ पनि प्रदान गरिएको छ)।
[Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) प्रयोग गरेर यस डेटासेटको विश्लेषणको पूर्ण उदाहरण [यस ब्लग पोस्ट](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) मा वर्णन गरिएको छ। हामी यस विश्लेषणको सरल संस्करण छलफल गर्नेछौं।
[Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) संज्ञानात्मक सेवा प्रयोग गरेर यस डेटासेटको विश्लेषण गरेको पूर्ण उदाहरण [यस ब्लग पोस्टमा](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) वर्णन गरिएको छ। हामी यस विश्लेषणको सरलीकृत संस्करण छलफल गर्नेछौं।
> **NOTE**: हामी यस रिपोजिटरीको भागको रूपमा डेटासेटको प्रतिलिपि प्रदान गर्दैनौं। तपाईंले पहिले [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) फाइल [यस Kaggle डेटासेट](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) बाट डाउनलोड गर्न आवश्यक हुन सक्छ। Kaggle मा दर्ता आवश्यक हुन सक्छ। तपाईंले दर्ता बिना [यहाँबाट](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) डेटासेट डाउनलोड गर्न सक्नुहुन्छ, तर यसमा मेटाडाटा फाइलको अतिरिक्त सबै पूर्ण पाठहरू समावेश हुनेछ।
> **NOTE**: हामीले यस रिपोजिटरीको भागको रूपमा डेटासेटको प्रतिलिपि प्रदान गरेका छैनौं। तपाईंले पहिले [यस Kaggle डेटासेटमा](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) बाट [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) फाइल डाउनलोड गर्न आवश्यक हुन सक्छ। Kaggle मा दर्ता आवश्यक हुन सक्छ। तपाईं दर्ता नगरी नै [यहाँबाट](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) डेटासेट डाउनलोड गर्न सक्नुहुन्छ, तर त्योले सबै पूर्ण पाठ मेटाडाटा फाइलसँगै समावेश गर्नेछ।
[`notebook-papers.ipynb`](notebook-papers.ipynb) खोल्नुहोस् र माथिदेखि तलसम्म पढ्नुहोस्। तपाईंले सेलहरू चलाउन सक्नुहुन्छ, र अन्त्यमा हामीले तपाईंका लागि छोडेका केही चुनौतीहरू गर्न सक्नुहुन्छ।
[`notebook-papers.ipynb`](notebook-papers.ipynb) खोल्नुहोस् र शीर्षबाट तलसम्म पढ्नुहोस्। तपाईं सेल्लहरू पनि चलाउन सक्नुहुन्छ र अन्त्यमा हामीले राखेका केही चुनौतीहरू गर्न सक्नुहुन्छ।

## छवि डाटा प्रशोधन
## छवि डेटा प्रशोधन
हालै, धेरै शक्तिशाली AI मोडेलहरू विकास भएका छन् जसले छविहरूलाई बुझ्न अनुमति दिन्छ। धेरै कार्यहरू छन् जुन पूर्व-प्रशिक्षित न्युरल नेटवर्कहरू वा क्लाउड सेवाहरू प्रयोग गरेर समाधान गर्न सकिन्छ। केही उदाहरणहरू समावेश छन्:
भर्खरै, अत्यन्त शक्तिशाली AI मोडेलहरू विकास भएका छन् जसले हामीलाई तस्बिरहरू बुझ्न मद्दत गर्छ। धेरै कार्यहरू पूर्व-प्रशिक्षित न्यूरल नेटवर्कहरू वा क्लाउड सेवाहरू प्रयोग गरेर समाधान गर्न सकिन्छ। केही उदाहरणहरू यस्ता छन्:
* **छवि वर्गीकरण**, जसले तपाईंलाई छविलाई पूर्व-परिभाषित वर्गहरू मध्ये एकमा वर्गीकृत गर्न मद्दत गर्न सक्छ। तपाईं [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) जस्ता सेवाहरू प्रयोग गरेर सजिलै आफ्नै छवि वर्गीकरणकर्ता प्रशिक्षण गर्न सक्नुहुन्छ।
* **वस्तु पहिचान** छविमा विभिन्न वस्तुहरू पत्ता लगाउन। [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) जस्ता सेवाहरूले धेरै सामान्य वस्तुहरू पत्ता लगाउन सक्छन्, र तपाईं [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) मोडेललाई केही विशिष्ट चासोका वस्तुहरू पत्ता लगाउन प्रशिक्षण दिन सक्नुहुन्छ।
* **अनुहार पहिचान**, जसमा उमेर, लिङ्ग र भावना पहिचान समावेश छ। यो [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) मार्फत गर्न सकिन्छ।
* **छवि वर्गीकरण**, जसले तपाईंलाई तस्बिरलाई पूर्व-निर्धारित वर्गहरूमध्ये एकमा वर्गीकरण गर्न मद्दत गर्दछ। तपाईं सजिलै आफ्नो तस्बिर वर्गीकरणकर्ता प्रशिक्षण गर्न सक्नुहुन्छ जस्तै [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) सेवाहरू प्रयोग गरेर
* **वस्तु पहिचान** तस्बिरमा फरक वस्तुहरू पत्ता लगाउन। [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) जस्ता सेवाले धेरै सामान्य वस्तुहरू पत्ता लगाउन सक्छ, र तपाईंले [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) मोडेललाई केही विशेष चासोका वस्तुहरू पत्ता लगाउन तालिम दिन सक्नुहुन्छ।
* **चेहरा पहिचान**, जसमा उमेर, लिङ्ग र भावना पहिचान समावेश छ। यो [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) मार्फत गर्न सकिन्छ।
यी सबै क्लाउड सेवाहरू [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) प्रयोग गरेर कल गर्न सकिन्छ, र यसैले तपाईंको डाटा अन्वेषण कार्यप्रवाहमा सजिलै समावेश गर्न सकिन्छ।
ती सबै क्लाउड सेवाहरूलाई [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) प्रयोग गरेर कल गर्न सकिन्छ, र यसैले यो तपाईंको डेटा अन्वेषण कार्यप्रवाहमा सजिलै समावेश गर्न सकिन्छ।
यहाँ छवि डाटा स्रोतहरूबाट डाटा अन्वेषणका केही उदाहरणहरू छन्:
* ब्लग पोस्ट [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) मा हामी Instagram फोटोहरू अन्वेषण गर्छौं, मानिसहरूले फोटोमा बढी लाइक दिन के बनाउँछ बुझ्न प्रयास गर्दै। हामीले [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) प्रयोग गरेर तस्बिरहरूबाट सकेसम्म धेरै जानकारी निकाल्छौं, र त्यसपछि [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) प्रयोग गरेर व्याख्यात्मक मोडेल निर्माण गर्छौं।
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) मा हामी [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) प्रयोग गरेर घटनाहरूको तस्बिरमा व्यक्तिहरूको भावनाहरू निकाल्छौं, मानिसहरूलाई खुशी बनाउने के हो बुझ्न प्रयास गर्दै।
यहाँ छवि डेटा स्रोतहरूबाट डेटा अन्वेषण गर्ने केहि उदाहरणहरू छन्:
* ब्लग पोस्ट [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) मा हामी Instagram फोटोहरू अन्वेषण गर्छौं, बुझ्न प्रयास गर्दै कि मानिसहरुले फोटोमा बढी लाइक किन दिन्छन्। हामी सबैभन्दा पहिले [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) प्रयोग गरेर तस्बिरहरूबाट सकेसम्म धेरै जानकारी निकाल्छौं, र त्यसपछि [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) प्रयोग गरेर व्याख्यात्मक मोडेल बनाउँछौं।
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) मा हामी [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) प्रयोग गरेर कार्यक्रमहरूबाट रहेका मानिसहरूका फोटोहरूमा भावनाहरू निकाल्छौं, जसले केले मानिसहरूलाई खुशी बनाउँछ बुझ्ने प्रयास गर्दछ।
## निष्कर्ष
चाहे तपाईंसँग संरचित वा असंरचित डाटा होस्, Python प्रयोग गरेर तपाईं डाटा प्रशोधन र बुझाइसँग सम्बन्धित सबै चरणहरू प्रदर्शन गर्न सक्नुहुन्छ। यो सम्भवतः डाटा प्रशोधनको सबैभन्दा लचिलो तरिका हो, र यही कारणले अधिकांश डाटा वैज्ञानिकहरूले Python लाई आफ्नो प्राथमिक उपकरणको रूपमा प्रयोग गर्छन्। यदि तपाईं आफ्नो डाटा विज्ञान यात्रा गम्भीरतापूर्वक लिन चाहनुहुन्छ भने Python गहिरो रूपमा सिक्नु राम्रो विचार हो!
तपाईं सङरचित वा गैर-संरचित डेटा दुबै भए तापनि, Python प्रयोग गरेर तपाईंले डेटा प्रशोधन र बुझाइसँग सम्बन्धित सबै चरणहरू गर्न सक्नुहुन्छ। यो सम्भवतः सबैभन्दा लचिलो डेटा प्रशोधन विधि हो, र यस्तै कारणले डेटा वैज्ञानिकहरुको बहुलांशले Python लाई प्रमुख उपकरणका रूपमा प्रयोग गर्छन्। यदि तपाईं आफ्नो डेटा विज्ञान यात्रा गम्भीरतापूर्वक लिनुहुन्छ भने, Python गहिरो रूपमा सिक्न राम्रो विचार हुन सक्छ!
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
* [Python मा पहिलो कदम चाल्नुहोस्](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) मा सिक्ने मार्ग।
* [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) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं।