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

Erro ao trabalhar com total e agrupamento

Tenho uma planilha de day trade que estou usando para aplicar os comandos aprendidos durante o curso. Não estou conseguindo fazer um comando que mostre o total de resultados positivos e negativos do trade agrupados por dia.

Estou fazendo assim, conforme abaixo. O problema ocorre apenas nos últimos dias, não retorna a quantidade correta Alguém já passou por algo parecido!?

dados[['Data', 'Res. Tot. Líq.']]

total de operações com gain

dfGain = dados.loc[dados['resultado'] == 'gain'] gain = dfGain.groupby(['Data'], as_index=False)['resultado'].count()

total de operações com loss

dfLoss = dados.loc[dados['resultado'] == 'loss'] loss = dfLoss.groupby(['Data'], as_index=False)['resultado'].count()

inserir as colunas gain e loss no dataFrame

resumo.insert(loc=3, column='gain', value=gain['resultado']) resumo.insert(loc=4, column='loss', value=loss['resultado'])

4 respostas

Olá Rodrigo,

Pode compartilhar por favor o dataset utilizado e o seu código atual (se estiver utilizando o colab dá para compartilhar o link)? Pelas informações passadas não consegui entender o que pode estar acontecendo.

fala lucas,

o código tá salvo no github junto com a planilha que utilizei: https://github.com/razevedocosta/data_analysis

Já bati cabeça com isso mas não consegui identificar o que pode está acontecendo

Vlw o/

solução!

Opa Rodrigo, com todo o projeto disponibilizado e organizado deu para entender bem melhor.

O problema está apenas no momento do insert dos resultados dos ganhos e perdas do dia, o DataFrame resumo tem 16 linhas, enquanto gain tem 15 e loss 12, assim quando é feita a união desses dados é simplesmente adicionado uma coluna na frente da outra sem considerar se está sendo seguida a data correta, seguindo apenas a ordem das linhas.

Para contornar isso uma possibilidade é definir a data como o index de todos os DataFrames, assim ao fazer a união o pandas já percebe que é para unir baseado no index (as datas):

resumo.set_index('data', inplace=True)
resumo['gain'] = gain.set_index('Data')['resultado']
resumo['loss'] = loss.set_index('Data')['resultado']

Resultado:

Espero ter ajudado, qualquer dúvida é só falar!

top top!

Não me atentei a esse detalhe. Valeu Lucas o/