Topic: Script Aggregazione dati  (Letto 1084 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline ErnestoF

  • python unicellularis
  • *
  • Post: 8
  • Punti reputazione: 0
    • Mostra profilo
Script Aggregazione dati
« il: Novembre 05, 2015, 09:31 »
Salve, avrei bisogno di uno script di aggregazione il più semplice possibile da applicare. Il problema è questo: ho una serie di file excel di questo tipo:
            A     B     C     D     E     F       
00.00    1     2     3     4     5     6
00.01     7    8     9     10    11    12
00.02
.
.
.
23.59

Devo ottenere la stessa tabella con dati di aggregazione non ogni minuto ma ogni 15 minuti quindi cambiando solo le righe e non le colonne. Esempio:
            A     B     C     D     E     F       
00.00   
00.15     
00.30
.
.
.
23.45
Grazie!!!!


Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Script Aggregazione dati
« Risposta #1 il: Novembre 05, 2015, 12:18 »
E quale sarebbe il problema in tutto cio'? Non sai come procedere, non sai come fare uno specifico passo della soluzione a cui hai pensato?
E' una questione di matematica? In effetti non specifichi nemmeno cosa vuoi fare... ovvero non spieghi se vuoi fare cadere due righe su tre, se vuoi qualche tipo di interpolazione (quale? ce ne sono proprio tante) o media o altro modo di aggregazione...

Offline ErnestoF

  • python unicellularis
  • *
  • Post: 8
  • Punti reputazione: 0
    • Mostra profilo
Re: Script Aggregazione dati
« Risposta #2 il: Novembre 05, 2015, 18:40 »
Il problema è che non so come procedere o qualche funzione specifica che mi permette di aggregare i dati.
Non si tratta di applicare nessuna funzione matematica ne somma ne media niente di niente devo solo ottenere la tabella così come l'originale però invece di avere i dati rilevati ad ogni minuto mi servono ogni 15 minuti. L'esempio mi sembrava abbastanza chiaro e comprensibile....
P.S. I valori che ho messo sotto le lettere A B C .... sono casuali sono solo di esempio

Offline ErnestoF

  • python unicellularis
  • *
  • Post: 8
  • Punti reputazione: 0
    • Mostra profilo
Re: Script Aggregazione dati
« Risposta #3 il: Novembre 05, 2015, 18:48 »
Esatto credo si tratti di far cadere delle righe... Sempre per l'esempio che ho riportato si tratta di far scomparire le righe che vanno da 00.01 a 00.14 in modo che mi resti quello che mi interessa cioè: 00.00 00.15
E cosi via quindi dopo dovrei far cadere le righe da 00.16 a 00.29 e via dicendo...credo sia banale ma non conosco nessuna funzione per fare ciò

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.862
  • Punti reputazione: 9
    • Mostra profilo
Re: Script Aggregazione dati
« Risposta #4 il: Novembre 05, 2015, 19:49 »
ah, cioè le righe che non ti servono scompaiono e basta? niente medie, somme... niente?
Mah. Allora non è "aggregazione", è "selezione" di dati.

Comunque, ovviamente sono diversi problemi separati:
1) come leggere, con python, un file excel: http://www.python-excel.org/
2) come individuare la riga che ti serve: questo dipende dal formato excel rappresenta la prima colonna, e quindi dal formato in cui xlrd te lo converte in python. Comunque, si tratterà di ciclare tra le righe, ed eseguire un test banale del tipo if first_colum.minute in (0, 15, 30): etc etc.
3) individuata la riga che ti serve, ovviamente dipende, ancora una volta, da cosa te ne vuoi fare. Se per esempio vuoi scriverla in un altro file excel, puoi usare xlwt.

Offline imbuto

  • python neanderthalensis
  • ****
  • Post: 462
  • Punti reputazione: 2
    • Mostra profilo
Re: Script Aggregazione dati
« Risposta #5 il: Novembre 05, 2015, 20:25 »
Se si tratta di tenere una riga ogni quindici, con un po’ di fortuna - dipende da come effettivamente si presentano i dati - si risolve in tre righe di codice:

