Indeks jest nieodłącznym elementem każdej ramki danych (dataframe). Dobre, przemyślane indeksowanie pozwala uzyskać efektywniejszy dostęp do danych tzn. szybszy i czytelniejszy.
Pakiet pandas pozwala na szybkie wprowadzenie dowolnej kolumny jako indeks, co więcej pozwala na wprowadzenie multi-indeksów, gdzie dwie lub więcej kolumn pełni rolę indeksu.
Zbiór danych
W naszych analizach będziemy wykorzystywać zbiór danych titanic.csv - jest to lista pasażerów słynnego statku Titanic wraz z ich charakterystyką.
Zbiór titanic.csv jest preinstalowany wraz z pakietem seaborn:
import seaborn as snsdf = sns.load_dataset('titanic')

Charakterystyka ramki - kolumny, index
Każdy dataframe ma dwie właściwości:
df.index--> wyświetla charakterystykę indexu np. numer początkowy, numer ostatniego rekordu i przeskok pomiędzy kolejnymi rekordamiRangeIndex(start=0, stop=891, step=1)df.columns--> wyświetla listę kolumn wykorzystywanych w danym dataframe
Ustawienie dowolnej kolumny jako index
Ustawienie dowolnej kolumny jako index uzyskujemy, wywołując metodę:
dataframe.set_index('nazwa_kolumny')- Przykład:
df.set_index('age')=> kolumna age zostanie ustawiona jako index

Reset indexu do wartości pierwotnej
Wykorzystujemy metodę df.reset_index() aby przywrócić ustawienie domyślne.
df.reset_index()
Ponownie zostaje ustawiony index numeryczny: RangeIndex(start=0, stop=891, step=1). Tym samym index/kolumna 'age' wraca do listy kolumn.

Reset indeksu wraz z usunięciem kolumny
Alternatywnie możemy użyć metody reset_index(drop=True), gdzie argument drop=True, powoduje, że kolumna odrzucona jako indeks (zresetowana), zostaje również wyrzucona z ramki danych (dataframe). A zatem nie wraca już ponownie do dataframe - zostaje skasowana.
df.reset_index(drop=True)
Przykład wykorzystania kolumny, ustawionej jako index
Ustawienie kolumny jako index, pozwala na szybsze wykonywanie wybranych operacji, związanych z selekcją danych.
Na przykład: załóżmy, że jako index mamy ustawiona kolumnę 'class'.

Aby pobrać wszystkich pasażerów z trzeciej klasy, wystarczy podać krótką linijkę kodu z wykorzystaniem metody loc:
df_ind.loc['Third']
A gdy zechcemy pobrać pasażerów z pierwszej i drugiej klasy, to:
df_ind.loc[['First', 'Second']]
Ustawienie wielu index-ów w ramach jednej ramki danych (multilevel index)
W ramach danej ramki, możemy ustawić więcej niż jeden indeks np. w naszym przypadku ustawimy dwie kolumny - 'class' oraz 'who' - jako indeks.
df = df.set_index(['class', 'who'])
Nastepnie wykonujemy sortowanie, kolejno wg 'who' (porządek malejący Z->A) i następnie wg 'class' (porządek rosnący A->Z):
df.sort_index(level=['who','class'], ascending=[False,True])

Notebook z przykładami
Pełny kod znajduje się w poniższym notebooku.