Przemianowanie nagłówków kolumn w strukturze danych Pandas to operacja wykonywana bardzo często. Poznajmy cztery rozmaite sposoby modyfikacji nazw kolumn w Pandas.
Pandas to popularna biblioteka Pythona dedykowana analizie danych. Dane, które poddajemy analizie, są często dostępne w różnorodnych formatach, np. pliki CSV i TSV, relacyjne bazy danych i wiele innych. Konieczne jest przeprowadzenie wstępnej weryfikacji danych, obsługa brakujących wartości i przygotowanie zbioru danych do dalszych analiz.
Za pomocą Pandas możemy:
- Pobierać dane z różnych źródeł.
- Badać zbiór danych i zarządzać brakującymi elementami.
- Analizować zbiór danych, aby uzyskać szczegółowe informacje.
W ramach każdego projektu analizy danych często będziesz konstruować ramki danych z struktur danych Pythona, takich jak słowniki. Możesz również wczytać dane z innych źródeł, np. pliku CSV, do ramki danych.
Ramka danych to kluczowa struktura danych w Pandas. Zawiera ona rekordy rozmieszczone w wierszach oraz różne pola, inaczej atrybuty, wzdłuż kolumn.
Czasem zachodzi potrzeba zmiany nazw kolumn – aby były bardziej zrozumiałe i ułatwiały czytanie. Poniżej omówimy cztery różne podejścia do zmiany nagłówków kolumn. Przejdźmy do działania!
Inicjalizacja Ramki Danych Pandas
Zachęcamy do prześledzenia samouczka w środowisku Jupyter Notebook, mając zainstalowaną bibliotekę Pandas. Możesz również skorzystać z Google Colab.
Na początek stworzymy ramkę danych Pandas, która będzie służyła jako materiał do ćwiczeń w tym tutorialu.
Oto słownik o nazwie `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], }
Na początku zaimportujemy bibliotekę Pandas, a następnie utworzymy ramkę danych `df` bazując na słowniku `books_dict`.
import pandas as pd
Ważna uwaga: Będziemy powracać do poniższego fragmentu kodu w celu ponownego utworzenia początkowej wersji ramki danych przed każdą zmianą nazw kolumn.
df = pd.DataFrame(books_dict)
Możemy wykorzystać funkcję `df.head()`, aby wyświetlić kilka początkowych wierszy ramki danych `df`. Domyślnie funkcja ta zwraca pierwsze pięć wierszy. W naszym przypadku ramka `df` zawiera tylko pięć wierszy, więc `df.head()` pokaże całą ramkę.
df.head()
Widzimy, że obecne nazwy kolumn są kluczami słownika. Nie są one zbyt opisowe, dlatego dokonamy ich zmiany! 👩🏫
Metody Przemianowania Kolumn w Pandas
Przyjrzyjmy się różnym podejściom do modyfikacji nazw kolumn w Pandas:
- Ustalenie atrybutu `columns` ramki danych na listę nowych nazw kolumn.
- Zastosowanie metody `rename()` na ramce danych.
- Wykorzystanie `str.replace` do zmiany nazw jednej lub kilku kolumn.
- Użycie metody `set_axis()` na ramce danych.
Ustalanie Atrybutu `columns`
W każdej ramce danych, atrybut `columns` przechowuje listę nazw kolumn:
df.columns # Index(['one', 'two', 'three', 'four'], dtype="object")
Zmieńmy nazwy kolumn tak, aby opisywały, co reprezentuje każde pole, a następnie wywołajmy `df.head()`, aby sprawdzić efekty:
df.columns = ['Title','Author','Genre','Rating'] df.head()
Użycie Metody `rename()`
Do zmiany nagłówków kolumn w Pandas możesz skorzystać z metody `rename()` z następującą strukturą:
df.rename(column={mapping})
Odwzorowanie to może być słownikiem o formie:
{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',..., 'old_col_name_n':'new_col_name_n'}
Utwórzmy ramkę danych `df` ze słownika `books_dict`:
df = pd.DataFrame(books_dict)
Używając metody `rename()` zgodnie z podaną strukturą, uzyskamy `df_1`, będącą kopią ramki danych z przemianowanymi kolumnami.
df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'}) df_1.head()
Nazwy kolumn w `df_1` są teraz zmodyfikowane:
Natomiast nazwy kolumn w oryginalnej ramce danych `df` pozostają bez zmian:
df.head()
Metoda ta pozwala nam odwzorować stare nazwy kolumn na nowe, dlatego możemy ją zastosować do modyfikacji nazw zarówno pojedynczych, jak i wielu kolumn.
Modyfikacja Nazw Kolumn w Miejscu
Co w sytuacji, gdy chcemy zmodyfikować istniejącą ramkę danych, bez tworzenia jej kopii?
W tym celu należy ustawić parametr `inplace` na `True` w wywołaniu metody.
df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True) df.head()
Spowoduje to zmianę nazw kolumn oryginalnej ramki danych `df`:
Do tej pory poznaliśmy:
- Jak zmieniać nazwy kolumn, dostarczając słownik mapujący stare nazwy na nowe.
- Jak modyfikować nazwy kolumn bezpośrednio, bez tworzenia kopii ramki danych.
Metodę `rename` można wykorzystać również na inny sposób.
Inny Sposób na Modyfikację Nagłówków Kolumn
Zmieńmy nazwy kolumn tak, aby były zapisane wielkimi literami:
df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING'] df.head()
Ramka danych `df` wygląda teraz tak:
Załóżmy, że chcemy zmienić każdą z tych nazw kolumn, tak aby były pisane w formacie „Title”. Zamiast podawać słownik dla każdej z nazw, możemy określić wywołanie funkcji lub metody dla obiektu, jak poniżej:
df.rename(str.title,axis="columns",inplace=True) df.head()
W tym przypadku ustalamy oś na `”columns”` i używamy `str.title` aby przekształcić wszystkie nazwy kolumn na formę „Title”.
Wykorzystanie `str.replace()` na Ciągach Nazw Kolumn
Jak zwykle, uruchom poniższy kod, aby utworzyć ramkę danych ze słownika:
df = pd.DataFrame(books_dict)
W Pythonie, do uzyskania kopii ciągu ze zmianami, wykorzystujemy metodę `replace()` o składni `str.replace(this, with_this)`. Oto przykład:
>>> str1 = 'Marathon' >>> str1.replace('Mara','Py') 'Python'
Atrybut `columns` zawiera listę stringów z nazwami kolumn. Możemy więc wykorzystać `str.replace(’old_column_name’,’new_column_name’)` w następujący sposób:
df.columns = df.columns.str.replace('one','Title') df.head()
W tym przypadku zmieniliśmy nazwę tylko kolumny „one” na „Title”, więc pozostałe nazwy nie uległy zmianie.
Teraz zmodyfikujmy nazwy pozostałych kolumn, stosując to samo podejście:
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()
Ta metoda zmiany nazw kolumn jest szczególnie użyteczna, gdy potrzebujemy zmodyfikować tylko jedną lub niewielką liczbę kolumn.
Zastosowanie Metody `set_axis()`
Powróćmy do początkowej wersji naszej ramki danych:
df = pd.DataFrame(books_dict)
Możemy również użyć metody `set_axis()` do modyfikacji nazw kolumn. Składnia wygląda następująco:
df.set_axis([list_of_column_names],axis="columns")
Domyślnie metoda `set_axis()` zwraca kopię ramki danych. Jeśli jednak chcemy zmodyfikować ramkę danych bezpośrednio, możemy ustawić parametr `copy` na `False`.
df = df.set_axis(['Title','Author','Genre','Rating'],axis="columns",copy=False) df.head()
Podsumowanie
Oto zestawienie różnych metod zmiany nazw kolumn w ramkach danych Pandas:
- W odniesieniu do ramki danych `df`, atrybut `df.columns` przechowuje listę nazw kolumn. W celu modyfikacji nazw kolumn, możemy przypisać temu atrybutowi listę nowych nazw.
- Metoda `rename()` służąca do zmiany nagłówków kolumn działa zgodnie ze schematem `df.rename(columns={mapping})`, gdzie `mapping` odnosi się do przypisania starych nazw kolumn do nowych. Możemy również wykorzystać metodę `rename()` określając funkcję, która ma być zastosowana do wszystkich nazw kolumn: `df.rename(function_call, axis=’columns’)`.
- Podobnie jak w przypadku metody `replace()` używanej dla ciągów w Pythonie, możemy wykorzystać `df.columns.str.replace(’old_column_name’, 'new_column_name’)` do podmiany nazw kolumn.
- Innym podejściem jest metoda `set_axis()` ze składnią: `df.set_axis(list_of_col_names, axis=’columns’)`.
To wszystko w tym samouczku! Zachęcamy do zapoznania się z listą notebooków Jupyter do analizy danych.
newsblog.pl