Úprava názvů sloupců v datových rámcích knihovny pandas je běžnou operací. V tomto textu se seznámíte se čtyřmi různými způsoby, jak přejmenovat sloupce v pandas.
Pandas je velmi populární knihovna v Pythonu, která slouží pro analýzu dat. Data, která potřebujeme analyzovat, bývají často uložena v různých formátech, jako jsou CSV a TSV soubory, relační databáze a další. Před samotnou analýzou je obvykle nutné provést úvodní kontrolu dat, zpracovat chybějící hodnoty a připravit data pro další zpracování.
S knihovnou pandas můžete:
- Zpracovávat data z různých zdrojů
- Prozkoumat datovou sadu a vypořádat se s chybějícími hodnotami
- Analyzovat data pro získání užitečných informací
Během jakéhokoli projektu analýzy dat budete často vytvářet datové rámce z datových struktur v Pythonu, například ze slovníku. Nebo budete načítat data z externích zdrojů, například ze souboru CSV, do datového rámce.
Datový rámec je základní datová struktura v pandas. Obsahuje záznamy uspořádané do řádků a různé atributy nebo pole uspořádané do sloupců.
Často se stává, že je nutné upravit názvy sloupců, aby byly popisnější a zlepšily čitelnost. Nyní se podíváme na čtyři různé způsoby, jak toho dosáhnout. Pusťme se do toho!
Vytvoření datového rámce v Pandas
Tento návod je ideální sledovat v prostředí Jupyter notebook s nainstalovanou knihovnou pandas. Alternativně můžete použít Google Colab.
Nejprve vytvoříme datový rámec pandas, se kterým budeme dále pracovat.
Máme slovník `book_dict`:
books_dict = {
"one": [
"Atomic Habits",
"His Dark Materials",
"The Midnight Library",
"The Broken Earth",
"Anxious People",
],
"two": [
"James Clear",
"Philip Pullman",
"Matt Haig",
"N.K.Jemisin",
"Fredrik Backman",
],
"three": ["Nonfiction", "Fantasy", "Magical Realism", "Fantasy", "Fiction"],
"four": [4, 5, 3, 5, 4],
}
Nejprve importujeme knihovnu pandas a poté vytvoříme datový rámec `df` ze slovníku `books_dict`.
import pandas as pd
Poznámka: Před každým přejmenováním sloupců se vrátíme k následujícímu bloku kódu, abychom obnovili původní verzi datového rámce.
df = pd.DataFrame(books_dict)
Pro zobrazení prvních několika řádků datového rámce `df` můžeme použít metodu `df.head()`. Ve výchozím nastavení vrací prvních pět řádků. V našem případě má `df` jen pět řádků, takže `df.head()` zobrazí celý datový rámec.
df.head()
Vidíme, že aktuální názvy sloupců odpovídají klíčům slovníku. To ale není příliš popisné. Takže je pojďme přejmenovat! 👩🏫
Metody pro přejmenování sloupců v Pandas
Nyní si ukážeme různé metody, jak přejmenovat sloupce v knihovně pandas:
- Přímé přiřazení seznamu nových názvů sloupců atributu `columns` datového rámce.
- Použití metody `rename()` na datovém rámci.
- Použití metody `str.replace` pro přejmenování jednoho nebo více sloupců.
- Použití metody `set_axis()` na datovém rámci.
Nastavení atributu sloupců
Pro každý datový rámec atribut `columns` obsahuje seznam názvů sloupců:
df.columns # Index(['one', 'two', 'three', 'four'], dtype="object")
Přejmenujme sloupce tak, aby popisovaly, co každé pole znamená, a poté zobrazíme výsledek pomocí `df.head()`:
df.columns = ['Title','Author','Genre','Rating'] df.head()
Použití metody rename()
Pro přejmenování sloupců v pandas můžete použít metodu `rename()` se syntaxí:
df.rename(column={mapping})
Proměnná `mapping` může být slovník v následující formě:
{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',...,
'old_col_name_n':'new_col_name_n'}
Vytvořme si datový rámec `df` ze slovníku `books_dict`:
df = pd.DataFrame(books_dict)
Použijeme metodu `rename()` s výše uvedenou syntaxí k vytvoření nového datového rámce `df_1`. To je kopie původního datového rámce, ale s přejmenovanými sloupci.
df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'})
df_1.head()
Názvy sloupců v `df_1` jsou nyní upraveny:

Názvy sloupců původního datového rámce `df` se však nezměnily:
df.head()

