JavaRush /Курсы /Python SELF /Подготовка данных для отчетов с помощью методов pandas

Подготовка данных для отчетов с помощью методов pandas

Python SELF
28 уровень , 3 лекция
Открыта

1. Структурирование данных для отчетов

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

Сводные таблицы: наш отчётный швейцарский нож

Сводные таблицы — это мощный способ суммирования, агрегации и представления данных, который часто используется для аналитики в Excel. В pandas мы можем легко создавать сводные таблицы с помощью метода pivot_table. Давайте взглянем на простой пример.

Представьте, что у вас есть данные о продажах в магазине:

Python

import pandas as pd

data = {
    'Продукт': ['Апельсин', 'Яблоко', 'Банан', 'Апельсин', 'Банан', 'Яблоко'],
    'Месяц': ['Январь', 'Январь', 'Январь', 'Февраль', 'Февраль', 'Февраль'],
    'Продажи': [150, 200, 250, 130, 180, 210]
}

df = pd.DataFrame(data)

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

Python

pivot_df = df.pivot_table(values='Продажи', index='Продукт', columns='Месяц', aggfunc='sum')
print(pivot_df)

Этот простой пример демонстрирует, как можно быстро агрегировать данные по категориям и датам — идеальная основа для отчётов.

2. Использование методов pandas для подготовки данных

Метод pivot_table

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

Python

pivot_mean_df = df.pivot_table(values='Продажи', index='Продукт', columns='Месяц', aggfunc='mean')
print(pivot_mean_df)

Метод crosstab

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

Python

cross_df = pd.crosstab(df['Продукт'], df['Месяц'])
print(cross_df)

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

3. Настройка отображения данных с помощью многомерных индексов

Многомерные индексы

Да, pandas позволяет вам выйти за пределы двухмерных данных и использовать многомерные индексы. Это полезно для представления данных с несколькими уровнями агрегации. Например, добавим "Год" в наш набор данных и создадим многомерный индекс.

Python

data['Год'] = [2023, 2023, 2023, 2024, 2024, 2024]
df = pd.DataFrame(data)

multi_pivot_df = df.pivot_table(values='Продажи', index=['Год', 'Продукт'], columns='Месяц', aggfunc='sum')
print(multi_pivot_df)

Теперь наши данные агрегированы по годам и продуктам, что делает их более информативными.

4. Практика и анализ

Давайте применим, что мы изучили на практике. Задание: подготовить данные для отчетности о продажах.

Представьте, что у вас есть следующие данные о продажах:

Python

data = {
    'Продукт': ['Апельсин', 'Апельсин', 'Яблоко', 'Яблоко', 'Банан', 'Банан'],
    'Месяц': ['Январь', 'Февраль', 'Январь', 'Февраль', 'Январь', 'Февраль'],
    'Год': [2023, 2023, 2024, 2024, 2023, 2024],
    'Продажи': [150, 200, 180, 220, 120, 130]
}

df = pd.DataFrame(data)

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

Python

pivot_total_df = df.pivot_table(values='Продажи', index=['Год', 'Продукт'], columns='Месяц', aggfunc='sum', margins=True, margins_name='Итого')
print(pivot_total_df)

Эта строка «Итого» покажет сумму по всем категориям, что часто бывает необходимо для полного обзора.

5. Обсуждение стратегий представления данных и анализа

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

Если вы хотите стать мастером в автоматизированной подготовке отчетов, то не забывайте о возможностях pandas и не ленитесь экспериментировать с различными методами и техниками. Это умение пригодится вам не только в построении аналитических сводок, но и на собеседованиях, и в вашей будущей карьере. Смело погружайтесь в мир данных и делайте свои отчеты красочными, информативными и легкими для восприятия!

Комментарии (4)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 35
18 июля 2025
Почините отображение условий заданий в JavaRush плагине. Там символы форматирования перемешаны с текстом, начиная с лекций о пандасе, или даже раньше...
Vlad Tagunkov Уровень 52
3 января 2025
авторы курса. когда пишете о таблицах - вставляйте 'богопротивные' картинки табличек и выводы ваших программ. как человек не видевший Датафреймов может понять смысл пивотов без картинок и без выводов результата работы вашего кода? как студенты могут понять пивот и кросстаб без этого всего? вот официальная документация - https://pandas.pydata.org/docs/reference/api/pandas.pivot_table.html тут показан исходный датафрейм и что стало после пивота. все более мене понятно куда и зачем индексы, значения и т.д.
Slevin Уровень 35
18 июля 2025
я SublimeText использую, я быстрого вставления кода из лекции и его запуска. Через ПиЧарм - дольше и геморнее, особенно когда в нем открыты задачи
25 августа 2025
Я просто сразу все лекции делаю в Visual Studio и задания тоже