Sådan ændres søjlenavne og rækkeindekser i Pandaer?
En af de mest almindelige operationer man kan udføre under rengøring af data eller udforskende dataanalyse ved udførelse af datavidenskab er at manipulere / rette kolonnenavne eller rækkenavne.
I dette indlæg vil vi se
- Hvordan omdøbes kolonner med pandas dataframe?
- Hvordan ændres rækkenavne eller rækkeindeks for en pandas dataframe?
Lad os først indlæse pandaer.
# import pandas>import pandas as pd
Lad os bruge gapminder-data fra softwaretømmerwebsite.
# link to gapminder datadata_url = "http://bit.ly/2cLzoxH"# read data from url as pandas dataframe>gapminder = pd.read_csv(data_url)
lad os kontrollere navnene på kolonnerne i dataframe, de første tre rækker af data ved hjælp af hovedfunktion.
>print(gapminder.head(3)) country year pop continent lifeExp gdpPercap0 Afghanistan 1952 8425333 Asia 28.801 779.4453141 Afghanistan 1957 9240934 Asia 30.332 820.8530302 Afghanistan 1962 10267083 Asia 31.997 853.100710
Vi kan også bruge kolonnefunktion til at få kolonnenavnene.
>gapminder.columnsIndex(, dtype="object")
Sådan omdøber du kolonner i Pandaer?
En kan ændre kolonnenavnene på en panda dataframe på mindst to måder. En måde at omdøbe kolonner i Pandaer på er at bruge df.kolonner fra Pandaer og tildele nye navne direkte.
Hvis du f.eks. Har kolonnerne i en liste, kan du tildele listen til kolonnenavne. direkte.
For at ændre kolonnerne i gapminder dataframe kan vi tildele listen over nye kolonnenavne til gapminder.columns som
>gapminder.columns =
Dette tildeler navnene på listen som kolonnenavne til datarammen “gapminder”. Vi kan kontrollere datarammen for at se, at hvis den har nye kolonnenavne ved hjælp af head () -funktionen.
>gapminder.head(3) country year population continent life_exp gdp_per_cap0 Afghanistan 1952 8425333 Asia 28.801 779.4453141 Afghanistan 1957 9240934 Asia 30.332 820.8530302 Afghanistan 1962 10267083 Asia 31.997 853.100710
Et problem med denne tilgang til at ændre søjlenavne er, at man skal ændre navne på alle søjlerne i datarammen. Denne tilgang fungerer ikke, hvis vi bare vil ændre navnet på en kolonne.
Funktionerne til omdøbning af pandaer til Omdøb kolonner
En anden måde at ændre kolonnenavne på i pandaer er at bruge omdøbningsfunktionen. Brug af omdøb til at ændre kolonnenavne er en meget bedre måde end før. Man kan chan ge navne på specifik kolonne let. Og ikke alle kolonnenavne skal ændres.
For at ændre kolonnenavne ved hjælp af omdøbningsfunktion i Pandas, skal man angive en kortlægger, en ordbog med det gamle navn som nøgler og det nye navn som værdier. Her er et eksempel på at ændre mange kolonnenavne ved hjælp af en ordbog. Vi bruger også inplace = True til at ændre kolonnenavne på plads.
En af de største fordele ved at bruge omdøbningsfunktion er, at vi kan bruge omdøb til at ændre så mange kolonnenavne, som vi vil.
Lad os ændre navnet på en enkelt kolonne.
Pandas omdøbningsfunktion kan også tage en funktion som input i stedet for en ordbog. For eksempel kan vi skrive en lambda-funktion til at tage de aktuelle kolonnenavne og kun overveje de første tre tegn for de nye kolonnenavne.
Hvordan ændres og række navne / indekser i pandaer?
En anden god ting ved pandas omdøbningsfunktion er, at vi også kan bruge den til at ændre rækkeindekser eller rækkenavne.
Vi skal bare bruge indeksargument og specificere, vi vil ændre indeks ikke kolonner.
For eksempel, for at ændre rækkenavne 0 og 1 til ‘nul’ og ‘en’ i vores gapminder-dataramme, konstruerer vi en ordbog med gamle rækkeindeksnavne som nøgler og ny række indeks som værdier.
Vi kan se, at kun de første to rækker har nye navne, som vi havde tænkt os.
Sådan ændres kolonnenavne og rækkeindekser samtidigt i Pandaer?
Med pandas omdøbe-funktion kan man også ændre både kolonnenavne og rækkenavne samtidigt ved at bruge både kolonne- og indeksargumenter til at omdøbe funktionen med tilsvarende kortordbøger.
Lad os ændre kolonnenavnet “lifeExp” til “life_exp” og også rækkeindekser “0 & 1” til “nul og en”.
Er du ny på Pandas? Og komme i gang med Pandas for nylig? Tjek vores nye Byte Sized Pandas 101-selvstudier.