4 Metoder for å Gi Nytt Navn til Pandas-Kolonner i Python

Endre Navn på Kolonner i Pandas DataFrame: Fire Forskjellige Metoder

Å omdøpe kolonner i en Pandas DataFrame er en vanlig oppgave. Denne veiledningen utforsker fire ulike måter å endre navn på Pandas kolonner, slik at du kan velge den metoden som passer best for dine behov.

Pandas er et essensielt Python-bibliotek for dataanalyse. Dataene vi arbeider med kommer ofte fra forskjellige kilder og i varierende formater, for eksempel CSV- og TSV-filer eller relasjonsdatabaser. For å sikre nøyaktig analyse, er det nødvendig å gjøre forberedende arbeid som å sjekke dataenes integritet, håndtere manglende verdier og bearbeide dataene.

Med Pandas kan du enkelt:

  • Hente inn data fra en rekke ulike kilder
  • Utforske datasettet og håndtere manglende informasjon
  • Analysere datasettet for å trekke ut verdifull innsikt

I mange dataanalyseprosjekter vil du enten lage DataFrames fra Python datastrukturer som for eksempel dictionaries, eller laste inn data fra eksterne filer som CSV-filer.

DataFrame er den grunnleggende strukturen i Pandas. Den organiserer data i rader (poster) og kolonner (felter eller attributter). For å forbedre datalesbarheten og tydeligheten, kan det være nødvendig å endre navn på kolonnene. Denne artikkelen viser deg hvordan du kan gjøre dette på fire ulike måter.

Opprettelse av en Pandas DataFrame

For å følge denne veiledningen trenger du et miljø med Pandas installert, som Jupyter Notebook eller Google Colab. Vi starter med å opprette en DataFrame som vi kan bruke gjennom hele veiledningen.

Vi begynner med en dictionary som inneholder informasjon om bøker:

    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 importerer Pandas og oppretter en DataFrame `df` fra denne dictionary.

import pandas as pd

Merk: Vi kommer tilbake til denne kodesnutten for å generere en ny DataFrame før vi endrer kolonnenavnene.

df = pd.DataFrame(books_dict)

Vi kan bruke `df.head()` for å se de første radene i `df`. Som standard viser den de fem første radene, men siden `df` bare inneholder fem rader, vil `df.head()` vise hele dataframen.

df.head()

Vi ser at kolonnenavnene er de samme som nøklene i `books_dict`, men disse er ikke spesielt beskrivende. La oss derfor endre dem! 👩‍🏫

Metoder for å Endre Navn på Kolonner i Pandas

Her er de fire metodene vi skal utforske for å endre kolonnenavn:

  • Tildele en liste med nye kolonnenavn til kolonneattributtet i DataFrame
  • Bruke `rename()`-metoden på DataFrame
  • Bruke `str.replace` for å endre navn på én eller flere kolonner
  • Bruke `set_axis()`-metoden på DataFrame

Tildeling av Attributtet `columns`

For enhver DataFrame inneholder attributtet `columns` en liste over kolonnenavn.

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

La oss omdøpe kolonnene for å gjenspeile hva hvert felt representerer, og bruke `df.head()` for å se resultatet:

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

Bruke `rename()`-metoden

For å endre navn på kolonnene i Pandas kan du bruke `rename()`-metoden med følgende syntaks:

df.rename(column={mapping})

Her kan *mapping* være en dictionary som definerer relasjonen mellom gamle og nye navn, som dette:

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

La oss først gjenopprette `df` fra `books_dict`:

df = pd.DataFrame(books_dict)

Ved å bruke `rename()`-metoden som nevnt over, lager vi en ny DataFrame `df_1`. Dette er en kopi av den originale datarammen med de nye kolonnenavnene.

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

Kolonnenavnene til `df_1` er endret:

Merk at de originale kolonnenavnene i `df` er uendret:

df.head()

Siden denne metoden lar deg tilordne gamle navn til nye, kan du bruke den til å endre navn på både enkeltkolonner og flere kolonner.

Endre Kolonnenavn «In Place»

Hva om du ønsker å endre den eksisterende dataframen uten å lage en kopi?

Dette kan gjøres ved å sette `inplace` til `True` i metoden.

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

Dette endrer navnene i den originale `df`:

Så langt har vi sett hvordan vi kan:

  • Endre navn på kolonnene ved å gi en ordbok som mapper de gamle navnene til de nye.
  • Endre navn på kolonner uten å lage en kopi av dataframen.

Du kan også bruke `rename()`-metoden på en litt annen måte.

En Alternativ Måte å Endre Navn på Kolonner

La oss endre kolonnenavnene slik at de blir skrevet med store bokstaver:

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

Dataframen `df` ser nå slik ut:

Anta at vi ønsker å endre hvert navn til å være skrevet med stor første bokstav i hvert ord. I stedet for å lage en dictionary for hvert navn, kan vi spesifisere et metodekall:

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

Her setter vi `axis` til «columns» og bruker `str.title` for å endre alle kolonnene til å starte med stor bokstav.

Bruke `str.replace()` på Kolonnenavnstrenger

Som vanlig må vi laste inn DataFrame fra dictionary først:

df = pd.DataFrame(books_dict)

I Python ville du bruke metoden `replace()` med syntaksen `str.replace(this, with_this)` for å lage en kopi av en streng med de nødvendige endringene. Her er et eksempel:

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

Du vet at `columns`-attributtet inneholder en liste med strenger som representerer kolonnenavnene. Derfor kan du kalle `str.replace(«gammelt_navn», «nytt_navn»)` slik:

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

Her har vi bare endret navnet på kolonnen «one» til «Title», de andre kolonnenavnene er uendret.

La oss endre navnet på de andre kolonnene med samme fremgangsmåte:

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

Denne metoden er nyttig når du bare trenger å endre navn på én eller et par kolonner.

Bruke `set_axis()`-metoden

La oss starte med en ny versjon av DataFrame:

df = pd.DataFrame(books_dict)

Du kan bruke `set_axis()` for å endre navn på kolonnene. Syntaksen er som følger:

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

Som standard returnerer `set_axis()` en kopi av DataFrame. Hvis du vil endre dataframen «in place», kan du sette `copy` til `False`.

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

Konklusjon

Her er en oppsummering av metodene vi har sett for å endre kolonnenavn i en Pandas DataFrame:

  • For en DataFrame `df` er kolonneattributtet `df.columns` en liste over kolonnenavn. For å endre navn på kolonnene kan du endre innholdet i denne listen.
  • `Rename()`-metoden bruker syntaksen: `df.rename(columns={mapping})` hvor mapping er en dictionary som mapper de gamle kolonnenavnene til de nye. Du kan også bruke `rename()`-metoden med en funksjon som skal brukes på kolonnenavnene: `df.rename(funksjon eller metodekall, axis=’columns»)`.
  • På samme måte som med Python-strenger kan du bruke `df.columns.str.replace(«gammelt_navn», «nytt_navn»)` for å endre navn på kolonner.
  • En annen måte å endre navn på kolonnene er å bruke `set_axis`-metoden med syntaksen: `df.set_axis(list_of_col_names, axis=’columns»)`.

Det var alt for denne veiledningen! Sjekk ut listen over samarbeidende dataanalyse-notatbøker.