Ответ
В анализе данных я использую разные меры центральной тенденции в зависимости от распределения и типа данных:
1. Среднее арифметическое (Mean) — для нормально распределенных данных без выбросов:
import numpy as np
salaries = [50000, 55000, 60000, 65000, 70000]
mean_salary = np.mean(salaries) # 60000
# В pandas:
import pandas as pd
df = pd.DataFrame({'salary': salaries})
mean_pandas = df['salary'].mean()
2. Медиана (Median) — моя основная мера при наличии выбросов:
# Пример с выбросом (CEO зарплата)
salaries_with_outlier = [50000, 55000, 60000, 65000, 70000, 1000000]
median_salary = np.median(salaries_with_outlier) # 62500.0
mean_salary = np.mean(salaries_with_outlier) # 205833.33 (искажено!)
3. Мода (Mode) — для категориальных данных или поиска наиболее частых значений:
from statistics import mode
product_categories = ['A', 'B', 'A', 'C', 'A', 'B', 'A']
most_common = mode(product_categories) # 'A'
# Для нескольких мод:
from scipy import stats
values = [1, 2, 2, 3, 3, 4]
modes_result = stats.mode(values) # ModeResult(mode=2, count=2)
4. Средневзвешенное (Weighted Mean) — когда наблюдения имеют разную значимость:
grades = [85, 90, 78, 92]
weights = [0.2, 0.3, 0.3, 0.2] # Веса экзаменов
weighted_mean = np.average(grades, weights=weights) # 86.3
# Практический пример - средняя цена с учетом количества продаж:
prices = [100, 200, 300]
quantities = [10, 5, 2]
avg_price = np.average(prices, weights=quantities) # 152.94
5. Усеченное среднее (Trimmed Mean) — компромисс между средним и медианой:
from scipy import stats
data_with_outliers = [10, 12, 13, 14, 15, 1000] # 1000 - выброс
trimmed_mean = stats.trim_mean(data_with_outliers, 0.1) # Игнорируем 10% с каждого края
Мой подход к выбору:
- Нормальное распределение без выбросов → среднее арифметическое
- Наличие выбросов → медиана (особенно для зарплат, цен недвижимости)
- Категориальные данные → мода
- Взвешенные данные → средневзвешенное (например, индексы, средние оценки)
- Сомнительные данные → смотрю все меры и сравниваю
В отчетах я всегда указываю, какую меру использовал и почему, особенно если данные могут содержать выбросы.