
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
, nowyDataFrame
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 |
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.