
Jak działa pandas crosstab w języku Python? Przykład zastosowania
Biblioteka pandas to jedno z najpopularniejszych narzędzi do analizy danych w języku Python. Jedną z jej przydatnych funkcji jest pandas.crosstab()
, która pomaga w tworzeniu tabel krzyżowych i analizie relacji między dwiema (lub więcej) zmiennymi kategorycznymi. Sprawdzi się szczególnie w analizach eksploracyjnych oraz raportowaniu danych.
Czym jest pandas.crosstab()?
Funkcja pandas.crosstab()
służy do tworzenia tabeli przestawnej (cross-tabulation) na podstawie dwóch lub więcej kolumn z danymi kategorycznymi. Pozwala na szybkie podsumowanie częstotliwości występowania poszczególnych wartości w kolumnach. Możemy jej użyć zarówno do liczenia ilości wystąpień, jak i do agregacji innych wartości liczbowych.
Podstawowa składnia pandas.crosstab()
Podstawowa składnia funkcji wygląda tak:
pandas.crosstab(index, columns, values=None, aggfunc=None, normalize=False, margins=False, margins_name='All', dropna=True)
Najważniejsze argumenty:
index
– kolumna (lub lista kolumn) używana jako indeks wierszy.columns
– kolumna (lub lista kolumn) ustawiona jako kolumny tabeli krzyżowej.values
– opcjonalna kolumna z wartościami do agregacji.aggfunc
– funkcja agregująca, np.sum
czymean
.normalize
– jeśliTrue
, wyniki będą przedstawione jako udziały procentowe.margins
– tworzy dodatkowy wiersz i kolumnę „All” z podsumowaniem.dropna
– jeśliFalse
, uwzględnia także brakujące wartości (NaN
).
Prosty przykład zastosowania pandas crosstab
Załóżmy, że mamy zbiór danych o klientach sklepu, który zawiera informacje o ich płci oraz wybranej kategorii produktu.
import pandas as pd
data = {
'Płeć': ['Kobieta', 'Mężczyzna', 'Kobieta', 'Mężczyzna', 'Kobieta', 'Mężczyzna', 'Kobieta'],
'Kategoria': ['Elektronika', 'Odzież', 'Odzież', 'Elektronika', 'Elektronika', 'Odzież', 'Odzież']
}
df = pd.DataFrame(data)
tabela = pd.crosstab(df['Płeć'], df['Kategoria'])
print(tabela)
Wynik:
Kategoria | Elektronika | Odzież |
---|---|---|
Kobieta | 2 | 2 |
Mężczyzna | 1 | 2 |
Dzięki temu możemy szybko zobaczyć, jak często poszczególne grupy klientów kupują produkty z określonych kategorii.
Użycie pandas.crosstab() z funkcją agregującą
Możemy także dodać dodatkową kolumnę z wartościami liczbowymi, np. kwotą zakupu, i wykorzystać funkcję agregującą:
data = {
'Płeć': ['Kobieta', 'Mężczyzna', 'Kobieta', 'Mężczyzna', 'Kobieta', 'Mężczyzna', 'Kobieta'],
'Kategoria': ['Elektronika', 'Odzież', 'Odzież', 'Elektronika', 'Elektronika', 'Odzież', 'Odzież'],
'Kwota': [200, 150, 100, 300, 250, 200, 120]
}
df = pd.DataFrame(data)
tabela = pd.crosstab(df['Płeć'], df['Kategoria'], values=df['Kwota'], aggfunc='sum')
print(tabela)
To zwróci tabelę z podsumowaną wartością zakupów dla każdej grupy:
Kategoria | Elektronika | Odzież |
---|---|---|
Kobieta | 450 | 220 |
Mężczyzna | 300 | 350 |
Normalizacja wyników w pandas.crosstab()
Opcja normalize=True
pozwala na przedstawienie wartości w formie proporcji zamiast liczby wystąpień.
tabela = pd.crosstab(df['Płeć'], df['Kategoria'], normalize=True)
print(tabela)
Wynik zamiast liczby wystąpień będzie przedstawiał proporcje:
Kategoria | Elektronika | Odzież |
---|---|---|
Kobieta | 0.2857 | 0.2857 |
Mężczyzna | 0.1429 | 0.2857 |
Dzięki temu możemy lepiej porównać udziały poszczególnych kategorii w całości danych.
Podsumowanie
Funkcja pandas.crosstab()
to niezwykle przydatne narzędzie do analizy danych kategorycznych. Dzięki niej możemy:
- Tworzyć tabelę kontyngencji dla dwóch lub więcej zmiennych.
- Agregować wartości numeryczne przy użyciu funkcji takich jak
sum
czymean
. - Normalizować dane w celu uzyskania wartości procentowych.
- Dodawać podsumowanie dla wierszy i kolumn.
Dzięki tej funkcji można w prosty sposób eksplorować dane i wyciągać cenne wnioski. W praktyce pandas.crosstab()
przydaje się w analizie rynkowej, badaniach statystycznych czy nawet w raportowaniu wyników sprzedaży.
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.