Hur man byter namn på Pandas kolumner [4 Examples]

By rik

Omdöpning av Kolumner i Pandas DataFrames: En Omfattande Guide

Att ändra namnen på kolumner i en Pandas DataFrame är en ofta förekommande uppgift inom datahantering. Den här artikeln utforskar fyra olika metoder för att effektivt byta namn på dina Pandas-kolumner.

Pandas är ett omtyckt Python-bibliotek som används flitigt för dataanalys. Data som vi behöver analysera dyker ofta upp i olika format, exempelvis CSV- och TSV-filer, relationsdatabaser och mer. Innan vi börjar analysen behöver vi ofta göra inledande granskningar, hantera saknade värden och förbereda informationen.

Med Pandas kan du:

  • Importera data från en mängd olika källor.
  • Utforska din datamängd och ta itu med saknade värden.
  • Analysera data för att få värdefulla insikter.

I de flesta dataanalysprojekt skapas DataFrames från Python-datastrukturer som till exempel ordböcker. Alternativt kan data importeras från externa källor, som CSV-filer, direkt till en DataFrame.

En DataFrame är en grundläggande datastruktur i Pandas. Den organiserar data i rader (poster) och kolumner (attribut eller fält).

Ofta är det nödvändigt att byta namn på kolumnerna för att göra dem mer beskrivande och lättlästa. I den här handledningen går vi igenom fyra metoder för att åstadkomma detta. Låt oss sätta igång!

Skapa en Pandas DataFrame

Du kan följa handledningen i en Jupyter Notebook-miljö eller på Google Colab, förutsatt att Pandas är installerat.

Vi börjar med att skapa en DataFrame som vi kan använda i resten av handledningen.

