Guest User

estrarre dati di un ISP dalle tabelle di Ookla Speedtest

a guest
Dec 28th, 2016
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. Istruzioni per ottenere una tabella da aprire con QGis per creare mappe.
  2.  
  3. Scarica l'elenco dal sito netindex, oppure da https://swift-yeg.cloud.cybera.ca:8080/v1/AUTH_233e84cd313945c992b4b585f7b9125d/ookla-data-raw/netindex/ Il file che interessa è "city_isp_daily_speeds.csv".
  4.  
  5. Estrai con grep solo le righe contenenti Italy:
  6. head -n 1 city_isp_daily_speeds.csv > italia-isp-total.csv
  7. grep "\"Italy\"," city_isp_daily_speeds.csv >> italia-isp-total.csv
  8.  
  9. Eliminare caratteri unicode:
  10. sed 's/\xe0/a/g' italia-isp-total.csv | sed 's/\xe8/e/g' | sed 's/\xec/i/g' | sed 's/\xf2/o/g' | sed 's/\xf9/u/g' > italia-isp-totaln.csv
  11. mv italia-isp-totaln.csv /tmp/italia-isp-total.csv
  12.  
  13. Estrai con il linguaggio R (o l'interfaccia grafica RKWard) i levels della colonna city:
  14. data = read.csv("/tmp/italia-isp-total.csv", header = TRUE, encoding = "UTF8")
  15. names(data)
  16. livelli <- levels(data$city)
  17. write.csv(livelli, file = "/tmp/italia-isp-elenco.txt", row.names=FALSE, col.names=FALSE)
  18.  
  19. Usa lo script di name-to-WGS84.sh (scaricabile dall'indirizzo http://pastebin.com/raw/C56CzdFM) per produrre tutte le posizioni WGS84 (si può modificare lo script per aggiungere ", Italy" ai nomi delle città da cercare):
  20. ./name-to-WGS84.sh italia-isp-elenco.txt > italia-isp-total-wgs.csv
  21.  
  22. Unisci le due tabelle con R:
  23. data = read.csv("/tmp/italia-isp-total.csv", header = TRUE, encoding = "UTF8")
  24. wgs = read.csv("/tmp/italia-isp-total-wgs.csv", header = TRUE, encoding = "UTF8", sep=";")
  25. total <- merge(data,wgs,by="city") \n write.table(total, file = "/tmp/italia-isp-total-position.csv", row.names=FALSE, sep=";")
  26.  
  27. Correggere il formato della posizione per leggerlo facilmente con QGis:
  28. sed 's/,/;/g' italia-isp-total-position.csv | sed 's/"//g' > /tmp/italia-isp-total-position.csv
  29.  
  30. Ora si può aprire l'interprete del linguaggio R, oppure l'interfaccia grafica RKWard. Segue il codice R.
  31.  
  32. PER OTTENERE LA MEDIA DI OGNI CITTÀ
  33. data = read.csv("/tmp/italia-isp-total-position.csv", header = TRUE, encoding = "UTF8")
  34. datamean <- aggregate(data[7:8], list(data$city), mean)
  35. data[7] <- NULL
  36. data[7] <- NULL
  37. data[7] <- NULL
  38. data[7] <- NULL
  39. data[6] <- NULL
  40. head(data[!duplicated(data),])
  41. names(datamean)[1] <- "city"
  42. total <- merge(data[!duplicated(data),],datamean,by="city")
  43. write.table(total, file = "/tmp/italia-total-position-mean.csv", row.names=FALSE, sep=";")
  44.  
  45. PER LA MEDIA DI OGNI CITTÀ CON ISP
  46. data = read.csv("/tmp/italia-isp-total-position.csv", header = TRUE, encoding = "UTF8", sep=";")
  47. data[10] <- NULL
  48. data[10] <- NULL
  49. data[7] <- NULL
  50. telecom <- data[grep("telecom", data$isp_name, ignore.case=TRUE),]
  51.  
  52. telecom <- transform(telecom, download_kbps = as.numeric(as.character(download_kbps)))
  53.  
  54. telecommean <- aggregate(telecom[7:8], list(telecom$city), mean)
  55.  
  56. names(telecommean)[1] <- "city"
  57.  
  58. telecom[7] <- NULL
  59. telecom[7] <- NULL
  60.  
  61. totaltelecom <- merge(telecom[!duplicated(telecom),],telecommean,by="city")
  62.  
  63. write.table(totaltelecom, file = "/tmp/italia-isp-totale/csv/italia-total-position-mean-telecom.csv", row.names=FALSE, sep=";")
Add Comment
Please, Sign In to add comment