Přejmenování sloupců v datovém rámci pandas je běžnou operací. Naučte se čtyři různé metody přejmenování sloupců pandy.
Pandas je oblíbená knihovna Pythonu pro analýzu dat. Data, která potřebujeme analyzovat, jsou často dostupná v různých formátech, včetně souborů csv a tsv, relačních databází a dalších. A musíte provést nějaké předběžné kontroly dat, zpracovat chybějící hodnoty a připravit data pro další analýzu.
S pandami můžete:
- Zpracovat data z různých zdrojů
- Prozkoumejte datovou sadu a zpracujte v ní chybějící hodnoty
- Analyzujte datovou sadu, abyste získali přehled
U všech projektů analýzy dat budete často vytvářet datové rámce z datových struktur Pythonu, jako je například slovník. Nebo budete číst data z jiných zdrojů, jako je soubor csv, do datového rámce.
Dataframe je základní datová struktura v pandách. Obsahuje záznamy podél řádků a různá pole nebo atributy podél sloupců.
Možná však budete muset přejmenovat názvy sloupců – aby byly popisnější a zlepšily se čitelnost. Zde se naučíte čtyři různé způsoby přejmenování sloupců. Pojďme začít!
Table of Contents
Vytvoření Pandas DataFrame
Výukový program můžete sledovat v prostředí notebooku Jupyter s nainstalovanými pandami. Nebo můžete pokračovat ve službě Google Colab.
Nejprve vytvoříme datový rámec pandy a budeme s ním pracovat po zbytek tutoriálu.
Zde je 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 naimportujeme pandy a poté vytvoříme datový rámec df z books_dict.
import pandas as pd
Poznámka: Před přejmenováním sloupců se budeme stále vracet k následující buňce kódu – abychom vytvořili počáteční verzi datového rámce.
df = pd.DataFrame(books_dict)
K získání prvních několika řádků datového rámce df můžeme použít df.head(). Ve výchozím nastavení vrací prvních pět řádků. Zde má df pouze pět řádků; takže při použití df.head() získáme celý datový rámec.
df.head()
Vidíme, že názvy sloupců jsou aktuálně klíči slovníku. Ale to není moc popisné. Tak je přejmenujme! 👩🏫
Metody přejmenování sloupců v Pandas
Nyní se podívejme na různé metody přejmenování sloupců v pandách:
- Nastavení atributu columns datového rámce na seznam názvů nových sloupců
- Použití metody rename() na datovém rámci
- Použití str.replace k přejmenování jednoho nebo více sloupců
- Použití metody set_axis() na datovém rámci
Nastavení atributu sloupců
Pro jakýkoli datový rámec obsahuje atribut columns seznam názvů sloupců:
df.columns # Index(['one', 'two', 'three', 'four'], dtype="object")
Přejmenujme sloupce, aby označovaly, co každé pole znamená, a pak zavolejte df.head(), abyste viděli výsledky:
df.columns = ['Title','Author','Genre','Rating'] df.head()
Pomocí metody rename()
Chcete-li přejmenovat sloupce v pandách, můžete použít metodu rename() se syntaxí:
df.rename(column={mapping})
Toto mapování může být slovník, který má následující formu:
{'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 df ze slovníku books_dict:
df = pd.DataFrame(books_dict)
Pomocí metody rename() s výše uvedenou syntaxí získáme df_1. Což je kopie datového rámce s přejmenovanými sloupci.
df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'}) df_1.head()
Názvy sloupců df_1 jsou tedy upraveny:
Názvy sloupců původního datového rámce df se však nemění:
df.head()
Protože nám tato metoda umožňuje poskytnout mapování mezi starými a novými názvy sloupců, můžeme ji použít k přejmenování jednoho i více sloupců.
Přejmenovat sloupce na místě
Co když chcete upravit stávající datový rámec – bez vytvoření nové kopie?
Chcete-li to provést, můžete ve volání metody nastavit inplace rovné hodnotě True.
df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True) df.head()
Tím přejmenujete sloupce původního datového rámce df:
Zatím jsme viděli, jak:
- Přejmenujte sloupce poskytnutím slovníku, který mapuje staré názvy sloupců na nové názvy sloupců
- Přejmenujte sloupce na místě bez vytvoření nového datového rámce
Metodu přejmenování můžete použít i jiným způsobem.
Další přístup k 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()
Dataframe df nyní vypadá takto:
Předpokládejme, že chceme změnit názvy každého z těchto sloupců tak, aby byly v názvu. Namísto poskytnutí slovníku pro každý název sloupce můžeme zadat volání funkce nebo metody pro 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 všechny názvy sloupců na velikost písmen.
Použití str.replace() v řetězcích názvů sloupců
Jako vždy spusťte následující buňku kódu a vytvořte datový rámec ze slovníku:
df = pd.DataFrame(books_dict)
V Pythonu byste použili metodu replace() se syntaxí str.replace(this, with_this), abyste získali kopii řetězce s požadovanými změnami. Zde je příklad:
>>> str1 = 'Marathon' >>> str1.replace('Mara','Py') 'Python'
Víte, že atribut columns obsahuje seznam řetězců obsahujících názvy sloupců. Takže můžete volat str.replace(‚old_column_name‘,’new_column_name‘) takto:
df.columns = df.columns.str.replace('one','Title') df.head()
Zde jsme přejmenovali pouze sloupec ‚jeden‘ na ‚Titul‘, takže názvy ostatních sloupců zůstávají 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 malou podmnožinu sloupců.
Pomocí 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(). 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. Ale pokud chcete upravit datový rámec na místě, můžete nastavit kopírování na False.
df = df.set_axis(['Title','Author','Genre','Rating'],axis="columns",copy=False) df.head()
Závěr
Zde je přehled různých metod přejmenování sloupců v datovém rámci pandas:
- U ukázkového datového rámce df je atribut columns df.columns seznamem názvů sloupců. Chcete-li sloupce přejmenovat, můžete tento atribut nastavit na seznam názvů nových sloupců.
- Metoda rename() pro přejmenování sloupců pracuje se syntaxí: df.rename(columns={mapping}), kde mapování odkazuje na mapování ze starých názvů sloupců na názvy nových sloupců. Můžete také použít metodu rename() zadáním funkce, která má být aplikována na všechny názvy sloupců: df.rename(volání funkce nebo metody, axis=’columns‘).
- Stejně jako používáte metodu replace() v řetězci Python, můžete použít df.columns.str.replace(‚starý_název_sloupce‘, ‚název_nového_sloupce‘) k nahrazení názvů sloupců.
- Dalším přístupem k přejmenování ve sloupcích je použití metody set_axis se syntaxí: df.set_axis(list_of_col_names,axis=’columns‘).
To je pro tento tutoriál vše! Podívejte se na seznam spolupracujících notebooků pro analýzu dat.