Promena imena kolona u Pandas DataFrame-u je uobičajena operacija. U ovom tekstu ćete naučiti četiri različite metode za preimenovanje kolona u Pandas-u.
Pandas je popularna Python biblioteka namenjena analizi podataka. Podaci koje analiziramo često dolaze u različitim formatima, kao što su CSV i TSV fajlovi, relacione baze podataka i mnogi drugi. Potrebno je da izvršimo preliminarne provere podataka, obradimo nedostajuće vrednosti i pripremimo podatke za dalju analizu.
Uz Pandas možete:
- Učitavati podatke iz raznih izvora
- Istraživati skup podataka i manipulisati nedostajućim vrednostima
- Analizirati skup podataka kako biste došli do uvida
Za potrebe projekata analize podataka, često se kreiraju DataFrame-ovi iz Python struktura podataka, kao što je rečnik. Ponekad se podaci učitavaju iz spoljašnjih izvora, kao što je CSV fajl.
DataFrame je osnovna struktura podataka u Pandas-u. Sadrži zapise duž redova, a različita polja ili atribute duž kolona.
Međutim, ponekad je potrebno promeniti imena kolona kako bi bila opisnija i kako bi se poboljšala čitljivost. U ovom vodiču ćete naučiti četiri različita načina za preimenovanje kolona. Započnimo!
Kreiranje Pandas DataFrame-a
Možete pratiti ovaj vodič u Jupyter Notebook okruženju sa instaliranim Pandas-om. Takođe možete koristiti Google Colab.
Prvo ćemo kreirati Pandas DataFrame i koristiti ga tokom ovog uputstva.
Evo rečnika `books_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], }
Prvo ćemo uvesti Pandas, a zatim kreirati DataFrame `df` iz `books_dict`:
import pandas as pd
Napomena: Vraćamo se na sledeću ćeliju koda da bismo kreirali početnu verziju DataFrame-a pre preimenovanja kolona.
df = pd.DataFrame(books_dict)
Možemo koristiti `df.head()` da dobijemo prvih nekoliko redova DataFrame-a `df`. Po podrazumevanoj vrednosti, vraća prvih pet redova. Ovde `df` ima samo pet redova, tako da kada koristimo `df.head()` dobijamo ceo DataFrame.
df.head()
Vidimo da su nazivi kolona trenutno ključevi rečnika. Ali ovo nije baš opisno. Dakle, hajde da ih preimenujemo! 👩🏫
Metode za preimenovanje kolona u Pandas-u
Pogledajmo različite metode za preimenovanje kolona u Pandas-u:
- Postavljanje atributa `columns` DataFrame-a na listu novih naziva kolona
- Korišćenje metode `rename()` na DataFrame-u
- Korišćenje `str.replace` za preimenovanje jedne ili više kolona
- Korišćenje metode `set_axis()` na DataFrame-u
Podešavanje `columns` atributa
Za bilo koji DataFrame, atribut `columns` sadrži listu naziva kolona:
df.columns # Index(['one', 'two', 'three', 'four'], dtype="object")
Preimenujmo kolone da označimo šta svako polje predstavlja, a zatim pozovimo `df.head()` da vidimo rezultate:
df.columns = ['Title','Author','Genre','Rating'] df.head()
Korišćenje metode `rename()`
Da biste preimenovali kolone u Pandas-u, možete koristiti metodu `rename()` sa sledećom sintaksom:
df.rename(columns={mapping})
Ovo mapiranje može biti rečnik sledećeg oblika:
{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',..., 'old_col_name_n':'new_col_name_n'}
Hajde da napravimo `df` iz rečnika `books_dict`:
df = pd.DataFrame(books_dict)
Koristeći metodu `rename()` sa gornjom sintaksom, dobijamo `df_1`, što je kopija DataFrame-a sa preimenovanim kolonama.
df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'}) df_1.head()
Dakle, nazivi kolona `df_1` su izmenjeni:
Ali imena kolona originalnog DataFrame-a `df` se ne menjaju:
df.head()
Pošto nam ovaj metod omogućava da obezbedimo mapiranje između starih i novih naziva kolona, možemo ga koristiti za preimenovanje jedne ili više kolona.
Preimenovanje kolona na licu mesta
Šta ako želite da izmenite postojeći DataFrame bez pravljenja nove kopije?
Da biste to uradili, možete postaviti `inplace` na `True` u pozivu metode.
df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True) df.head()
Ovo će preimenovati kolone originalnog DataFrame-a `df`:
Do sada smo videli kako da:
- Preimenujete kolone tako što ćete obezbediti rečnik koji mapira imena starih kolona u nazive novih kolona
- Preimenujete kolone na licu mesta, bez pravljenja novog DataFrame-a
Metodu preimenovanja možete koristiti i na drugi način.
Još jedan pristup preimenovanju kolona
Preimenujmo kolone tako da budu velikim slovima:
df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING'] df.head()
DataFrame `df` sada izgleda ovako:
Pretpostavimo da želimo da promenimo nazive svake od ovih kolona tako da budu pisani kao naslov (prvo slovo veliko). Umesto da obezbedimo rečnik za svako ime kolone, možemo da navedemo poziv funkcije ili metode za objekat kao što je prikazano:
df.rename(str.title,axis="columns",inplace=True) df.head()
Ovde postavljamo osu na ‘columns’ i koristimo `str.title` da konvertujemo sva imena kolona u velika i mala slova (naslovni oblik).
Korišćenje `str.replace()` na nizovima naziva kolone
Kao i uvek, pokrenite sledeću ćeliju koda da biste kreirali DataFrame iz rečnika:
df = pd.DataFrame(books_dict)
U Python-u biste koristili metodu `replace()` sa sintaksom `str.replace(this, with_this)` da biste dobili kopiju stringa sa potrebnim izmenama. Evo primera:
>>> str1 = 'Marathon' >>> str1.replace('Mara','Py') 'Python'
Znate da atribut `columns` sadrži listu stringova koji sadrže nazive kolona. Dakle, možete pozvati `str.replace(‘old_column_name’,’new_column_name’)` ovako:
df.columns = df.columns.str.replace('one','Title') df.head()
Ovde smo samo kolonu ‘one’ preimenovali u ‘Title’, tako da su nazivi ostalih kolona ostali nepromenjeni.
Sada preimenujmo ostale kolone koristeći isti pristup:
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()
Ovaj metod preimenovanja kolona je od pomoći kada treba da preimenujete samo jednu ili mali podskup kolona.
Korišćenje metode `set_axis()`
Vratimo se na početnu verziju DataFrame-a:
df = pd.DataFrame(books_dict)
Takođe možete koristiti metodu `set_axis()` da biste preimenovali kolone. Sintaksa je sledeća:
df.set_axis([list_of_column_names],axis="columns")
Po podrazumevanoj vrednosti metoda `set_axis()` vraća kopiju DataFrame-a. Ali ako želite da izmenite DataFrame na licu mesta, možete postaviti `copy` na `False`.
df = df.set_axis(['Title','Author','Genre','Rating'],axis="columns",copy=False) df.head()
Zaključak
Evo pregleda različitih metoda za preimenovanje kolona u Pandas DataFrame-u:
- Za primer DataFrame-a `df`, atribut kolone `df.columns` je lista naziva kolona. Da biste preimenovali kolone, možete postaviti ovaj atribut na listu novih naziva kolona.
- Metoda `rename()` za preimenovanje kolona radi sa sintaksom: `df.rename(columns={mapping})` gde se mapiranje odnosi na preslikavanje starih naziva kolona u imena novih kolona. Takođe možete koristiti metodu `rename()` tako što ćete navesti funkciju koja će se primeniti na sve nazive kolona: `df.rename(poziv funkcije ili metode, axis=’columns’)`.
- Baš kao što koristite metodu `replace()` na Python stringu, možete koristiti `df.columns.str.replace(‘old_column_name’, ‘new_column_name’)` da zamenite imena kolona.
- Drugi pristup preimenovanju u kolonama je korišćenje metode `set_axis` sa sintaksom: `df.set_axis(list_of_col_names,axis=’columns’)`.
To je sve za ovaj vodič! Pogledajte listu svezaka za saradnju za analizu podataka.