Cálculo do Desvio Padrão com dados de mais de uma coluna.

Home Fóruns Fórum Estatística para Ciência de Dados e Machine Learning Cálculo do Desvio Padrão com dados de mais de uma coluna.

Marcado: 

Visualizando 15 posts - 1 até 15 (de 15 do total)
  • Autor
    Posts
  • #27710
    Alex_Barros
    Participante

      Olá Professor,

      Eu tenho uma base de dados com oos preços de uma ação pelo número de dias, é uma série temporal. O data frame do Pandas tem as colunas: open, high, low, close

      Estou calculando o desvio padrão de 10 em 10 dias de uma coluna no Python usando: df[‘std_10’] = df[‘open’].rolling(10).std()

      Eu queria fazer o mesmo cálculo usando os dados de todas as colunas ao mesmo tempo, tentei usar a seguinte linha de código:

      df[‘std_10’] = df[[‘open’,’high’,’low’,’close’]].rolling(10).std()

      Mas essa linha não deu certo. Você pode me falar como seleciono todas as colunas para fazer o rolling e pegar os dados de mais de uma coluna?

      Obrigado.

      #27712
      Alex_Barros
      Participante

        Esqueci de falar que calcular o desvio padrão de múltiplas colunas individualmente ao mesmo tempo isso eu já consegui. O meu problema agora é incluir todos os dados das colunas de 10 em 10.

        #27750
        Fábio Spak
        Participante

          Boa noite Alex, sua pergunta não havia sido notificada aqui para mim. Que bom que conseguiu resolver a primeira a parte da sua dúvida. Entretanto, consegue dar mais detalhes da segunda dúvida? Se puder postar um print do que você esta tentando fazer.

          Fabio

          #27761
          Alex_Barros
          Participante

            Não consegui resolver o problema. O segundo post é um comentário do primeiro.

            Eu tenho um dataframe em Pandas com tres colunas, quero pegar de cinco em cinco linhas (estou usando o rolling(5)) e clacular o desvio padrão de todos os dados de todas as colunas junto.

            Não estou conseguindo juntar tudo, geralmente calcula de cada coluna individualmente.

            #27799
            Alex_Barros
            Participante

              Vou tentar explicar o meu problema usando algumas telas do Excel.

              Se eu tenho uma série temporal em que são coletadas quatro dados de quatro sensores. A_1, A_2, A_3 e A_4 formando a seguinte tabela:

               

              #27807
              Fábio Spak
              Participante

                Olá Alex, acredito que não tenha carregado a imagem, mas você pode fazer o cálculo do desvio padrão dos 10 primeiros registros dessa forma:

                base[[‘Open’,’High’,’Low’,’Close’]].iloc[0:10].std()

                No qual temos o dataframe base especificamos as colunas [‘Open’,’High’,’Low’,’Close’] utilizamos o iloc() para recuperar os dados baseados na posição informando ao comando para começar no valor 0 até o 10 e acionamos a função std() que realiza o cálculo do desvio padrão.

                https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html

                Fabio

                #27809
                Alex_Barros
                Participante

                  Olá Fábio,

                  Não deu certo. Eu mandei um e-mail para IA Expert com as figuras, você pode pedir para o Jones te repassr?

                  Obrigado.

                  #27827
                  Fábio Spak
                  Participante

                    Olá Alex, peço que você tente carregar as imagens novamente, por favor. Clique no de carregamento de imagem  no menu.

                    Teste de carregamento de imagem.

                    Fabio

                    #27832
                    Alex_Barros
                    Participante

                      Vou tentar explicar melhor usando o Excel.

                      Eu tenho uma série temporal em que são coletados quatro dados de quatro sensores diferentes: A_1, A_2, A_3 e A_4 resultando na seguinte tabela:

                      Eu quero medir o desvio padrão de cada sensor de cinco em cinco períodos. No excel eu faço o seguinte:

                      • Esta resposta foi modificada 3 anos, 8 meses atrás por Alex_Barros.
                      #27836
                      Alex_Barros
                      Participante

                        Eu repito isso para todas as colunas para todos os sensores:

                        Para as colunas individuais no Python eu estou usando o Pandas com o comando: df[‘std_A_1’] = df[‘A_1’].rolling(5).std()

                        Agora vem o problema, eu quero calcular de 5 em 5 o desvio padrão de todas as colunas. No Excel eu faço assim:

                        #27837
                        Alex_Barros
                        Participante

                          E repito para todas as linhas:

                          Como faço isso no Python para alimentar uma planilha no Pandas?

                          Obrigado.

                          #28003
                          Alex_Barros
                          Participante

                            Olá,

                            Alguma solução para esse problema?

                            #28012
                            Fábio Spak
                            Participante

                              Olá Alex, na respostas acima eu lhe passei uma referência de como obter o desvio padrão, entretanto, não posso lhe ajudar com o restante da implementação, devido ao volume de perguntas do fórum.

                              Fabio

                              #28015
                              Alex_Barros
                              Participante

                                Fábio,

                                Você pediu para passar figuras que explicassem melhor a minha dúvida, por isso detalhei o processo.

                                Pelo visto a minha dúvida é mais complexa que o objetivo do fórum, por isso não vai ter a resposta?

                                Pelo menos você sabe me falar se a função rolling funciona com o iloc?

                                #28242
                                Fábio Spak
                                Participante

                                  Olá Alex, segue abaixo uma sugestão de código, entretanto, não tenho certeza se vai funcionar para o seu código:

                                  for i in range(len(base)):
                                  
                                      if i % 10 == 0:
                                          print(base[['Open','High','Low','Close']].iloc[0:i].rolling(i).std())

                                  Fabio

                                Visualizando 15 posts - 1 até 15 (de 15 do total)
                                • Você deve fazer login para responder a este tópico.