Pandas filter etter dato

Pandas filter etter dato
Formatet på datoer varierer i forskjellige regioner (DD/mm/åååå, åååå-mm-dd, yyyy-dd-mm osv.). Å jobbe med datostrengverdier i datasettet er utfordrende. Tid og dato i strengformat kan konverteres til DateTime64 ved hjelp av Pandas 'To_DateTime () -metode. Denne datatypen gir oss utvinning av tids- og datoegenskaper som spenner fra "mikrosekunder" til "år". Konverter først datoverdiene i den gitte DataFrame til DateTime64 -typen før du filtrerer radene basert på datoer. Deretter definerer du en filtertilstand ved hjelp av Pandas -pakken DataFrame.Loc og Dataframe.spørringsfunksjoner. Få det filtrerte DataFrame som er undergruppen av data.

Hvordan trekke ut verdier fra Pandas DataFrame basert på datoverdier

I de følgende eksemplene vil vi bruke de forskjellige metodene for å filtrere kolonnene i DataFrame etter datoverdier. Før filtrering av dataene, må datoene konverteres til datatypen “DateTime64”.

Eksempel 1: Pakk ut data ved hjelp av DataFrame.loc [] funksjon basert på datoverdier

Ved hjelp av kolonnenavn eller en boolsk matrise, kan LOC [] -funksjonen brukes til å hente en gruppe kolonner og rader i en DataFrame. En matrise (boolsk) med en sann verdi hvis raden oppfyller kravet og en falsk verdi i alle andre tilfeller returneres av det betingede uttrykket i LOC [] -metoden. Loc [] -funksjonen returnerer bare radene med sanne verdier. For å lage vår DataFrame, bruker vi PD.DataFrame () -funksjon. Pandas -biblioteket må importeres først.


Vi passerte en Python -ordbok inne i PD.DataFrame () -funksjonen for å lage vår “DF” DataFrame. La oss skrive det ut for å visualisere innholdet.


Det er to kolonner i forrige DataFrame “Navn” og “Posting_date”. Kolonnen "Navn" består av navn på ansatte i et selskap ("Leo", "Bruce", "Robert", "Clay", "Martin", "Henry", "Lana", "Becky", "Alexa" , “Dustin”). Kolonnen “Posting_date” inneholder posten til innleggsdatoen til hver ansatt (“2022-08-01”, “2022-08-20”, “2022-09-05”, “2022-09-25”, “2022 -09-30 ”,“ 2022-10-10 ”,“ 2022-11-10 ”,“ 2022-12-01 ”,“ 2022-12-10 ”,“ 2022-12-30 ”). La oss sjekke datatypene til kolonner i "DF" DataFrame ved hjelp av DTYPES -attributtet.


Det kan overføres at den nåværende datatypen til "posting_date" kolonner er "objekt". For å filtrere dataene basert på datoverdier, konverterer vi dem til "DateTime64".


For å konvertere datatypen til DateTime64, brukte vi PD.DateTime () -funksjonen og passerte kolonnen “Posting_Date” som et argument inne i funksjonen. Formatet er spesifisert. Nå endres datatypen til kolonnen med datoverdier til “TimEdate64”. Igjen kan du bruke DTYPES -attributt for å bestemme datatypen på kolonner.


Datatypen på posting_date endres fra objekt til datetime64. Når datatypen endres nå, kan vi bruke vår Loc [] -funksjon med forhold inne i den for å filtrere radene.


Vi brukte to forhold inne i LOC [] -funksjonen for å trekke ut radene fra DataFrame der datoen i "posting_date" er lik eller større enn "22-09-05" og verdien av "posting_date" er mindre enn 22- 12-01.


De foregående radene med DataFrame oppfyller forholdene i LOC [] -funksjonen.

Eksempel 2: Pakk ut dataene ved å bruke DateTimeIndex (DT) i DataFrame.loc [] funksjon

Flere egenskaper kan returneres ved hjelp av DT for å oppnå seriens verdier som datetimelike verdier. For eksempel "serien.dt.Dato ”attributt returnerer en Python DateTime Numpy Array. La oss lage en annen DataFrame for dette eksemplet.


Dataframe er opprettet ved hjelp av ordboksiden av PD.DataFrame () -funksjon.


"Dato" -kolonnen i DataFrame- -08-29 ”,“ 2021-09-15 ”,” 2021-10-21 ”,“ 2021-11-02 ”,“ 2021-11-10 ”,“ 2021-11-18 ”). Vi sjekker nå datatypen til DataFrame ved hjelp av Dypes -attributtet.


Datatypen på kolonner “oppgave” og “date” er henholdsvis int64 og objekt. Vi endrer "dato" -kolonnen til "DateTime64" -datatype. For å endre datatypen, bruker vi TO_DATETIME () -funksjonen.


Nå kan vi filtrere dataene ved hjelp av LOC [] -metoden. Først filtrerer vi dataene uten å bruke DT -attributtet til å filtrere dataene for spesifikke datoer.


Det forrige skriptet henter radene med datoene mellom november siden tilstanden er spesifisert som datoen må være lik eller større enn 2021-11-01 og mindre enn 2021-11-30.


Vi kan også hente radene med spesifikke datoer eller tider ved å bruke DT -attributtet. La oss anta at vi henter raden for en bestemt ukedag. Indeksering av hverdager starter fra 1 til 7 der 1 er mandag og 7 er søndag. Hvis vi spesifiserer mandag, bruker vi indeksverdien 1.

Eksempel 3: Pakk ut dataene ved hjelp av .Spørring [] funksjon basert på datoverdier

Query () -metoden kan også brukes til å filtrere dataene basert på datoverdier fra DataFrame. Du kan spørre DataFrame ved hjelp av spørringen () -metoden. Et spørringsuttrykk sendes som en strenginngang til spørringen () -metoden, og det må returnere sant eller usant. DataFrame blir returnert når utdataene er sann av spørringsuttalelsen. La oss opprette et DataFrame der vi bruker spørringen () -funksjonen for å filtrere dataene.


La oss nå endre datatypen til "ankomst" -kolonnen til DateTime64 ved hjelp av TO_DATETIME () -funksjonen.


Ved hjelp av DTYPES -attributtet, la oss bekrefte om datatypen til "ankomst" -kolonnen endres til DateTime64 eller ikke.


Når datatypen endres, bruker vi spørringen () -funksjonen for å filtrere dataene fra “DF” DataFrame.


Du kan observere at tilstanden i spørringen () -funksjonen blir bestått som en streng, i.e. “Ankomst> = '2022-02-05' og ankomst < '2022-05-15'”. The function returns the rows where the date values in the “arrival” column are equal to or greater than 2022-02-05 and less than 2022-05-15.


De foregående radene fra "DF" DataFrame tilfredsstiller tilstanden i spørringen () -funksjonen.

Eksempel 4: Filtrer radene mellom to datoer ved hjelp av ISIN () -funksjonen

ISIN () -metoden hjelper med å hente radene med en enkelt (eller flere) verdi i en spesifikk kolonne. “Pandaene.Dataramme.Isin () ”-metoden returnerer en dataaframe av booleans som indikerer om et element er inkludert i det gitte området eller ikke eller ikke. Denne teknikken lar oss filtrere radene med DataFrame i pandaer i henhold til datoen. Vi oppretter nå en ny prøve DataFrame for å demonstrere bruken av ISIN () -funksjonen for å filtrere radene etter import av pandaer og numpy moduler.


Da vi opprettet vår DataFrame, endrer vi nå datatypen på kolonnen "Dato" til DateTime64 som vi gjorde i de forrige eksemplene.


Etter å ha endret datatypen til Datetime 64, filtrerer vi radene ved å bruke radene fra "DF" DataFrame ved hjelp av ISIN () -funksjonen.


Vi passerte PD.date_range () -funksjon ved siden av ISIN () -funksjonen. Vi spesifiserte startparameteren til dato_range () som 2021-12-01 og sluttparameteren som 2022-02-01. Den forrige koden returnerer radene fra DataFrame som ligger innenfor rekkevidden.

Konklusjon

I denne opplæringen prøvde vi å lære deg å filtrere radene etter datoverdier. Vi lærte at vi konverterer datoverdiene i den gitte DataFrame til DateTime64 -typen før vi filtrerer radene basert på datoer. Vi implementerte noen få eksempler i denne artikkelen for å lære deg hvordan du kan bruke DataFrame.loc [] funksjon, .spørring [] funksjon, og isIn () funksjon for å filtrere dataene etter datoer i pandaer. Nå, etter å ha gått gjennom denne opplæringen, skal du kunne filtrere radene selv.