0Pricing
Learn AI with Python · Урок

Одномерный анализ

Графики распределений, гистограммы, диаграммы размаха и столбчатые диаграммы для изучения отдельных признаков.

«Одномерный анализ» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Что такое одномерный анализ

Одномерный анализ рассматривает одну переменную за раз, чтобы понять её распределение: положение центра, разброс, форму и необычные значения.

Выбор подходящей диаграммы зависит от типа переменной:

  • Числовая → гистограмма, KDE, диаграмма размаха, скрипичная диаграмма
  • Категориальная → график частот (столбчатая диаграмма частот)

Настройка библиотек визуализации

Мы используем Matplotlib (plt) и Seaborn (sns). Seaborn работает поверх Matplotlib и предлагает более удачные настройки по умолчанию для статистических диаграмм.

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

sns.set_theme(style="whitegrid")
df = pd.read_csv("data.csv")

Гистограммы с помощью plt.hist

Гистограмма разбивает числовые значения на интервалы и подсчитывает, сколько значений попало в каждый из них. Она показывает общую форму распределения.

Аргумент bins управляет детализацией: слишком малое количество интервалов скрывает структуру, а слишком большое добавляет шум.

plt.hist(df["age"], bins=30, edgecolor="black")
plt.xlabel("Age")
plt.ylabel("Count")
plt.title("Age Distribution")
plt.show()

Графики KDE — сглаженная плотность

Оценка плотности ядра (sns.kdeplot) строит сглаженную кривую, приближающую распределение; её может быть легче читать, чем неровные столбцы гистограммы.

Объедините оба представления с помощью sns.histplot(..., kde=True), чтобы наложить сглаженную кривую на столбцы.

sns.kdeplot(df["age"], fill=True)
plt.show()

sns.histplot(df["age"], bins=30, kde=True)
plt.show()

Выявление асимметрии

Асимметрия измеряет отклонение распределения от симметрии. Длинный хвост вправо — это правая (положительная) асимметрия, а длинный хвост влево — левая (отрицательная) асимметрия.

Доходы, цены и количества обычно имеют правую асимметрию. Измерить её можно с помощью df[col].skew(): значения, значительно отличающиеся от 0, указывают на асимметрию.

print(df["income"].skew())   # e.g. 2.3 -> strong right skew
sns.histplot(df["income"], bins=40, kde=True)
plt.show()

Выявление бимодальности

Бимодальное распределение имеет два пика. Часто это означает, что в данных смешаны две различные группы (например, два типа товаров в одном столбце с ценами).

Графики KDE делают бимодальность очевидной — ищите два выступа. Это может указывать на скрытую категориальную переменную, объясняющую такое разделение.

sns.kdeplot(df["price"], fill=True)
plt.title("Two peaks suggest two subpopulations")
plt.show()

Диаграммы размаха с помощью sns.boxplot

Диаграмма размаха показывает медиану (центральную линию), межквартильный размах (IQR, прямоугольник) и «усы», простирающиеся примерно на 1,5 IQR. Точки за пределами усов отмечаются как выбросы.

sns.boxplot(x=df["income"])
plt.title("Income — box plot")
plt.show()

Выбросы и правило IQR

Диаграмма размаха использует правило IQR: точка является выбросом, если она расположена ниже Q1 - 1.5*IQR или выше Q3 + 1.5*IQR.

Границы можно вычислить самостоятельно, чтобы отфильтровать экстремальные значения или ограничить их.

q1 = df["income"].quantile(0.25)
q3 = df["income"].quantile(0.75)
iqr = q3 - q1
low, high = q1 - 1.5*iqr, q3 + 1.5*iqr
outliers = df[(df["income"] < low) | (df["income"] > high)]
print(len(outliers), "outliers")

Скрипичные диаграммы с помощью sns.violinplot

Скрипичная диаграмма объединяет диаграмму размаха с зеркально отражённым графиком KDE. Ширина на каждом уровне показывает плотность, поэтому Вы одновременно видите и форму распределения, и сводную статистику.

Скрипичные диаграммы отлично подходят для выявления асимметрии или бимодальности, которые обычная диаграмма размаха могла бы скрыть.

sns.violinplot(x=df["age"])
plt.title("Age — violin plot")
plt.show()

Графики частот для категориальных переменных

Для категориальных столбцов используйте sns.countplot — столбчатую диаграмму частот категорий. Это визуальное представление результата value_counts().

Для удобства чтения упорядочьте столбцы по частоте с помощью аргумента order.

order = df["city"].value_counts().index
sns.countplot(y="city", data=df, order=order)
plt.title("Records per city")
plt.show()

Выбор подходящей диаграммы для одномерного анализа

Краткое руководство по выбору:

  • Форма числового столбца → гистограмма или KDE
  • Выбросы и квартили → диаграмма размаха
  • Форма и сводная статистика вместе → скрипичная диаграмма
  • Частоты категорий → график частот

Быстрая проверка: выбор диаграммы

Вы хотите увидеть медиану, квартили и выбросы одного числового столбца.

Повторение: одномерный анализ

Вы научились исследовать одну переменную за раз:

  • plt.hist и sns.kdeplot — для изучения формы распределения
  • .skew() — для количественной оценки асимметрии; выступы на графике KDE — для выявления бимодальности
  • sns.boxplot и правило IQR — для поиска выбросов
  • sns.violinplot — для одновременного изучения формы и сводной статистики
  • sns.countplot — для анализа частот категорий

Далее мы рассмотрим связи между двумя или несколькими переменными.

Часто задаваемые вопросы

Урок «Одномерный анализ» бесплатный?

Да — полный текст урока «Одномерный анализ» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Одномерный анализ»?

Графики распределений, гистограммы, диаграммы размаха и столбчатые диаграммы для изучения отдельных признаков. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Одномерный анализ»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Рабочий процесс EDA и профилирование данных
  2. Одномерный анализ
  3. Двумерный и многомерный анализ
  4. Анализ распределения признаков и целевой переменной
← Назад к Learn AI with Python