1
resposta

Substituição com inplace

Quando coloco o cod conforme a aula apresenta o seguinte resultado:

:1: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method. The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.

For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.

dados_sem_vazio['cliente.tempo_servico'].fillna(np.ceil(dados_sem_vazio['conta.cobranca.Total']/dados_sem_vazio['conta.cobranca.mensal']),inplace=True)

Consegui dar andamento no projeto retirando o inplace do código 
1 resposta

Oi Douglas,

O aviso que você está vendo é uma FutureWarning do pandas, indicando que o uso de inplace=True em operações encadeadas (chained assignment) pode levar a comportamentos inesperados e será descontinuado em versões futuras do pandas (a partir da versão 3.0).

O problema ocorre quando você tenta modificar diretamente uma cópia de um DataFrame ou Series, em vez do objeto original.

A solução que você encontrou, removendo o inplace=True, é a abordagem correta. Em vez de usar inplace=True, você deve atribuir o resultado da operação de volta à coluna original.

Exemplo:

Código com inplace=True (que gera o aviso):

dados_sem_vazio['cliente.tempo_servico'].fillna(np.ceil(dados_sem_vazio['conta.cobranca.Total']/dados_sem_vazio['conta.cobranca.mensal']),inplace=True)

Código correto (sem o aviso):

dados_sem_vazio['cliente.tempo_servico'] = dados_sem_vazio['cliente.tempo_servico'].fillna(np.ceil(dados_sem_vazio['conta.cobranca.Total']/dados_sem_vazio['conta.cobranca.mensal']))

Nesse caso, o método fillna() retorna uma nova Series com os valores preenchidos, e essa Series é então atribuída de volta à coluna 'cliente.tempo_servico' do DataFrame dados_sem_vazio, modificando o DataFrame original.

tux matrix    Caso este post o tenha ajudado, por favor, marcar como solucionado ☑️. Bons Estudos! 🤓