In [ ]:
# -*- coding: cp1252 -*-

#QUESTA LIBRERIA E' FRUTTO DELLA COLLABORAZIONE FRA DATAREPORTER E RETESVILUPPO SC
#DATAREPORTER http://www.datareporter.it/
#RETESVILUPPO: http://www.retesviluppo.it
#IN CASO DI UTILIZZO SI PREGA DI CITARE LE DUE STRUTTURE
#AUTORE: MARCO SCARSELLI

from mechanize import Browser
import os
import pandas as pd
import html5lib
from bs4 import BeautifulSoup  
from python_geojson_pandas_join import join


#os.chdir(r"E:\Dropbox\Dropbox\0_DB\A_Elaborazioni\Coeweb")

class coeweb(object):
    
    def __init__(self, link):
        self.pandas_db = pd.DataFrame()
        self.link = link
        br = Browser()
        br.open(self.link)
        br.select_form(nr=0)
        
        self.paesi = []
        #restituisce la lista di paesi / macro aree mondiali di export
        self.paesi_descizione = []
        control = br.form.find_control("PAESE")
        if control.type == "select":  
            for item in control.items:
                self.paesi.append(item.name)
                self.paesi_descizione.append((item.name, str([label.text  for label in item.get_labels()])))
                
        self.territori = []
        #restituisce la lista delle territori italiani presenti in coeweb
        self.territori_descrizione = []
        control = br.form.find_control("CODTERRITORIO")
        if control.type == "select":  
            for item in control.items:
                self.territori.append((item.name, str([label.text  for label in item.get_labels()])))
                self.territori_descrizione.append((item.name, str([label.text  for label in item.get_labels()])))
                
        self.anni = []
        control = br.form.find_control("ANNO")
        if control.type == "select":  
            for item in control.items:
                self.anni.append((item.name, str([label.text  for label in item.get_labels()])))
        self.mese = []
        control = br.form.find_control("MESE")
        if control.type == "select": 
            for item in control.items:
                self.mese.append((item.name, str([label.text  for label in item.get_labels()])))
        self.cumulato = []
        control = br.form.find_control("TIPOVALORE")
        for item in control.items:
            self.cumulato.append((item.name, str([label.text  for label in item.get_labels()])))
        
        #esempio di raggruppamento di paesi verso cui si effettua export predefinito dentro la classe 
        self.bric = ['508', '720', '664', '75']
        #[('508', "['508 - Brasile']"), ('720', "['720 - Cina']"), ('664', "['664 - India']"), ('75', "['75 - Russia']")]
    
    def convert_string_euro(self,x):
        '''questa funzione rimuove la formattazione dei numeri di coeweb, trasformando il testo in numeri'''
        try: 
            return float(x.replace(".", ""))
        except:
            pass
    

    def scarica_uno(self, territorio = ["309048"], paese = ["1033"], cumulato = ['M'], anno = ["2013"], mese = ["4"]  ):# , paese, anno, trimestre, modalita)
        '''
        effettua il download dell'export di un solo territorio italiano verso un solo paese
        '''
        br = Browser()
        br.open(self.link)

        br.select_form(nr=0)

        control_territorio = br.form.find_control("CODTERRITORIO")
        br[control_territorio.name] = territorio #["309048"]

        control_paese = br.form.find_control("PAESE")
        br[control_paese.name] = paese #["309048"]

        control_anno = br.form.find_control("ANNO")
        br[control_anno.name] = anno #["309048"]

        control_mese = br.form.find_control("MESE")
        br[control_mese.name] = mese #["309048"]

        control_cumulato = br.form.find_control("TIPOVALORE")
        br[control_cumulato.name] = cumulato #["309048"]

        nome_stringa = territorio[0] + "_" + paese[0] + "_" + anno[0] + "_" + mese[0] + "_" + cumulato[0]


        response = br.submit()
        out_file = open(os.path.join(os.getcwd(), "scaricati", nome_stringa +".html"), "w")
        out_file.write(response.read()) 
        out_file.close()
        #os.system("start " + nome_stringa +".html")
        self.dati = pd.read_html(os.path.join(os.getcwd(), "scaricati", nome_stringa +".html"), header= 0, index_col=0, encoding = "cp1252")#'utf8'
        #os.remove(territorio[0] +".html")
        print "download_" + nome_stringa
        br.close()
        return self.dati
        
        # i dati dovrebbero essere raccolti in un pandas 
        
    def scarica_molti(self, territorio = ["309048"],   lista_paesi = None, lista_anni = None, lista_mesi = None, lista_cumulato = ["M"]):
        ''' questa funzione permette di scaricare per uno o più territori uno o più settori, per uno o più periodi di tempo'''
        #self.pandas_db = pd.DataFrame()
        
        def nome_paese(dati, codice):
            for item in dati:
                if item[0] == codice:
                    pulito1= item[1].split("'",)[1]
                    pulito2 = pulito1.split(" - ",)[1]
                    print pulito2
                    return pulito2
        
        def nome_territorio(dati, codice):
            for item in dati:
                if item[0] == codice:
                    try:
                        pulito1= item[1].split("'")[1]
                        pulito1 = pulito1.replace("-","")
                        pulito1 = pulito1.replace("'","")
                        return pulito1
                    except:
                        pass
        
        
        for item_territori in territorio:
            for item_paesi in lista_paesi:
                for item_anni in lista_anni:
                    for item_mesi in lista_mesi:

                        dataset =  self.scarica_uno([item_territori], paese = [str(item_paesi)],  anno = [str(item_anni)], mese = [str(item_mesi)], cumulato = lista_cumulato)
                        dataset = dataset[1]#.set_index(territorio, str(item_paesi), str(item_anni), str(item_mesi)])
                        
                        
                        dataset["territorio"] = nome_territorio(self.territori_descrizione,  item_territori)  
                        #dataset["territorio"] = item_territori
                        
                        #nome_paese(self.paesi_descizione, str(item_paesi))
                        dataset["paese"] = nome_paese(self.paesi_descizione, str(item_paesi))
                        dataset["anno"] = str(item_anni)
                        dataset["mese"] = str(item_mesi)
                        dataset["cumulato"] = lista_cumulato[0]
                        dataset.set_index(["territorio","paese","anno","mese","cumulato"], append = True, inplace = True)
                        dataset["DATI EXPORT"] = dataset["EXP" + str(item_anni)]
                          
                        
                        
                        dataset = dataset["DATI EXPORT"].apply(lambda x: self.convert_string_euro(x))
                        
                        
                        
                        # datasetcompleto
                        self.pandas_db = pd.concat([self.pandas_db, pd.DataFrame(dataset)])
                        # settori ateco disponibili
                        self.pandas_db.settori = set(self.pandas_db.reset_index()["Divisioni"])
                        
                            #print "errore_" + territorio[0] + "_" + str(item_paesi) + "_" + str(item_anni) + "_" + str(item_mesi) + "_" + lista_cumulato[0]

        for scaricato in os.listdir(os.path.join(os.getcwd(), "scaricati")):
            os.remove(os.path.join(os.getcwd(), "scaricati", scaricato))
        

        print "eseguito"
    
    
    
    def analizza_settori(self, settori, interpolazione = "no"):
        ''' questa funzione restituisce un dataframe e un dizionario contenente le serie storiche per i settori inseriti come argomento [lista]. 
        Effettua anche l'interpolazione dei dati mancanti'''
        self.dict_settore = {}
        for item in settori:
            dati_settore = self.pandas_db.xs(item, level=0)
            if interpolazione == "yes":
                dati_settore["DATI EXPORT"] = dati_settore["DATI EXPORT"].apply(lambda x: convert_string_euro(x)).interpolate()
            else:
                dati_settore["DATI EXPORT"] = dati_settore["DATI EXPORT"].apply(lambda x: convert_string_euro(x))
            self.dict_settore[item] = dati_settore["DATI EXPORT"]
        self.dataframe_settori = pd.DataFrame(self.dict_settore)
        return self.dataframe_settori

