Indeksin asettaminen ja palauttaminen
Muuntaa sarake rivien indeksiksi set_index()-menetelmällä, palauttakaa se reset_index()-menetelmällä ja tutustukaa MultiIndex-indeksiin.
Indeksin asettaminen ja palauttaminen on ilmainen Pandas & NumPy Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Pandas & NumPy Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Pandas & NumPy Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on DataFramen indeksi?
Jokaisella Pandas DataFramella on rivi-indeksi — joukko kuhunkin riviin liitettyjä tunnisteita. Oletusindeksi on RangeIndex (0, 1, 2, …), mutta voitte korvata sen millä tahansa sarakkeella, joka toimii luonnollisena tunnisteena: päivämäärällä, tuotetunnuksella, käyttäjätunnuksella tai millä tahansa yksilöllisellä avaimella. Merkityksellinen indeksi parantaa luettavuutta, mahdollistaa tunnisteisiin perustuvan viipaloinnin ja on välttämätön aikasarjojen uudelleenotannassa.
import pandas as pd
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'sales': [100, 200, 150]
})
print('Default index:', df.index.tolist()) # [0, 1, 2]
print(df)set_index() — sarakkeen muuttaminen indeksiksi
DataFrame.set_index('col') muuttaa määritetyn sarakkeen rivi-indeksiksi ja poistaa sen tavallisista sarakkeista. Sarakkeen arvoista tulee rivitunnisteita. Tämä on tavallinen tapa tehdä DataFramesta ilmaisuvoimaisempi, kun yksi sarake toimii luonnollisena avaimena. Menetelmä palauttaa uuden DataFramen; alkuperäinen säilyy muuttumattomana, ellei käytössä ole inplace=True.
import pandas as pd
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'sales': [100, 200, 150]
})
df = df.set_index('date')
print(df)
# sales
# date
# 2024-01-01 100
# 2024-01-02 200
# 2024-01-03 150
print(df.index) # Index(['2024-01-01', ...], dtype='object', name='date')Rivien valitseminen mukautetun indeksin avulla
Kun merkityksellinen sarake on asetettu indeksiksi, voitte noutaa rivejä tunnisteen perusteella komennolla .loc[label] selkeällä ja luettavalla syntaksilla — totuusarvomaskia ei tarvita. DatetimeIndex-indeksissä voitte käyttää jopa osittaisia päivämäärämerkkijonoja, kuten df.loc['2024-01'], valitaksenne kaikki tammikuun 2024 rivit.
import pandas as pd
df = pd.DataFrame({
'product': ['A', 'B', 'C'],
'price': [10, 20, 30],
'stock': [100, 50, 75]
})
df = df.set_index('product')
# Access row by label
print(df.loc['B'])
# price 20
# stock 50
# Name: B, dtype: int64set_index() useilla sarakkeilla — MultiIndex
Kun välitätte luettelon sarakenimiä set_index()-menetelmälle, se luo MultiIndex-indeksin (hierarkkisen indeksin). Tuloksena olevaan DataFrameen voi viitata monikoilla komennossa .loc[]. MultiIndex on välttämätön ryhmitellyissä aikasarjoissa (alue + päivämäärä), paneelidatassa (kohde + aika) ja kaikessa analyysissä, jossa rivejä on ryhmiteltävä kahdella tasolla.
import pandas as pd
df = pd.DataFrame({
'region': ['East', 'East', 'West', 'West'],
'year': [2023, 2024, 2023, 2024],
'revenue': [100, 150, 200, 220]
})
df = df.set_index(['region', 'year'])
print(df)
# revenue
# region year
# East 2023 100
# 2024 150
# West 2023 200
# 2024 220
print(df.loc[('East', 2024)]) # revenue = 150drop=-parametri set_index()-menetelmässä
Oletusarvoisesti set_index('col') poistaa sarakkeen DataFramen tavallisista sarakkeista, kun siitä tulee indeksi. Välittäkää drop=False, jos haluatte säilyttää sarakkeen ja käyttää sitä samalla indeksinä. Tästä on joskus hyötyä, kun haluatte tunnisteisiin perustuvan käytön mutta tarvitsette saraketta myös tavallisten sarakkeiden joukossa tehtäviin laskutoimituksiin.
import pandas as pd
df = pd.DataFrame({'id': [1, 2, 3], 'value': [10, 20, 30]})
# Keep 'id' as both index and column
df_with_both = df.set_index('id', drop=False)
print(df_with_both)
# id value
# id
# 1 1 10
# 2 2 20
# 3 3 30reset_index() — indeksin palauttaminen sarakkeeksi
reset_index() on set_index()-menetelmän vastakohta: se siirtää nykyisen rivi-indeksin takaisin tavalliseksi sarakkeeksi ja korvaa indeksin oletusarvoisella RangeIndex-indeksillä. Tätä tarvitaan usein groupby().agg()-kutsun jälkeen tai sellaisten operaatioiden jälkeen, joissa käyttöön jää merkityksellinen indeksi, jota tarvitaan myöhemmässä käsittelyssä sarakkeena.
import pandas as pd
df = pd.DataFrame({'sales': [100, 200]}, index=['East', 'West'])
df.index.name = 'region'
reset = df.reset_index()
print(reset)
# region sales
# 0 East 100
# 1 West 200
print(reset.index.tolist()) # [0, 1] — default RangeIndex restoredreset_index(drop=True)
Kun välitätte reset_index()-menetelmälle parametrin drop=True, nykyinen indeksi hylätään kokonaan eikä sitä siirretä sarakkeeksi. Käyttäkää tätä, kun nykyinen indeksi ei sisällä merkityksellistä tietoa, esimerkiksi rivien suodattamisen jälkeen, jolloin indeksissä on aukkoja kuten 0, 3 ja 7, ja haluatte vain uuden siististi nollasta alkavan peräkkäisen indeksin.
import pandas as pd
df = pd.DataFrame({'x': [10, 20, 30, 40, 50]})
filtered = df[df['x'] > 15]
print('Filtered index:', filtered.index.tolist()) # [1, 2, 3, 4]
# Drop the old index — don't move it to a column
clean = filtered.reset_index(drop=True)
print('Clean index:', clean.index.tolist()) # [0, 1, 2, 3]reset_index() groupby-kutsun jälkeen
groupby().agg()-kutsun jälkeen ryhmittelyavaimista tulee indeksi. Kutsulla reset_index() ne muunnetaan takaisin tavallisiksi sarakkeiksi, jolloin tuloksena on tasomainen taulukko, jota on helpompi käsitellä, yhdistää tai viedä muualle. Tämä on yksi reset_index()-menetelmän yleisimmistä käyttötavoista.
import pandas as pd
df = pd.DataFrame({
'dept': ['Eng', 'HR', 'Eng', 'Sales', 'HR'],
'salary': [90000, 50000, 80000, 70000, 55000]
})
# After groupby, dept becomes the index
agg = df.groupby('dept')['salary'].mean()
print(type(agg), agg.index.tolist())
# dept is the index
# Reset makes dept a regular column again
result = agg.reset_index()
result.columns = ['dept', 'avg_salary']
print(result)rename_axis() indeksin nimeä varten
Kun rivi-indeksillä ei ole nimeä tai haluatte nimetä sen uudelleen selkeyden vuoksi, käyttäkää komentoa df.rename_axis('new_name') (rivi-indeksille) tai df.rename_axis('col_name', axis=1) (sarakkeiden akselille). Merkityksellinen indeksin nimi tekee tulosteesta itsensä paremmin dokumentoivan, erityisesti CSV-tiedostoon vietäessä, jolloin indeksin nimestä tulee sarakeotsikko.
import pandas as pd
df = pd.DataFrame({'sales': [100, 200, 300]}, index=['A', 'B', 'C'])
print(df.index.name) # None
# Name the index
df = df.rename_axis('region')
print(df)
# sales
# region
# A 100
# B 200
# C 300Uudelleenindeksointi aukkojen täyttämiseksi
DataFrame.reindex(new_index) muotoilee DataFramen vastaamaan uutta indeksiä ja täyttää uudessa indeksissä olevat mutta alkuperäisistä tiedoista puuttuvat kohdat NaN-arvoilla. Tätä käytetään DataFramejen kohdistamiseen yhteiseen täydelliseen indeksiin — esimerkiksi varmistamaan, että jokainen vuoden kuukausi näkyy, vaikka joiltakin kuukausilta ei olisi tietoja.
import pandas as pd
df = pd.DataFrame({
'month': ['Jan', 'Mar', 'Jun'],
'revenue': [100, 200, 300]
}).set_index('month')
all_months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
complete = df.reindex(all_months)
print(complete)
# revenue
# Jan 100.0
# Feb NaN <- filled with NaN
# Mar 200.0
# Apr NaN
# May NaN
# Jun 300.0MultiIndexin reset_index ja tasojen valinta
MultiIndex-DataFramessa reset_index() siirtää oletusarvoisesti kaikki tasot takaisin sarakkeiksi. Parametrilla level= voitte palauttaa vain tietyt tasot. Tämä on hyödyllistä, kun haluatte säilyttää yhden tason indeksinä, esimerkiksi päivämäärän, ja siirtää vain toisen tason sarakkeeksi.
import pandas as pd
df = pd.DataFrame(
{'revenue': [100, 150, 200, 220]},
index=pd.MultiIndex.from_tuples(
[('East', 2023), ('East', 2024), ('West', 2023), ('West', 2024)],
names=['region', 'year']
)
)
# Reset only the 'year' level, keep 'region' as index
df2 = df.reset_index(level='year')
print(df2)
# year revenue
# region
# East 2023 100
# East 2024 150
# West 2023 200
# West 2024 220Pikatarkistus
Testatkaa ymmärrystänne indeksin asettamisesta ja palauttamisesta.
Oppitunnin yhteenveto
Tässä oppitunnissa opitte, että set_index('col') muuttaa sarakkeen rivi-indeksiksi tunnisteisiin perustuvaa käyttöä varten, luettelon välittäminen luo MultiIndex-indeksin ja reset_index() siirtää indeksin takaisin sarakkeeksi (käyttäkää drop=True, jos haluatte hylätä sen). Käyttäkää reindex()-menetelmää kohdistamiseen täydelliseen kohdeindeksiin, jolloin puuttuvat kohdat täytetään NaN-arvoilla. Nämä tekniikat ovat tulevien GroupBy- ja yhdistämisoppituntien perusta.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Indeksin asettaminen ja palauttaminen” ilmainen?
Kyllä – oppitunnin ”Indeksin asettaminen ja palauttaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Pandas & NumPy Academy-kurssin, päivitä CoddyKit PROhon. Pandas & NumPy Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Indeksin asettaminen ja palauttaminen”?
Muuntaa sarake rivien indeksiksi set_index()-menetelmällä, palauttakaa se reset_index()-menetelmällä ja tutustukaa MultiIndex-indeksiin. Harjoittelet Pandas & NumPy Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Pandas & NumPy Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Pandas & NumPy Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Indeksin asettaminen ja palauttaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Pandas & NumPy Academy-oppitunnilla?
Kyllä. Jokainen Pandas & NumPy Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Järjestäminen sarakearvojen perusteella
- Järjestäminen indeksin perusteella
- Arvojen järjestäminen
- Indeksin asettaminen ja palauttaminen