DataComex

Script to open and plot data from the Datacomex platform. Using tomate and import data as sample.


In [1]:
import matplotlib.pyplot as plt
import matplotlib
import os
import pandas as pd
import numpy as np
%matplotlib inline
matplotlib.style.use('ggplot')

In [2]:
product = 'tomate'
tipo = 'import'

In [5]:
pwd = '/Volumes/MacintoshHD/_GitHub/journey-of-food/data/products/'
os.chdir(pwd+product+'/'+tipo)
files = os.listdir()
files


Out[5]:
['DataComex_170928120801.csv',
 'DataComex_170928121000.csv',
 'DataComex_170928121051.csv',
 'DataComex_170928121147.csv',
 'DataComex_170928121242.csv',
 'DataComex_170928165640.csv',
 'evolucion_pais.png',
 'por_pais.png',
 'tomate.csv',
 'tomate_import_clean.csv',
 'tomate_total.csv']

In [6]:
#dataList = []
#for file in files:
#    data = pd.read_csv(file, delimiter=',', decimal=',', parse_dates=['subfila'])
#    dataList.append(data)
data = pd.read_csv('DataComex_170928165640.csv', delimiter=',', decimal=',', parse_dates=['subfila'])

In [7]:
#data = pd.concat(dataList)
data = data.fillna(0)
data['tipo'] = tipo

In [8]:
data.sort_values('valor',ascending=False).head(4)


Out[8]:
fila subfila columna subcolumna valor tipo
0 0702 Tomates frescos o refrigerados 1970-01-01 Total Mundo IMPORT 241123.15 import
10 0702 Tomates frescos o refrigerados 1970-01-01 010 Portugal (d.01/01/86) IMPORT 156406.58 import
71 0702 Tomates frescos o refrigerados 1970-01-01 204 Marruecos IMPORT 28662.57 import
3 0702 Tomates frescos o refrigerados 1970-01-01 003 Países Bajos IMPORT 28487.20 import

In [468]:
#dataTotalSubfila = data.loc[data.subfila=='Total seleccionado']
dataTotalColumna = data.loc[data.columna=='Total Mundo']
dataTotalSubcolumna = data.loc[data.subcolumna=='Total modo transporte']

#data = data[data.subfila!='Total seleccionado']
data = data[data.columna!='Total Mundo']
data = data[data.subcolumna!='Total modo transporte']

In [469]:
countryList=[]

for country in data.columna.values.tolist():
    countryList.append(country.replace(' (d.01/01/86)', ''))
data.columna = countryList

countryList=[]
for country in data.columna.values.tolist():   
    countryList.append(country.replace(' (d.01/01/99)', ''))
data.columna = countryList
                       
countryList=[]
for country in data.columna.values.tolist():    
    countryList.append(country.replace(' (d.01/01/99)', ''))
data.columna = countryList
                       
countryList=[]
for country in data.columna.values.tolist():    
    countryList.append(country.replace(' (d.01/01/95)', ''))
data.columna = countryList

countryList=[]
for country in data.columna.values.tolist():    
    countryList.append(country.replace(' (d.01/01/92)', ''))
data.columna = countryList

countryList=[]
for country in data.columna.values.tolist():    
    countryList.append(country.replace(' (d.01/06/05)', ''))
data.columna = countryList

countryList=[]
for country in data.columna.values.tolist():    
    countryList.append(country.replace(' (d.01/01/93)', ''))
data.columna = countryList

countryList=[]
for country in data.columna.values.tolist():    
    countryList.append(country.replace(' (d.01/01/90)', ''))
data.columna = countryList

countryList=[]
for country in data.columna.values.tolist():    
    countryList.append(country.replace(' (h.31/12/98)', ''))
data.columna = countryList

countryList=[]
for country in data.columna.values.tolist():    
    countryList.append(country.replace('(d.01/01/86)', ''))
data.columna = countryList

countryList=[]
for country in data.columna.values.tolist():    
    countryList.append(country.replace('(h.31/12/96)', ''))
data.columna = countryList

data.columna.values.tolist()


