Pandas Drop Index Kolonne: Forklaret med eksempler
Pandas Drop Index Kolonne: Forklaret med eksempler
Til dette indlæg vil jeg gerne tale om et nyligt LuckyTemplates-tip, som jeg kom med til et medlem af . Spørgsmålet handlede om et nyttigt mønster i forhold til at se på de første N hverdage eller første N fakturerbare dage i en given måned versus den samme periode i den foregående måned. Du kan se den fulde video af denne tutorial nederst på denne blog.
TJ Henneman ønskede at sammenligne de første 5 fakturerbare dage i den aktuelle måned med de første 5 fakturerbare dage i den foregående måned og derefter på dag 10, dag 15 og dag 20. Bemærk, at han kun ønsker at se på de fakturerbare dage, så dette inkluderer ikke weekender og helligdage. Du kan tjekke hans indlæg.
Jeg tror, at der er en virkelig interessant løsning til power-forespørgsler her. Jeg arbejdede også med en interessant DAX-løsning på dette problem. Jeg vil gennemgå sidstnævnte i en anden tutorial.
Jeg vil også guide dig gennem en jeg brugte til LuckyTemplates Challenge #16. Jeg brugte en rulleindikator , der vil fungere rigtig godt til dette særlige problem.
Men for dette LuckyTemplates-tip vil jeg berøre power-forespørgselsløsningen. Lad os springe ind i LuckyTemplates og tage et kig på vores data. Til denne simulerede jeg dataene ved hjælp af øvelsesdatasætværktøjet, som vi sammensatte på LuckyTemplates, som du kan bruge gratis. Dette er fantastisk til at sammensætte et grundlæggende stjerneskemadatasæt og til at teste løsninger.
Indholdsfortegnelse
Vores datamodel
Vores datamodel bruger vores udvidede datotabel plus en række dimensionstabeller. Vi har også en salgstabel med tre års delvise data det første år, fuldstændige data i det andet år og delvise data i det tredje år. Til sidst har vi også en.
Jeg har også ændret lidt i dette datasæt. Jeg bragte en ferietabel og linkede den til tabellen med udvidet dato, så den korrekt kan beregne de feriedage, vi fjerner i denne analyse. Hvis du ikke er sikker på, hvordan du gør dette, så tjek denne vejledning .
Derefter filtrerede jeg den første delvise måned fra datasættet, fordi den måned kun havde nogle få dages data og ikke havde de arbejdsdage, vi har brug for. Bemærk, at vi starter med den første hele måned; men bortset fra det, vil dette være dit standarddatasæt. Så lad os springe ud i detog begynd at arbejde på dette LuckyTemplates-tip.
Hvis vi kigger på vores data, kan du se, at vi har forskellige ordrer på en bestemt dag. Målet er at nummerere alt, hvad der starter med 1. april som vores første hverdag, 2. april som vores anden hverdag, 3. april som vores tredje hverdag, og så videre. Vi nummererer dette fra 1 til N hverdage for hver måned, mens vi tager weekender og helligdage ud.
Oprettelse af en dublet tabel
For at starte tingene er vi nødt til at oprette et duplikat af denne tabel, så vi kan aggregere til det samlede salg og bringe det ind på det individuelle observationsniveau. Vi kommer til at kalde denne dublettabel Sales Aggregated .
Du har måske bemærket, at vi duplikerede salgstabellen i stedet for blot at henvise til den. I dette tilfælde vil vi forbinde denne tabel med den originale salgstabel. Hvis vi henviser til det, vil det give problemer, når vi slutter os til de to.
Den første ting at gøre er at bruge en gruppe efter i kolonnen OrderDate . Klik på knappen Avanceret , fordi det vil give os et fuldstændigt billede af, hvad vi laver her. Vi vil sætte Total Day Sales som vores nye kolonnenavn, og det vil være summen af vores linjetotal.
Nu har vi hver dato (første kolonne) og det samlede salg for den dag (anden kolonne).
Sammenlægning af Datotabellen
Det næste trin i dette LuckyTemplates-tip er at flette dette med vores Datoer-tabel for at finde ud af, hvilke af disse dage der er hverdage, og hvilke af dem der ikke er. Vi kan gruppere efter igen, dele dem ud og nummerere dem korrekt.
Vi vil flette vores Datoer-tabel og knytte Ordredatoen til Dato . Vi kan se i den nederste del, at udvalget matcher hver række i tabellen, som det skal.
Det felt, vi primært er interesseret i, er IsBusinessDay .
Dette er det primære felt, som vi vil gruppere på, og derefter bruge felterne Måned & år og MånedÅr .
Vi skal også tjekke DayofWeekName for at sikre, at vi filtrerer de rigtige dage fra.
Når vi klikker på OK-knappen , vil det give os præcis, hvad vi har brug for.
Vi skal også sørge for, at vores ordredato er sorteret i stigende rækkefølge.
Så går vi tilbage og opretter en anden gruppe efter .
Denne gang klikker vi på knappen Avanceret , grupperer på Måned og år og tilføjer derefter endnu en gruppering.
Den anden gruppering er for IsBusinessDay , så vi kan nummerere dem, hvor hverdage er sande.
Derefter opretter vi en AllRows-funktion, så den ikke aggregeres, og vi vil være i stand til at gå tilbage til det oprindelige granularitetsniveau.
Dette skulle give os indlejrede tabeller , hvor vi kan se en tabel for sand og en tabel for falsk for hver måned.
Oprettelse af en brugerdefineret kolonne
Dernæst skal vi oprette en brugerdefineret kolonne for at tilføje det antal, vi har brug for for hverdagene.
Vi kommer til at bruge en funktion kaldet Table.AddIndexColumn , som vil fungere på AllRows-tabellen , og vi vil kalde det Day Index . Vi ønsker, at indekset starter med 1 og stiger med 1 for hver ny hverdag.
Så kan vi fjerne de første tre kolonner og udvide vores fjerde brugerdefinerede kolonne.
Hvis vi ser på resultatet, giver det os dagindekset, som tæller arbejdsdagene (sandt), og derefter tæller de dage, der er weekender og helligdage i hver måned (false). Dernæst skal vi kontrollere, at disse er i deres rigtige felttype.
Lad os gå tilbage til vores salgstabel. Vi fusionerer den samlede tabel, som vi lige har oprettet, med vores salgstabel.
Vi slår dem sammen på ordredatoen . Du kan se nederst, at det matcher alle rækkerne fra den første tabel.
Når vi udvider kolonnen Salg Agg, skal du vælge de nye felter, som vi lige har tilføjet: kolonnerne Måned & År , DagUgenavn , MånedÅr , IsBusinessDay og DagIndex .
Lad os også rydde op i vores data, før vi klikker på Luk og anvend . Lad os flytte Sales Agg-tabellen i vores Dataforberedelse sektion , og derefter fjerne den tabel, da vi ikke får brug for den i datamodellen. Klik derefter på Luk & Anvend .
Vores forberedelsesarbejde til strømforespørgsler er nu færdig.
Oprettelse af en hvad-hvis-parameter
Husk, at vi i den oprindelige opgave ønsker at variere antallet af dage, som vi ser på, fra 5 til 10 og 15 til 20. Jeg tror, at den bedste måde at gøre dette på er med en ny hvad-hvis- parameter .
Vi kalder what-if-parameteren First N Business Days, og dens datatype vil være et helt tal. Minimum er sat til et trin på 1 og et maksimum på 20. Så vil vi som standard være 5, som er den første værdi, som brugeren ønskede.
Vi har nu en pålægsmaskine, der automatisk opretter høstmålet for at fange skæremaskinens værdi.
Lad os lave en tabel med vores resultater. Lad os sætte vores Måned & År- dimension i lærredet og derefter sortere det efter Måned & År .
Når vi har sorteret dette felt ordentligt, kan vi bare droppe målingen for det samlede salg og udvide det.
Oprettelse af et mål for antal arbejdsdage
Vi skal oprette endnu et mål, der tager et kig på værdien af skyderparameteren og kun beregner for antallet af arbejdsdage.
Vi kalder dette nye mål Total Sales N Bus Days . Vi starter med funktionen, da vi helt sikkert ændrer kontekst, og med vores samlede salgsmål. Vi vil filtrere dette med vores salgstabel.
Næste trin er at skrive de forhold, som vi ønsker at tage højde for for skyderen. Vi har vores salgsdagindeks, som vi har oprettet i Power Query, og vi ønsker, at dette skal være mindre end eller lig med værdien for First N Business Days, som er den høstede værdi af skæremaskinen.
For eksempel, hvis skyderen er på 5, vil vi have alle dage i salgstabellen, hvor dagsindekset er mindre end eller lig med 5.
Og så vil vi gerne tage de ikke-arbejdsdage ud. Vi refererer til Dato-tabellen og bruger IsBusinessDay-feltet. Vi ser kun på resultatet, der er SANDT.
Til sidst skal du bringe konteksten tilbage for måned og år og lukke målingen. Vi burde være gode til at gå på dette tidspunkt.
Lad os slippe det nye mål ind i vores tabel.
Vi kan tage skyderudsnitteren til 10-dagesmærket, og tabellen vil dynamisk beregne ved 10-dagesmærket.
Konklusion
I dette LuckyTemplates-tip talte vi om, hvordan man laver en like-for-like-sammenligning dynamisk ved hjælp af en Power Query-løsning. Vi kan sætte dette ind i et søjlediagram eller et linjediagram.
I nogle af vores kommende tutorials tager vi et kig på DAX-løsningen og implementerer visualiseringen af KPI-scrolleren.
Hvis du kunne lide indholdet i denne særlige vejledning, så glem ikke at abonnere på LuckyTemplates tv- kanal.
Pandas Drop Index Kolonne: Forklaret med eksempler
7 måder, hvordan man kontrollerer, om en Python-streng indeholder en understreng
Forstå, hvad Power Automate Dynamic Content er, og hvordan det giver brugerne mulighed for at vælge feltreferencer fra tidligere trin eller skrive udtryk.
I denne vejledning lærer du, hvordan du deler en fil med en person, der ikke er en del af din virksomhed, ved hjælp af en sql-forespørgselsparameter i LuckyTemplates.
Find ud af, hvordan du bruger fjernfunktionen, og hvordan du opsætter bekræftelsespop-ups på den app, du har oprettet fra bunden.
Lær, hvordan du visualiserer filterkonteksten for enhver celle i en tabel eller matrix i LuckyTemplates DAX Studio ved hjælp af værktøjstip.
Lær, hvordan du opretter Power Automate-flows fra bunden. I stedet for at bruge en skabelon, skaber vi udløserne og handlingerne selv.
Se dette LuckyTemplates-tip fra Brian om, hvordan du dynamisk kan sammenligne de første N arbejdsdage ved hjælp af power-forespørgsel.
Lær om Power Apps modeldrevne apps, hvordan du opsætter miljøet, og hvordan du effektivt navigerer rundt i det.
Lær mere om at arbejde med webstedskort i Power Apps-modeldrevne apps, og opdag forskellige kompleksiteter, og hvordan du håndterer dem.