[codice]
import pandas
df = pandas.read_excel('Workbook2.xlsx’)
df[::15].to_excel("Workbook3.xlsx")
[/codice]
« Ultima modifica: Novembre 05, 2015, 20:28 da imbuto »

Offline ErnestoF

  • python unicellularis
  • *
  • Post: 8
  • Punti reputazione: 0
    • Mostra profilo
Re: Script Aggregazione dati
« Risposta #6 il: Novembre 06, 2015, 18:39 »
Non mi riconosce nessun modulo con il nome pandas. Inoltre ho guardato il sito consigliato da RicPol e sembra che per aprire i mie file (xls) ho bisogno della funzione xlrd per lettura e xlwt per poi crearmi il nuovo file modificato. Ma anche questi non sono riconosciuti ho provato a scaricarli ma ecco cosa mi dice:

ernesto@ernesto-Satellite-L500:~$ sudo apt-get install python-pip
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze       
Lettura informazioni sullo stato... Fatto
Alcuni pacchetti non possono essere installati. Questo può voler dire
che è stata richiesta una situazione impossibile oppure, se si sta
usando una distribuzione in sviluppo, che alcuni pacchetti richiesti
non sono ancora stati creati o sono stati rimossi da Incoming.
Le seguenti informazioni possono aiutare a risolvere la situazione:

I seguenti pacchetti hanno dipendenze non soddisfatte:
 python-pip : Dipende: python-setuptools (>= 0.6c1) ma non sta per essere installato
              Raccomanda: python-dev-all (>= 2.6) ma non è installabile
E: Impossibile correggere i problemi, ci sono pacchetti danneggiati bloccati.
ernesto@ernesto-Satellite-L500:~$

Allora ho provato ad installare setuptools da cui dipende python-pip ma sembra che voglia aggiornare il mio ubuntu!!!!

I seguenti pacchetti hanno dipendenze non soddisfatte:
 python-setuptools : Dipende: python-pkg-resources (= 3.3-1ubuntu1) ma la versione 3.3-1ubuntu2 sta per essere installata
E: Impossibile correggere i problemi, ci sono pacchetti danneggiati bloccati.
ernesto@ernesto-Satellite-L500:~$

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re: Script Aggregazione dati
« Risposta #7 il: Novembre 06, 2015, 19:36 »
Lascia perdere i pacchetti della distribuzione (Ubuntu, quale versione?) che sono più o meno datati,
vai invece di script per l'installazione, nella documentazione di pip c'è tutto.

Offline ErnestoF

  • python unicellularis
  • *
  • Post: 8
  • Punti reputazione: 0
    • Mostra profilo
Re: Script Aggregazione dati
« Risposta #8 il: Novembre 06, 2015, 19:41 »
Ok sono RIUSCITOO grazie ai semplici comandi consigliati da imbuto....in realtà leggermente modificati altrimenti mi dava qualche errore.
L'unico problema nel file di output è che adesso mi dà il nuovo orario in questo formato:
0
15
30
45
60
75
90
..
..
..

In realtà a me servirebbero in questo modo:
00.00
00.15
00.30
00.45
01.00
01.15
..
..
23.45
Posso correggere qualcosa nel codice per far si che ciò avvenga? o aggiungere qualche altro comando? Vi metto le righe di codice che ho lanciato:

import pandas
df=pandas.read_excel ('path_to_file.xls',  sheetname = 'Foglio1')
df[::15].to_excel("path_to_filemodificato.xls")

Offline imbuto

  • python neanderthalensis
  • ****
  • Post: 462
  • Punti reputazione: 2
    • Mostra profilo
Re: Script Aggregazione dati
« Risposta #9 il: Novembre 08, 2015, 10:57 »
Dipende da come pandas (o meglio xlrd che gli sta sotto) converte i valori.
Magari è sufficiente specificare come formattare l’output nel file in uscita (cerca pandas.ExcelWriter e add_format).

Oppure un workaround del tipo

[codice]
import datetime
df.index = [str(datetime.timedelta(seconds=value)) for value in df.index]
[/codice]

Devi vedere tu nel caso specifico che tipo di dati hai (è meno banale che lavorare con file di testo, per cui sarebbe bastato leggere tutto senza conversioni).