Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvidas sobre arquivo em csv para python

Bom dia

estou importando uma base de dados tipo CSV para o Python e apresentou os seguintes erros:

vendas = pd.read_csv('Vendas.csv')

UnicodeDecodeError Traceback (most recent call last) in ----> 1 vendas = pd.read_csv('Vendas.csv')

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in read_csv(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) 684 ) 685 --> 686 return read(filepathor_buffer, kwds) 687 688

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in read(filepathor_buffer, kwds) 450 451 # Create the parser. --> 452 parser = TextFileReader(fp_or_buf, **kwds) 453 454 if chunksize or iterator:

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in init(self, f, engine, **kwds) 944 self.options["has_index_names"] = kwds["has_index_names"] 945 --> 946 self.makeengine(self.engine) 947 948 def close(self):

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in makeengine(self, engine) 1176 def makeengine(self, engine="c"): 1177 if engine == "c": -> 1178 self._engine = CParserWrapper(self.f, **self.options) 1179 else: 1180 if engine == "python":

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in init(self, src, *kwds) 2006 kwds["usecols"] = self.usecols 2007 -> 2008 self._reader = parsers.TextReader(src, *kwds) 2009 self.unnamed_cols = self.reader.unnamedcols 2010

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

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

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 8: invalid continuation byte

Alguem teria uma orientação?

2 respostas
solução!

Olá Carolina, tudo bem? Espero que sim!

Isso é um problema na codificação do arquivo csv no momento em que ele foi salvo.

Para fazer a leitura do arquivo de maneira correta, precisa passar um argumento para o método read_csv() informando o encoding.

Tente algum encoding da lista:

https://docs.python.org/3/library/codecs.html#standard-encodings

Vou deixar aqui exemplos de como você pode escrever, tente esse primeiro exemplo com o encoding = "ISO-8859-1".

vendas = pd.read_csv('Vendas.csv', encoding = "ISO-8859-1", engine = "python")

ou

vendas = pd.read_csv('Vendas.csv', encoding = "UTF-8", engine = "python")

Caso não funcione, veja qual é o encoding do arquivo csv abrindo o arquivo em um bloco de notas e vendo a informação do encoding no canto inferior direito.

Informação do encoding arquivo csv em um bloco de notas

Espero que tenha tirado sua dúvida.

Bons estudos!

Olá João Vitor

o arquivo estava em ANSI, mas consegui seguindo suas orientações de pesquisa.

obrigada