Out[469]:
['001 Francia',
 '002 Bélgica y Luxemburgo',
 '003 Países Bajos',
 '004 Alemania',
 '005 Italia',
 '006 Reino Unido',
 '007 Irlanda',
 '008 Dinamarca',
 '009 Grecia',
 '010 Portugal',
 '011 España (excp.Ceuta y Melilla)',
 '017 Bélgica',
 '018 Luxemburgo',
 '021 Ceuta; Islas Canarias ',
 '022 Ceuta y Melilla (h. 1998)',
 '023 Melilla',
 '024 Islandia',
 '025 Islas Feroe (h.31/12/92)',
 '027 Svalbard (archipiélago) (h.31/12/00)',
 '028 Noruega',
 '030 Suecia',
 '032 Finlandia',
 '036 Suiza (h.31/12/94)',
 '037 Liechtenstein',
 '038 Austria',
 '039 Suiza',
 '040 Portugal (h. 1985)',
 '041 Islas Feroe',
 '043 Andorra',
 '044 Gibraltar',
 '045 Ciudad del Vaticano',
 '046 Malta',
 '047 San Marino',
 '048 Yugoslavia (h.31/12/91)',
 '052 Turquía',
 '053 Estonia',
 '054 Letonia',
 '055 Lituania',
 '056 Unión Soviética (h.31/05/92)',
 '058 R.D. Alemania (h.31/12/90)',
 '060 Polonia',
 '061 República Checa',
 '062 Checoslovaquia (h.31/12/92)',
 '063 Eslovaquia',
 '064 Hungría',
 '066 Rumanía',
 '068 Bulgaria',
 '070 Albania',
 '072 Ucrania',
 '073 Bielorrusia',
 '074 Moldavia',
 '075 Rusia',
 '076 Georgia',
 '077 Armenia',
 '078 Azerbaiján',
 '079 Kazajstán',
 '080 Turkmenistán',
 '081 Uzbekistán',
 '082 Tajikistán',
 '083 Kirguizistán',
 '090 Yugoslavia (h.31/12/92)',
 '091 Eslovenia',
 '092 Croacia',
 '093 Bosnia-Herzegovina',
 '094 Serbia y Montenegro(h.31/05/05);Yug.(h.31/12/98)',
 '095 Kosovo',
 '096 Macedonia (d.01/01/00); R.Yug.Macedonia (h.31/12/99)',
 '097 Montenegro',
 '098 Serbia',
 '099 Kosovo (sólo Noviembre-2000)',
 '204 Marruecos',
 '208 Argelia',
 '212 Túnez',
 '216 Libia',
 '220 Egipto',
 '224 Sudán',
 '225 Sudán del Sur',
 '228 Mauritania',
 '229 Sáhara Occidental',
 '232 Mali',
 '236 Burkina Faso (ant. Alto Volta)',
 '240 Níger',
 '244 Chad',
 '247 Cabo Verde',
 '248 Senegal',
 '252 Gambia',
 '257 Guinea Bissau',
 '260 Guinea',
 '264 Sierra Leona',
 '268 Liberia',
 '272 Costa de Marfil',
 '276 Ghana',
 '280 Togo',
 '284 Benin',
 '288 Nigeria',
 '302 Camerún',
 '306 República Centroafricana',
 '310 Guinea Ecuatorial',
 '311 Santo Tomé y Príncipe',
 '314 Gabón',
 '318 Congo',
 '322 Rep.Democrática Congo; (Zaire h.31/12/97)',
 '324 Ruanda',
 '328 Burundi',
 '329 Santa Elena',
 '330 Angola',
 '334 Etiopía',
 '336 Eritrea',
 '338 Djibouti',
 '342 Somalia',
 '346 Kenia',
 '350 Uganda',
 '352 Tanzania',
 '355 Seychelles',
 '357 Territorio Británico Indico',
 '366 Mozambique',
 '370 Madagascar',
 '372 Reunión ',
 '373 Mauricio',
 '375 Comoras',
 '377 Mayotte (h.31/12/94)',
 '378 Zambia',
 '382 Zimbabwe',
 '386 Malawi',
 '388 Sudáfrica',
 '389 Namibia',
 '390 Sudáfrica (incl.Namibia)(h.31/12/89)',
 '391 Botswana',
 '393 Swazilandia',
 '395 Lesotho',
 '400 Estados Unidos',
 '404 Canadá',
 '406 Groenlandia',
 '408 San Pedro y Miquelón',
 '412 México',
 '413 Bermudas',
 '416 Guatemala',
 '421 Belice',
 '424 Honduras',
 '428 El Salvador',
 '432 Nicaragua',
 '436 Costa Rica',
 '440 Panamá (h.31/12/80)',
 '442 Panamá (d.01/01/81)',
 '444 Canal de Panamá (h.31/12/80)',
 '446 Anguilla',
 '448 Cuba',
 '449 San Cristóbal y Nieves',
 '450 Indias Occidentales (h.31/12/85)',
 '451 Indias Occidentales (h.31/12/82)',
 '452 Haití',
 '453 Bahamas',
 '454 Islas Turcas y Caicos',
 '455 Indias Occidentales (h.31/12/86)',
 '456 República Dominicana',
 '457 Islas Virgenes (EEUU)',
 '458 Guadalupe ',
 '459 Antigua y Barbuda',
 '460 Dominica',
 '461 Islas Vírgenes (GB) y Montserrat (h.31/12/94)',
 '462 Martinica ',
 '463 Islas Caimán',
 '464 Jamaica',
 '465 Santa Lucía',
 '466 Sant Bartolomé',
 '467 San Vicente y Granadinas',
 '468 Islas Vírgenes (GB)',
 '469 Barbados',
 '470 Montserrat',
 '472 Trinidad y Tobago',
 '473 Granada',
 '474 Aruba (d.01/01/87)',
 '475 Curaçao',
 '476 Antillas Neerlandesas (incl.Aruba)(h.31/12/86)',
 '477 Bonaire, San Eustaquio y Saba',
 '478 Antillas Neerlandesas (d.01/01/87)',
 '479 San Martín',
 '480 Colombia',
 '484 Venezuela',
 '488 Guyana',
 '492 Surinam',
 '496 Guyana Francesa ',
 '500 Ecuador',
 '504 Perú',
 '508 Brasil',
 '512 Chile',
 '516 Bolivia',
 '520 Paraguay',
 '524 Uruguay',
 '528 Argentina',
 '529 Islas Malvinas (Falkland)',
 '600 Chipre',
 '604 Líbano',
 '608 Siria',
 '612 Irak',
 '616 Irán',
 '624 Israel',
 '625 Cisjordania/Franja de Gaza',
 '626 Timor-Leste (d.01/01/03);Timor Este (h.31/12/02)',
 '628 Jordania',
 '632 Arabia Saudí',
 '636 Kuwait',
 '640 Bahrein',
 '644 Qatar',
 '647 Emiratos Árabes Unidos',
 '649 Omán',
 '652 Yemen del Norte (h.31/12/90)',
 '653 Yemen (d.01/01/91)',
 '656 Yemen del Sur (h.31/12/90)',
 '660 Afganistán',
 '662 Pakistán',
 '664 India',
 '666 Bangladesh',
 '667 Islas Maldivas',
 '669 Sri Lanka',
 '672 Nepal',
 '675 Bután',
 '676 Myanmar; (Birmania h.30/06/99)',
 '680 Tailandia',
 '684 Laos',
 '690 Vietnam',
 '696 Camboya (Campuchea)',
 '700 Indonesia',
 '701 Malasia',
 '703 Brunei Darussalam',
 '706 Singapur',
 '708 Filipinas',
 '716 Mongolia',
 '720 China',
 '724 Corea del Norte (Rep.Pop.Dem.de Corea)',
 '728 Corea del Sur (Rep. de Corea)',
 '732 Japón',
 '736 Taiwán',
 '740 Hong-Kong',
 '743 Macao',
 '800 Australia',
 '801 Papúa Nueva Guinea',
 '802 I.Marianas Norte(h.31/12/00);Oc.Australiana(h.31/12/99)',
 '803 Nauru',
 '804 Nueva Zelanda',
 '806 Islas Salomon',
 '807 Tuvalu',
 '808 Azores (I.Salomon) (h.31/12/91)',
 '809 Nueva Caledonia y dependencias',
 '810 Azores(h.31/12/00);O.Am.,Pal.(h.31/12/99);Kirib.(h.31/12/80)',
 '811 Islas Wallis y Futuna',
 '812 Kiribati (d.01/01/81)',
 '813 Pitcairn',
 '814 Oc.Holand.(h.31/12/00); Oc.Neozeland.(h.31/12/99)',
 '815 Islas Fiyi',
 '816 Vanuatu',
 '817 Tonga',
 '819 Samoa Occidental',
 '820 Islas Marianas del Norte',
 '822 Polinesia Francesa',
 '823 Micronesia Estados Federados',
 '824 Islas Marshall',
 '825 Palau',
 '830 Samoa Americana',
 '831 Guam',
 '832 Islas Menores alejadas Estados Unidos',
 '833 Islas Cocos o islas Keeling',
 '834 Isla Navidad',
 '835 Isla Heard e Islas McDonald',
 '836 Isla Norfolk',
 '837 Islas Cook',
 '838 Isla Niue',
 '839 Islas Tokelau',
 '890 Regiones Polares (h.31/12/00)',
 '891 Antártida',
 '892 Isla Bouvet',
 '893 Georgia del Sur e Islas Sandwich Sur',
 '894 Tierras Australes Francesas',
 '911 Operaciones Especiales (España) (h.31/12/99)',
 '921 Pesca altura origen España',
 '922 Pesca altura origen otro estado miembro',
 '949 Avituallamiento buques aeronaves nacionales',
 '950 Avituallamiento y combustible',
 '951 Avituall.y combust.intercambios comunitarios',
 '952 Avituallamiento terceros',
 '953 Alta mar fuera de las aguas territoriales',
 '954 Pesca de altura',
 '955 Alta mar fuera de las aguas territoriales',
 '958 Países y territorios no determinados',
 '959 Países y territorios no determinados.Intraco.',
 '960 Países y territorios no determinados.Extraco.',
 '975 Países y territ.no precisad.raz.com.Intra. (h.31/12/93)',
 '976 Países y territ.no precisad.raz.com.Extra. (h.31/12/93)',
 '977 Países y territ.no precisad.raz.com.mili.',
 '978 Países y territ.no prec.raz.com.Intra.;Código País Especial',
 '979 Países y territ.no prec.raz.com.Extra.']