In [5]:
def convert_string_euro(x):
    try: 
        return float(x.replace(".", ""))
    except:
        pass

In [68]:
# ESEMPIO DI UTILIZZO: RECUPERO DI EXPORT VERSO UK E TOTALE da ISTAT COEWEB E VISUALIZZAZIONE VALORE ASSOLUTO E RAPPORTO UK SU TOTALE

In [6]:
# ESEMPIO DI UTILIZZO: si istanzia un oggetto 
Italia = coeweb("http://www.coeweb.istat.it/predefinite/tutto_paese_merce.asp?livello=ATE07_AT2&riga=MERCE&territorio=S&AG=S")

In [7]:
# si aggiungono tutte le province italiane per un futuro utilizzo nella funzione
italia_province = []
for item in Italia.territori:
    if len(item[0]) == 6:
        italia_province.append(item[0])

In [8]:
#esempio di scaricamento dell'export di tutte le province italiane verso Mondo e Gran Bretagna
Italia.scarica_molti(territorio = italia_province, lista_paesi = ['6', '1033'], lista_anni = ["2015"], lista_mesi = ["9"], lista_cumulato = ['C'])


download_101001_6_2015_9_C
Regno Unito
download_101001_1033_2015_9_C
[MONDO]
download_101002_6_2015_9_C
Regno Unito
download_101002_1033_2015_9_C
[MONDO]
download_101003_6_2015_9_C
Regno Unito
download_101003_1033_2015_9_C
[MONDO]
download_101004_6_2015_9_C
Regno Unito
download_101004_1033_2015_9_C
[MONDO]
download_101005_6_2015_9_C
Regno Unito
download_101005_1033_2015_9_C
[MONDO]
download_101006_6_2015_9_C
Regno Unito
download_101006_1033_2015_9_C
[MONDO]
download_101096_6_2015_9_C
Regno Unito
download_101096_1033_2015_9_C
[MONDO]
download_101103_6_2015_9_C
Regno Unito
download_101103_1033_2015_9_C
[MONDO]
download_102007_6_2015_9_C
Regno Unito
download_102007_1033_2015_9_C
[MONDO]
download_103012_6_2015_9_C
Regno Unito
download_103012_1033_2015_9_C
[MONDO]
download_103013_6_2015_9_C
Regno Unito
download_103013_1033_2015_9_C
[MONDO]
download_103014_6_2015_9_C
Regno Unito
download_103014_1033_2015_9_C
[MONDO]
download_103015_6_2015_9_C
Regno Unito
download_103015_1033_2015_9_C
[MONDO]
download_103016_6_2015_9_C
Regno Unito
download_103016_1033_2015_9_C
[MONDO]
download_103017_6_2015_9_C
Regno Unito
download_103017_1033_2015_9_C
[MONDO]
download_103018_6_2015_9_C
Regno Unito
download_103018_1033_2015_9_C
[MONDO]
download_103019_6_2015_9_C
Regno Unito
download_103019_1033_2015_9_C
[MONDO]
download_103020_6_2015_9_C
Regno Unito
download_103020_1033_2015_9_C
[MONDO]
download_103097_6_2015_9_C
Regno Unito
download_103097_1033_2015_9_C
[MONDO]
download_103098_6_2015_9_C
Regno Unito
download_103098_1033_2015_9_C
[MONDO]
download_103108_6_2015_9_C
Regno Unito
download_103108_1033_2015_9_C
[MONDO]
download_107008_6_2015_9_C
Regno Unito
download_107008_1033_2015_9_C
[MONDO]
download_107009_6_2015_9_C
Regno Unito
download_107009_1033_2015_9_C
[MONDO]
download_107010_6_2015_9_C
Regno Unito
download_107010_1033_2015_9_C
[MONDO]
download_107011_6_2015_9_C
Regno Unito
download_107011_1033_2015_9_C
[MONDO]
download_204021_6_2015_9_C
Regno Unito
download_204021_1033_2015_9_C
[MONDO]
download_204022_6_2015_9_C
Regno Unito
download_204022_1033_2015_9_C
[MONDO]
download_205023_6_2015_9_C
Regno Unito
download_205023_1033_2015_9_C
[MONDO]
download_205024_6_2015_9_C
Regno Unito
download_205024_1033_2015_9_C
[MONDO]
download_205025_6_2015_9_C
Regno Unito
download_205025_1033_2015_9_C
[MONDO]
download_205026_6_2015_9_C
Regno Unito
download_205026_1033_2015_9_C
[MONDO]
download_205027_6_2015_9_C
Regno Unito
download_205027_1033_2015_9_C
[MONDO]
download_205028_6_2015_9_C
Regno Unito
download_205028_1033_2015_9_C
[MONDO]
download_205029_6_2015_9_C
Regno Unito
download_205029_1033_2015_9_C
[MONDO]
download_206030_6_2015_9_C
Regno Unito
download_206030_1033_2015_9_C
[MONDO]
download_206031_6_2015_9_C
Regno Unito
download_206031_1033_2015_9_C
[MONDO]
download_206032_6_2015_9_C
Regno Unito
download_206032_1033_2015_9_C
[MONDO]
download_206093_6_2015_9_C
Regno Unito
download_206093_1033_2015_9_C
[MONDO]
download_208033_6_2015_9_C
Regno Unito
download_208033_1033_2015_9_C
[MONDO]
download_208034_6_2015_9_C
Regno Unito
download_208034_1033_2015_9_C
[MONDO]
download_208035_6_2015_9_C
Regno Unito
download_208035_1033_2015_9_C
[MONDO]
download_208036_6_2015_9_C
Regno Unito
download_208036_1033_2015_9_C
[MONDO]
download_208037_6_2015_9_C
Regno Unito
download_208037_1033_2015_9_C
[MONDO]
download_208038_6_2015_9_C
Regno Unito
download_208038_1033_2015_9_C
[MONDO]
download_208039_6_2015_9_C
Regno Unito
download_208039_1033_2015_9_C
[MONDO]
download_208040_6_2015_9_C
Regno Unito
download_208040_1033_2015_9_C
[MONDO]
download_208099_6_2015_9_C
Regno Unito
download_208099_1033_2015_9_C
[MONDO]
download_309045_6_2015_9_C
Regno Unito
download_309045_1033_2015_9_C
[MONDO]
download_309046_6_2015_9_C
Regno Unito
download_309046_1033_2015_9_C
[MONDO]
download_309047_6_2015_9_C
Regno Unito
download_309047_1033_2015_9_C
[MONDO]
download_309048_6_2015_9_C
Regno Unito
download_309048_1033_2015_9_C
[MONDO]
download_309049_6_2015_9_C
Regno Unito
download_309049_1033_2015_9_C
[MONDO]
download_309050_6_2015_9_C
Regno Unito
download_309050_1033_2015_9_C
[MONDO]
download_309051_6_2015_9_C
Regno Unito
download_309051_1033_2015_9_C
[MONDO]
download_309052_6_2015_9_C
Regno Unito
download_309052_1033_2015_9_C
[MONDO]
download_309053_6_2015_9_C
Regno Unito
download_309053_1033_2015_9_C
[MONDO]
download_309100_6_2015_9_C
Regno Unito
download_309100_1033_2015_9_C
[MONDO]
download_310054_6_2015_9_C
Regno Unito
download_310054_1033_2015_9_C
[MONDO]
download_310055_6_2015_9_C
Regno Unito
download_310055_1033_2015_9_C
[MONDO]
download_311041_6_2015_9_C
Regno Unito
download_311041_1033_2015_9_C
[MONDO]
download_311042_6_2015_9_C
Regno Unito
download_311042_1033_2015_9_C
[MONDO]
download_311043_6_2015_9_C
Regno Unito
download_311043_1033_2015_9_C
[MONDO]
download_311044_6_2015_9_C
Regno Unito
download_311044_1033_2015_9_C
[MONDO]
download_311109_6_2015_9_C
Regno Unito
download_311109_1033_2015_9_C
[MONDO]
download_312056_6_2015_9_C
Regno Unito
download_312056_1033_2015_9_C
[MONDO]
download_312057_6_2015_9_C
Regno Unito
download_312057_1033_2015_9_C
[MONDO]
download_312058_6_2015_9_C
Regno Unito
download_312058_1033_2015_9_C
[MONDO]
download_312059_6_2015_9_C
Regno Unito
download_312059_1033_2015_9_C
[MONDO]
download_312060_6_2015_9_C
Regno Unito
download_312060_1033_2015_9_C
[MONDO]
download_413066_6_2015_9_C
Regno Unito
download_413066_1033_2015_9_C
[MONDO]
download_413067_6_2015_9_C
Regno Unito
download_413067_1033_2015_9_C
[MONDO]
download_413068_6_2015_9_C
Regno Unito
download_413068_1033_2015_9_C
[MONDO]
download_413069_6_2015_9_C
Regno Unito
download_413069_1033_2015_9_C
[MONDO]
download_414070_6_2015_9_C
Regno Unito
download_414070_1033_2015_9_C
[MONDO]
download_414094_6_2015_9_C
Regno Unito
download_414094_1033_2015_9_C
[MONDO]
download_415061_6_2015_9_C
Regno Unito
download_415061_1033_2015_9_C
[MONDO]
download_415062_6_2015_9_C
Regno Unito
download_415062_1033_2015_9_C
[MONDO]
download_415063_6_2015_9_C
Regno Unito
download_415063_1033_2015_9_C
[MONDO]
download_415064_6_2015_9_C
Regno Unito
download_415064_1033_2015_9_C
[MONDO]
download_415065_6_2015_9_C
Regno Unito
download_415065_1033_2015_9_C
[MONDO]
download_416071_6_2015_9_C
Regno Unito
download_416071_1033_2015_9_C
[MONDO]
download_416072_6_2015_9_C
Regno Unito
download_416072_1033_2015_9_C
[MONDO]
download_416073_6_2015_9_C
Regno Unito
download_416073_1033_2015_9_C
[MONDO]
download_416074_6_2015_9_C
Regno Unito
download_416074_1033_2015_9_C
[MONDO]
download_416075_6_2015_9_C
Regno Unito
download_416075_1033_2015_9_C
[MONDO]
download_416110_6_2015_9_C
Regno Unito
download_416110_1033_2015_9_C
[MONDO]
download_417076_6_2015_9_C
Regno Unito
download_417076_1033_2015_9_C
[MONDO]
download_417077_6_2015_9_C
Regno Unito
download_417077_1033_2015_9_C
[MONDO]
download_418078_6_2015_9_C
Regno Unito
download_418078_1033_2015_9_C
[MONDO]
download_418079_6_2015_9_C
Regno Unito
download_418079_1033_2015_9_C
[MONDO]
download_418080_6_2015_9_C
Regno Unito
download_418080_1033_2015_9_C
[MONDO]
download_418101_6_2015_9_C
Regno Unito
download_418101_1033_2015_9_C
[MONDO]
download_418102_6_2015_9_C
Regno Unito
download_418102_1033_2015_9_C
[MONDO]
download_519081_6_2015_9_C
Regno Unito
download_519081_1033_2015_9_C
[MONDO]
download_519082_6_2015_9_C
Regno Unito
download_519082_1033_2015_9_C
[MONDO]
download_519083_6_2015_9_C
Regno Unito
download_519083_1033_2015_9_C
[MONDO]
download_519084_6_2015_9_C
Regno Unito
download_519084_1033_2015_9_C
[MONDO]
download_519085_6_2015_9_C
Regno Unito
download_519085_1033_2015_9_C
[MONDO]
download_519086_6_2015_9_C
Regno Unito
download_519086_1033_2015_9_C
[MONDO]
download_519087_6_2015_9_C
Regno Unito
download_519087_1033_2015_9_C
[MONDO]
download_519088_6_2015_9_C
Regno Unito
download_519088_1033_2015_9_C
[MONDO]
download_519089_6_2015_9_C
Regno Unito
download_519089_1033_2015_9_C
[MONDO]
download_520090_6_2015_9_C
Regno Unito
download_520090_1033_2015_9_C
[MONDO]
download_520091_6_2015_9_C
Regno Unito
download_520091_1033_2015_9_C
[MONDO]
download_520092_6_2015_9_C
Regno Unito
download_520092_1033_2015_9_C
[MONDO]
download_520095_6_2015_9_C
Regno Unito
download_520095_1033_2015_9_C
[MONDO]
download_520104_6_2015_9_C
Regno Unito
download_520104_1033_2015_9_C
[MONDO]
download_520105_6_2015_9_C
Regno Unito
download_520105_1033_2015_9_C
[MONDO]
download_520106_6_2015_9_C
Regno Unito
download_520106_1033_2015_9_C
[MONDO]
download_520107_6_2015_9_C
Regno Unito
download_520107_1033_2015_9_C
[MONDO]
download_697198_6_2015_9_C
Regno Unito
download_697198_1033_2015_9_C
[MONDO]
download_697199_6_2015_9_C
Regno Unito
download_697199_1033_2015_9_C
[MONDO]
download_697199_6_2015_9_C
Regno Unito
download_697199_1033_2015_9_C
[MONDO]
eseguito

