You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

218 lines
24 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "a49d78e32e280c410f04e5f2a2068e77",
"translation_date": "2025-09-06T07:14:06+00:00",
"source_file": "3-Data-Visualization/09-visualization-quantities/README.md",
"language_code": "bn"
}
-->
# পরিমাণের ভিজ্যুয়ালাইজেশন
|![ স্কেচনোট [(@sketchthedocs)](https://sketchthedocs.dev) দ্বারা ](../../sketchnotes/09-Visualizing-Quantities.png)|
|:---:|
| পরিমাণের ভিজ্যুয়ালাইজেশন - _[@nitya](https://twitter.com/nitya) দ্বারা স্কেচনোট_ |
এই পাঠে আপনি শিখবেন কীভাবে Python-এর বিভিন্ন লাইব্রেরি ব্যবহার করে পরিমাণের ধারণা নিয়ে আকর্ষণীয় ভিজ্যুয়ালাইজেশন তৈরি করা যায়। মিনেসোটা রাজ্যের পাখিদের একটি পরিষ্কার ডেটাসেট ব্যবহার করে, আপনি স্থানীয় বন্যপ্রাণী সম্পর্কে অনেক আকর্ষণীয় তথ্য জানতে পারবেন।
## [পূর্ব-পাঠ কুইজ](https://ff-quizzes.netlify.app/en/ds/quiz/16)
## Matplotlib দিয়ে উইংসপ্যান পর্যবেক্ষণ করুন
[Matplotlib](https://matplotlib.org/stable/index.html) একটি চমৎকার লাইব্রেরি যা বিভিন্ন ধরনের সহজ এবং জটিল প্লট ও চার্ট তৈরি করতে পারে। সাধারণভাবে, এই লাইব্রেরি ব্যবহার করে ডেটা প্লট করার প্রক্রিয়াটি অন্তর্ভুক্ত করে: আপনার ডেটাফ্রেমের যে অংশটি লক্ষ্য করতে চান তা চিহ্নিত করা, প্রয়োজনীয় ডেটা রূপান্তর করা, x এবং y অক্ষের মান নির্ধারণ করা, কোন ধরনের প্লট দেখানো হবে তা সিদ্ধান্ত নেওয়া এবং তারপর প্লটটি দেখানো। Matplotlib বিভিন্ন ধরনের ভিজ্যুয়ালাইজেশন অফার করে, তবে এই পাঠে আমরা পরিমাণের ভিজ্যুয়ালাইজেশনের জন্য সবচেয়ে উপযুক্ত চার্টগুলির উপর ফোকাস করব: লাইন চার্ট, স্ক্যাটারপ্লট এবং বার প্লট।
> ✅ আপনার ডেটার কাঠামো এবং আপনি যে গল্পটি বলতে চান তার জন্য সবচেয়ে উপযুক্ত চার্ট ব্যবহার করুন।
> - সময়ের সাথে প্রবণতা বিশ্লেষণ করতে: লাইন
> - মান তুলনা করতে: বার, কলাম, পাই, স্ক্যাটারপ্লট
> - অংশগুলি পুরো সঙ্গে কীভাবে সম্পর্কিত তা দেখাতে: পাই
> - ডেটার বিতরণ দেখাতে: স্ক্যাটারপ্লট, বার
> - প্রবণতা দেখাতে: লাইন, কলাম
> - মানগুলির মধ্যে সম্পর্ক দেখাতে: লাইন, স্ক্যাটারপ্লট, বাবল
যদি আপনার কাছে একটি ডেটাসেট থাকে এবং জানতে চান একটি নির্দিষ্ট আইটেমের কতটা অন্তর্ভুক্ত রয়েছে, তাহলে আপনার প্রথম কাজ হবে তার মানগুলি পরিদর্শন করা।
✅ Matplotlib-এর জন্য খুব ভালো 'চিট শিট' [এখানে](https://matplotlib.org/cheatsheets/cheatsheets.pdf) পাওয়া যায়।
## পাখির উইংসপ্যান মান নিয়ে একটি লাইন প্লট তৈরি করুন
এই পাঠের ফোল্ডারের মূল অংশে থাকা `notebook.ipynb` ফাইলটি খুলুন এবং একটি সেল যোগ করুন।
> নোট: ডেটা এই রিপোজিটরির মূল অংশে `/data` ফোল্ডারে সংরক্ষিত রয়েছে।
```python
import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()
```
এই সট এব িরণ:
| | | ি | ি | অর | পরি | গণ | রকষণ অবস | সরবনি | সর | সরবনি শর ভর | সর শর ভর | সরবনি উইসপ | সর উইসপ |
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: |
| 0 | -ি ইসলিং | Dendrocygna autumnalis | াঁ/ি/জলপি | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
| 1 | লভ ইসলিং | Dendrocygna bicolor | াঁ/ি/জলপি | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
| 2 | ি | Anser caerulescens | াঁ/ি/জলপি | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
| 3 | রস ি | Anser rossii | াঁ/ি/জলপি | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
| 4 | ়াইট-রন ি | Anser albifrons | াঁ/ি/জলপি | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
চল ি চক একটি রণ ইন লট যবহ কর লট কর করি। ধর আপনি এই আকরষণ ি সর উইসপ একটি খত
```python
wingspan = birds['MaxWingspan']
wingspan.plot()
```
![সর উইসপ](../../../../3-Data-Visualization/09-visualization-quantities/images/max-wingspan-02.png)
আপনি রথম লক কর? অনতত একটি অসি রয়ে - এটি বড উইসপ! ২৩০০ িি উইসপ ২৩ ি - ি ি কটিলস ়াে? চল তদন করি।
যদি আপনি Excel- একটি কর এই অসি নগি ুঁ করত , সমভবত ইপ, লট িতর ি়াইজশন রকি়া ি়ে
x-অক কর ধরন ি ি়ে আলচন হচ:
```
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.xticks(rotation=45)
x = birds['Name']
y = birds['MaxWingspan']
plt.plot(x, y)
plt.show()
```
![লেবেল সহ উইংসপ্যান](../../../../3-Data-Visualization/09-visualization-quantities/images/max-wingspan-labels-02.png)
লেবেলগুলির ঘূর্ণন ৪৫ ডিগ্রি সেট করলেও, পড়ার জন্য খুব বেশি লেবেল রয়েছে। চলুন একটি ভিন্ন কৌশল চেষ্টা করি: শুধুমাত্র অস্বাভাবিক মানগুলিকে লেবেল করুন এবং লেবেলগুলি চার্টের ভিতরে সেট করুন। আপনি একটি স্ক্যাটার চার্ট ব্যবহার করতে পারেন যাতে লেবেলিংয়ের জন্য আরও জায়গা তৈরি হয়:
```python
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
plt.plot(x, y, 'bo')
if birds['MaxWingspan'][i] > 500:
plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12)
plt.show()
```
এখানে কী ঘটছে? আপনি `tick_params` ব্যবহার করে নিচের লেবেলগুলি লুকিয়েছেন এবং তারপর আপনার পাখির ডেটাসেটের উপর একটি লুপ তৈরি করেছেন। `bo` ব্যবহার করে ছোট গোলাকার নীল বিন্দু দিয়ে চার্ট প্লট করে, আপনি ৫০০-এর বেশি সর্বোচ্চ উইংসপ্যান সহ কোনও পাখি খুঁজে বের করেছেন এবং যদি থাকে তবে বিন্দুর পাশে তাদের লেবেল প্রদর্শন করেছেন। আপনি লেবেলগুলি y অক্ষের উপর একটু সরিয়ে দিয়েছেন (`y * (1 - 0.05)`) এবং পাখির নামকে লেবেল হিসাবে ব্যবহার করেছেন।
আপনি কী আবিষ্কার করেছেন?
![অস্বাভাবিক মান](../../../../3-Data-Visualization/09-visualization-quantities/images/labeled-wingspan-02.png)
## আপনার ডেটা ফিল্টার করুন
বাল্ড ঈগল এবং প্রেইরি ফ্যালকন, সম্ভবত খুব বড় পাখি, ভুলভাবে লেবেল করা হয়েছে বলে মনে হচ্ছে, তাদের সর্বোচ্চ উইংসপ্যানের সাথে একটি অতিরিক্ত `0` যোগ করা হয়েছে। ২৫ মিটার উইংসপ্যান সহ একটি বাল্ড ঈগল দেখা অসম্ভব, তবে যদি দেখা যায়, আমাদের জানাবেন! চলুন একটি নতুন ডেটাফ্রেম তৈরি করি যেখানে এই দুটি অস্বাভাবিক মান বাদ দেওয়া হয়েছে:
```python
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']:
plt.plot(x, y, 'bo')
plt.show()
```
অস্বাভাবিক মানগুলি ফিল্টার করে, আপনার ডেটা এখন আরও সংহত এবং বোধগম্য।
![উইংসপ্যানের স্ক্যাটারপ্লট](../../../../3-Data-Visualization/09-visualization-quantities/images/scatterplot-wingspan-02.png)
এখন আমাদের কাছে উইংসপ্যানের ক্ষেত্রে অন্তত একটি পরিষ্কার ডেটাসেট রয়েছে, চলুন এই পাখিদের সম্পর্কে আরও আবিষ্কার করি।
যদিও লাইন এবং স্ক্যাটার প্লট ডেটা মান এবং তাদের বিতরণ সম্পর্কে তথ্য প্রদর্শন করতে পারে, আমরা এই ডেটাসেটে অন্তর্নিহিত মানগুলি সম্পর্কে চিন্তা করতে চাই। আপনি পরিমাণ সম্পর্কে নিম্নলিখিত প্রশ্নগুলির উত্তর দিতে ভিজ্যুয়ালাইজেশন তৈরি করতে পারেন:
> এখানে কতগুলি পাখির বিভাগ রয়েছে এবং তাদের সংখ্যা কত?
> কতগুলি পাখি বিলুপ্ত, বিপন্ন, বিরল বা সাধারণ?
> লিনিয়াসের পরিভাষায় বিভিন্ন গণ এবং অর্ডারের সংখ্যা কত?
## বার চার্ট অন্বেষণ করুন
বার চার্ট ব্যবহারিক যখন আপনাকে ডেটার গ্রুপিং দেখাতে হয়। চলুন এই ডেটাসেটে বিদ্যমান পাখির বিভাগগুলি অন্বেষণ করি এবং সংখ্যার ভিত্তিতে কোনটি সবচেয়ে সাধারণ তা দেখি।
নোটবুক ফাইলে একটি সাধারণ বার চার্ট তৈরি করুন।
✅ নোট, আপনি আগের অংশে চিহ্নিত দুটি অস্বাভাবিক পাখি ফিল্টার করতে পারেন, তাদের উইংসপ্যানের টাইপো সম্পাদনা করতে পারেন, অথবা এই ব্যায়ামগুলির জন্য তাদের রেখে দিতে পারেন যা উইংসপ্যান মানের উপর নির্ভর করে না।
যদি আপনি একটি বার চার্ট তৈরি করতে চান, আপনি যে ডেটার উপর ফোকাস করতে চান তা নির্বাচন করতে পারেন। বার চার্ট কাঁচা ডেটা থেকে তৈরি করা যেতে পারে:
```python
birds.plot(x='Category',
kind='bar',
stacked=True,
title='Birds of Minnesota')
```
![সম্পূর্ণ ডেটা বার চার্ট](../../../../3-Data-Visualization/09-visualization-quantities/images/full-data-bar-02.png)
তবে এই বার চার্টটি পড়ার অযোগ্য কারণ এখানে খুব বেশি অ-গ্রুপ করা ডেটা রয়েছে। আপনাকে শুধুমাত্র সেই ডেটা নির্বাচন করতে হবে যা আপনি প্লট করতে চান, তাই চলুন পাখির বিভাগ অনুযায়ী দৈর্ঘ্য দেখুন।
আপনার ডেটা শুধুমাত্র পাখির বিভাগ অন্তর্ভুক্ত করতে ফিল্টার করুন।
✅ লক্ষ্য করুন যে আপনি Pandas ব্যবহার করে ডেটা পরিচালনা করেন এবং তারপর Matplotlib চার্টিং করে।
যেহেতু অনেক বিভাগ রয়েছে, আপনি এই চার্টটি উল্লম্বভাবে প্রদর্শন করতে পারেন এবং সমস্ত ডেটার জন্য এর উচ্চতা সামঞ্জস্য করতে পারেন:
```python
category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()
```
![বিভাগ এবং দৈর্ঘ্য](../../../../3-Data-Visualization/09-visualization-quantities/images/category-counts-02.png)
এই বার চার্টটি পাখির প্রতিটি বিভাগের সংখ্যার একটি ভালো দৃশ্য দেখায়। এক নজরে, আপনি দেখতে পারেন যে এই অঞ্চলে সবচেয়ে বেশি সংখ্যক পাখি হাঁস/গিজ/জলপাখি বিভাগে রয়েছে। মিনেসোটা '১০, হ্রদের দেশ', তাই এটি আশ্চর্যজনক নয়!
✅ এই ডেটাসেটে কিছু অন্যান্য গণনা চেষ্টা করুন। কিছু কি আপনাকে অবাক করে?
## ডেটা তুলনা করা
আপনি নতুন অক্ষ তৈরি করে গ্রুপ করা ডেটার বিভিন্ন তুলনা চেষ্টা করতে পারেন। পাখির বিভাগ অনুযায়ী পাখির সর্বোচ্চ দৈর্ঘ্যের একটি তুলনা চেষ্টা করুন:
```python
maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()
```
![ডেটা তুলনা](../../../../3-Data-Visualization/09-visualization-quantities/images/category-length-02.png)
এখানে কিছুই আশ্চর্যজনক নয়: হামিংবার্ডের সর্বোচ্চ দৈর্ঘ্য পেলিকান বা গিজের তুলনায় কম। যখন ডেটা যৌক্তিক অর্থ তৈরি করে তখন এটি ভালো!
আপনি বার চার্টের আরও আকর্ষণীয় ভিজ্যুয়ালাইজেশন তৈরি করতে পারেন ডেটা সুপারইম্পোজ করে। চলুন একটি পাখির বিভাগে সর্বনিম্ন এবং সর্বোচ্চ দৈর্ঘ্য সুপারইম্পোজ করি:
```python
minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']
plt.barh(category, maxLength)
plt.barh(category, minLength)
plt.show()
```
এই প্লটে, আপনি পাখির বিভাগের প্রতি সর্বনিম্ন দৈর্ঘ্য এবং সর্বোচ্চ দৈর্ঘ্যের পরিসর দেখতে পারেন। আপনি নিরাপদে বলতে পারেন যে, এই ডেটা অনুযায়ী, পাখি যত বড়, তার দৈর্ঘ্যের পরিসর তত বড়। চমৎকার!
![সুপারইম্পোজড মান](../../../../3-Data-Visualization/09-visualization-quantities/images/superimposed-02.png)
## 🚀 চ্যালেঞ্জ
এই পাখির ডেটাসেটটি একটি নির্দিষ্ট বাস্তুতন্ত্রের মধ্যে বিভিন্ন ধরনের পাখি সম্পর্কে প্রচুর তথ্য সরবরাহ করে। ইন্টারনেটে অনুসন্ধান করুন এবং দেখুন আপনি কি অন্য পাখি-ভিত্তিক ডেটাসেট খুঁজে পেতে পারেন। এই পাখিদের চার্ট এবং গ্রাফ তৈরি করার অনুশীলন করুন এবং এমন তথ্য আবিষ্কার করুন যা আপনি আগে জানতেন না।
## [পাঠ-পরবর্তী কুইজ](https://ff-quizzes.netlify.app/en/ds/quiz/17)
## পর্যালোচনা ও স্ব-অধ্যয়ন
এই প্রথম পাঠটি আপনাকে পরিমাণের ভিজ্যুয়ালাইজেশনের জন্য Matplotlib ব্যবহার করার বিষয়ে কিছু তথ্য দিয়েছে। ভিজ্যুয়ালাইজেশনের জন্য ডেটাসেট নিয়ে কাজ করার অন্যান্য উপায় সম্পর্কে কিছু গবেষণা করুন। [Plotly](https://github.com/plotly/plotly.py) একটি যা আমরা এই পাঠে কভার করব না, তাই এটি কী অফার করতে পারে তা দেখুন।
## অ্যাসাইনমেন্ট
[লাইন, স্ক্যাটার এবং বার](assignment.md)
---
**অস্বীকৃতি**:
এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না।