К другим статьям

Pandas для ЕГЭ по информатике: работаем с таблицами без паники

39

Поделиться
Фон

Делимся разбором самых сложных заданий в Телеграм канале

Перейти в ТГ

изображение

** изображение создано или обработано с помощью ИИ.

Почему Pandas, а не Excel для табличных задач ЕГЭ?

Что такое Pandas и DataFrame в контексте ЕГЭ

Pandas — это мощная библиотека для анализа и обработки данных в Python. Для ЕГЭ по информатике это инструмент, который позволяет полностью автоматизировать рутинную обработку таблиц в заданиях 3, 9, 22 или 26. Ручная работа с фильтрами заменяется несколькими строками лаконичного кода: один раз нужно описать задачу, а вычисления выполняются программно, без ошибок, связанных с усталостью или невнимательностью.

Центральное понятие библиотеки — DataFrame (датафрейм). Это программный аналог листа в Excel или таблицы в базе данных. DataFrame представляет собой двумерную структуру с пронумерованными строками и именованными колонками. При загрузке экзаменационного CSV или Excel-файла через встроенные инструменты Pandas данные автоматически превращаются в таблицу, готовую к мгновенному анализу.

Ключевое отличие от электронных таблиц — в подходе к обработке. В Excel приходится формулы протягивать вручную через тысячи строк, что всегда повышает риск случайно сбить фильтр, пропустить ячейку или исказить значение. Pandas предлагает автоматизацию вычислений на уровне всего столбца. Команда для группировки, фильтрации или математического подсчёта применяется ко всей таблице сразу.

Это существенно меняет логику работы на экзамене: вместо оператора электронных таблиц человек выступает в роли программиста-аналитика, полностью контролирующего данные посредством кода.

Как установить и импортировать библиотеку без паники

Подключение Pandas в рабочую среду состоит из двух простых шагов. Библиотека устанавливается на компьютер один раз, а затем подключается в начале программы. Для установки в терминале операционной системы выполняется стандартная команда: pip install pandas. В некоторых сборках, например Anaconda, эта библиотека уже идет из коробки, и дополнительная установка не требуется.

Важное предупреждение для ЕГЭ: На реальном экзамене на компьютере может быть установлена базовая версия Python без сторонних библиотек. Обязательно заранее проверьте наличие Pandas на компьютерах в ППЭ (пункте проведения экзамена) во время пробных экзаменов. Если библиотеки нет, придется решать табличные задачи классическими методами — через Excel или встроенный модуль openpyxl / встроенную обработку строк.

Импорт библиотеки выполняется в первой строчке скрипта: import pandas as pd. Сокращение pd — это общепринятое в мировом ИТ-сообществе обозначение. При вызове функций через pd.имя_функции() интерпретатор Python понимает, что нужно обратиться именно к возможностям Pandas. Для быстрой проверки корректности настройки можно вывести в консоль текущую версию: print(pd.__version__). Если на экране отобразился номер версии, библиотека полностью готова к работе.

Как загрузить таблицу и не упасть в осадок от ошибок?

изображение

** изображение создано или обработано с помощью ИИ.

При открытии экзаменационного файла с данными можно столкнуться со странными ошибками или некорректным отображением символов. Встроенная функция read_csv и быстрая проверка через df.head() позволяют мгновенно оценить структуру данных и исправить проблемы с кодировкой.

Чтение CSV и Excel: read_csv и не только

Наиболее распространённый формат табличных данных в файлах ФИПИ — это CSV. Для его открытия используется команда: pd.read_csv(‘файл.csv’). Если скрипт и файл лежат в разных папках, Python выдаст ошибку FileNotFoundError. Чтобы этого избежать, нужно сохранять python-скрипт в ту же папку, куда скачивались экзаменационные материалы.

Иногда данные в файлах ЕГЭ разделены не запятыми, а точкой с запятой. В таком случае к функции применяется обязательный параметр sep (сепаратор): pd.read_csv(‘данные.csv’, sep=’;’). Если вместо нормального русского текста в консоли отображаются странные иероглифы (кракозябры), добавьте параметр кодировки: encoding=’utf-8′ или encoding=’cp1251′.