In [9]:
#restituzione in formato DataFrame di Pandas
Italia_Export_Regno_Unito_Totale = Italia.pandas_db

In [10]:
Italia_Export_Regno_Unito_Totale


Out[10]:
DATI EXPORT
Divisioni territorio paese anno mese cumulato
AA01-Prodotti agricoli, animali e della caccia Torino Regno Unito 2015 9 C 1.008820e+05
AA02-Prodotti della silvicoltura Torino Regno Unito 2015 9 C 0.000000e+00
AA03-Prodotti della pesca e dell'acquacoltura Torino Regno Unito 2015 9 C 1.500000e+01
BB06-Petrolio greggio e gas naturale Torino Regno Unito 2015 9 C 0.000000e+00
BB07-Minerali metalliferi Torino Regno Unito 2015 9 C 0.000000e+00
BB08-Altri minerali da cave e miniere Torino Regno Unito 2015 9 C 7.486790e+05
CA10-Prodotti alimentari Torino Regno Unito 2015 9 C 4.050839e+07
CA11-Bevande Torino Regno Unito 2015 9 C 1.387200e+07
CA12-Tabacco Torino Regno Unito 2015 9 C 3.050000e+02
CB13-Prodotti tessili Torino Regno Unito 2015 9 C 1.354235e+07
CB14-Articoli di abbigliamento (anche in pelle e in pelliccia) Torino Regno Unito 2015 9 C 8.052028e+06
CB15-Articoli in pelle (escluso abbigliamento) e simili Torino Regno Unito 2015 9 C 2.278300e+06
CC16-Legno e prodotti in legno e sughero (esclusi i mobili); articoli in paglia e materiali da intreccio Torino Regno Unito 2015 9 C 3.095540e+05
CC17-Carta e prodotti di carta Torino Regno Unito 2015 9 C 1.379429e+07
CC18-Prodotti della stampa e della riproduzione di supporti registrati Torino Regno Unito 2015 9 C 0.000000e+00
CD19-Coke e prodotti derivanti dalla raffinazione del petrolio Torino Regno Unito 2015 9 C 2.452060e+06
CE20-Prodotti chimici Torino Regno Unito 2015 9 C 4.673205e+07
CF21-Prodotti farmaceutici di base e preparati farmaceutici Torino Regno Unito 2015 9 C 4.346300e+04
CG22-Articoli in gomma e materie plastiche Torino Regno Unito 2015 9 C 4.166108e+07
CG23-Altri prodotti della lavorazione di minerali non metalliferi Torino Regno Unito 2015 9 C 8.862396e+06
CH24-Prodotti della metallurgia Torino Regno Unito 2015 9 C 5.732471e+06
CH25-Prodotti in metallo, esclusi macchinari e attrezzature Torino Regno Unito 2015 9 C 2.626712e+07
CI26-Computer e prodotti di elettronica e ottica; apparecchi elettromedicali, apparecchi di misurazione e orologi Torino Regno Unito 2015 9 C 3.935383e+07
CJ27-Apparecchiature elettriche e apparecchiature per uso domestico non elettriche Torino Regno Unito 2015 9 C 1.588926e+08
CK28-Macchinari e apparecchiature nca Torino Regno Unito 2015 9 C 1.438609e+08
CL29-Autoveicoli, rimorchi e semirimorchi Torino Regno Unito 2015 9 C 2.734761e+08
CL30-Altri mezzi di trasporto Torino Regno Unito 2015 9 C 1.391538e+08
CM31-Mobili Torino Regno Unito 2015 9 C 2.224327e+06
CM32-Prodotti delle altre industrie manifatturiere Torino Regno Unito 2015 9 C 2.166792e+07
EE38-Prodotti delle attivitŕ di raccolta, trattamento e smaltimento dei rifiuti; prodotti dell'attivitŕ di recupero dei materiali Torino Regno Unito 2015 9 C 4.837800e+04
... ... ... ... ... ... ...
CA11-Bevande Province non specificate e altri stati membri [MONDO] 2015 9 C 8.646110e+05
CB13-Prodotti tessili Province non specificate e altri stati membri [MONDO] 2015 9 C 3.958686e+06
CB14-Articoli di abbigliamento (anche in pelle e in pelliccia) Province non specificate e altri stati membri [MONDO] 2015 9 C 3.278534e+07
CB15-Articoli in pelle (escluso abbigliamento) e simili Province non specificate e altri stati membri [MONDO] 2015 9 C 2.678304e+07
CC16-Legno e prodotti in legno e sughero (esclusi i mobili); articoli in paglia e materiali da intreccio Province non specificate e altri stati membri [MONDO] 2015 9 C 1.624687e+06
CC17-Carta e prodotti di carta Province non specificate e altri stati membri [MONDO] 2015 9 C 7.933008e+06
CC18-Prodotti della stampa e della riproduzione di supporti registrati Province non specificate e altri stati membri [MONDO] 2015 9 C 0.000000e+00
CD19-Coke e prodotti derivanti dalla raffinazione del petrolio Province non specificate e altri stati membri [MONDO] 2015 9 C 1.334820e+05
CE20-Prodotti chimici Province non specificate e altri stati membri [MONDO] 2015 9 C 3.294308e+07
CF21-Prodotti farmaceutici di base e preparati farmaceutici Province non specificate e altri stati membri [MONDO] 2015 9 C 1.684540e+08
CG22-Articoli in gomma e materie plastiche Province non specificate e altri stati membri [MONDO] 2015 9 C 1.400037e+07
CG23-Altri prodotti della lavorazione di minerali non metalliferi Province non specificate e altri stati membri [MONDO] 2015 9 C 4.620309e+06
CH24-Prodotti della metallurgia Province non specificate e altri stati membri [MONDO] 2015 9 C 8.622454e+06
CH25-Prodotti in metallo, esclusi macchinari e attrezzature Province non specificate e altri stati membri [MONDO] 2015 9 C 1.305929e+07
CI26-Computer e prodotti di elettronica e ottica; apparecchi elettromedicali, apparecchi di misurazione e orologi Province non specificate e altri stati membri [MONDO] 2015 9 C 1.246331e+07
CJ27-Apparecchiature elettriche e apparecchiature per uso domestico non elettriche Province non specificate e altri stati membri [MONDO] 2015 9 C 2.060031e+07
CK28-Macchinari e apparecchiature nca Province non specificate e altri stati membri [MONDO] 2015 9 C 7.481649e+07
CL29-Autoveicoli, rimorchi e semirimorchi Province non specificate e altri stati membri [MONDO] 2015 9 C 1.634144e+07
CL30-Altri mezzi di trasporto Province non specificate e altri stati membri [MONDO] 2015 9 C 9.014846e+06
CM31-Mobili Province non specificate e altri stati membri [MONDO] 2015 9 C 1.420483e+07
CM32-Prodotti delle altre industrie manifatturiere Province non specificate e altri stati membri [MONDO] 2015 9 C 1.257200e+07
EE38-Prodotti delle attivitŕ di raccolta, trattamento e smaltimento dei rifiuti; prodotti dell'attivitŕ di recupero dei materiali Province non specificate e altri stati membri [MONDO] 2015 9 C 2.259487e+06
JA58-Prodotti delle attivitŕ editoriali Province non specificate e altri stati membri [MONDO] 2015 9 C 6.074240e+05
JA59-Prodotti delle attivitŕ di produzione cinematografica, video e programmi televisivi; registrazioni musicali e sonore Province non specificate e altri stati membri [MONDO] 2015 9 C 0.000000e+00
MC74-Prodotti delle altre attivitŕ professionali, scientifiche e tecniche Province non specificate e altri stati membri [MONDO] 2015 9 C 5.137000e+03
RR90-Prodotti delle attivitŕ creative, artistiche e d'intrattenimento Province non specificate e altri stati membri [MONDO] 2015 9 C 1.926640e+05
RR91-Prodotti delle attivitŕ di biblioteche, archivi, musei e di altre attivitŕ culturali Province non specificate e altri stati membri [MONDO] 2015 9 C 0.000000e+00
VV89-Merci dichiarate come provviste di bordo, merci nazionali di ritorno e respinte, merci varie Province non specificate e altri stati membri [MONDO] 2015 9 C 4.434469e+09
Totale Province non specificate e altri stati membri [MONDO] 2015 9 C 4.926971e+09
NaN Province non specificate e altri stati membri [MONDO] 2015 9 C NaN

