1. Wprowadzenie do grupowania danych
Zasady grupowania danych
W codziennym życiu często grupujemy obiekty według pewnych cech: książki z książkami, warzywa z warzywami, ludzie z ludźmi (no wiesz o co chodzi). W programowaniu działa to podobnie. Grupowanie danych pozwala podzielić duże zbiory danych na mniejsze, bardziej zarządzalne części, aby następnie je analizować.
W pandas do tego celu używamy metody groupby
, która umożliwia podzielenie danych na grupy i wykonywanie różnych operacji na każdej z nich. Na przykład, możesz pogrupować sprzedaż według działów sklepu i policzyć przychód w każdym z nich.
Oto przykład, jak to może wyglądać:
import pandas as pd
# Tworzymy DataFrame z danymi o sprzedaży
data = {'Dział': ['Produkty', 'Technika', 'Produkty', 'Książki', 'Technika'],
'Przychód': [100, 200, 150, 50, 300]}
df = pd.DataFrame(data)
# Grupujemy dane według działów i liczymy sumaryczny przychód
grupa = df.groupby('Dział')['Przychód'].sum()
print(grupa)
Przykłady zastosowania grupowania
Grupowanie jest szczególnie przydatne, gdy trzeba porównać dane między różnymi kategoriami. Na przykład, jeśli pracujesz w HR i chcesz poznać średnią pensję w różnych działach firmy, albo jeśli jesteś marketingowcem i interesuje Cię, w którym miesiącu było najwięcej sprzedaży dla każdego produktu. Takie zadania stają się dużo prostsze, używając możliwości grupowania w pandas.
2. Obliczanie funkcji agregujących
Wprowadzenie do funkcji agregujących
Funkcje agregujące to specjalne funkcje, które są stosowane do grup danych i zwracają jedną wartość. Najpopularniejsze z nich to sum
(suma), mean
(średnia) i count
(liczba elementów). Pozwalają one sprowadzić dużą ilość informacji do prostszych i bardziej zrozumiałych metryk.
Użycie funkcji agregujących
Już widzieliśmy, jak liczyć sumę w poprzednim przykładzie. Teraz zobaczmy, jak można obliczyć średnią wartość i liczbę sprzedaży w każdym dziale.
# Obliczamy średni przychód według działów
srednia = df.groupby('Dział')['Przychód'].mean()
print(srednia)
# Liczymy liczbę sprzedaży w każdym dziale
liczba = df.groupby('Dział')['Przychód'].count()
print(liczba)
Przykłady obliczania funkcji agregujących
Załóżmy, że masz dane o wizytach użytkowników na stronie i chcesz dowiedzieć się, ile osób średnio odwiedza stronę każdego dnia tygodnia. Jest to klasyczne zadanie do grupowania i stosowania funkcji mean
.
data = {'Dzień': ['Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'Śr', 'Wt'],
'Wizyty': [120, 150, 170, 160, 180, 300, 220]}
df = pd.DataFrame(data)
# Liczymy średnią liczbę wizyt według dni
srednie_wizyty = df.groupby('Dzień')['Wizyty'].mean()
print(srednie_wizyty)
3. Praca praktyczna
Zadanie dotyczące grupowania danych i obliczania funkcji agregujących
Wyobraź sobie, że masz zestaw danych o sprzedaży. Zadanie: pogrupować je według kategorii i obliczyć sumę sprzedaży, średnią wartość zamówienia i liczbę zamówień w każdej kategorii. To pomoże Ci zrozumieć, które kategorie produktów przynoszą największe zyski i gdzie kryją się potencjalne "złote żyły".
data = {
'Kategoria': ['Elektronika', 'Odzież', 'Elektronika', 'Książki', 'Książki', 'Odzież'],
'Suma_zamówienia': [250, 100, 150, 200, 500, 300]
}
df = pd.DataFrame(data)
# Liczymy sumę sprzedaży według kategorii
suma = df.groupby('Kategoria')['Suma_zamówienia'].sum()
print(suma)
# Liczymy średnią wartość zamówienia według kategorii
srednia_wartosc = df.groupby('Kategoria')['Suma_zamówienia'].mean()
print(srednia_wartosc)
# Liczymy liczbę zamówień według kategorii
liczba_zamowien = df.groupby('Kategoria')['Suma_zamówienia'].count()
print(liczba_zamowien)
Dyskusja wyników grupowania i analiza danych
Po wykonaniu zadania dotyczącego grupowania danych i obliczania funkcji agregujących, warto przeprowadzić analizę uzyskanych danych. Możesz zauważyć, że na przykład kategoria "Książki" ma najwyższą sumę zamówień dzięki małej liczbie, ale dużym zamówieniom. Albo że "Odzież" ma najwięcej zamówień, ale średnia wartość zamówienia jest niższa niż w przypadku "Elektroniki".
Taka analiza może pomóc w podejmowaniu bardziej świadomych decyzji biznesowych, na przykład skoncentrować się na zwiększeniu średniej wartości zamówienia w kategorii, która ma większą liczbę zamówień, ale niższą średnią wartość.
4. Błędy i specyfika
Podczas pracy z grupowaniem, jednym z najczęstszych błędów jest zapomnienie o użyciu nawiasów przy stosowaniu funkcji agregujących. Na przykład, napisanie df.groupby('Kategoria').sum()
zamiast df.groupby('Kategoria')['Suma_zamówienia'].sum()
. Czasami również pojawiają się problemy z brakującymi danymi. Pandas posiada wygodne metody do pracy z brakami, takie jak fillna()
, które pozwalają zastąpić brakujące wartości określonymi, aby uniknąć zniekształceń w obliczeniach.
Oprócz tego, upewnij się, że typy danych są poprawne. Czasami kolumny z liczbami mogą być odczytane jako ciągi znaków i próba agregacji takich danych spowoduje błędy.
Jeśli chcesz zgłębić swoją wiedzę na temat pracy z pandas i metod grupowania, zapoznaj się z oficjalną dokumentacją pandas dla bardziej szczegółowego omówienia i przykładów.
GO TO FULL VERSION