Jak zmienić nazwę kolumn Pandas [4 Examples]

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