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.