Utente:Toobaz/Statistiche terremoti

Come estrarre statistiche sui periodi dell'anno dai dati sismografici dell'NGDC modifica

(queste istruzioni funzionano in un sistema Unix/Linux con python installato)

  1. visitare la pagina http://www.ngdc.noaa.gov/nndc/struts/form?t=101650&s=1&d=1
  2. riempire i campi desiderati (ad esempio "zona geografica", "periodo"...
  3. cliccare su "Search database"
  4. appena si passa alla nuova pagina, interromperne il caricamento, e copiarne l'indirizzo
  5. aprire un terminale e digitare
    wget -O dati.html "indirizzo_appena_copiato"
    
  6. copiare lo script sottostante in un file di testo
  7. salvarlo come "parsatore.py"
  8. tornare al terminale, e digitare
      python
    
      from parsatore import *
    
    (se sul proprio sistema sono installati ipython e matplotlib, sostituire il comando "python" con "ipython -pylab")
  9. a questo punto digitando
    mesilista
    
    si otterrà una lista in cui:
    • il primo valore indica il numero di eventi sismici per cui non è stato registrato il mese
    • il secondo valore indica il numero di eventi sismici registrati in gennaio, il terzo in febbraio e così via
  10. digitando
    mesidiff
    
    invece si ottiene direttamente le differenze rispetto alla media (di eventi per mese). Non penso che al il primo numero si possa dare alcun significato interessante, mentre gli altri 12 si riferiscono ognuno ad un mese.
  11. se al punto 8 si è dato il comando "ipython -pylab", è possibile avere una visualizzazione grafica del risultato:
    plot(mesidiff)
    
    (attenzione: ricordare che il primo valore, in corrispondenza di "0", non ha alcun significato rilevante. "1" invece corrisponde a gennaio e così via)'

lo scriptino parsatore.py modifica

import re
data = open("dati.html")
html=data.read()
 
# Togli le righe in fondo inutili:
 
html = html.rpartition('</tr>')[0]
html = html.rpartition('</tr>')[0]
 
# Togli le righe in cima inutili:
 
html = html.partition('<table width="100%" border="1" cellpadding="0">')[2]
html = html.partition('</tr>')[2]
html = html.partition('</tr>')[2]
html = html.partition('</tr>')[2]
 
tr = re.compile('</tr>')
banana = tr.split(html)
banana = [fetta[19:] for fetta in banana]
banana = [fetta.replace('\n', '') for fetta in banana]
banana = [fetta.replace('\r', '') for fetta in banana]
fette = [fetta.split('</td>') for fetta in banana]
mesi = []
 
for fetta in fette:
    if len(fetta) > 1 and len(fetta[1].rpartition(">")) == 3:
        mesi.append(fetta[1].rpartition(">")[2])
 
mesidiz = {}
 
for mese in range(13):
    # il mese 0 indica quelle che non lo hanno specificato
    mesidiz[mese] = 0
 
 
def intero(testo):
    try:
        return int(testo)
    except:
        # Mese sconosciuto
        return 0
 
for mese in mesi:
    mesidiz[intero(mese)] += 1
 
mesilista = [mesidiz[mese] for mese in range(13)]
 
media = sum(mesilista[1:])/12
 
mesidiff = [mesidiz[mese] - media for mese in range(13)]

Come estrarre statistiche sui periodi dell'anno dai dati sismografici dell'INGV modifica

import re
data = open("1981-2002.sum")
html=data.read()
 
banana = html.split('\n')
banana.pop()
fette = [fetta.split(' ') for fetta in banana]
mesi = []
 
for fetta in fette:
    mesi.append(fetta[0][2:4])
 
mesidiz = {}
 
for mese in range(13):
    # il mese 0 indica quelle che non lo hanno specificato
    mesidiz[mese] = 0
 
 
def intero(testo):
    try:
        return int(testo)
    except:
        print testo
        # Mese sconosciuto
        return 0
 
for mese in mesi:
    mesidiz[intero(mese)] += 1
 
mesilista = [mesidiz[mese] for mese in range(13)]
 
media = sum(mesilista[1:])/12
 
mesidiff = [mesidiz[mese] - media for mese in range(13)]