Home › Fóruns › Fórum Machine Learning e Data Science com Python de A à Z › Erro Serie Temporal
- Este tópico contém 8 respostas, 2 vozes e foi atualizado pela última vez 3 anos, 9 meses atrás por
Fábio Spak.
- AutorPosts
- 19 de maio de 2021 às 14:05 #28947
Olá, boa tarde, estou tentando realizar um estudo/teste de série temporal no ARIMA; no caso, criar um modelo preditivo para o número de ligações que uma empresa recebe e estou seguindo o script das aulas de Series Temporais com ARIMA; porém estou tendo problemas, a instalação das bibliotecas está ok, a leitura da base de dados também; mas na hora de transformar as variáveis, não estou conseguindo. Poderiam me auxiliar, por gentileza?
Anexo print da base de dados (estou enviando print no formato de xlsx para ficar mais fácil visualizar) e também a execução de códigos no Jupyter Notebook.
O erro ocorre quando vou tentar ajustar a questão da data. No caso para ficar em formato de dia, mês e ano.
Código: “dateparse = lambda dates: pd.datetime.strptime(dates, ‘%d-%m-%y’)
dataset = pd.read_csv(‘base_ligacoes.csv’, parse_dates = [‘Data’], index_col = ‘Data’, date_parser = dateparse)”Resposta do Jupyer: ”
<ipython-input-8-21945fdda994>:1: FutureWarning: The pandas.datetime class is deprecated and will be removed from pandas in a future version. Import from datetime module instead.
dateparse = lambda dates: pd.datetime.strptime(dates, ‘%d-%m-%y’)—————————————————————————
TypeError Traceback (most recent call last)
~\anaconda3\lib\site-packages\pandas\io\parsers.py in converter(*date_cols)
3358 result = tools.to_datetime(
-> 3359 date_parser(*date_cols), errors=”ignore”, cache=cache_dates
3360 )<ipython-input-8-21945fdda994> in <lambda>(dates)
—-> 1 dateparse = lambda dates: pd.datetime.strptime(dates, ‘%d-%m-%y’)
2 dataset = pd.read_csv(‘base_ligacoes.csv’, parse_dates = [‘Data’], index_col = ‘Data’, date_parser = dateparse)TypeError: strptime() argument 1 must be str, not numpy.ndarray
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
~\anaconda3\lib\site-packages\pandas\io\parsers.py in converter(*date_cols)
3366 return tools.to_datetime(
-> 3367 parsing.try_parse_dates(
3368 parsing.concat_date_cols(date_cols),pandas\_libs\tslibs\parsing.pyx in pandas._libs.tslibs.parsing.try_parse_dates()
<ipython-input-8-21945fdda994> in <lambda>(dates)
—-> 1 dateparse = lambda dates: pd.datetime.strptime(dates, ‘%d-%m-%y’)
2 dataset = pd.read_csv(‘base_ligacoes.csv’, parse_dates = [‘Data’], index_col = ‘Data’, date_parser = dateparse)~\anaconda3\lib\_strptime.py in _strptime_datetime(cls, data_string, format)
567 format string.”””
–> 568 tt, fraction, gmtoff_fraction = _strptime(data_string, format)
569 tzname, gmtoff = tt[-2:]~\anaconda3\lib\_strptime.py in _strptime(data_string, format)
348 if not found:
–> 349 raise ValueError(“time data %r does not match format %r” %
350 (data_string, format))ValueError: time data ‘1/2/2021’ does not match format ‘%d-%m-%y’
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-8-21945fdda994> in <module>
1 dateparse = lambda dates: pd.datetime.strptime(dates, ‘%d-%m-%y’)
—-> 2 dataset = pd.read_csv(‘base_ligacoes.csv’, parse_dates = [‘Data’], index_col = ‘Data’, date_parser = dateparse)~\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(filepath_or_buffer, kwds)
687
688~\anaconda3\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds)
456
457 try:
–> 458 data = parser.read(nrows)
459 finally:
460 parser.close()~\anaconda3\lib\site-packages\pandas\io\parsers.py in read(self, nrows)
1194 def read(self, nrows=None):
1195 nrows = _validate_integer(“nrows”, nrows)
-> 1196 ret = self._engine.read(nrows)
1197
1198 # May alter columns / col_dict~\anaconda3\lib\site-packages\pandas\io\parsers.py in read(self, nrows)
2229
2230 names, data = self._do_date_conversions(names, data)
-> 2231 index, names = self._make_index(data, alldata, names)
2232
2233 # maybe create a mi on the columns~\anaconda3\lib\site-packages\pandas\io\parsers.py in _make_index(self, data, alldata, columns, indexnamerow)
1675 elif not self._has_complex_date_col:
1676 index = self._get_simple_index(alldata, columns)
-> 1677 index = self._agg_index(index)
1678 elif self._has_complex_date_col:
1679 if not self._name_processed:~\anaconda3\lib\site-packages\pandas\io\parsers.py in _agg_index(self, index, try_parse_dates)
1752
1753 if try_parse_dates and self._should_parse_dates(i):
-> 1754 arr = self._date_conv(arr)
1755
1756 if self.na_filter:~\anaconda3\lib\site-packages\pandas\io\parsers.py in converter(*date_cols)
3373 )
3374 except Exception:
-> 3375 return generic_parser(date_parser, *date_cols)
3376
3377 return converter~\anaconda3\lib\site-packages\pandas\io\date_converters.py in generic_parser(parse_func, *cols)
36 for i in range(N):
37 args = [c[i] for c in cols]
—> 38 results[i] = parse_func(*args)
39
40 return results<ipython-input-8-21945fdda994> in <lambda>(dates)
—-> 1 dateparse = lambda dates: pd.datetime.strptime(dates, ‘%d-%m-%y’)
2 dataset = pd.read_csv(‘base_ligacoes.csv’, parse_dates = [‘Data’], index_col = ‘Data’, date_parser = dateparse)~\anaconda3\lib\_strptime.py in _strptime_datetime(cls, data_string, format)
566 “””Return a class cls instance based on the input string and the
567 format string.”””
–> 568 tt, fraction, gmtoff_fraction = _strptime(data_string, format)
569 tzname, gmtoff = tt[-2:]
570 args = tt[:6] + (fraction,)~\anaconda3\lib\_strptime.py in _strptime(data_string, format)
347 found = format_regex.match(data_string)
348 if not found:
–> 349 raise ValueError(“time data %r does not match format %r” %
350 (data_string, format))
351 if len(data_string) != found.end():ValueError: time data ‘1/2/2021’ does not match format ‘%d-%m-%y’ “.
19 de maio de 2021 às 14:08 #2894819 de maio de 2021 às 14:08 #2894919 de maio de 2021 às 14:09 #2895019 de maio de 2021 às 22:06 #28953Olá DougTaleb, esse erro ocorre porque você esta tentando converter uma string para o tipo date. Veja nessa discussão como resolver isso utilizando uma conversão de tipos.
Não podemos fazer testes com códigos personalizados dos alunos.
Fabio
20 de maio de 2021 às 18:27 #28962Olá, Fabio
Fiz alguns teste, mas o erro persiste. O formato das datas estão em mês/dia/ano (Ex: “1/2/2021”, “1/4/2021”, “1/5/2021″,”2,307”) .
Tentei alguns códigos, mas o erro persiste:
- ” dataset[‘Data’] = pd.to_datetime(dataset[‘Data’], format=’%m-%d-%Y’) “
Erro: ” ValueError: time data ‘1/2/2021’ does not match format ‘%m-%d-%Y’ (match)”
- ” dataset[‘Data’] = pd.to_datetime(dataset[‘Data’], format=’%b-%d-%Y’)
Erro: ” ValueError: time data ‘1/2/2021’ does not match format ‘%b-%d-%Y’ (match)”
- ” dataset[‘Data’] = pd.to_datetime(dataset[‘Data’], format=’%b-%d-%YYYY’) “
Erro: “ValueError: time data ‘1/2/2021’ does not match format ‘%b-%d-%YYYY’ (match)”
20 de maio de 2021 às 22:05 #28965Olá Dougtaleb, verifique novamente o link que lhe passei. Infelizmente não conseguimos dar suporte ou ajudar detalhadamente com implementações personalizadas 🙁 Como a demanda no fórum é muito grande, não nos sobra tempo para avaliar/implementar/testar códigos personalizados que fogem das implementações disponíveis no curso. O que podemos fazer é dar algumas dicas e direcionamento de implementações como realizei na pergunta anterior.
Fabio
20 de maio de 2021 às 22:37 #28967Olá, Fabio
Entendo perfeitamente e obrigado pela disposição e ajuda; mas de qualquer forma, consegui resolver; eu basicamente ajustei formato de data, deixei no formato ano-mes-dia; tal como é usado na língua inglesa nos EUA; que é a base do Python (ao menos pelo que pesquisei); e acabou dando certo. Recentemente comprei alguns livros para me aprofundar ainda mais.
20 de maio de 2021 às 22:46 #28968Olá Dougtaleb, que bom que deu certo 😉
Fabio
- AutorPosts
- Você deve fazer login para responder a este tópico.