Dia do mês dividido no dicionário Python pandas

Sep 27 2020

Tenho a seguinte lista de ações:

Para cada um gostaria de separar por dia do mês conforme este desenho explicativo:

Com essa separação, posso realizar o retorno cumulativo para cada dia e separar pelos retornos cumulativos máximo e mínimo para cada símbolo de ação.

Estou fazendo o seguinte (exemplo de outra lista de ações) do SO: Chame um relatório de um dicionário de dataframes :

data_dict = dict()  # create an empty dict here
for k, df in df_dict.items():
    df_dict[k]['Return %'] = df.iloc[:, 0].pct_change(-1)*100

    # aggregate the max and min of Return
    mm = df_dict[k]['Return %'].agg(['max', 'min'])  

    # add it to the dict, with ticker as the key
    data_dict[k] = {'max': mm.max(), 'min': mm.min()}  

# convert to a dataframe if you want
mm_df = pd.DataFrame.from_dict(data_dict, orient='index')

# display(mm_df)
          max      min
aapl  8.70284 -4.90070
msft  6.60377 -4.08443

Isso resulta em uma análise linear das ações na lista e não separa por dia como desejo fazer conforme o desenho acima.

Questão:

  • Como posso inserir uma etapa para dividir por dia do mês e, em seguida, executar o código acima?

Respostas

kyc12 Sep 28 2020 at 23:40

Você pode usar pandas.groupbye usar datetime.date()como o campo de agrupamento. Em seguida, você pode usar o sumoperador no objeto de grupo para calcular o retorno diário. Esta postagem mostra usando groupbycom datetime