Для открытия классических файлов Excel (.xlsx) существует родственная функция pd.read_excel(), в которой можно выбрать конкретную страницу таблицы через параметр sheet_name.

Первичный осмотр: df.head(), info() и describe()

После успешной загрузки таблицы первая обязательная команда — df.head(). Она выводит первые 5 строк датафрейма, позволяя визуально оценить структуру: правильно ли загрузились заголовки столбцов и нет ли явных пропусков.

Для более подробной диагностики структуры используется метод df.info(). Он показывает типы данных в каждом столбце (числа, строки, логические переменные) и количество непустых значений. Если в колонке должно быть 1000 строк, а метод показывает только 800 непустых значений, значит, 200 ячеек содержат пропуски (NaN), которые нужно обработать перед расчётами.

Для числовых колонок очень полезен метод df.describe(). Он моментально выдаёт ключевые статистические показатели: среднее значение (mean), минимум, максимум и медиану. Если, к примеру, максимальная стоимость товара в задании 3 составляет миллион рублей при средних ценах в сто рублей, это может указывать на аномалию или скрытый выброс, который важно учесть при фильтрации.

Как фильтровать данные и вычислять агрегаты для ответа на ЕГЭ?

изображение

** изображение создано или обработано с помощью ИИ.

При работе с большой таблицей (например, с результатами тестирования всех школ региона в задании 9) вам необходимо быстро найти учеников с баллом выше 80 по информатике и вычислить их средний результат. Ручной перебор тысяч строк в Excel занимает драгоценные минуты. Pandas решает эту задачу за пару секунд.

Фильтрация строк: булевы маски и df.loc

Основа быстрой фильтрации данных по любому условию — это так называемая булева маска. Внутри квадратных скобок датафрейма создаётся логическое условие, которое возвращает True для подходящих строк и False для всех остальных.

Например, для поиска учеников с баллами выше 80 код выглядит так: df[df[‘Балл’] > 80]. Pandas мгновенно проходит по всему столбцу и оставляет только те строки, где условие выполнилось. При этом исходная таблица не изменяется — создаётся новый удобный срез под конкретную задачу.

Для построения сложных условий используются логические операторы & (знак И) и | (знак ИЛИ). Например, если в задаче требуется найти товары с ценой от 5000 до 10000 рублей, фильтр запишется следующим образом: df[(df[‘Цена’] >= 5000) & (df[‘Цена’] <= 10000)]. Обратите внимание: каждое отдельное условие обязательно должно быть обёрнуто в круглые скобки, иначе Python нарушит приоритет операторов и выдаст ошибку.

Для выборки по названиям индексов или строк применяется метод df.loc. В отличие от метода iloc, который работает строго по порядковым номерам позиций (0, 1, 2), loc опирается на текстовые или числовые метки заголовков. Если в качестве индекса таблицы выступают даты, то команда df.loc[‘2026-01-01′:’2026-06-01’] вернёт ровно полугодовой отрезок данных, причем обе границы среза будут включены в результат.

Агрегация: sum(), mean(), count() и их друзья

После фильтрации данных, как правило, требуется получить итоговую цифру для ответа на задачу. Для этого применяются базовые агрегирующие функции Pandas: метод sum() вычисляет сумму, mean() находит среднее арифметическое, а count() подсчитывает количество заполненных, непропущенных значений. Например, команда df[‘Баллы’].mean() моментально выдаст средний балл по всей отфильтрованной таблице, а df[‘Вес’].sum() за долю секунды вычислит общую массу всех подходящих по условию объектов.

На сгруппированных данных мощно раскрывается связка groupby + агрегация. Например, короткая строчка кода df.groupby(‘Класс’)[‘Рост’].mean() возвращает средний рост учеников отдельно для каждого класса таблицы. Этот код читается последовательно, как на человеческом языке: сгруппировать таблицу по столбцу Класс, взять из получившихся групп колонку Рост и посчитать для каждой из них среднее арифметическое.

