0Pricing
Pandas & NumPy Academy · Lekcja

Analiza GroupBy według regionu i kategorii

Agreguj łączny przychód i liczbę zamówień według regionu i kategorii produktu oraz znajdź 5 najważniejszych SKU według marży.

Analiza GroupBy według regionu i kategorii to bezpłatna lekcja Pandas & NumPy Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Pandas & NumPy Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.

Konfigurowanie analizy GroupBy

Po obliczeniu kolumny revenue naturalnym kolejnym krokiem jest agregowanie jej według wymiarów biznesowych, takich jak region i category. Wywołanie groupby() biblioteki Pandas dzieli DataFrame na grupy, następnie stosuje się funkcję agregującą, a Pandas łączy wyniki w tabelę podsumowującą. Ten schemat dzielenie–zastosowanie–łączenie zastępuje zagnieżdżone zapytania SQL GROUP BY.

import pandas as pd

df = pd.read_parquet('sales_features.parquet')

# Total revenue by region
region_rev = df.groupby('region')['revenue'].sum().sort_values(ascending=False)
print(region_rev)

Grupowanie według kategorii

Agreguj przychód według kategorii produktu, aby określić, które kategorie generują największą sprzedaż. Użyj .agg(), aby obliczyć wiele statystyk jednocześnie — łączny przychód, liczbę zamówień i średnią wartość zamówienia — w jednym przejściu przez dane zamiast w trzech osobnych wywołaniach groupby.

cat_summary = df.groupby('category')['revenue'].agg(
    total_revenue='sum',
    order_count='count',
    avg_order_value='mean'
).sort_values('total_revenue', ascending=False)

print(cat_summary)

Grupowanie według dwóch kluczy: regionu i kategorii

Przekaż listę kolumn do groupby(), aby utworzyć podsumowanie dwupoziomowe. Wynik ma indeks MultiIndex — poziom zewnętrzny to region, a wewnętrzny to kategoria. Użyj .reset_index(), aby spłaszczyć go do zwykłego DataFrame, który będzie odpowiedni do dalszego filtrowania lub eksportu do raportu.

region_cat = df.groupby(['region', 'category'])['revenue'].sum().reset_index()
region_cat.columns = ['region', 'category', 'total_revenue']
region_cat = region_cat.sort_values(['region', 'total_revenue'], ascending=[True, False])
print(region_cat.head(10))

Obliczanie procentowego udziału w przychodzie

Bezwzględne wartości przychodu są użyteczne, ale udział w przychodzie pokazuje wkład każdej kategorii w całość. Podziel sumę przychodów danej kategorii przez sumę całkowitą i pomnóż przez 100. Sztuczka z transform('sum') rozsyła sumę całkowitą do każdego wiersza, dzięki czemu można obliczyć procent w jednym wektoryzowanym kroku.

df['total_revenue_all'] = df['revenue'].sum()
cat_share = df.groupby('category')['revenue'].sum() / df['revenue'].sum() * 100
cat_share = cat_share.sort_values(ascending=False).round(2)
print(cat_share.rename('revenue_share_%'))

Wyszukiwanie 5 najlepszych SKU według przychodu

Zidentyfikuj 5 produktów o najwyższym łącznym przychodzie za pomocą groupby('product')['revenue'].sum().nlargest(5). Metoda nlargest() jest bardziej zwięzła niż sortowanie i wycinanie fragmentu danych. Znajomość najlepszych SKU pomaga podejmować decyzje dotyczące zapasów i koncentrować działania promocyjne tam, gdzie wpływ na przychód jest największy.

top5_sku = df.groupby('product')['revenue'].sum().nlargest(5)
print('Top 5 Products by Revenue:')
print(top5_sku)

Liczba zamówień a przychód według regionu

Region może mieć dużą liczbę zamówień, ale niską średnią wartość zamówienia, lub odwrotnie. Oblicz obie metryki obok siebie, aby odróżnić regiony napędzane liczbą zamówień od regionów napędzanych wartością. Użyj agg() ze słownikiem, aby nadać kolumnom opisowe nazwy i zachować czytelność wyniku.

region_profile = df.groupby('region').agg(
    order_count=('order_id', 'count'),
    total_revenue=('revenue', 'sum'),
    avg_order=('revenue', 'mean')
).round(2)

print(region_profile.sort_values('total_revenue', ascending=False))

Procent przychodu według regionu