7566 rows × 1 columns


In [12]:


In [18]:
#AGGANCIO DEI DATI AD UNA MAPPA GEOJSON
key = pd.read_excel("aggancio_nuts_ok.xlsx")
Italia_Export_Regno_Unito_Totale.reset_index(inplace = True)

In [19]:
Italia_Export_Regno_Unito_Totale_NUTS = pd.merge(Italia_Export_Regno_Unito_Totale, key, left_on = "territorio", right_on ="COEWEB")

In [21]:
#salvataggio in excel
Italia_Export_Regno_Unito_Totale_NUTS.to_excel("Export_provinciale_verso_UK_MONDO.xlsx")

In [29]:
Italia_Export_Regno_Unito_Totale_NUTS.set_index([  u'Divisioni',  u'territorio',       u'paese',        u'anno',
              u'mese',    u'cumulato',  u'COEWEB',
              u'NUTS',    u'NUTS_MAP',    u'EUROSTAT'], inplace = True)

In [31]:
Italia_Export_Regno_Unito_Totale_NUTS


Out[31]:
DATI EXPORT
Divisioni territorio paese anno mese cumulato COEWEB NUTS NUTS_MAP EUROSTAT
AA01-Prodotti agricoli, animali e della caccia Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 100882.0
AA02-Prodotti della silvicoltura Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 0.0
AA03-Prodotti della pesca e dell'acquacoltura Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 15.0
BB06-Petrolio greggio e gas naturale Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 0.0
BB07-Minerali metalliferi Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 0.0
BB08-Altri minerali da cave e miniere Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 748679.0
CA10-Prodotti alimentari Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 40508394.0
CA11-Bevande Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 13871997.0
CA12-Tabacco Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 305.0
CB13-Prodotti tessili Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 13542354.0
CB14-Articoli di abbigliamento (anche in pelle e in pelliccia) Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 8052028.0
CB15-Articoli in pelle (escluso abbigliamento) e simili Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 2278300.0
CC16-Legno e prodotti in legno e sughero (esclusi i mobili); articoli in paglia e materiali da intreccio Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 309554.0
CC17-Carta e prodotti di carta Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 13794287.0
CC18-Prodotti della stampa e della riproduzione di supporti registrati Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 0.0
CD19-Coke e prodotti derivanti dalla raffinazione del petrolio Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 2452060.0
CE20-Prodotti chimici Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 46732050.0
CF21-Prodotti farmaceutici di base e preparati farmaceutici Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 43463.0
CG22-Articoli in gomma e materie plastiche Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 41661081.0
CG23-Altri prodotti della lavorazione di minerali non metalliferi Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 8862396.0
CH24-Prodotti della metallurgia Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 5732471.0
CH25-Prodotti in metallo, esclusi macchinari e attrezzature Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 26267122.0
CI26-Computer e prodotti di elettronica e ottica; apparecchi elettromedicali, apparecchi di misurazione e orologi Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 39353827.0
CJ27-Apparecchiature elettriche e apparecchiature per uso domestico non elettriche Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 158892551.0
CK28-Macchinari e apparecchiature nca Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 143860889.0
CL29-Autoveicoli, rimorchi e semirimorchi Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 273476075.0
CL30-Altri mezzi di trasporto Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 139153767.0
CM31-Mobili Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 2224327.0
CM32-Prodotti delle altre industrie manifatturiere Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 21667924.0
EE38-Prodotti delle attivitŕ di raccolta, trattamento e smaltimento dei rifiuti; prodotti dell'attivitŕ di recupero dei materiali Torino Regno Unito 2015 9 C Torino ITC11 ITC11 Torino 48378.0
... ... ... ... ... ... ... ... ... ... ...
BB08-Altri minerali da cave e miniere CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 24144.0
CA10-Prodotti alimentari CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 429186.0
CA11-Bevande CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 3506778.0
CB13-Prodotti tessili CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 32574.0
CB14-Articoli di abbigliamento (anche in pelle e in pelliccia) CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 9831.0
CB15-Articoli in pelle (escluso abbigliamento) e simili CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0
CC16-Legno e prodotti in legno e sughero (esclusi i mobili); articoli in paglia e materiali da intreccio CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0
CC17-Carta e prodotti di carta CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 1072.0
CD19-Coke e prodotti derivanti dalla raffinazione del petrolio CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0
CE20-Prodotti chimici CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 6258485.0
CF21-Prodotti farmaceutici di base e preparati farmaceutici CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0
CG22-Articoli in gomma e materie plastiche CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 1534667.0
CG23-Altri prodotti della lavorazione di minerali non metalliferi CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 103478.0
CH24-Prodotti della metallurgia CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 41754886.0
CH25-Prodotti in metallo, esclusi macchinari e attrezzature CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 8960908.0
CI26-Computer e prodotti di elettronica e ottica; apparecchi elettromedicali, apparecchi di misurazione e orologi CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 29950.0
CJ27-Apparecchiature elettriche e apparecchiature per uso domestico non elettriche CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0
CK28-Macchinari e apparecchiature nca CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 324813.0
CL29-Autoveicoli, rimorchi e semirimorchi CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 33461.0
CL30-Altri mezzi di trasporto CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 105635.0
CM31-Mobili CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0
CM32-Prodotti delle altre industrie manifatturiere CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 616600.0
EE38-Prodotti delle attivitŕ di raccolta, trattamento e smaltimento dei rifiuti; prodotti dell'attivitŕ di recupero dei materiali CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 14453388.0
JA58-Prodotti delle attivitŕ editoriali CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 11813.0
JA59-Prodotti delle attivitŕ di produzione cinematografica, video e programmi televisivi; registrazioni musicali e sonore CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0
RR90-Prodotti delle attivitŕ creative, artistiche e d'intrattenimento CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0
RR91-Prodotti delle attivitŕ di biblioteche, archivi, musei e di altre attivitŕ culturali CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0
VV89-Merci dichiarate come provviste di bordo, merci nazionali di ritorno e respinte, merci varie CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0
Totale CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 78191669.0
0 CarboniaIglesias [MONDO] 2015 9 C CarboniaIglesias ITG2C ITG2C Carbonia-Iglesias 0.0

7268 rows × 1 columns


In [62]:
#creo una mappa provnciale che mostra l'export verso UK in valore assoluto per provincia
UK
UK_totale = UK.xs('Totale', level='Divisioni')
UK_totale.reset_index(inplace = True)

link_geojson = os.path.join(os.getcwd(), "geojson", "province2010_2006.geojson") 
link_output = os.path.join(os.getcwd(), "uk_totale.geojson")
print join(link_geojson, UK_totale, u'nuts_id', u'NUTS_MAP', link_output, missing_columns=2, type_dataframe = True)


executed e:\Dropbox\Dropbox\0_DB\coeweb\geojson\province2010_2006.geojson dataframe

In [37]:
#creo una mappa provnciale che mostra la percentuale di export verso UK sul totale per provincia
UK = Italia_Export_Regno_Unito_Totale_NUTS.xs('Regno Unito', level='paese')
Mondo = Italia_Export_Regno_Unito_Totale_NUTS.xs('[MONDO]', level='paese')

rapport_UK_Mondo = UK / Mondo * 100

In [52]:
rapport_UK_Mondo_Nace_Totale = rapport_UK_Mondo.xs('Totale', level='Divisioni')
rapport_UK_Mondo_Nace_Totale.reset_index(inplace = True)
rapport_UK_Mondo_Nace_Totale


Out[52]:
Index([ u'territorio',        u'anno',        u'mese',    u'cumulato',
            u'COEWEB',        u'NUTS',    u'NUTS_MAP',    u'EUROSTAT',
       u'DATI EXPORT'],
      dtype='object')

In [71]:
from IPython.display import HTML
HTML('<iframe width="100%" height="520" frameborder="0" src="https://scarsellirs.cartodb.com/viz/9272eb86-3ab1-11e6-9a6b-0e3a376473ab/embed_map" allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe>')


Out[71]:

In [40]:
#la mia libreria mappa solo dataframe monodimensionali

link_geojson = os.path.join(os.getcwd(), "geojson", "province2010_2006.geojson") 
link_output = os.path.join(os.getcwd(), "output.geojson")
print join(link_geojson, rapport_UK_Mondo_Nace_Totale, u'nuts_id', u'NUTS_MAP', link_output, missing_columns=2, type_dataframe = True)


python_geojson_pandas_join.py:27: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  dataframe.dropna(inplace=True, axis=1, thresh=missing_columns)
python_geojson_pandas_join.py:28: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  dataframe.dropna(inplace=True, axis=0, thresh=missing_rows)
c:\Users\SANTECH\Anaconda\lib\site-packages\pandas\core\frame.py:2756: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  downcast=downcast, **kwargs)
executed e:\Dropbox\Dropbox\0_DB\coeweb\geojson\province2010_2006.geojson dataframe

In [ ]:


In [56]:
#ho inserito il geojson in cartodb

In [61]:
from IPython.display import HTML
HTML('<iframe width="100%" height="520" frameborder="0" src="https://scarsellirs.cartodb.com/viz/0c3aed30-3ab0-11e6-85ed-0ef7f98ade21/embed_map" allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe>')


Out[61]:

In [ ]: