DatetimeIndex ja aikavälit
Luokaa DatetimeIndex pd.date_range-funktiolla, jäsentäkää merkkijonomuotoiset päivämäärät ja asettakaa aikasarake indeksiksi aikaperusteista käsittelyä varten.
DatetimeIndex ja aikavälit on ilmainen Pandas & NumPy Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/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.
Miksi Pandas sisältää erityisiä aikatyökaluja
Aikasarja-aineisto vaatii muutakin kuin päivämäärien tallentamisen merkkijonoina. Aineisto on lajiteltava ajan mukaan, päivämääräalueita on voitava valita, näytteistys on voitava tehdä eri taajuuksilla ja päivämääristä on voitava erottaa osia, kuten kuukausi ja viikonpäivä. Pandas ratkaisee tämän DatetimeIndex-indeksillä, joka koostuu datetime64-arvoista ja mahdollistaa erityiset aikatietoiset operaatiot, joita tavalliset kokonaisluku- tai merkkijonoindeksit eivät tue.
DatetimeIndex-objektin luominen pd.date_range()-funktiolla
pd.date_range(start, end, freq) luo tasavälein sijaitsevien päivämäärien sarjan. freq-parametri määrittää aikavälin offset-aliaksilla: 'D' päivälle, 'h' tunnille, 'ME' kuukauden lopulle, 'W' viikolle ja 'YE' vuoden lopulle. Voit antaa joko end-parametrin tai periods-parametrin (aikaleimojen määrän), mutta et molempia.
import pandas as pd
# Daily dates for January 2024
dates = pd.date_range(start='2024-01-01', end='2024-01-07', freq='D')
print(dates)
# DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03',
# '2024-01-04', '2024-01-05', '2024-01-06', '2024-01-07'],
# dtype='datetime64[ns]', freq='D')
# 12 month-end dates
months = pd.date_range(start='2024-01-31', periods=12, freq='ME')
print(months[:3])DatetimeIndex-indeksin määrittäminen DataFrameen
Aikaperusteisten operaatioiden käyttöön ottamiseksi määritä päivämääräsarake DataFramen indeksiksi käyttämällä set_index()-metodia sen jälkeen, kun olet muuntanut sarakkeen datetime64-muotoon pd.to_datetime()-funktiolla. Kun indeksi on DatetimeIndex, voit käyttää osittaista merkkijonoindeksointia (df['2024-01']), päivämääräalueiden viipalointia ja kaikkia aikatietoisia metodeja.
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'value': [10, 15, 12]
})
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
print(df)
# value
# date
# 2024-01-01 10
# 2024-01-02 15
# 2024-01-03 12
print(type(df.index)) # DatetimeIndexOsittainen merkkijonoindeksointi
Yksi DatetimeIndex-indeksin kätevimmistä ominaisuuksista on osittainen merkkijonoindeksointi. Voit valita rivejä vuoden, kuukauden tai päivämäärän perusteella välittämällä .loc[]-metodille osittaisen päivämäärämerkkijonon. Esimerkiksi df.loc['2024-01'] palauttaa kaikki tammikuun 2024 rivit ja df.loc['2024'] kaikki vuoden 2024 rivit. Sarakearvoja ei tarvitse verrata erikseen.
# Create a larger date-indexed Series
s = pd.Series(
range(365),
index=pd.date_range('2024-01-01', periods=365, freq='D')
)
# Select all of January 2024
print(s.loc['2024-01'].shape) # (31,)
# Select a specific date range
print(s.loc['2024-03-01':'2024-03-07'])pd.to_datetime()-funktio jäsentämiseen
pd.to_datetime() muuntaa merkkijonot, kokonaisluvut (Unix-aikaleimat) tai erimuotoisia päivämääriä sisältävät sarakkeet datetime64-muotoon. Määritä format-parametrilla tarkka kaava, jos päivämäärät ovat epästandardissa muodossa (esimerkiksi '%d/%m/%Y'). Käytä errors='coerce'-asetusta, jos haluat muuntaa jäsentämättömät arvot NaT-arvoiksi (Not a Time) virheen aiheuttamisen sijaan.
# Parse standard ISO format
print(pd.to_datetime('2024-06-15'))
# Parse non-standard format
print(pd.to_datetime('15/06/2024', format='%d/%m/%Y'))
# Handle mixed/bad data gracefully
mixed = pd.to_datetime(['2024-01-01', 'bad_date', '2024-06-15'],
errors='coerce')
print(mixed) # NaT for 'bad_date'.dt-aksesori päivämääräajan osille
Kun DataFramen sarake (ei indeksi) sisältää datetime64-arvoja, .dt-aksesori tuo kaikki päivämääräajan ominaisuudet ja metodit käytettäviksi sarakevektorille vektoroidusti. Sen avulla voit ilman silmukoita poimia esimerkiksi .dt.year-, .dt.month-, .dt.day-, .dt.day_of_week- ja .dt.hour-arvot. Jos päivämääräaika on indeksissä, käytä suoraan df.index.year-ominaisuutta.
df_col = pd.DataFrame({'date': pd.date_range('2024-01-01', periods=5, freq='D'),
'value': [10, 15, 12, 18, 14]})
df_col['year'] = df_col['date'].dt.year
df_col['month'] = df_col['date'].dt.month
df_col['dow'] = df_col['date'].dt.day_of_week # 0=Monday
df_col['week'] = df_col['date'].dt.isocalendar().week
print(df_col.head())Ajanjaksoalueet pd.period_range()-funktiolla
PeriodIndex esittää ajan jaksoina yksittäisten aikaleimojen sijaan. pd.period_range(start, periods, freq) luo kuukausi-, neljännesvuosi- tai vuosijaksoja. Esimerkiksi Period('2024-01', 'M') tarkoittaa koko tammikuuta 2024, ei vain sen alkamispäivää. PeriodIndex on hyödyllinen talousraportoinnissa, jossa käsitellään neljänneksiä tai kuukausia.
# Monthly periods
periods = pd.period_range('2024-01', periods=6, freq='M')
print(periods)
# PeriodIndex(['2024-01', '2024-02', '2024-03',
# '2024-04', '2024-05', '2024-06'],
# dtype='period[M]')
# Quarterly periods
quarters = pd.period_range('2024Q1', periods=4, freq='Q')
print(quarters) # [2024Q1, 2024Q2, 2024Q3, 2024Q4]Aikaleiman ja ajanjakson muuntaminen toisikseen
Voit muuntaa DatetimeIndex-indeksin PeriodIndex-indeksiksi to_period(freq)-metodilla ja takaisin to_timestamp()-metodilla. Ajanjaksoiksi muuntaminen on hyödyllistä, kun haluat nimetä rivit kuukauden tai neljänneksen etkä tietyn päivän perusteella. Näin ryhmittely ja aggregointi ovat luontevampia kalenteriin perustuvassa analyysissä.
daily_idx = pd.date_range('2024-01-15', periods=5, freq='D')
print('DatetimeIndex:', daily_idx[:3])
# Convert to monthly periods
monthly_idx = daily_idx.to_period('M')
print('PeriodIndex:', monthly_idx[:3])
# PeriodIndex(['2024-01', '2024-01', ...], dtype='period[M]')
# Convert back to timestamps (start of period)
print(monthly_idx.to_timestamp()[:3])Aikavyöhykkeiden käsittely
Käytännön aikasarjoihin liittyy usein aikavyöhyketietoja. Pandas tukee aikavyöhyketietoisia DatetimeIndex-indeksejä tz_localize()-metodilla (liittää aikavyöhykkeen aikavyöhykkeettömiin aikaleimoihin) ja tz_convert()-metodilla (muuntaa aikavyöhykkeiden välillä). Käytä sisäisesti aina UTC-aikaa ja muunna paikallisaikaan vasta esitystä varten, jotta kesäaikaan liittyvät epäselvyysvirheet vältetään.
naive = pd.date_range('2024-01-01', periods=3, freq='D')
print('Naive:', naive.tz)
# Attach timezone (localize)
utc = naive.tz_localize('UTC')
print('UTC:', utc)
# Convert to New York time
ny = utc.tz_convert('America/New_York')
print('NY:', ny[:2])DatetimeIndex-indeksin tarkistaminen ja lajittelu
Aikasarjaoperaatiot, kuten uudelleennäytteistys ja viipalointi, edellyttävät, että DatetimeIndex on lajiteltu (kasvavassa järjestyksessä). Tarkista tämä komennolla df.index.is_monotonic_increasing ja lajittele tarvittaessa komennolla df.sort_index(). Lajittelematon DatetimeIndex voi aiheuttaa huomaamattomia virheitä tai odottamattomia tuloksia uudelleennäytteistyksessä ja ikkunaoperaatioissa.
import numpy as np
df_unsorted = pd.DataFrame(
{'value': [10, 15, 12]},
index=pd.to_datetime(['2024-01-03', '2024-01-01', '2024-01-02'])
)
print('Sorted:', df_unsorted.index.is_monotonic_increasing) # False
df_sorted = df_unsorted.sort_index()
print('After sort:', df_sorted.index.is_monotonic_increasing) # True
print(df_sorted)Käytännön malli: aikasarja-DataFramen rakentaminen
Tässä on kattava malli aikaleimaindeksoidun DataFramen rakentamiseen raakadatan pohjalta: jäsennä päivämäärät, määritä indeksi, lajittele ja tarkista indeksin taajuus. Tämä määritys muodostaa perustan kaikelle myöhempien oppituntien aikasarja-analyysille — uudelleennäytteistys, liukuvat keskiarvot ja viiveominaisuudet perustuvat kaikki siistiin ja lajiteltuun DatetimeIndex-indeksiin.
import numpy as np
# Simulate loading raw data
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=30, freq='D')
df_ts = pd.DataFrame({'sales': np.random.randint(100, 500, 30)}, index=dates)
df_ts.index.name = 'date'
print('Shape:', df_ts.shape)
print('Freq:', df_ts.index.freq)
print('Sorted:', df_ts.index.is_monotonic_increasing)
print(df_ts.head())Pikatarkistus
Testaa, miten hyvin ymmärrät tämän oppitunnin DatetimeIndex-indeksin ja ajanjaksoalueiden käsittelyn.
Oppitunnin yhteenveto
Tässä oppitunnissa opit luomaan DatetimeIndex-indeksin pd.date_range()-funktiolla ja jäsentämään päivämäärät pd.to_datetime()-funktiolla, käyttämään osittaista merkkijonoindeksointia intuitiiviseen päivämäärien valintaan, erottamaan Timestamp- ja Period-tyypit toisistaan sekä käsittelemään aikavyöhykkeitä. Seuraavaksi tutustumme uudelleennäytteistykseen aikasarjan taajuuden muuttamiseksi.
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 ”DatetimeIndex ja aikavälit” ilmainen?
Kyllä – oppitunnin ”DatetimeIndex ja aikavälit” 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 ”DatetimeIndex ja aikavälit”?
Luokaa DatetimeIndex pd.date_range-funktiolla, jäsentäkää merkkijonomuotoiset päivämäärät ja asettakaa aikasarake indeksiksi aikaperusteista käsittelyä varten. 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 1/4.
Kuinka kauan ”DatetimeIndex ja aikavälit”-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
- DatetimeIndex ja aikavälit
- Aikasarjojen uudelleennäytteistys
- Siirtäminen ja viivepiirteet
- Aikapiirteiden poimiminen