Bollinger bandas pandas no Brasil


Estou apenas entrando em Pandas, tentando fazer o que eu faria em excel facilmente apenas com um grande conjunto de dados. Eu tenho uma seleção de dados de preços de futuros que eu tenho entrada em Pandas usando: isso me dá um DataFrame. Os dados estão no formulário abaixo: Agora, o que essencialmente estou tentando fazer é calcular uma banda de Bollinger em pandas. Se eu estivesse no Excel, eu selecionaria o bloco inteiro de colunas High, Low, Open e Close para dizer 20 linhas e calcular o desvio padrão. Eu vejo pandas tem a função rollstd que pode calcular o desvio padrão do rolamento, mas apenas em uma coluna. Como faço para obter Python Pandas para calcular um desvio padrão de rolamento na coluna Alto, Baixo, Abrir e Fechar, digamos 20 períodos. O que eu estou tentando fazer é calcular a devolução padrão em todos os valores selecionados nas 4 colunas, e não apenas em cada indivíduo coluna. No Excel eu poderia usar STDEV (A1: D5) para encontrar o desvio padrão de todos os números nesse bloco selecionado. O que estou tentando descobrir é como fazer o pandaspython olhar para todos os valores do openhighlowclose retornando 20 períodos e me dizer o desvio padrão, não apenas para as colunas individuais. Ndash user2999716 Nov 16 13 em 17: 22 Qual a forma mais recomendável de manipulação de dados de entrada ao vivo com pandas A cada poucos segundos Estou recebendo um ponto de dados no formato abaixo: Eu gostaria de anexá-lo a um DataFrame existente e, em seguida, executar algumas análises em isto. O problema é que apenas anexar linhas com DataFrame. append pode levar a problemas de desempenho com toda essa cópia. Coisas que eu tentei: algumas pessoas sugeriram pré-atribuir um grande DataFrame e atualizá-lo à medida que os dados entram: a outra alternativa é a construção de uma lista de dicts. Basta anexar os dados recebidos a uma lista e cortá-la em DataFrames menores para fazer o trabalho. Ou algo assim, talvez processando a entrada um pouco mais. Solicitado 24 de maio 13 às 17:53 Eu usaria HDF5pytables da seguinte maneira: Mantenha os dados como uma lista de python o maior tempo possível. Anexe seus resultados a essa lista. Quando fica grande: empurre para HDF5 Store usando pandas io (e uma tabela anexável). Limpe a lista. Repetir. Na verdade, a função que eu defino usa uma lista para cada chave para que você possa armazenar vários DataFrames na HDF5 Store no mesmo processo. Definimos uma função que você chama com cada linha d: Nota: usamos a instrução with para fechar automaticamente a loja após cada gravação. Pode ser mais rápido mantê-lo aberto, mas, se assim for, recomenda-se que você lava regularmente (escoamento de fechamento). Observe também que pode ser mais legível ter usado coleções deque ao invés de uma lista, mas o desempenho de uma lista será um pouco melhor aqui. Para usar isso, você chama como: Nota: df é a chave armazenada usada na loja pytables. Uma vez que o trabalho tenha terminado, certifique-se de que você armazene e limpe o cache restante: Agora o seu DataFrame completo está disponível através de: Alguns comentários: 5000 podem ser ajustados, tente com alguns números mais pequenos para atender às suas necessidades. A lista anexa é O (1). DataFrame append é O (len (df)). Até que você esteja fazendo estatísticas ou dados, você não precisa de pandas, use o que é mais rápido. Este código funciona com múltiplas chaves (pontos de dados). Este é um código muito pequeno, e ficou na lista python de baunilha e depois no quadro de dados de pandas. Além disso, para obter as lições atualizadas, você pode definir um método get que armazena e limpa antes de ler. Desta forma, você obtém os dados mais atualizados: agora, quando você acessa com: você terá o último df disponível. Outra opção é um pouco mais envolvida: defina uma tabela personalizada em pirâmides de baunilha, veja o tutorial. Nota: Você precisa conhecer os nomes dos campos para criar o descritor da coluna. Obrigado. Mas com este método, você não pode usar pandas nos últimos dados nos últimos segundos. Digamos que eu insira dados hoje às 15:23:00, 15:23:01, 15:23:02, 15:23:04. Então, se eu quiser acessar df392017-12-15 15: 23: 0139, 392017-12-15 15: 23: 0339. Eu não posso. Então, significa que tenho que escrever meu próprio código para filtrar linhas por tempo no cache. Isso significa que temos que reinventar a roda ndash Basj 15 de dezembro 15 às 16:06

Comments