Descriptive Statistics: Mean, Median, Mode aur Standard Deviation

Lesson 15 of 26

Statistics Data Science ki buniyaad hai. Descriptive statistics ka kaam hai poore data ko kuch numbers me summarize karna: beech ki value kya hai? aur data kitna faila hua hai?

Central tendency: mean, median, mode

Ek chhoti company ke 8 employees ki salary — aakhri wala CEO hai:

Example

Python
import numpy as np
import pandas as pd

salaries = pd.Series([25000, 28000, 30000, 32000, 35000, 38000, 40000, 300000])

print("Mean:", salaries.mean())
print("Median:", salaries.median())

Output

Plain Text
Mean: 66000.0
Median: 33500.0

Mean 66 hazaar aaya, jabki 8 me se 7 log 40 hazaar ya usse kam kamaate hain! Ek bade outlier ne mean ko kheench liya. Median (beech ki value) pe outlier ka asar nahi padta — isliye salary, ghar ki keemat jaise data me median zyada sahi tasveer deta hai.

Example

Python
shoe_sizes = pd.Series([7, 8, 8, 9, 8, 10, 7, 8])
print("Mode:", shoe_sizes.mode().tolist())   # sabse common value

Output

Plain Text
Mode: [8]

Measure

Matlab

Kab use karein

Mean

Sabka jod ÷ count

Symmetric data, outliers nahi

Median

Sort karke beech ki value

Skewed data ya outliers

Mode

Sabse zyada baar aane wali value

Categories (city, size)

Spread: range, variance, standard deviation

Do classes ka average same ho sakta hai, par ek me sab 60-70 ke beech hain aur doosri me 20 se 100 tak. Is 'phailaav' ko naapte hain:

Example

Python
class_a = pd.Series([62, 65, 68, 70, 65])
class_b = pd.Series([30, 95, 50, 100, 55])

for name, marks in [("Class A", class_a), ("Class B", class_b)]:
    print(f"{name}: mean={marks.mean()}, range={marks.max() - marks.min()}, "
          f"std={marks.std():.2f}")

Output

Plain Text
Class A: mean=66.0, range=8, std=3.08
Class B: mean=66.0, range=70, std=30.29

Dono ka mean 66 hai, par Class B ka standard deviation kai guna zyada hai.

  • Variance — har value ki mean se doori ka square, uska average.
  • Standard deviation (std) — variance ka square root. Iski unit data wali hi hoti hai (marks, rupaye), isliye samajhna aasaan hai.

Dhyan dein: Pandas vs NumPy ka std

Example

Python
data = [2, 4, 4, 4, 5, 5, 7, 9]

print("Pandas std (sample, ddof=1):", round(pd.Series(data).std(), 4))
print("NumPy std (population, ddof=0):", np.std(data))
print("NumPy std with ddof=1:", round(np.std(data, ddof=1), 4))

Output

Plain Text
Pandas std (sample, ddof=1): 2.1381
NumPy std (population, ddof=0): 2.0
NumPy std with ddof=1: 2.1381

Pandas default me sample std (n−1 se divide) deta hai, NumPy population std (n se divide). Chhote data me farq dikhta hai — confuse mat hoiye.

Percentiles aur IQR

90th percentile ka matlab — 90% values isse neeche hain. Exam me "99 percentile" isi ko kehte hain:

Example

Python
rng = np.random.default_rng(3)
scores = pd.Series(rng.normal(60, 15, size=1000).round().clip(0, 100))

print(scores.quantile([0.25, 0.5, 0.75, 0.9]))
iqr = scores.quantile(0.75) - scores.quantile(0.25)
print("IQR:", iqr)

Output

Plain Text
0.25    51.0
0.50    61.0
0.75    71.0
0.90    80.0
dtype: float64
IQR: 20.0

Z-score — value average se kitni door hai

Z-score = (value − mean) ÷ std. Ye batata hai ki value mean se kitne standard deviation door hai. |z| > 3 ko aksar outlier maana jaata hai:

Example

Python
z = (scores - scores.mean()) / scores.std()
print("Score 95 ka z-score:", round((95 - scores.mean()) / scores.std(), 2))
print("|z| > 3 wale scores:", (z.abs() > 3).sum())

Output

Plain Text
Score 95 ka z-score: 2.29
|z| > 3 wale scores: 4

Skewness — distribution kis taraf jhuka hai

Example

Python
income = pd.Series(rng.lognormal(mean=10.5, sigma=0.6, size=1000))
print("Income skew:", round(income.skew(), 2))
print("Mean:", round(income.mean()), "| Median:", round(income.median()))

Output

Plain Text
Income skew: 2.78
Mean: 43603 | Median: 36757

Positive skew (right skewed) me lambi poonch daayi taraf hoti hai, aur mean > median hota hai — income data me aksar aisa hi hota hai.

Sab ek saath: describe()

Example

Python
print(scores.describe().round(2))

Output

Plain Text
count    1000.00
mean       60.55
std        15.05
min        10.00
25%        51.00
50%        61.00
75%        71.00
max       100.00
dtype: float64