Cosè il sé in Python: esempi del mondo reale
Cos'è il sé in Python: esempi del mondo reale
Voglio fare un tuffo profondo in qualcosa chiamato analisi combinatoria. Questo può essere definito come la scelta e la disposizione di elementi di insiemi secondo regole prescritte. Potrebbe sembrare esoterico, ma in realtà ha alcuni casi d'uso molto pratici. Puoi guardare il video completo di questo tutorial in fondo a questo blog.
In questo tutorial, ti mostrerò come eseguire questa operazione utilizzando Power Query in LuckyTemplates.
Sommario
Esempio di analisi combinatoria
In questo esempio di analisi combinatoria, il compito era avere un elenco di sei magazzini e dovevamo generare ogni set univoco di tre. Sembra un problema piuttosto semplice, ma questo è uno di quei casi in cui la lingua conta davvero.
La risposta corretta qui è 216, 120, 56 o 20. Quindi, a seconda di come definisci quel set unico e delle regole che hai prescritto, potresti essere fuori di un fattore 10 se non ottieni il set correttamente.
E così, ci sono due dimensioni che contano qui. Il primo è " l'ordine è importante ?" Quindi, quando parliamo di tre serie di tre, ABC è equivalente a BCA? Quindi l'ordine è importante? E se l'ordine è importante , stiamo parlando di permutazioni .
Un buon esempio di permutazioni in cui l'ordine potrebbe avere importanza è (stiamo parlando di un contesto di magazzino) nel caso del tempo di viaggio. Potrebbe benissimo essere che se visiti il magazzino A, poi il magazzino B e poi il magazzino C, il tempo di viaggio dovuto al flusso di traffico con traffico contromano, il tempo in cui sei arrivato a ciascun magazzino, potrebbe essere molto diverso a seconda dell'ordine in cui li visiti.
Il rovescio della medaglia è che " l'ordine non ha importanza ", nel qual caso stiamo parlando di combinazioni , non di permutazioni. Il caso d'uso qui comune è la distanza. Ad esempio, in linea d'aria, la distanza da A a B a C non sarà diversa dalla distanza da B a C ad A. Questi saranno considerati in un contesto di combinazione.
Le combinazioni sono considerate duplicati l'una dell'altra. Considerando che, in un contesto di permutazione, saranno considerati unici.
E quindi, come puoi vedere, un lucchetto a combinazione dovrebbe essere davvero un lucchetto a permutazione perché in quel caso l'ordine conta, rendendolo una permutazione, non una combinazione.
La seconda domanda o dimensione che conta è " una volta che un articolo è stato prelevato, può essere prelevato di nuovo ?" Ad esempio, se scegliamo A come primo magazzino, possiamo scegliere nuovamente A o dobbiamo scegliere ogni volta elementi unici?
Il termine che usiamo qui è " con sostituzione " o " senza sostituzione ". Quindi, se un articolo può essere prelevato di nuovo, è con la sostituzione, il che significa che lo scegli tu. E in un certo senso torna nel cestino della selezione e viene nuovamente raccolto. Se la risposta è no, è senza sostituzione.
E quindi, puoi vedere in questa soluzione che le permutazioni con sostituzione sono le meno restrittive. Quindi questo è quello che ci dà 216 set unici. E le combinazioni senza sostituzione sono le più restrittive, dandoci 20.
Useremo queste formule solo come un modo per controllare i nostri risultati di Power Query . Quindi ricorderemo 216, 120, 56 e 20. Ora passiamo a Power Query e vediamo come si svolge questa analisi combinatoria.
Analisi combinatoria: permutazioni in Power Query
In Power Query, ho qui un caso molto semplice con sei magazzini con nome.
E ho sviluppato questa funzione Power Query M, che ho usato per elaborare combinazioni e permutazioni.
Innanzitutto, svilupperò il primo caso d'uso, che è permutazioni con sostituzione , il meno restrittivo del gruppo. Il modo per farlo in Power Query è prendere questa tabella Warehouses e farvi riferimento (in DAX si usa CROSSJOIN ).
Lo chiamerò Per w Rep (permutazioni con sostituzione).
Esistono diversi modi per eseguire un cross join in Power Query. Il modo più semplice che ho trovato è semplicemente andare Add column , quindi Custom column . Nella formula della colonna personalizzata, fai riferimento alla tabella Magazzini .
E quello che troveremo quando clicchiamo su OK è che genera una tabella nidificata.
Quindi, lo espandiamo e deselezionare Usa il nome delle colonne originali come prefisso .
E otteniamo questo Location.1 , che è ogni possibile combinazione di due. Quindi prende i primi sei riferimenti contro le altre sei combinazioni. I secondi sei fanno lo stesso fino in fondo finché non abbiamo 36 set diversi.
Possiamo fare il terzo facendolo di nuovo. Quindi andiamo Aggiungi colonna, quindi una colonna personalizzata e poi Magazzini.
E avremo le 216 righe come permutazioni con sostituzione.
E puoi vedere da quaggiù, 3 colonne, 216 righe.
Il prossimo caso d'uso sono le permutazioni senza sostituzione . Quello a cui stiamo pensando qui è fondamentalmente tutto ciò che ha un elemento ripetuto. Quindi in questa tabella, vedremo dalla riga 1 alla riga 8.
Per farlo, daremo un'occhiata a questa funzione, fxSortAndIsDistinct .
Nell'editor avanzato, puoi vedere che in pratica richiede una tabella, quindi esegue un SortLocs . Ma la parte importante qui per "con sostituzione" o "senza sostituzione" è che si tratta di una funzione IsDistinct . Ciò che fa è semplicemente prendere un elenco di elementi e determinare vero o falso, se è distinto o se ha duplicati nell'elenco di elementi.
Quindi andiamo qui, selezioniamo Perm w Rep e premiamo Invoke .
Questo ci darà queste due nuove colonne, SortLocs e IsDistinct . Ora, ricorda che i primi otto record avevano duplicati e il nono record è stata la prima volta che abbiamo visto il distinto . Ecco perché la nona riga qui è la prima che risulta vera.
Se ripensiamo ai numeri che avevamo sui calcoli fattoriali, ci aspettiamo 120 record se togliamo i record non distinti. Quindi, proviamo a filtrare qui ed eliminare il FALSO.
Mentre lo facciamo, otteniamo quaggiù esattamente le 120 righe che ci aspettiamo. Ora rinominiamolo come Perm wo Rep (permutazione senza sostituzione).
Analisi combinatoria: combinazioni in Power Query
Ora faremo le combinazioni con replacement . Per fare ciò, ripetiamo semplicemente il processo e ripetiamo il passaggio (funzione richiamata). Quindi va bene avere duplicati, ma non vogliamo insiemi con gli stessi elementi , ma in un ordine diverso.
In questo caso, quando parliamo di combinazioni. Se ricordi che ABC è uguale a BCA è uguale a CAB, questi sono tutti considerati duplicati l'uno dell'altro. E il modo in cui lo determiniamo è attraverso la funzione Sort ( fxSortAndIsDistinct ).
Se torniamo alla funzione nell'editor avanzato, vedremo per quella seconda colonna che abbiamo preso quell'elenco e lo abbiamo ordinato alfabeticamente. Quindi, abbiamo estratto i valori delimitati da virgola da tale elenco. Ora abbiamo ogni set ordinato alfabeticamente. Abbiamo normalizzato l'ordine per facilitare la ricerca di duplicati.
Ora, se torniamo a questa funzione invocata, ricorda che stiamo cercando 56 record qui. Quindi prendiamo questo tipo di posizione ( SortLocs ) e rimuoviamo i nostri duplicati .
Con questo, otteniamo 56 righe.
E così, questo è il nostro terzo caso d'uso. Rinominiamolo come CC w Rep (combinazioni con sostituzione).
Concludiamo questo prendendo di nuovo le permutazioni con la tabella di sostituzione (Perm w Rep) e facciamo lo stesso schema (invoke). Quindi, rimuoveremo i duplicati (colonna SortLocs) perché si tratta di una combinazione e l'ordine non ha importanza. È senza sostituzione, quindi vogliamo anche solo l'elenco distinto . Quindi, facciamo clic su FALSE nella colonna IsDistinct.
Con questo, otteniamo 20 record. E ora abbiamo tutti e quattro i nostri casi d'uso.
Ordinamento delle colonne della tabella delle date in LuckyTemplates
Guida per principianti al codice M in LuckyTemplates
Convertire la funzione della tabella delle date in una query di tabella in LuckyTemplates
Conclusione
Quindi ora abbiamo tutti e quattro i nostri casi d'uso. Puoi davvero vedere quanto sia potente in termini di sviluppo di quell'analisi combinatoria che ti dà il controllo sulla sostituzione e sugli elementi distinti.
Questo è applicabile anche in alcuni casi più complessi in cui si ha una sostituzione parziale, o magari si seleziona un elemento duplicato per la prima volta, ma non per la seconda volta. Puoi ancora gestirlo bene all'interno di Power Query .
Spero che tu l'abbia trovato utile. Dai un'occhiata ai link sottostanti per ulteriori contenuti. Puoi anche guardare il video completo di questo tutorial qui sotto.
Ti auguro il meglio!
Cos'è il sé in Python: esempi del mondo reale
Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.
In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.
Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.
In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.
Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.
Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.
Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.
Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.
Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere