Guest User

estrarre dati di un ISP dalle tabelle di Ookla Speedtest

a guest
Dec 28th, 2016
82
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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=";")
RAW Paste Data