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)
- visitare la pagina http://www.ngdc.noaa.gov/nndc/struts/form?t=101650&s=1&d=1
- riempire i campi desiderati (ad esempio "zona geografica", "periodo"...
- cliccare su "Search database"
- appena si passa alla nuova pagina, interromperne il caricamento, e copiarne l'indirizzo
- aprire un terminale e digitare
wget -O dati.html "indirizzo_appena_copiato"
- copiare lo script sottostante in un file di testo
- salvarlo come "parsatore.py"
- tornare al terminale, e digitare
python
(se sul proprio sistema sono installati ipython e matplotlib, sostituire il comando "python" con "ipython -pylab")from parsatore import *
- a questo punto digitando si otterrà una lista in cui:
mesilista
- 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
- digitando 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.
mesidiff
- se al punto 8 si è dato il comando "ipython -pylab", è possibile avere una visualizzazione grafica del risultato:(attenzione: ricordare che il primo valore, in corrispondenza di "0", non ha alcun significato rilevante. "1" invece corrisponde a gennaio e così via)'
plot(mesidiff)
lo scriptino parsatore.py
modificaimport 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- scaricare il database dall'indirizzo http://csi.rm.ingv.it/catalogo/doc11/files-sum/1981-2002.sum
- eseguire il seguente programmino:
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)]