Open ocefpaf opened 4 years ago
Filipe, apareceu esse erro tanto com o que vc utilizou na aula quanto para o 05001, quando eu tentei rodar
import ctd
cast = ctd.from_cnv(fname)
FileNotFoundError Traceback (most recent call last)
<ipython-input-7-7e47a0b20992> in <module>
1 import ctd
2
----> 3 cast = ctd.from_cnv(fname)
C:\Miniconda3\envs\PYCOURSE\lib\site-packages\ctd\read.py in from_cnv(fname)
347
348 """
--> 349 f = _read_file(fname)
350 metadata = _parse_seabird(f.readlines(), ftype="cnv")
351
C:\Miniconda3\envs\PYCOURSE\lib\site-packages\ctd\read.py in _read_file(fname)
58 extension = fname.suffix.lower()
59 if extension in [".gzip", ".gz", ".bz2", ".zip"]:
---> 60 contents = _open_compressed(fname)
61 elif extension in [".cnv", ".edf", ".txt", ".ros", ".btl"]:
62 contents = fname.read_bytes()
C:\Miniconda3\envs\PYCOURSE\lib\site-packages\ctd\read.py in _open_compressed(fname)
38 # zipfile! Also, we ask for the name because it can be different from
39 # the zipfile file!!
---> 40 zfile = zipfile.ZipFile(str(fname))
41 name = zfile.namelist()[0]
42 cfile = zfile.open(name)
C:\Miniconda3\envs\PYCOURSE\lib\zipfile.py in __init__(self, file, mode, compression, allowZip64, compresslevel, strict_timestamps)
1249 while True:
1250 try:
-> 1251 self.fp = io.open(file, filemode)
1252 except OSError:
1253 if filemode in modeDict:
FileNotFoundError: [Errno 2] No such file or directory: 'CTD-data\\05001.cnv.zip'
Ele está procurando o arquivo em CTD-data\\05001.cnv.zip
. Das duas uma, ou o notebook não está no diretório anterior ao CTD-data
ou você precisa fazer o git pull
para atualizar a sua cópia do repositório e pegar esse arquivo.
Antes de qq coisa checar o diretório pyrantine/notebooks/02-CTD/CTD-data/
e vê se o arquivo está lá.
A gente arruma uma coisa e depois vem outro erro hahaha Em:
%matplotlib inline
from matplotlib import style
style.use("seaborn-whitegrid")
down["t090C"].plot_cast()
down["c0S/m"].plot_cast()
Apareceu esse erro:
KeyError Traceback (most recent call last)
C:\Miniconda3\envs\PYCOURSE\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2645 try:
-> 2646 return self._engine.get_loc(key)
2647 except KeyError:
pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'c0S/m'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
<ipython-input-34-07b0df9173aa> in <module>
6
7 down["t090C"].plot_cast()
----> 8 down["c0S/m"].plot_cast()
C:\Miniconda3\envs\PYCOURSE\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
2798 if self.columns.nlevels > 1:
2799 return self._getitem_multilevel(key)
-> 2800 indexer = self.columns.get_loc(key)
2801 if is_integer(indexer):
2802 indexer = [indexer]
C:\Miniconda3\envs\PYCOURSE\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2646 return self._engine.get_loc(key)
2647 except KeyError:
-> 2648 return self._engine.get_loc(self._maybe_cast_indexer(key))
2649 indexer = self.get_indexer([key], method=method, tolerance=tolerance)
2650 if indexer.ndim > 1 or indexer.size > 1:
pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'c0S/m'
A gente arruma uma coisa e depois vem outro erro hahaha
Normal. Programação no início é uma briga com a sintaxe, depois uma briga com os dados, depois e jogar tudo fora e aprender algo novo.
O erro é `KeyError: 'c0S/m', o que significa que no seu DataFrame do CTD a coluna da condutividade pode ter outro nome, provavelmente por estar em outra unidade.
Faz down.columns
para ver os nomes e procura o que parece ser condutividade, depois muda em todos os pontos do notebook.
https://gist.github.com/lisiheinzen/bfbd998a6d427ddeae9a4d206d5a3eab
Filipe, consegui terminar, mas não sei se está certo porque os gráficos ficaram muito estranhos e teve um que ficou em branco e não entendi o porque (o do unfiltered e filtered). Gostaria de entender quando você puder :)
@lisiheinzen o problema de algumas figuras não aparecer não é culpa sua, é um bug da biblioteca de visualização ao adicionar a legenda. Note que eu mudei como mostrar a legenda na solução de
lines = ax0.get_lines() + ax1.get_lines()
leg = {line: line.get_label() for line in lines}
ax0.legend(leg.keys(), leg.values())
para
ax0.legend(loc="lower left")
ax1.legend(loc="lower right")
na real, se você ainda tiver a versão antiga do ctd
, o notebook vai funcionar OK, mas se atualizar vai precisar dessa correção.
Já o problema do unfiltered
vs filtered
é o intervalo mostrado. No meu exemplo ele é acertado para aqueles dados, vocês precisam re-acertar o intervalo. A melhor forma é mudar para %matplotlib notebook
para ter gráficos interativos, escolher o novo intervalo usado zoom na linha, e depois colocar o intervalo no axis
. Coloquei um na solução abaixo também, mude de
ax.axis([20870, 20930, 557.5, 559]) # intervalo de zoom antigo
para
ax.axis([23089, 23093, 271.15, 271.50]) # intervalo de zoom novo
Fiz isso de propósito para ver se vocês se davam conta que, com dados diferentes, alguns ajustes seriam necessários. Tem mais um ajuste, relacionado ao #15, que tem a solução abaixo. Vamos ver se você nota e comenta ;-p
https://nbviewer.jupyter.org/gist/ocefpaf/8645f977208efd16f8c7ecaf038cf7e0
O exercício está no notebook
pyrantine/notebooks/02-CTD/02-HW-A.ipynb
. Para garantir que vocês tem a última versão do repositório lembrem de executargit pull
antes de procurar o notebook.Quem for completando vai colando o link do gist com o notebook aqui.