1
resposta

[Dúvida] Bloco de correlação

na bloco de correlação fiz conforme o vídeo e obtive o seguinte erro, como consigo resolvelo??? :

ValueError Traceback (most recent call last) /workspaces/jupyter/Regressão Linear/Regressão Linear.ipynb Cell 18 line 1 ----> 1 dados.corr().round(4)

File ~/.local/lib/python3.10/site-packages/pandas/core/frame.py:10707, in DataFrame.corr(self, method, min_periods, numeric_only) 10705 cols = data.columns 10706 idx = cols.copy()

10707 mat = data.to_numpy(dtype=float, na_value=np.nan, copy=False) 10709 if method == "pearson": 10710 correl = libalgos.nancorr(mat, minp=min_periods)

File ~/.local/lib/python3.10/site-packages/pandas/core/frame.py:1892, in DataFrame.to_numpy(self, dtype, copy, na_value) 1890 if dtype is not None: 1891 dtype = np.dtype(dtype) -> 1892 result = self._mgr.as_array(dtype=dtype, copy=copy, na_value=na_value) 1893 if result.dtype is not dtype: 1894 result = np.array(result, dtype=dtype, copy=False)

File ~/.local/lib/python3.10/site-packages/pandas/core/internals/managers.py:1656, in BlockManager.as_array(self, dtype, copy, na_value) 1654 arr.flags.writeable = False 1655 else: -> 1656 arr = self._interleave(dtype=dtype, na_value=na_value) 1657 # The underlying data was copied within _interleave, so no need 1658 # to further copy if copy=True or setting na_value ... -> 1715 result[rl.indexer] = arr 1716 itemmask[rl.indexer] = 1 1718 if not itemmask.all():

ValueError: could not convert string to float: '01/01/2015' Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...

1 resposta

Opa, Pedro, tudo bem com você?

Você está dando de cara com um erro porque uma das suas variáveis é uma string de data (ali onde está escrito '01/01/2015'), e o método corr() do pandas não consegue calcular a correlação com strings.

Uma coisa que pode ajudar com o problema, é converter essa coluna para um formato numérico antes de calcular a correlação. Uma maneira de fazer isso é transformar a data em um número de dias desde uma data de início. Por exemplo, deste modo:

dados['data'] = pd.to_datetime(dados['data'])
dados['data'] = (dados['data'] - dados['data'].min()).dt.days
dados.corr().round(4)

Espero que isso te ajude! Se a dúvida persistir, estamos aqui.

Abraços, bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software