In [470]:
data.columna = data.columna.astype('category')
data.subcolumna = data.subcolumna.astype('category')

In [471]:
data['Percent'] = data.valor/data.valor.sum()

In [472]:
data.sort_values('valor',ascending=False).head(6)


Out[472]:
fila subfila columna subcolumna valor tipo Percent
10 0702 Tomates frescos o refrigerados 1970-01-01 010 Portugal IMPORT 156406.58 import 0.648658
71 0702 Tomates frescos o refrigerados 1970-01-01 204 Marruecos IMPORT 28662.57 import 0.118871
3 0702 Tomates frescos o refrigerados 1970-01-01 003 Países Bajos IMPORT 28487.20 import 0.118144
41 0702 Tomates frescos o refrigerados 1970-01-01 060 Polonia IMPORT 7928.30 import 0.032881
1 0702 Tomates frescos o refrigerados 1970-01-01 001 Francia IMPORT 7702.92 import 0.031946
12 0702 Tomates frescos o refrigerados 1970-01-01 017 Bélgica IMPORT 6530.94 import 0.027085

In [463]:
data.columna = data.columna.apply(lambda x: x.__str__()[3:])
data.subcolumna = data.subcolumna.apply(lambda x: x.__str__()[3:])

In [451]:
import locale
import time
locale.setlocale(locale.LC_TIME, 'es_ES.UTF-8')


Out[451]:
'es_ES.UTF-8'

In [452]:
data.subfila
data.subfila = data.subfila.apply(lambda x: time.strptime(x.__str__(), "%B de %Y"))
data.subfila = data.subfila.apply(lambda x: time.strftime('%Y-%m-%d %H:%M:%S', x))


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-452-3bcfa5a8d643> in <module>()
      1 data.subfila
----> 2 data.subfila = data.subfila.apply(lambda x: time.strptime(x.__str__(), "%B de %Y"))
      3 data.subfila = data.subfila.apply(lambda x: time.strftime('%Y-%m-%d %H:%M:%S', x))

/Users/raimundoabrillopez/anaconda/lib/python3.5/site-packages/pandas/core/series.py in apply(self, func, convert_dtype, args, **kwds)
   2353             else:
   2354                 values = self.asobject
-> 2355                 mapped = lib.map_infer(values, f, convert=convert_dtype)
   2356 
   2357         if len(mapped) and isinstance(mapped[0], Series):

pandas/_libs/src/inference.pyx in pandas._libs.lib.map_infer (pandas/_libs/lib.c:66440)()

<ipython-input-452-3bcfa5a8d643> in <lambda>(x)
      1 data.subfila
----> 2 data.subfila = data.subfila.apply(lambda x: time.strptime(x.__str__(), "%B de %Y"))
      3 data.subfila = data.subfila.apply(lambda x: time.strftime('%Y-%m-%d %H:%M:%S', x))

