Jak działa pandas crosstab w języku Python? Przykład zastosowania

Jak działa pandas crosstab w języku Python? Przykład zastosowania
„`html

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 czy mean.
  • normalize – jeśli True, wyniki będą przedstawione jako udziały procentowe.
  • margins – tworzy dodatkowy wiersz i kolumnę „All” z podsumowaniem.
  • dropna – jeśli False, 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 czy mean.
  • 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.

„` Inny ciekawy artykuł: Jak działa pandas melt w języku Python? Przykład zastosowania
KajoDataSpace