Jak přejmenovat sloupce Pandy [4 Examples]

Photo of author

By etechblogcz

Ú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.