/Users/raimundoabrillopez/anaconda/lib/python3.5/_strptime.py in _strptime_time(data_string, format)
    502     """Return a time struct based on the input string and the
    503     format string."""
--> 504     tt = _strptime(data_string, format)[0]
    505     return time.struct_time(tt[:time._STRUCT_TM_ITEMS])
    506 

/Users/raimundoabrillopez/anaconda/lib/python3.5/_strptime.py in _strptime(data_string, format)
    341     if not found:
    342         raise ValueError("time data %r does not match format %r" %
--> 343                          (data_string, format))
    344     if len(data_string) != found.end():
    345         raise ValueError("unconverted data remains: %s" %

ValueError: time data '1970-01-01 00:00:00' does not match format '%B de %Y'

In [ ]:


In [453]:
data.info()


<class 'pandas.core.frame.DataFrame'>
Int64Index: 3492 entries, 1 to 291
Data columns (total 7 columns):
fila          3492 non-null object
subfila       3492 non-null datetime64[ns]
columna       3492 non-null object
subcolumna    3492 non-null category
valor         3492 non-null float64
tipo          3492 non-null object
Percent       3492 non-null float64
dtypes: category(1), datetime64[ns](1), float64(2), object(3)
memory usage: 194.5+ KB

In [394]:
data.columns = ['producto', 'fecha', 'pais', 'transporte', 'Ton', 'tipo','Percent']

In [395]:
data = data.loc[data.Ton>0]

In [396]:
data.to_csv(product+'_'+tipo+'_clean.csv', encoding='utf-8')

In [397]:
data = pd.read_csv(product+'_'+tipo+'_clean.csv', encoding = 'utf-8',parse_dates=['fecha'])
data.fillna(0,inplace=True)

In [398]:
data.info()


<class 'pandas.core.frame.DataFrame'>
RangeIndex: 316 entries, 0 to 315
Data columns (total 8 columns):
Unnamed: 0    316 non-null int64
producto      316 non-null object
fecha         316 non-null datetime64[ns]
pais          316 non-null object
transporte    316 non-null object
Ton           316 non-null float64
tipo          316 non-null object
Percent       316 non-null float64
dtypes: datetime64[ns](1), float64(2), int64(1), object(4)
memory usage: 19.8+ KB

In [399]:
data.pais = data.pais.astype('category')
data.transporte = data.transporte.astype('category')
data.producto = data.producto.astype('category')

In [400]:
area = data.pivot_table(index='pais',columns='fecha',values='Ton')
area.fillna(0,inplace=True)
area['Total'] = area.sum(axis=1)

In [401]:
area.sort_values('Total',ascending=False).head()


Out[401]:
fecha 2016-01-01 00:00:00 2016-02-01 00:00:00 2016-03-01 00:00:00 2016-04-01 00:00:00 2016-05-01 00:00:00 2016-06-01 00:00:00 2016-07-01 00:00:00 2016-08-01 00:00:00 2016-09-01 00:00:00 2016-10-01 00:00:00 2016-11-01 00:00:00 2016-12-01 00:00:00 2017-01-01 00:00:00 2017-02-01 00:00:00 2017-03-01 00:00:00 2017-04-01 00:00:00 2017-05-01 00:00:00 2017-06-01 00:00:00 2017-07-01 00:00:00 Total
pais
Portugal 173.59 168.55 363.290 218.900 567.555 1687.85 3687.140 16098.150 10029.21 6966.430 1415.675 1049.250000 589.26 416.78 486.92 470.680 1774.660 3698.44 3604.260 53466.590000
Países Bajos 119.85 281.11 994.510 1335.370 3028.880 7056.96 5921.320 8039.640 5164.37 1758.120 498.430 473.970000 322.73 67.57 100.83 123.700 1707.470 5951.62 2454.965 45401.415000
Marruecos 2937.71 2234.64 2693.895 1104.355 633.550 499.23 561.585 505.885 404.14 1289.965 2248.700 1833.933333 3219.40 2944.83 3827.39 2809.755 909.155 590.99 561.035 31810.143333
Francia 962.73 677.39 808.790 447.760 662.560 746.16 169.150 178.070 123.09 567.620 494.140 1034.920000 483.21 809.44 886.98 746.730 471.560 397.89 504.900 11173.090000
Polonia 21.39 0.00 0.140 0.000 122.720 60.19 1143.060 1837.930 1684.80 551.240 112.100 96.970000 217.91 0.00 0.00 0.000 38.060 466.72 1319.920 7673.150000

In [402]:
area.sort_values('Total',ascending=False).head(5).drop('Total',axis=1).transpose().plot.area(stacked=True)
plt.ylabel('Toneladas')
plt.xlabel('Mes')
plt.title('Evolución por país de importaciones')
plt.savefig('evolucion_pais.png')



In [403]:
data.Ton.groupby(data.pais).sum().sort_values(ascending=False).head(10).plot('barh')
plt.savefig('por_pais.png')



In [377]:
datos = data.groupby([data.fecha,data.pais]).max()

In [378]:
datos.sort_values('Ton',ascending=False,inplace=True)
datos = datos.groupby('fecha').head(1).reset_index()
datos.sort_values('fecha',ascending=True,inplace=True)

In [368]:
datos.drop('Unnamed: 0',axis=1,inplace=True)
datos.set_index('fecha',inplace=True)

In [369]:
datos


Out[369]:
pais Percent Ton tipo
fecha
2016-01-01 Marruecos 0.026359 5519.82 import
2016-02-01 Marruecos 0.020390 4269.88 import
2016-03-01 Marruecos 0.024261 5080.41 import
2016-04-01 Marruecos 0.010241 2144.47 import
2016-05-01 Países Bajos 0.014464 3028.88 import
2016-06-01 Países Bajos 0.033700 7056.96 import
2016-07-01 Países Bajos 0.028276 5921.32 import
2016-08-01 Portugal 0.076875 16098.15 import
2016-09-01 Portugal 0.047893 10029.21 import
2016-10-01 Portugal 0.066295 13882.71 import
2016-11-01 Marruecos 0.020318 4254.80 import
2016-12-01 Marruecos 0.025127 5261.77 import
2017-01-01 Marruecos 0.029855 6251.97 import
2017-02-01 Marruecos 0.027232 5702.66 import
2017-03-01 Marruecos 0.034986 7326.40 import
2017-04-01 Marruecos 0.025477 5335.19 import
2017-05-01 Portugal 0.008475 1774.66 import
2017-06-01 Países Bajos 0.028421 5951.62 import
2017-07-01 Países Bajos 0.023417 4903.62 import

In [370]:
datos.to_csv(pwd+product+'/import_pais_mes.csv',encoding='utf-8')

In [371]:
dataArg = data.loc[data.pais == ' Argentina']
dataArg.transporte = dataArg.transporte.apply(lambda x: 'Marítimo')

In [372]:
data.head()


Out[372]:
Unnamed: 0 producto fecha pais transporte Ton tipo Percent
0 7 0702 Tomates frescos o refrigerados 2017-07-01 Francia Carretera 504.90 import 0.002411
1 8 0702 Tomates frescos o refrigerados 2017-06-01 Francia Carretera 397.89 import 0.001900
2 9 0702 Tomates frescos o refrigerados 2017-05-01 Francia Carretera 471.56 import 0.002252
3 10 0702 Tomates frescos o refrigerados 2017-04-01 Francia Carretera 746.73 import 0.003566
4 11 0702 Tomates frescos o refrigerados 2017-03-01 Francia Carretera 886.98 import 0.004236

In [373]:
data.pivot_table(index='pais', columns=data.fecha.dt.year, values='kg')


---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-373-77c9c57dbea6> in <module>()
----> 1 data.pivot_table(index='pais', columns=data.fecha.dt.year, values='kg')

/Users/raimundoabrillopez/anaconda/lib/python3.5/site-packages/pandas/core/reshape/pivot.py in pivot_table(data, values, index, columns, aggfunc, fill_value, margins, dropna, margins_name)
    110         for i in values:
    111             if i not in data:
--> 112                 raise KeyError(i)
    113 
    114         to_filter = []

KeyError: 'kg'

In [55]:
datos = pd.melt(data,id_vars=['fecha', 'pais'],value_vars='kg')

In [56]:
max(datos.groupby('fecha'))


Out[56]:
(Timestamp('2017-07-01 00:00:00'),
         fecha                                               pais variable  \
 0  2017-07-01                                            Francia       kg   
 5  2017-07-01                                       Países Bajos       kg   
 6  2017-07-01                                       Países Bajos       kg   
 11 2017-07-01                                           Alemania       kg   
 16 2017-07-01                                           Alemania       kg   
 18 2017-07-01                                             Italia       kg   
 23 2017-07-01                                             Italia       kg   
 28 2017-07-01                                        Reino Unido       kg   
 33 2017-07-01                                            Irlanda       kg   
 37 2017-07-01                                           Portugal       kg   
 42 2017-07-01                                            Bélgica       kg   
 47 2017-07-01                                         Luxemburgo       kg   
 54 2017-07-01                                            Polonia       kg   
 57 2017-07-01                                         Eslovaquia       kg   
 59 2017-07-01                                            Rumanía       kg   
 62 2017-07-01                                          Eslovenia       kg   
 64 2017-07-01   Macedonia (d.01/01/00); R.Yug.Macedonia (h.31...       kg   
 65 2017-07-01                                          Marruecos       kg   
 70 2017-07-01                                          Marruecos       kg   
 76 2017-07-01                                    Costa de Marfil       kg   
 78 2017-07-01                                          Sudáfrica       kg   
 81 2017-07-01                                             México       kg   
 88 2017-07-01                                            Ecuador       kg   
 89 2017-07-01                                      Nueva Zelanda       kg   
 
       value  
 0    504.90  
 5      6.31  
 6   4903.62  
 11   125.57  
 16     0.08  
 18     0.87  
 23    27.26  
 28    14.98  
 33     1.87  
 37  3604.26  
 42  1074.68  
 47    22.32  
 54  1319.92  
 57     1.95  
 59    20.74  
 62     2.42  
 64    20.55  
 65  1064.87  
 70    57.20  
 76   158.32  
 78    19.80  
 81     0.01  
 88    19.80  
 89    36.18  )

In [ ]:


In [57]:
#from geopy.geocoders import Nominatim
#from mpl_toolkits.basemap import Basemap
#import matplotlib.cm as cm

In [190]:
#geolocator = Nominatim()
#location = geolocator.geocode("Spain")
#location[1][0]

In [191]:
#data['lat'] = data.index.tolist()
#data['lat'] = data.lat.apply(lambda x: geolocator.geocode(x)[1][0])
#data['lon'] = data.index
#data['lon'] = data.lat.apply(lambda x: geolocator.geocode(x)[1][1])
#data['geo'] = data.index
#data['geo'] = data.lat.apply(lambda x: geolocator.geocode(x))
#x = data.lon.values
#y = data.lat.values
#z = data.ACELGA.values
#map = Basemap()
#map.drawcoastlines(linewidth=0.5)
#map.scatter(x, y, marker='o',s = z)

In [ ]:


In [ ]: