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

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

Pracując z biblioteką pandas w języku Python, często napotykam na sytuacje, gdy konieczne jest uporządkowanie indeksów w tabeli danych. Na szczęście istnieje funkcja sort_index(), która w łatwy sposób pozwala sortować indeksy zarówno wierszy, jak i kolumn.

Co robi funkcja pandas.sort_index()?

Funkcja sort_index() w Pythonie służy do sortowania obiektów DataFrame i Series według ich indeksu. Działa zarówno na indeksach wierszy (domyślnie), jak i indeksach kolumn (po odpowiednim ustawieniu parametrów).

Składnia funkcji pandas.sort_index()

Podstawowa składnia wygląda następująco:

DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False)

Najważniejsze parametry tej funkcji to:

  • axis – określa, czy sortujemy indeks wierszy (axis=0) czy kolumn (axis=1).
  • ascending – jeśli True, indeks sortowany jest rosnąco, jeśli False, malejąco.
  • inplace – jeśli True, modyfikacja jest wykonywana bezpośrednio na oryginalnym DataFrame.
  • kind – algorytm sortowania (np. 'quicksort', 'mergesort').
  • na_position – określa, gdzie powinny być umieszczone wartości NaN ('first' lub 'last').
  • ignore_index – jeśli ustawione na True, nowy DataFrame nie będzie zawierał oryginalnych indeksów.

Przykład zastosowania funkcji pandas.sort_index()

Poniżej zamieszczam praktyczny przykład ilustrujący działanie funkcji sort_index().

import pandas as pd

# Tworzymy przykładowy DataFrame
df = pd.DataFrame({
    "Imię": ["Anna", "Bartek", "Celina", "Dawid"],
    "Wiek": [23, 35, 29, 41]
}, index=["d", "b", "a", "c"])

print("Przed sortowaniem:")
print(df)

# Sortowanie według indeksu (w domyślnym kierunku)
df_sorted = df.sort_index()

print("\nPo sortowaniu:")
print(df_sorted)

Wynik działania powyższego kodu będzie wyglądał następująco:

Przed sortowaniem:
    Imię  Wiek
d  Anna    23
b  Bartek  35
a  Celina  29
c  Dawid   41

Po sortowaniu:
    Imię  Wiek
a  Celina  29
b  Bartek  35
c  Dawid   41
d  Anna    23

Sortowanie indeksu w kolejności malejącej

Aby posortować indeksy w kolejności malejącej, wystarczy ustawić parametr ascending=False:

df_sorted_desc = df.sort_index(ascending=False)
print(df_sorted_desc)

Sortowanie według indeksu kolumn

Jeśli chcę posortować kolumny według ich nazw, mogę użyć axis=1:

df_sorted_columns = df.sort_index(axis=1)
print(df_sorted_columns)

Sortowanie wielopoziomowego indeksu

W przypadku wielopoziomowych indeksów, można użyć parametru level:

df_multi = pd.DataFrame({
    "Wartość": [10, 20, 30, 40]
}, index=pd.MultiIndex.from_tuples([
    ('A', 2), ('A', 1), ('B', 2), ('B', 1)
], names=['Grupa', 'Numer']))

print("Przed sortowaniem:")
print(df_multi)

df_sorted_multi = df_multi.sort_index(level="Numer")

print("\nPo sortowaniu:")
print(df_sorted_multi)

Podsumowanie

Funkcja sort_index() w Pandas to bardzo wygodny sposób na sortowanie indeksów DataFrame lub Series. Można sortować według indeksu wierszy lub kolumn, zarówno dla prostych jak i wielopoziomowych indeksów. Dodatkowo, dostępnych jest kilka parametrów, które pozwalają lepiej kontrolować sposób sortowania.

Najważniejsze informacje o pandas.sort_index()

Opcja Opis
axis=0 Sortuje według indeksu wierszy
axis=1 Sortuje według indeksu kolumn
ascending=True Sortowanie rosnące
ascending=False Sortowanie malejące
inplace=True Modyfikacja obiektu bez tworzenia nowego
na_position='first' Umieszcza wartości NaN na początku
„` Inny ciekawy artykuł: Jak działa pandas sort_values w języku Python? Przykład zastosowania
KajoDataSpace