Här är en ordbok kallad `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],
    }
    

Vi importerar Pandas-biblioteket och använder det för att skapa en DataFrame från `books_dict`.

import pandas as pd

Obs: Vi kommer att referera tillbaka till nedanstående kodcell – för att generera en första version av vår DataFrame – innan vi byter namn på kolumnerna.

df = pd.DataFrame(books_dict)

Använd `df.head()` för att se de första raderna i vår DataFrame. Som standard visas de fem första raderna. I vårt fall har `df` bara fem rader, så vi får hela dataramen när vi använder `df.head()`.

df.head()

Vi ser att kolumnnamnen för närvarande är samma som nycklarna i ordboken. Det här är inte särskilt beskrivande, så vi kommer att ändra dem. 👩‍🏫

Metoder för att Byta Namn på Kolumner i Pandas

Låt oss nu undersöka de olika sätten vi kan byta namn på kolumner i Pandas:

  • Ange kolumnattributet för DataFrame till listan över nya namn.
  • Använd `rename()`-metoden på DataFrame.
  • Använd `str.replace` för att ändra namn på en eller flera kolumner.
  • Använd `set_axis()`-metoden på DataFrame.

Ange Kolumnernas Attribut

Kolumnattributet för alla DataFrames innehåller listan över kolumnnamn:

df.columns
# Index(['one', 'two', 'three', 'four'], dtype="object")

Låt oss byta namn på kolumnerna så att de förklarar vad varje fält representerar. Sedan använder vi `df.head()` för att se resultatet:

df.columns = ['Title','Author','Genre','Rating']
df.head()

Använda `rename()`-metoden

För att byta namn på kolumner kan du använda metoden `rename()` med följande syntax:

df.rename(columns={mapping})

Här kan mapping vara en ordbok med följande format:

{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',...,
'old_col_name_n':'new_col_name_n'}

Låt oss skapa `df` från vår `books_dict`:

df = pd.DataFrame(books_dict)

Genom att använda metoden `rename()` med ovanstående syntax får vi `df_1`. Det är en kopia av DataFramen med kolumnerna ombenämnda.

df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'})
df_1.head()

Kolumnnamnen i `df_1` är ändrade:

Men kolumnnamnen i den ursprungliga DataFramen `df` är fortfarande oförändrade:

df.head()

Eftersom den här metoden låter oss mappa de gamla och nya kolumnnamnen kan vi använda den för att byta namn på enskilda eller flera kolumner.

Byt Namn På Kolumner In-Place

Vad händer om du vill ändra den befintliga DataFramen utan att generera en ny kopia?

Detta görs genom att sätta `inplace` till `True` i metodanropet.

df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True)
df.head()

Detta kommer att ändra namnen i den ursprungliga DataFramen `df`:

Hittills har vi undersökt hur man:

  • Ändrar namnen på kolumner genom att mappa de gamla till de nya.
  • Ändrar namnen på kolumner direkt, utan att skapa en ny DataFrame.

Metoden `rename()` kan även användas på ett annat sätt.

Ett Annat Sätt Att Ändra Namn På Kolumner

Låt oss ändra namnen på kolumnerna så att de är i versaler:

df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING']
df.head()

DataFramen `df` ser nu ut så här:

Antag att vi vill göra om varje kolumnnamn till titelfall. Istället för att ange en ordbok för varje kolumnnamn, kan vi ange ett funktions- eller metodanrop på ett strängobjekt:

df.rename(str.title,axis="columns",inplace=True)
df.head()

Här sätter vi `axis` till ”columns” och använder `str.title` för att konvertera alla kolumnnamn till titelfall.

Använda `str.replace()` på Kolumnnamnssträngarna

Som alltid, kör följande kodcell för att skapa DataFramen från ordboken:

df = pd.DataFrame(books_dict)

I Python används `replace()` metoden med syntaxen `str.replace(this, with_this)` för att få en kopia av strängen med de nödvändiga ändringarna. Här är ett exempel:

>>> str1 = 'Marathon'
>>> str1.replace('Mara','Py')
'Python'

Du vet att kolumnattributet innehåller en lista över strängar, som är kolumnnamnen. Så du kan anropa `str.replace(’old_column_name’, ’new_column_name’)` så här:

df.columns = df.columns.str.replace('one','Title')
df.head()

Vi har bara bytt namn på kolumnen ”one” till ”Title”, de andra kolumnnamnen är oförändrade.

Låt oss byta namn på de andra kolumnerna med samma tillvägagångssätt:

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()

Den här metoden är praktisk när du bara behöver byta namn på en eller en mindre andel kolumner.

Använda `set_axis()`-metoden

Låt oss gå tillbaka till den ursprungliga versionen av DataFramen:

df = pd.DataFrame(books_dict)

Du kan också använda `set_axis()`-metoden för att ändra namnen på kolumnerna. Syntaxen ser ut så här:

df.set_axis([list_of_column_names],axis="columns")

Som standard genererar `set_axis()` en kopia av DataFramen. Men om du vill ändra den direkt kan du sätta `copy` till `False`.

df = df.set_axis(['Title','Author','Genre','Rating'],axis="columns",copy=False)
df.head()

Sammanfattning

Här är en genomgång av de olika metoderna för att byta namn på kolumner i en Pandas DataFrame:

  • För en DataFrame `df` är kolumnattributet `df.columns` listan med kolumnnamn. För att byta namn på kolumner kan du direkt ändra den här listan.
  • `rename()`-metoden använder syntaxen: `df.rename(columns={mapping})`, där `mapping` anger relationen mellan de gamla och nya kolumnnamnen. Du kan även använda en funktion: `df.rename(function_or_method, axis=’columns’)`.
  • Du kan använda `df.columns.str.replace(’old_column_name’, ’new_column_name’)` för att ersätta kolumnnamn, likt hur `replace()` fungerar med vanliga Python-strängar.
  • Ett annat sätt är `set_axis()` metoden med syntaxen: `df.set_axis(list_of_col_names,axis=’columns’)`.

Det var allt för den här guiden! Ta gärna en titt på vår lista över interaktiva Notebooks för dataanalys.