Olá, Emmanuel! Tudo bom? Espero que sim.
Esse erro acontece geralmente quando estamos trabalhando operações em cima de uma cópia superficial de um DataFrame, que na verdade se chamada view, e em uma tradução direta, seria apenas uma visualização do DataFrame.
Pelo que observei do segundo erro, existe um bd_faturamento
para diferentes anos (2016 e 2017), então pode ter acontecido do seu DataFrame chamado bd_faturamento_2017
, ser uma cópia/view de um DataFrame maior chamado apenas bd_faturamento
, onde foi aplicado um filtro de Datas, e se isso for verdade e aconteceu algo do tipo:
bd_faturamento_2017 = bd_faturamento[bd_faturamento['Ano'] == 2017]
Isso pode sim gerar o mesmo erro SettingWithCopyWarning
. E para corrigir, seria necessário criar uma cópia profunda desse DataFrame para aí sim podermos criar novas variáveis, e vamos fazê-lo com a função .copy()
, resultando em:
bd_faturamento_2017 = bd_faturamento[bd_faturamento['Ano'] == 2017].copy()
Esse erro também é comum de acontecer em processos onde a cadeia de ações não é bem específica, como por exemplo no uso do loc
para criar novas variáveis. E você pode conferir mais dessa discussão na própria documentação do Pandas:
-Why does assignment fail when using chained indexing?
É mais aconselhável que você utilize algo da seguinte maneira para criar novas colunas (claro, garantindo que já está trabalhando com uma cópia direta do DataFrame):
bd_faturamento_2017['Valor Total'] =
bd_faturamento_2017[''Qtde Item'']... # operações com outras colunas aqui
Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!