› Excel e gli applicativi Microsoft Office › Calcolo della mediana e del 90° percentile: PowerPivot o VBA
-
AutoreArticoli
-
Salve.
Ho una grossa mole di dati su cui dovrei fare delle selezioni e poi calcolare delle statistiche come la media e la mediana e il 90° percentile. Mentre la media è possibile calcolarla tramite le Pivot table, di default per la mediana e il percentile non è possibile farlo. Tuttavia non conosco bene le potenzialità delle PowerPivot.
Nel file allegato trovate due fogli. In Foglio2 ci sono una parte (Veneto e Friuli) dei dati originali: per ciascuna regione, ci sono i dati relativi a più parametri (Determinand_Nutrients) misurati (Concentration) in più stazioni (NationalStationID), campionate per tre anni in diverse date. In ciascuna stazione le misure sono state fatte a diverse profondità. Per il calcolo delle statistiche debbo selezionare solo quelli relativi alla profondità minore o a quella che si avvicina alla quota di 0,5 m.
Conoscendo meglio Access e un po' di SQL per selezionare solo i dati relativi alla quota minima o a quella che si avvicina di più alla quota di 0,5 m, ho importati i dati in Access e poi tramite una query ho selezionato i dati che mi interessavano e li ho esportati in Excel (Foglio1).
Potreste darmi una mano o nel gestire tutto il processo (selezione, aggregazione e statistiche) mediante routine VBA, quindi bypassando Access, oppure almeno nel poter aggregare i dati e calcolare la mediana e il 90° percentile tramite PivotTable o PowerPivot o mediante VBA ?
Grazie
Allegati:
You must be logged in to view attached files.per selezionare solo i dati relativi alla quota minima o a quella che si avvicina di più alla quota di 0,5 m, ho importati i dati in Access e poi tramite una query ho selezionato i dati che mi interessavano
In Foglio1 ci sono valori di "SampleDepth" che sfondano la misura di 0,5: è corretto?
mediante routine VBA, quindi bypassando Access
Non ho capito la correlazione: anche Access è dotato di VBA.
calcolare la mediana e il 90° percentile
Sono ignorante e non competo, ma se ci sono formule che calcolano mediana e percentile, si possono applicare anche via codice. Se Excel è già fornito di funzioni incorporate che calcolano tali valori, nel caso più brutale si potrebbe perfino (da Access) aprire un oggetto Excel e sfruttare brutalmente il suo oggetto WorksheetFunction per farsi fare i calcoli da lui.
Potreste darmi una mano
Ma tu alla fine devi realizzare anche dei grafici?
Ciao
I dati in Foglio1 non mi sembra siano stati estratti dal Foglio2 o, quanto meno, manca qualcosa.
Le colonne denominate "Temperature", "Salinity" e "Chl_a" da dove vengono fuori?
Il dato "più vicino a 0,50" è calcolato in base ad una percentuale (in più o in meno) rispetto a tale misura? E in caso affermativo, quale è questa percentuale? Oppure determinare cosa intendiamo per "più vicino".
Non credo sia necessario scomodare Access in quanto la quantità di dati è gestibile da Excel. Inoltre Excel ha le Funzioni Media, Mediana e Percentile, oltre a buona scorta di Grafici.
Ciao,
Mario
Grazie.
Cerco di rispondere ad entrambi.
I dati di Foglio1 sono il risultato di una query applicata all'insieme dei dati. Ovviamente non ho preso tutti i campi.
Le colonne denominate "Temperature", "Salinity" e "Chl_a" sono alcuni dei parametri presenti nel campo "Determinand_Nutrients", ovviamente traslati.
Per quanto riguarda il dato più vicino alla profondità forse non mi sono spiegato bene. Comunque utilizzando il filtro potrete capire meglio.
Ogni misura dei parametri (Temperature", "Salinity" e "Chl_a) è associata ad una profondità. A me interessa selezionare i valori di questi parametri misurati alla profondità che più si avvicina a 0.5 m di profondità. Se ho delle misure fatte a 0.2, 0.4 e 1.2, in questo caso voglio selezionare solo quelle relativa alla quota 0.4. Se ho delle misure fatte a 0.3, 1.2 e 2.0, in questo caso voglio selezionare solo quelle relativa alla quota 0.3. Come vedete la quota per la quale voglio le misure non sempre è quella minima, ma è variabile.
Io ho pensato che per ottenere ciò debbo prendere il minimo del valore assoluto dell'espressione (0.5 - SampleDepth), però non saprei come implementare ciò in VBA e fare le aggregazioni successive e le statistiche.
Non so se è possibile gestire tutto con EXCEL, in quanto sommando i dati per Adriatico, Ionio e Tirreno ho circa 1000000 di record per tre anni.
Se fosse possibile gestire tutto in EXCEL potrei tenere separato i dati in tre file XLS.
Spero di aver chiarito i vostri dubbi. Se sarebbe troppo complesso realizzare una routine VBA per gestire tutto il processo, posso continuare a gestire la selezione dei dati che mi interessano in ACCESS e poi l'aggregazione e il calcolo delle statistiche in EXCEL.
credo tu abbia messo troppa carne al fuoco, non capisco a cosa ti servirebbe il VBA, se hai i dati non ti bastano le formule ?
potrei tenere separato i dati in tre file XLS
Un milione di righe sarebbero in teoria gestibili da Excel > 2003 (se parli di xls non so se questo è il tuo scenario). Ma per queste operazioni lascerei che sia Access a gestire una tale mole di dati. In verità quello che (mi) manca per darti un'opinione di fattibilità è un esempio concreto del risultato da raggiungere 🙂
Perchè quasi qualsiasi cosa si può fare con VBA, basta sapere cosa si vuole ottenere/calcolare/mostrare. Con formule, come dice patel, potrebbe essere sufficiente, ma anche qui, non sappiamo dove devi andare a parare esattamente.
Grazie Vecchio Frac per la disponibilità.
Cercherò di essere il più chiaro possibile.
Innanzitutto dovresti scaricare il file xlsx allegato al mio primo post.
Poi seleziona nel Foglio2 tramite il filtro la NationaStationID = 50530. Vedrai che per il giorno 19/1/2016 hai valori di Salinity (colonna K), Temperature e altri parametri, a profondità molto vicine alla superficie (0.44, 0.42, 0.71, 0.75; colonna O). Tramite una query applicata ai dati originali (Foglio1) esportati in Access io ho i dati selezionati nel Foglio1, che contengono per questa stazione 50530 alla data del 19/1/2016 , i dati corrispondenti alla quota minima (0.42 m). Invece io vorrei selezionare solo i dati corrispondenti alla quota più vicina a 0.5 m: nel nostro caso sarebbe la quota 0.44. Tuttavia in Access non sono riuscito a scrivere una query che facesse questa operazione.
Una volta selezionati i valori che mi interessano, poi vorrei aggregarli a vari livelli (dati aggregati spazialmente per stazione, o per regione o per sottodivisione, e temporalmente per anno, o per i tre anni di campionamento,), calcolando diverse statistiche: media, deviazione standard, min, max, mediana, 90 percentile, 95 percentile.
Spero di essere stato chiaro.
Notte
-
AutoreArticoli
