quando vou criar a variavel "Valor Bruto " o comando da erro de "Keyerro" dados ['Valor Bruto'] = dados ['Valor'] + dados ['Condominio'] + dados ['IPTU']
quando vou criar a variavel "Valor Bruto " o comando da erro de "Keyerro" dados ['Valor Bruto'] = dados ['Valor'] + dados ['Condominio'] + dados ['IPTU']
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:
sep=';'
que deve estar faltando e então gerar o arquivo aluguel_residencial.csv
novamentesep=';'
na leitura do arquivoDiz 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:
aluguel_residencial.csv
)dados
)resolvido. obrigado