Об'єднання місяців у квартали
Ми вже розглянули, що робити, коли потрібно розбити квартали на місяці для детальнішого щомісячного аналізу. Але що, як потрібно навпаки — об'єднати дані в меншу кількість стовпців? Це типово для історичних даних, коли деталі за місяцями можуть бути зайвими, або коли для звіту потрібна максимально агрегована версія даних.
Ключова ідея — створити індекс і додавати до квартального підсумку quarter лише в циклах по 3 або до досягнення довжини списку. Це можна зробити таким кодом:
if index % 3 == 0 or index == len(months):
Цей код перевіряє, чи ділення індексу на три дає остачу 0, або чи індекс знаходиться в кінці списку months. Отже, у циклі відповідний код виконуватиметься кожні три місяці або коли буде досягнуто кінець списку.
Щомісячні продажі вже задані в коді як months і містять дані за перші два квартали, а також за перший місяць Q3. Ваше завдання — згенерувати новий список quarters, що міститиме квартальні підсумки з перших трьох місяців (включно з частковим підсумком Q3).
Ця вправа є частиною курсу
Фінансове прогнозування в Python
Інструкції до вправи
Ініціалізуйте порожній список
quartersдля нових квартальних значень та змінну індексуindex, встановлену в1.Створіть цикл for, щоб отримувати щомісячні
salesзі спискуmonths:- Додайте місячні продажі до
quarter. - Якщо це кінець кварталу або кінець списку
months, додайте квартальний підсумок доquarters. - Скиньте квартальний підсумок
quarterдо 0, збільшіть індекс на 1 (це вже зроблено за вас).
- Додайте місячні продажі до
Виведіть квартальні підсумки.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Create a months list, as well as an index, and set the quarter to 0
months = [100, 100, 150, 250, 300, 10, 20]
quarter = 0
____ = ____
____ = ____
# Create for loop for quarter, print result, and increment the index
for sales in months:
quarter += ____
if index % ____ == ____ or index == len(____):
____.append(____)
quarter = 0
index = index + 1
print("The quarter totals are Q1: {}, Q2: {}, Q3: {}".format(quarters[0], ____, ____))