РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
163 of 818 menu

Класс Variance

Класс Variance применяется в агрегации и аннотации QuerySet для вычисления дисперсии числовых значений поля. Дисперсия показывает, насколько сильно значения отклоняются от среднего арифметического. Класс принимает выражение для агрегации и возвращает объект, который можно использовать с методами aggregate и annotate. По умолчанию вычисляется дисперсия выборки, но можно указать вычисление дисперсии генеральной совокупности с помощью параметра sample=False.

Синтаксис

Variance(expression, sample=True, **extra)

Параметры:

  • expression - выражение (обычно имя поля модели), для которого вычисляется дисперсия;
  • sample=True - если True, вычисляется дисперсия выборки (деление на n-1), если False - дисперсия генеральной совокупности (деление на n);
  • **extra - дополнительные параметры, такие как output_field или filter.

Пример . С агрегацией

Рассмотрим модель Article с полем rating и вычислим дисперсию рейтингов всех статей:

from django.db.models import Variance from myapp.models import Article res = Article.objects.aggregate(rating_variance=Variance('rating')) print(res)

Результат выполнения кода:

{"rating_variance": 2.5}

Пример . С аннотацией

Аннотируем каждую категорию значением дисперсии рейтингов статей в ней:

from django.db.models import Variance from myapp.models import Category categories = Category.objects.annotate(rating_variance=Variance('articles__rating')) for category in categories: print(category.name, category.rating_variance)

Результат выполнения кода:

"Technology 0.8" "Science 1.2"

Пример . С дисперсией генеральной совокупности

Вычислим дисперсию для всей генеральной совокупности, установив параметр sample=False:

from django.db.models import Variance from myapp.models import Article res = Article.objects.aggregate( population_variance=Variance('rating', sample=False) ) print(res)

Результат выполнения кода:

{"population_variance": 2.0}

Пример . С фильтрацией

Вычислим дисперсию рейтингов только для опубликованных статей:

from django.db.models import Variance, Q from myapp.models import Article res = Article.objects.filter( Q(status='published') ).aggregate(published_variance=Variance('rating')) print(res)

Результат выполнения кода:

{"published_variance": 1.8}

Смотрите также

  • класс StdDev,
    который вычисляет стандартное отклонение значений
  • класс Avg,
    который вычисляет среднее арифметическое значений
  • класс Sum,
    который вычисляет сумму значений
  • класс Count,
    который подсчитывает количество объектов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить