9
respostas

criando variaveis

quando vou criar a variavel "Valor Bruto " o comando da erro de "Keyerro" dados ['Valor Bruto'] = dados ['Valor'] + dados ['Condominio'] + dados ['IPTU']

9 respostas

Olá Cicero,

Compartilha por favor qual foi a mensagem de erro completa, principalmente o que vem depois do Keyerro

Fico no aguardo!

Boa Tarde Lucas. Lucas, segue o erro que você pediu. desde já agradeço a ajuda.


KeyError Traceback (most recent call last) ~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance) 2896 try: -> 2897 return self.engine.getloc(key) 2898 except KeyError:

pandas_libs\index.pyx in pandas.libs.index.IndexEngine.getloc()

pandas_libs\index.pyx in pandas.libs.index.IndexEngine.getloc()

pandas_libs\hashtable_class_helper.pxi in pandas.libs.hashtable.PyObjectHashTable.getitem()

pandas_libs\hashtable_class_helper.pxi in pandas.libs.hashtable.PyObjectHashTable.getitem()

KeyError: 'Valor'

During handling of the above exception, another exception occurred:

KeyError Traceback (most recent call last) in ----> 1 dados['Valor Bruto'] = dados ['Valor'] + dados ['Condominio'] + dados ['IPTU']

~\Anaconda3\lib\site-packages\pandas\core\frame.py in getitem(self, key) 2978 if self.columns.nlevels > 1: 2979 return self.getitemmultilevel(key) -> 2980 indexer = self.columns.get_loc(key) 2981 if is_integer(indexer): 2982 indexer = [indexer]

~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance) 2897 return self.engine.getloc(key) 2898 except KeyError: -> 2899 return self.engine.getloc(self.maybecast_indexer(key)) 2900 indexer = self.get_indexer([key], method=method, tolerance=tolerance) 2901 if indexer.ndim > 1 or indexer.size > 1:

pandas_libs\index.pyx in pandas.libs.index.IndexEngine.getloc()

pandas_libs\index.pyx in pandas.libs.index.IndexEngine.getloc()

pandas_libs\hashtable_class_helper.pxi in pandas.libs.hashtable.PyObjectHashTable.getitem()

pandas_libs\hashtable_class_helper.pxi in pandas.libs.hashtable.PyObjectHashTable.getitem()

KeyError: 'Valor'

Opa Cicero, agora dá pra ver que o problema está na coluna Valor, ou ela não existe ou está com um nome diferente.

Verifica então como está o nome das colunas do seu dataframe, você pode fazer isso com o código:

dados.columns

Isso vai te retornar os nomes das colunas do seu dataframe dados, então coloca aqui também qual foi o retorno desse código.

boa tarde Lucas. esse foi o resultado do comando " dados.columns" Index(['Tipo,Bairro,Quartos,Vagas,Suites,Area,Valor,Condominio,IPTU'], dtype='object')

então refiz o comando novamente : dados['Valor Bruto'] = dados['Valor'] + dados ['Condominio'] + dados ['IPTU'].

deu erro novamente mesmo compiando as valores do resultado columns.


KeyError Traceback (most recent call last) ~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance) 2896 try: -> 2897 return self.engine.getloc(key) 2898 except KeyError:

pandas_libs\index.pyx in pandas.libs.index.IndexEngine.getloc()

pandas_libs\index.pyx in pandas.libs.index.IndexEngine.getloc()

pandas_libs\hashtable_class_helper.pxi in pandas.libs.hashtable.PyObjectHashTable.getitem()

pandas_libs\hashtable_class_helper.pxi in pandas.libs.hashtable.PyObjectHashTable.getitem()

KeyError: 'Valor'

During handling of the above exception, another exception occurred:

KeyError Traceback (most recent call last) in ----> 1 dados['Valor Bruto'] = dados['Valor'] + dados ['Condominio'] + dados ['IPTU']

~\Anaconda3\lib\site-packages\pandas\core\frame.py in getitem(self, key) 2978 if self.columns.nlevels > 1: 2979 return self.getitemmultilevel(key) -> 2980 indexer = self.columns.get_loc(key) 2981 if is_integer(indexer): 2982 indexer = [indexer]

~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance) 2897 return self.engine.getloc(key) 2898 except KeyError: -> 2899 return self.engine.getloc(self.maybecast_indexer(key)) 2900 indexer = self.get_indexer([key], method=method, tolerance=tolerance) 2901 if indexer.ndim > 1 or indexer.size > 1:

pandas_libs\index.pyx in pandas.libs.index.IndexEngine.getloc()

pandas_libs\index.pyx in pandas.libs.index.IndexEngine.getloc()

pandas_libs\hashtable_class_helper.pxi in pandas.libs.hashtable.PyObjectHashTable.getitem()

pandas_libs\hashtable_class_helper.pxi in pandas.libs.hashtable.PyObjectHashTable.getitem()

KeyError: 'Valor'

Pelo resultado o seu DataFrame parece ter apenas uma coluna, uma única coluna com o nome: Tipo,Bairro,Quartos,Vagas,Suites,Area,Valor,Condominio,IPTU

Provavelmente é um resultado de um detalhe da aula anterior quando é criado o arquivo aluguel_residencial.csv, nessa aula o instrutor cria o arquivo assim:

# Código da aula anterior
# Note o sep=';'
dados.to_csv('dados/aluguel_residencial.csv', sep = ';', index = False)

Mas pelo retorno do columns do seu DataFrame parece que faltou definir esse sep e por isso o pandas utiliza o separador padrão , no lugar de ; que é o utlizado na aula e esperado nos códigos mais a frente.

Então você tem 2 possibilidades de resolver:

  1. Voltar no seu código da aula anterior e corrigir o sep=';' que deve estar faltando e então gerar o arquivo aluguel_residencial.csv novamente
  2. Ou modificar o seu código atual removendo o sep=';' na leitura do arquivo

Diz se isso resolve, qualquer problema ou dúvida é só falar!

Boa Noite Lucas!!! Lucas, abri o arquivo e realmente estava separado por " , " e realmente era somente uma coluna. retirei "sep = ';' e deu certo. Obrigado.

bom dia. Lucas, será que você pode me ajudar com isso aqui?

eu importei o pandas " import pandas as pd" e eu fui criar uma variavel chamada "dados" dados = pd.read_csv('dados/aluguel_residencial.csv') e acaba retornando esse erro. FileNotFoundError Traceback (most recent call last) in ----> 1 dados = pd.read_csv('dados/aluguel_residencial.csv')

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision) 683 ) 684 --> 685 return read(filepathor_buffer, kwds) 686 687 parser_f.name = name

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in read(filepathor_buffer, kwds) 455 456 # Create the parser. --> 457 parser = TextFileReader(fp_or_buf, **kwds) 458 459 if chunksize or iterator:

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in init(self, f, engine, **kwds) 893 self.options["has_index_names"] = kwds["has_index_names"] 894 --> 895 self.makeengine(self.engine) 896 897 def close(self):

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in makeengine(self, engine) 1133 def makeengine(self, engine="c"): 1134 if engine == "c": -> 1135 self._engine = CParserWrapper(self.f, **self.options) 1136 else: 1137 if engine == "python":

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in init(self, src, *kwds) 1915 kwds["usecols"] = self.usecols 1916 -> 1917 self._reader = parsers.TextReader(src, *kwds) 1918 self.unnamed_cols = self.reader.unnamedcols 1919

pandas_libs\parsers.pyx in pandas.libs.parsers.TextReader._cinit__()

pandas_libs\parsers.pyx in pandas.libs.parsers.TextReader.setup_parser_source()

FileNotFoundError: [Errno 2] File b'dados/aluguel_residencial.csv' does not exist: b'dados/aluguel_residencial.csv'

Bom dia Cicero,

O erro FileNotFoundError acontece quando o pandas não encontra o arquivo no caminho que você passou (dados/aluguel_residencial.csv), verifica então:

  • Se o arquivo existe
  • Se está com o nome exatamente igual ao que você colocou (aluguel_residencial.csv)
  • E se está na pasta informada (dados)

resolvido. obrigado