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.