Метод agg() незаменим, когда в рамках одной задачи нужно применить сразу несколько математических функций за один проход. В него передаётся список нужных операций: df.groupby(‘Город’)[‘Продажи’].agg([‘sum’, ‘mean’, ‘count’]). В результате Pandas выдаст аккуратную сводную таблицу, где для каждого города будут вычислены общая выручка, средний чек и точное количество совершенных покупок.

Скользящие и кумулятивные операции: expanding и running max

Иногда в экзаменационных заданиях (например, при анализе ежеминутных показаний датчиков температуры) требуется увидеть динамику накопления показателей, а не одну статичную цифру. Расширяющееся среднее, которое вызывается методом expanding(), считает среднее значение не по всей колонке сразу, а последовательно от первой строки к текущей, на каждом шаге возрастания захватывая всё больше данных. Например, команда df[‘Температура’].expanding().mean() наглядно показывает, как менялась усреднённая картина дня с каждым новым зарегистрированным измерением.

Кумулятивный максимум (или running max) задаётся методом cummax(), который фиксирует и запоминает рекордное значение на каждом шагу движения по таблице. Например, df[‘Пульс’].cummax() оставит в каждой строке максимальный пульс, который был достигнут с самого начала наблюдения за пациентом до текущего момента.

Важно помнить, что тип данных pd.Series, возвращаемый после выполнения функций expanding() или cummax(), остаётся полноценным объектом Pandas. Это значит, что из него можно математически вычитать исходные данные, сравнивать его с другими столбцами или фильтровать. Если в задаче ЕГЭ нужно найти конкретный момент времени, где текущее значение впервые превысило скользящую норму, комбинация этих методов с булевой маской мгновенно даст точный ответ.

Как группировать данные и ранжировать значения без паники?

При обработке результатов экзаменов или анализе больших баз данных необходимо не просто просмотреть сухие числа, а определить: кто стал лучшим в своём классе, насколько выросли цены в каждой отдельной категории товаров или как именно меняется температура воздуха по месяцам. Pandas предоставляет для этого лаконичные инструменты группировки и ранжирования.

Группировка с groupby(): считаем статистику по категориям

Метод groupby() разбивает DataFrame на отдельные изолированные группы по уникальным значениям в выбранной колонке. Это позволяет за секунду сворачивать огромные таблицы из тысяч строк в емкие аналитические сводки.

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

Например, общая сумма продаж по каждому конкретному товару вычисляется одной строчкой:

df.groupby(‘Товар’)[‘Сумма’].sum()

Это позволяет сразу определить, какие товары приносят гипотетическому бизнесу наибольший доход. В заданиях ЕГЭ нередко нужно рассчитать несколько различных показателей для каждой группы. С этой целью используется метод agg(), принимающий словарь, в котором для каждой колонки указан собственный список операций.

Средний чек и точное количество заказов для каждого магазина

df.groupby(‘Магазин’).agg({‘Чек’: ‘mean’, ‘ID_заказа’: ‘count’})

Группировка данных по признакам превращает хаотичные исходные файлы ФИПИ в осмысленный структурированный отчёт. Эта техника лежит в основе эффективного решения комплексных аналитических заданий.

Ранжирование и сортировка: rank() и sort_values()

После нахождения итоговых сумм по группам критически важно определить порядковое место каждого элемента внутри группы или в общей таблице. Если в задании требуется присвоить каждому ученику его точную позицию в рейтинге школы, применяется метод rank(), который возвращает числовую позицию каждого объекта в Series.

Параметры функции rank() определяют способ математической обработки одинаковых значений. Если у двух учеников в таблице совпал итоговый балл, стандартный метод average присвоит им среднее арифметическое место (например, оба получат ранг 1.5). Метод min даст высшее из возможных мест (оба ученика станут первыми, а следующий за ними получит ранг 3.0). В задачах ЕГЭ следует внимательно читать условие, чтобы выбрать правильный способ обработки совпадений.

Посмотрим на работу методов на примере:

  1. import pandas as pd
  2. оценки = pd.Series([5, 5, 4, 3])

# При методе average два отличника получат ранг 1.5

print(оценки.rank(method=’average’))

# При методе min оба отличника будут первыми и получат ранг 1.0

print(оценки.rank(method=’min’))

После расстановки рангов таблицу можно отсортировать методом df.sort_values(by=’Имя_столбца’), который выстраивает строки по возрастанию или по убыванию (при параметре ascending=False) выбранного столбца. Сочетание агрегации, ранжирования и сортировки позволяет применять мощные статистические методы в анализе данных прямо во время экзамена.

Как создавать новые столбцы и менять структуру DataFrame?

изображение

** изображение создано или обработано с помощью ИИ.

При работе с реальным экзаменационным датасетом возможны ситуации, когда баллы за первую и вторую часть экзамена лежат в разных столбцах, некоторые ячейки пусты, а в графе ФИО присутствуют дубликаты. Для приведения данных в идеальный порядок необходимо освоить трансформацию таблиц.

Создание и переименование колонок

Создание новой колонки в Pandas выполняется интуитивно через квадратные скобки: df[новый_столбец] = формула. Если в исходных колонках с именами score_1 и score_2 лежат числа, итоговый балл по каждому ученику вычисляется элементарно:

df[‘total_score’] = df[‘score_1’] + df[‘score_2’]

Pandas автоматически пройдет по каждой строке таблицы и сложит значения из указанных столбцов. Если логика расчёта сложнее простого сложения (например, требуется начислить дополнительные баллы только тем, кто решил сложную задачу повышенного уровня), применяется комбинация метода apply() и lambda-функции:

df[‘bonus’] = df.apply(lambda row: row[‘score_hard’] * 1.5 if row[‘score_hard’] > 80 else 0, axis=1)

Конструкция lambda row: последовательно обрабатывает каждую строку (параметр axis=1 указывает, что мы движемся по строкам, а не по столбцам) по заданному условию. Если исходные названия колонок в файле кажутся неудобными или непонятными, их легко изменить методом rename().

В него передаётся словарь, где ключ — это старое имя, а значение — новое: df.rename(columns={‘s1’: ‘Тестовая_часть’, ‘s2’: ‘Развернутый_ответ’}, inplace=True). Параметр inplace=True указывает, что изменения нужно внести прямо в текущую таблицу, не создавая её копию.

Удаление дубликатов и невалидных значений

Данные редко приходят идеальными. В них встречаются пустоты или копии записей. Перед построением графиков или расчётом среднего балла выполняется очистка. Если строка ученика задвоилась, команда drop_duplicates() удаляет лишнее. Она сравнивает все ячейки и оставляет только первое вхождение.

Следующая проблема — пропуски в важных полях, например если не вписан результат за сочинение. Оставлять пустоту нежелательно: расчёт с пропуском может исказить статистику. Основной инструмент — метод dropna(), который удаляет строки с пустыми значениями. Если удаление нежелательно, применяется fillna(). Пропуски заполняются средним значением или медианой:

  1. median_score = df[‘score_1’].median()
  2. df[‘score_1’] = df[‘score_1’].fillna(median_score)

Это позволяет сохранить данные для анализа. Чистая структура обеспечивает точность итоговых выводов.

Типовые сценарии ЕГЭ: от разбора демо-версии до реальной задачи

Разбор демонстрационного варианта с таблицей

Типовая аналитическая задача ЕГЭ может включать таблицу на несколько тысяч строк. Рассмотрим сценарий из демо-версии: есть файл students.csv с результатами тестирования по нескольким предметам. Требуется отобрать учеников, сдавших профильную математику выше 70 баллов, посчитать их средний балл по информатике и отдельно вывести количество таких учеников для каждого района школы.

Это три логических шага, выполняемых за секунды. Суть алгоритмов обработки таблиц — превращение рутинной работы в автоматизированное вычисление.

Сначала загружаются данные и выполняется отбор:

  1. import pandas as pd
  2. df = pd.read_csv(‘students.csv’)

# Оставляем только тех, кто перешагнул порог по профильной математике

математики = df[df[‘math_score’] > 70]

Строки не удаляются вручную, а создаётся срез датафрейма по условию. Это фильтрация через булеву маску — последовательность значений истина/ложь, которая отбирает подходящие записи.

Далее выполняется группировка и агрегация:

Группируем отфильтрованных учеников по району и считаем статистики

результат = математики.groupby(‘district’).agg(avg_info_score=(‘info_score’, ‘mean’), students_count=(‘student_id’, ‘count’)).reset_index()

Метод .agg() позволяет одной командой получить и средний балл (mean), и количество записей (count). Ответ готов без ручного калькулятора и сортировок.

Преимущество такого подхода для ЕГЭ — прозрачность. Промежуточный результат можно вывести через математики.head() и проверить корректность отбора. Если в задаче требуется найти конкретное число для района Центральный, к готовому ответу добавляется .query(«district == ‘Центральный'»).

Визуализация для самопроверки (опционально)

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

Pandas позволяет построить график:

результат.plot(kind=’bar’, x=’district’, y=’avg_info_score’)

Эта команда строит столбчатую диаграмму, где видно, какой район лидирует и нет ли подозрительных цифр вроде среднего балла 999. В таблице такое число легко пропустить. График позволяет выявить аномалию. Этот этап не обязателен, но он даёт уверенность в правильности решения.

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

Можно ли использовать Pandas на реальном ЕГЭ по информатике?

Да, технически среда разработки на экзамене поддерживает Python и библиотеку Pandas, но только в том случае, если она предустановлена организаторами в составе дистрибутива (например, в составе Anaconda). Обязательно проверяйте этот момент заранее.

Что делать, если вылетает ошибка KeyError при фильтрации?

Следует проверить регистр и точность написания названия столбца в списке df.columns. Вероятно, имя колонки написано с опечаткой, перепутан язык ввода или строка содержит скрытые концевые пробелы.

Чем Series отличается от DataFrame в Pandas?

Series — это одномерный массив с индексами, по сути, один изолированный столбец таблицы. DataFrame — это полноценная двумерная табличная структура данных, состоящая из нескольких склеенных Series.

Как быстро посчитать среднее значение по столбцу?

Используется короткая команда df[‘имя_столбца’].mean(). Для нахождения среднего значения по отдельным группам применяется конструкция df.groupby(‘категория’)[‘значение’].mean().

Как отсортировать таблицу по убыванию значений?

Применяется метод df.sort_values(by=’Название_колонки’, ascending=False). Параметр ascending=False как раз отключает сортировку по умолчанию (по возрастанию).

Что такое кумулятивный максимум и где он применяется в ЕГЭ?

Это скользящий максимум, вызываемый методом cummax(). Он фиксирует максимальное значение на каждом последовательном шаге просмотра данных. Используется в задачах на анализ временных рядов или накопление физических показателей датчиков.

Как удалить строки с пустыми значениями в таблице?

Для этого выполняется функция df.dropna(). Если же требуется полностью очистить таблицу от дублирующихся строк, используется родственный метод df.drop_duplicates().

В онлайн-школе ЕГЭLAND преподаватели информатики помогают выстроить систему подготовки: разбирают все темы кодификатора, учат работать с заданиями по критериям ФИПИ и отрабатывают навыки на реальных экзаменационных материалах. Записаться на пробное занятие можно на сайте школы.

Фон

Хочешь начать готовиться, но остались вопросы?

Заполни форму, и мы подробно объясним, как устроена подготовка к ЕГЭ и ОГЭ в ЕГЭLAND

Саша Филатов

    Фон

    Сегодня В 23:59 ЗАКРЫТИЕ

    НАБОРА НА ГОДОВОЙ КУРС

    -1000р по промокоду ВЛЕТАЮ

    Выбрать предмет