Oblicz udział całkowitego przychodu przypadający na każdy region. Użyj groupby().sum(), a następnie podziel wynik przez skalarną wartość sumy całkowitej. Ułatwia to odpowiadanie na pytania na poziomie zarządczym, takie jak „Jaki procent naszych przychodów pochodzi z regionu North?”, za pomocą pojedynczego wyrażenia DataFrame.

region_rev = df.groupby('region')['revenue'].sum()
region_share = (region_rev / region_rev.sum() * 100).round(2)
region_share.name = 'revenue_share_%'
print(region_share.sort_values(ascending=False))

Filtrowanie grup według progu przychodu

Użyj groupby().filter(), aby zachować tylko te wiersze, które należą do kategorii o łącznym przychodzie przekraczającym określony próg. Jest to przydatne, gdy chcą Państwo usunąć niszowe kategorie z wizualizacji lub modelu i skupić się na istotnych segmentach. Filtr otrzymuje DataFrame grupy i zwraca wartość logiczną.

THRESHOLD = 10000

df_major = df.groupby('category').filter(
    lambda g: g['revenue'].sum() >= THRESHOLD
)

print('Major categories:', df_major['category'].nunique())

Przychód miesiąc do miesiąca według kategorii

Połącz dwa klucze groupby — miesiąc i kategorię — aby śledzić, jak przychód każdej kategorii zmienia się w czasie. Przestaw wynik za pomocą unstack('category'), aby uzyskać macierz, w której wiersze oznaczają miesiące, a kolumny kategorie. Ułatwia to dostrzeganie wzorców sezonowych dla poszczególnych kategorii.

monthly_cat = df.groupby(['month', 'category'])['revenue'].sum().unstack('category').fillna(0)
print(monthly_cat.round(0))

Najlepsze SKU według regionu

Zidentyfikuj najlepiej sprzedający się produkt w każdym regionie, łącząc groupby z idxmax(). Grupuj według regionu i produktu, aby uzyskać łączny przychód dla każdej kombinacji, a następnie dla każdego regionu wybierz indeks produktu o największym przychodzie. Ten schemat pokazuje, czy poszczególne regiony preferują różne produkty.

rev_by_region_sku = df.groupby(['region', 'product'])['revenue'].sum()
top_sku_per_region = rev_by_region_sku.groupby('region').idxmax()
print(top_sku_per_region)

Eksportowanie tabeli podsumowującej

Po obliczeniu podsumowania region–kategoria wyeksportuj je do Excela za pomocą to_excel(), aby interesariusze preferujący arkusze kalkulacyjne mogli z niego korzystać. Użyj ExcelWriter, aby zapisać wiele DataFrame'ów z podsumowaniami na osobnych arkuszach w jednym skoroszycie. Dodaj znacznik czasu do nazwy pliku, aby każde uruchomienie tworzyło wersjonowany wynik.

from datetime import date

filename = f'sales_summary_{date.today()}.xlsx'

with pd.ExcelWriter(filename, engine='openpyxl') as writer:
    region_profile.to_excel(writer, sheet_name='By Region')
    cat_summary.to_excel(writer, sheet_name='By Category')

print('Saved:', filename)

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat analizy danych zdobytą w tej lekcji.

Podsumowanie lekcji

W tej lekcji nauczyli się Państwo: grupować dane według jednego i dwóch kluczy w celu tworzenia podsumowań przychodów, obliczać procentowy udział w przychodzie i najlepsze SKU oraz eksportować wieloarkuszowe raporty podsumowujące do Excela. Następnie zajmiemy się wizualizacją miesięcznych trendów za pomocą wykresów liniowych i średnich kroczących.

Często zadawane pytania

Czy lekcja „Analiza GroupBy według regionu i kategorii” jest bezpłatna?

Tak — pełny tekst „Analiza GroupBy według regionu i kategorii” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Pandas & NumPy Academy, przejdź na CoddyKit PRO. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Analiza GroupBy według regionu i kategorii”?

Agreguj łączny przychód i liczbę zamówień według regionu i kategorii produktu oraz znajdź 5 najważniejszych SKU według marży. Ćwiczysz Pandas & NumPy Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Pandas & NumPy Academy?

Nie wymagamy żadnego doświadczenia. Pandas & NumPy Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Analiza GroupBy według regionu i kategorii”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Pandas & NumPy Academy?

Tak. Każda lekcja Pandas & NumPy Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wczytywanie i audyt zbioru danych sprzedażowych
  2. Obliczenia przychodu i inżynieria cech
  3. Analiza GroupBy według regionu i kategorii
  4. Wizualizacja trendów miesięcznych
← Powrót do Pandas & NumPy Academy