> For the complete documentation index, see [llms.txt](https://ds.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ds.howtocode.dev/mean-median-mode.md).

# গড়, মধ্যক, প্রচুরক

**mean** কে অনেকেই গড় নামেই চিনে থাকবেন। খুব সহজ - যতগুলো এলিমেন্ট নিয়ে কাজ করা হচ্ছে সেগুলোর যোগফলকে মোট এলিমেন্ট সংখ্যা দিয়ে ভাগ করলেই গড় পাওয়া যায়।

```python
a = np.array([10, 5, 12, 3])
np.mean(a)
```

```
7.5
```

অর্থাৎ,![$\frac{10+5+12+3}{4} = 7.5$](https://render.githubusercontent.com/render/math?math=\frac{10%2B5%2B12%2B3}{4}%20%3D%207.5\&mode=inline)

```
a = np.array([[1, 2], [3, 4]])
np.mean(a, axis=1)
```

```
array([ 1.5,  3.5])
```

অর্থাৎ, প্রথমে 1 ও 2 এর গড় এবং তারপর 3 ও 4 এর গড় করে আরেকটা অ্যারে তে জমা করা হয়েছে। numpy ব্যবহার না করলে এখানে লুপ, যোগ, ভাগ সহ বেশ কিছু কোড লিখতে হত।

**median** বা মধ্যক হচ্ছে কিছু ক্রমানুসারে সাজানো এলিমেণ্টের মাঝখানের ভ্যালুটি অথবা মাঝখানে একাধিক ভ্যালু হলে তাদের সাধারণ গড় মানটি

```
a = np.array([10, 14, 4, 7, 9, 12, 15])
np.median(a)              # 4, 7, 9, 10, 12, 14, 15. এখানে 10 median
```

```
10.0
```

উপরের অ্যারের mean -ও বের করে দেখি,

```
a = np.array([10, 14, 4, 7, 9, 12, 15])
np.mean(a)
```

```
10.142857142857142
```

**mode** বা প্রচুরক হচ্ছে কোন ডাটা কালেকশনে যে এলিমেন্টটি সবচেয়ে বেশি সংখ্যক বার থাকে সেটা

Mode কে বলা যেতে পারে সর্বাধিক জ্নপ্রিয় অপশন। নিচের কালেকশনটি লক্ষ করুন, ১০ জন লোক বাড়ি ফিরতে কোন পরিবহন ব্যাবহার করে সেটা দেয়া আছে। transport= {Bus, Train, Car, Bus, Bus, Tram, Car, Bus, Tram, Bus} এখানে সবচেয়ে কমন পরিবহন হচ্ছে বাস। সবচেয়ে বেশি সংখ্যক (৫ জন) মানুষ বাস ব্যাবহার করে। অ্থাৎ এখানে Mode= Bus

```
from scipy import stats # এটি আরেকটি প্রয়োজনীয় লাইব্রেরী
a = np.array([10, 14, 4, 7, 9, 12, 4, 15]) # 4 এর উপস্থিতি বেশি
stats.mode(a)
```

```
ModeResult(mode=array([4]), count=array([2]))
```

## mean থাকতে আবার median কেন?

মাঝে মাঝে কোন একটা ডাটা সেটের mean তার সঠিক/বাস্তবিক গড় প্রকাশ করে না। যেমন - নিচে কিছু লোকের বয়সের একটা অ্যারে আছে এবং এর mean এসেছে 33.84. এটা যথেষ্ট লজিক্যাল একটা ভিউ দিচ্ছে ডাটা সেট সম্পর্কে।

```
ages = np.array([30, 30, 30, 20, 20, 45, 35, 35, 30, 40, 40, 40, 45])
np.mean(ages)
```

```
33.846153846153847
```

কিন্তু ধরা যাক, সেই ডাটা সেটের মধ্যে একজন মাত্র অতিবৃদ্ধ লোকের বয়স যুক্ত করা হল যার বয়স 120 বছর। এতে করেই এই ডাটা সেটের mean বেড়ে গিয়ে হয়ে গেলো 40 যা একদমই এই সেটের বাস্তবিক গ্রহণযোগ্য ভিউকে রীতিমত বদলে ফেলেছে।

```
ages = np.array([30, 30, 30, 20, 20, 45, 35, 35, 30, 40, 40, 40, 45, 120])
np.mean(ages)
```

```
40.0
```

আবার এই অবস্থাতেও উক্ত সেটের median আসছে 35 অর্থাৎ একটা অসঙ্গতি পূর্ণ ডাটা এলিমেন্ট যুক্ত হবার পরেও median দিয়ে গড়ের একটা সঠিক ওভারভিউ পাওয়া যাচ্ছে। এরকম ক্ষেত্রে median উপকারী।

```
ages = np.array([30, 30, 30, 20, 20, 45, 35, 35, 30, 40, 40, 40, 45, 120])
np.median(ages)
```

```
35.0
```
