In [1]:
from openpyxl import load_workbook
import numpy as np
from six.moves import cPickle as pickle
In [2]:
# Otwórz XLSX z incydentami
wb2 = load_workbook("Atmosfera-Incidents-2017.xlsx")
print wb2.get_sheet_names()
In [3]:
# wybierz zakładkę
p = wb2.get_sheet_by_name(name = 'Sheet2')
In [4]:
# Wczytaj dane ciurkiem do listy
a=[]
for row in p.iter_rows():
for k in row:
# if k.internal_value is not None:
if isinstance(k.internal_value,unicode):
# Replace xa0 (non-breaking space) and _x000D_ (newline in excel XML)
repls = (u'\xa0',u' '), (u'_x000D_',u'\n')
a.append(reduce(lambda a, kv: a.replace(*kv), repls, k.internal_value))
else:
a.append(k.internal_value)
In [5]:
# skonwertuj do np.array
aa=np.asarray(a)
In [6]:
# Ten export ma 82 kolumny chociaż dane sa tylko w 21 pierwszych
# Zmień więc kształt na kwadratowa tablicę o 82 kolumnach i 22451 wierszach
aa=aa.reshape((22451,82))
In [7]:
# Weź tylko pierwsze 21 kolumn
aa=aa[:,:21]
In [8]:
# Zapekluj do pliku na później
with open("Atmosfera-Incidents-2017.pickle", 'wb') as f:
pickle.dump(aa, f, pickle.HIGHEST_PROTOCOL)
In [ ]:
# Print ładnie wyświetla polskie literki
print aa[1,7] # Nie potrzeba .decode('unicode_escape'), stringi wyświetla dobrze
print aa[1] # tabele gorzej ale dane są OK.
In [ ]:
In [ ]: