Tidsseriedata i pandor

I den här handledningen kommer du att lära dig hur du samplar om tidsseriedata med Pandas. Du kan se hela videon av denna handledning längst ner på den här bloggen .

Vad är denna idé med omsampling? Detta är relaterat till tidsseriedata och vad vi kommer att göra är att ändra frekvensen med vilken data rapporteras. Till exempel, ändra årsvärde till månadsvis eller veckovis, eller ändra timdata till dagliga. Kort sagt, vi ändrar nivån i hierarkin.

Detta kan användas av ett antal skäl som att få mer tillförlitliga trender , urvalsstorlekar och säsongsvariationer . I vissa rapporter är det mer meningsfullt om vi använder någon nivå av hierarkin mot en annan.

Dessutom kan omsampling hjälpa om du har olika datakällor och du behöver utföra sammanfogning av tidsseriedata. Detta kommer också att hjälpa när man hanterar en missmatchning i .

Tidsseriedata i pandor

För att bryta ner detta ytterligare har vi nedsampling och uppsampling.

Nedsampling är att minska rapporteringsfrekvensen . Det kan vara saker som att konvertera från en sekund till en timme för att få färre värden eller nedsampling månad till kvartal.

Å andra sidan är uppsampling för att öka rapporteringsfrekvensen från månadsnivå ner till dagen . Vi kommer att ha fler exempel på detta senare.

Tidsseriedata i pandor

Innehållsförteckning

Hur man omsamplar tidsseriedata med pandor

Hur ska vi göra detta i Pandas?

Först och främst kommer vi att ändra . Sedan kan vi upsampla med hjälp av interpolation, som kommer att fylla i värdena, och vi kan downsampla för att rulla upp genom att aggregera värdena.

Tidsseriedata i pandor

Låt oss gå över till Jupyter Notebook Python och kolla upp det här med Pandas.

Till att börja med kommer vi att använda Pandas genom att skriva in import pandas som pd , följt av import seaborn som sns för att visualisera det, och importera matplotlib.pyplot som plt för att anpassa .

Nästa sak att göra är att hämta data från vega_datasets importdata . Det är ett trevligt ställe att få provkällor. Vi kommer också att få sp = data.sp500 ( ) och sp.head ( ) library .

Tidsseriedata i pandor

Här är vår data hittills. Vi har de dagliga returerna och priset för varje dag.

Tidsseriedata i pandor

För att ställa in kolumnen för index till datum, skriv in sp.set_index(['date'], inplace=True) och anrop sp.head igen.

Tidsseriedata i pandor

Använda uppsampling för att få värden

Sedan, för att få fler värden, låt oss använda uppsampling. Eftersom vi har data för varje dag kan vi gå ner till timmen genom att använda den enklaste funktionen som är sp [['pris']]. resample ('H').ffill ( ) , kör det sedan. H står för timme, M för månad, D för dagen och så vidare. Du kan lära dig mer om detta i Pandas dokumentation .

Som vi kan se, den 1 januari vid midnatt, är priset 1394,46, samma som de efterföljande timmarna från 01:00 till 04:00. Ett annat exempel är den 2 januari, där slutkursen är 1366,42.

Tidsseriedata i pandor

Det finns andra sätt att göra detta även om värdet inte är tillgängligt på timnivå. Det finns också mer sofistikerade sätt än att bara göra en framåtfyllning . För vårt exempel är det vi gjorde det grundläggande sättet att göra uppsamplingsinterpolering.

Låt oss sedan gå till nedsampling genom att skriva in avg_month = sp [['price]].resample ('M').mean ( ) , sedan avg_month.head ( ) och kör det för att kontrollera.

Som illustreras kan vi se den sista dagen i varje månad och det genomsnittliga priset. Vi kan minska proverna för att få färre värden, eller vad vi kallar neddragning.

Tidsseriedata i pandor

För att visualisera detta, låt oss skriva om de mått som ritas. Sedan följt av sns.lineplot . Linjediagrammet fungerar bättre med en längre X-axel, medan Y-värdet är det genomsnittliga månadspriset.

Låt oss köra detta för att se det genomsnittliga priset för månaden.

Tidsseriedata i pandor

Återigen, det finns många olika sätt vi kan göra detta på. Om vi ​​till exempel vill veta det lägsta priset per kvartal behöver vi bara skriva in quarter_low och sedan quarter_low.head för att köra det.

Så där kan vi nu se det kvartalsvisa lägsta värdet som finns i varje kvartal. Så här gör du ett omprov.

Tidsseriedata i pandor




Slutsats

För att avsluta det är Pandas verkligen byggd för omsampling och tidsseriedata . Om du arbetar med tidsseriedata och har olika granulariteter kan omsampling vara till stor hjälp.

Se dessutom till att läsa Pandas dokumentation om omsamplingsmetoden för att lära dig många olika sätt att göra detta. Vi tittade på de grundläggande, men du kan göra saker som varannan vecka, den sista arbetsdagen i månaden och fler alternativ för omsampling.

Med vänliga hälsningar,

George Mount


Upptäck unika insikter med LuckyTemplates TOPN-funktion

Upptäck unika insikter med LuckyTemplates TOPN-funktion

Den här bloggen innehåller LuckyTemplates TOPN DAX-funktion, som gör att du kan få unika insikter från dina data, vilket hjälper dig att fatta bättre marknadsföringsbeslut.

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Lär dig några fantastiska analytiska tekniker som vi kan göra för datamodellering i LuckyTemplates med hjälp av DAX-stödtabeller.

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Här dyker vi in ​​i LuckyTemplates Advanced DAX och implementerar rankningslogik för att få en mycket unik insikt. Jag visar också upp måttförgrening i det här exemplet.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Den här bloggen introducerar den nya funktionen i LuckyTemplates, analysparametern What-If. Du kommer att se hur det gör allt snabbt och enkelt för din scenarioanalys.

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Lär dig hur du avgör om din intäktstillväxt är bra genom att kontrollera om dina marginaler ökade med hjälp av LuckyTemplates mäter förgrening.

LuckyTemplates parametrar via frågeredigerare

LuckyTemplates parametrar via frågeredigerare

Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.

Runda stapeldiagram – En visualisering för din instrumentpanel

Runda stapeldiagram – En visualisering för din instrumentpanel

Denna handledning kommer att diskutera hur man skapar ett runt stapeldiagram med Charticulator. Du kommer att lära dig hur du designar dem för din LuckyTemplates-rapport.

PowerApps funktioner och formler | En introduktion

PowerApps funktioner och formler | En introduktion

Lär dig hur du använder PowerApps funktioner och formler för att förbättra funktionaliteten och ändra ett beteende i vår Power Apps canvas-app.

Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.