Díky možnosti poskytnout mapování mezi starými a novými názvy sloupců, můžeme tuto metodu použít pro přejmenování jednoho i více sloupců.
Přejmenování sloupců na místě
Co když chcete upravit přímo stávající datový rámec, aniž byste vytvářeli jeho novou kopii?
Pro tento účel můžete v metodě `rename()` nastavit parametr `inplace` na hodnotu `True`.
df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True)
df.head()
Tímto způsobem se přejmenují sloupce přímo v původním datovém rámci `df`:

Zatím jsme si ukázali, jak:
- Přejmenovat sloupce pomocí slovníku, který mapuje staré názvy sloupců na nové názvy sloupců.
- Přejmenovat sloupce na místě bez vytvoření nového datového rámce.
Metodu `rename()` lze použít i jiným způsobem.
Další způsob přejmenování sloupců
Přejmenujme sloupce tak, aby byly psány velkými písmeny:
df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING'] df.head()
Datový rámec `df` nyní vypadá takto:

Předpokládejme, že chceme změnit názvy každého z těchto sloupců tak, aby začínaly velkým písmenem. Místo poskytnutí slovníku pro každý název sloupce, můžeme zadat volání funkce nebo metody na objekt, jak je znázorněno:
df.rename(str.title,axis="columns",inplace=True) df.head()

Zde nastavíme osu na `’columns’` a pomocí `str.title` převedeme názvy všech sloupců na formát s velkým počátečním písmenem.
Použití metody str.replace() na řetězcích názvů sloupců
Jako obvykle, nejprve obnovíme původní datový rámec:
df = pd.DataFrame(books_dict)
V Pythonu byste pro získání kopie řetězce s požadovanými změnami použili metodu `replace()` se syntaxí `str.replace(this, with_this)`. Zde je příklad:
>>> str1 = 'Marathon'
>>> str1.replace('Mara','Py')
'Python'
Víme, že atribut `columns` obsahuje seznam řetězců, které obsahují názvy sloupců. Můžeme proto volat `str.replace(‚old_column_name‘, ‚new_column_name‘)` tímto způsobem:
df.columns = df.columns.str.replace('one','Title')
df.head()

Zde jsme přejmenovali pouze sloupec `’one’` na `’Title’`, takže názvy ostatních sloupců zůstaly nezměněny.
Nyní přejmenujme ostatní sloupce stejným způsobem:
df.columns = df.columns.str.replace('two','Author')
df.columns = df.columns.str.replace('three','Genre')
df.columns = df.columns.str.replace('four','Rating')
df.head()

Tato metoda přejmenování sloupců je užitečná, když potřebujete přejmenovat pouze jeden nebo malý počet sloupců.
Použití metody set_axis()
Vraťme se k původní verzi datového rámce:
df = pd.DataFrame(books_dict)
K přejmenování sloupců můžete také použít metodu `set_axis()`. Její syntaxe je následující:
df.set_axis([list_of_column_names],axis="columns")
Ve výchozím nastavení metoda `set_axis()` vrací kopii datového rámce. Pokud ale chcete upravit datový rámec na místě, můžete nastavit parametr `copy` na `False`.
df = df.set_axis(['Title','Author','Genre','Rating'],axis="columns",copy=False) df.head()

Závěr
Zde je shrnutí různých metod pro přejmenování sloupců v datových rámcích pandas:
- V našem příkladu datového rámce `df`, atribut `df.columns` je seznam názvů sloupců. Pro přejmenování sloupců můžete tento atribut nastavit na nový seznam názvů sloupců.
- Metoda `rename()` pro přejmenování sloupců pracuje se syntaxí: `df.rename(columns={mapping})`, kde `mapping` představuje mapování ze starých názvů sloupců na nové názvy sloupců. Metodu `rename()` můžete také použít zadáním funkce, která se má aplikovat na všechny názvy sloupců: `df.rename(volání funkce nebo metody, axis=’columns‘)`.
- Podobně jako s metodou `replace()` pro řetězce v Pythonu, můžete použít `df.columns.str.replace(‚starý_název_sloupce‘, ‚nový_název_sloupce‘)` pro nahrazení názvů sloupců.
- Dalším způsobem přejmenování sloupců je použití metody `set_axis` se syntaxí: `df.set_axis(seznam_názvů_sloupců, axis=’columns‘)`.
To je pro tento návod vše! Podívejte se na další tutoriály a příklady týkající se analýzy dat.