
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śliTrue, indeks sortowany jest rosnąco, jeśliFalse, malejąco.inplace– jeśliTrue, modyfikacja jest wykonywana bezpośrednio na oryginalnymDataFrame.kind– algorytm sortowania (np.'quicksort','mergesort').na_position– określa, gdzie powinny być umieszczone wartościNaN('first'lub'last').ignore_index– jeśli ustawione naTrue, nowyDataFramenie 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
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, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

