Tutorial de quadro de dados de pandas

Tutorial de quadro de dados de pandas

Pandas para análise numérica

Os pandas foram desenvolvidos a partir da necessidade de uma maneira eficiente de gerenciar dados financeiros no Python. Pandas é uma biblioteca que pode ser importada para o Python para ajudar na manipulação e transformação de dados numéricos. Wes McKinney começou o projeto em 2008. Pandas agora é gerenciado por um grupo de engenheiros e apoiado pela organização sem fins lucrativos NumFocus, que garantirá seu crescimento e desenvolvimento futuro. Isso significa que os pandas serão uma biblioteca estável por muitos anos e podem ser incluídos em seus aplicativos sem a preocupação de um pequeno projeto.

Embora os pandas tenham sido desenvolvidos inicialmente para modelar dados financeiros, suas estruturas de dados podem ser usadas para manipular uma variedade de dados numéricos. Os pandas possuem várias estruturas de dados que estão embutidas e podem ser usadas para modelar facilmente e manipular dados numéricos. Este tutorial cobrirá os pandas Quadro de dados estrutura de dados em profundidade.

O que é um DataFrame?

A Quadro de dados é uma das primeiras estruturas de dados em pandas e representa uma coleção de dados em 2-D. Existem muitos objetos análogos para esse tipo de estrutura de dados 2-D, alguns dos quais incluem a sempre popular planilha do Excel, uma tabela de banco de dados ou uma matriz 2D encontrada na maioria das linguagens de programação. Abaixo está um exemplo de um Quadro de dados Em um formato gráfico. Representa um grupo de séries temporais de preços de fechamento de ações por data.

Este tutorial o levará a muitos dos métodos do quadro de dados e usarei um modelo financeiro do mundo real para demonstrar essas funções.

Importação de dados

As aulas de pandas têm alguns métodos incorporados para ajudar na importação de dados em uma estrutura de dados. Abaixo está um exemplo de como importar dados para um painel de pandas com o DataReader aula. Ele pode ser usado para importar dados de várias fontes de dados financeiros gratuitos, incluindo Quandl, Yahoo Finance e Google. Para usar a biblioteca de pandas, você precisa adicioná -la como uma importação em seu código.

importar pandas como PD

O método abaixo iniciará o programa executando o método de execução do tutorial.

Se __name__ == "__main__":
tutorial_run ()

O tutorial_run O método está abaixo. É o próximo método que adicionarei ao código. A primeira linha deste método define uma lista de tickers de estoque. Essa variável será usada posteriormente no código como uma lista de ações para as quais os dados serão solicitados para preencher o Quadro de dados. A segunda linha de código chama o Obter dados método. Como veremos, o Obter dados o método leva três parâmetros como sua entrada. Passaremos a lista de tickers de estoque, a data de início e a data de término dos dados que solicitaremos.

def tutorial_run ():
#Stock tickers para fonte do Yahoo Finance
símbolos = ['espião', 'aapl', 'goog']
#Obter dados
df = get_data (símbolos, '2006-01-03', '2017-12-31')

Abaixo, definiremos o Obter dados método. Como mencionei acima, são necessários três parâmetros uma lista de símbolos, uma data de início e término.

A primeira linha de código define um painel de pandas instantando um DataReader aula. A chamada para o DataReader A classe se conectará ao servidor de finanças do Yahoo e solicitará os valores de fechamento altos, baixos, próximos e ajustados para cada uma das ações no símbolos lista. Esses dados são carregados em um objeto de painel por pandas.

A painel é uma matriz 3D e pode ser considerada uma "pilha" de DataFrames. Cada Quadro de dados na pilha contém um dos valores diários para as ações e intervalos de data solicitados. Por exemplo, o abaixo Quadro de dados, apresentado anteriormente, é o preço de fechamento Quadro de dados do pedido. Cada tipo de preço (alto, baixo, próximo e ajustado) tem seu próprio Quadro de dados no painel resultante retornou da solicitação.

A segunda linha de código fatias do painel em um único Quadro de dados e atribui os dados resultantes a df. Esta será minha variável para o Quadro de dados que eu uso para o restante do tutorial. Ele mantém valores próximos diários para as três ações para o intervalo especificado. O painel é cortado especificando qual do painel DataFrames Você gostaria de voltar. Neste exemplo, linha de código abaixo, é o 'próximo'.

Uma vez que temos nosso Quadro de dados No lugar, abordarei algumas das funções úteis na biblioteca de pandas que nos permitirão manipular os dados no Quadro de dados objeto.

def get_data (símbolos, start_date, end_date):
painel = dados.DataReader (símbolos, 'yahoo', start_date, end_date)
df = painel ['Close']
Imprimir (df.cabeça (5))
Imprimir (df.cauda (5))
retornar df

Cabeças e caudas

A terceira e quarta linha de Obter dados Imprima a cabeça da função e a cauda do quadro de dados. Acho isso mais útil na depuração e visualização dos dados, mas também pode ser usado para selecionar a primeira ou a última amostra dos dados no Quadro de dados. A função de cabeça e cauda puxa a primeira e a última linha de dados do Quadro de dados. O parâmetro inteiro entre os parênteses define o número de linhas a serem selecionadas pelo método.

.loc

O Quadro de dados loc Método fatias o Quadro de dados por índice. A linha abaixo das fatias de código df Quadro de dados pelo índice 2017-12-12. Eu forneci uma captura de tela dos resultados abaixo.

Imprima df.loc ["2017-12-12"]

loc pode ser usado como uma fatia bidimensional também. O primeiro parâmetro é a linha e o segundo parâmetro é a coluna. O código abaixo retorna um único valor que é igual ao preço de fechamento da Apple em 12/12/2014.

Imprima df.LOC ["2017-12-12", "AAPL"]

O loc o método pode ser usado para cortar todas as linhas em uma coluna ou todas as colunas em uma linha. O : O operador é usado para denotar todos. A linha de código abaixo seleciona todas as linhas na coluna para o Google fechamento preços.

Imprima df.loc [:, "goog"]

.Fillna

É comum, especialmente em conjuntos de dados financeiros, ter valores de nan em seu Quadro de dados. Os pandas fornecem uma função para preencher esses valores com um valor numérico. Isso é útil se você deseja realizar algum tipo de cálculo nos dados que podem ser distorcidos ou falhar devido aos valores da NAN.

O .Fillna O método substituirá o valor especificado para cada valor de NAN em seu conjunto de dados. A linha de código abaixo preencherá toda a nan em nosso Quadro de dados com 0. Esse valor padrão pode ser alterado para um valor que atenda à necessidade do conjunto de dados com os quais você está trabalhando, atualizando o parâmetro que é passado para o método.

df.Fillna (0)

Dados normalizando

Ao usar algoritmos de aprendizado de máquina ou análise financeira, muitas vezes é útil normalizar seus valores. O método abaixo é um cálculo eficiente para normalizar dados em um pandas Quadro de dados. Encorajo você a usar esse método porque esse código será executado com mais eficiência do que outros métodos para normalizar e pode mostrar grandes aumentos de desempenho em grandes conjuntos de dados.

.ILOC é um método semelhante a .loc mas leva parâmetros baseados em localização em vez dos parâmetros baseados em tags. É preciso um índice baseado em zero, em vez do nome da coluna do .loc exemplo. O código de normalização abaixo é um exemplo de alguns dos poderosos cálculos da matriz que podem ser executados. Vou pular a lição de álgebra linear, mas essencialmente essa linha de código dividirá toda a matriz ou Quadro de dados pelo primeiro valor de cada série temporal. Dependendo do seu conjunto de dados, você pode querer uma norma com base em min, max ou média. Essas normas também podem ser facilmente calculadas usando o estilo baseado em matriz abaixo.

def normalize_data (df):
Retornar DF ​​/ DF.Iloc [0 ,:]

Plotagem dados

Ao trabalhar com dados, geralmente é necessário representá -los graficamente. O método da plotagem permite que você construa um gráfico facilmente a partir de seus conjuntos de dados.

O método abaixo leva o nosso Quadro de dados e plota -o em um gráfico de linha padrão. O método leva um Quadro de dados e um título como seus parâmetros. A primeira linha de conjuntos de códigos machado para um enredo do Dataframe df. Está define o título e o tamanho da fonte para o texto. As duas linhas a seguir definem os rótulos para o eixo x e y. A linha final de código chama o método de show que imprime o gráfico para o console. Eu forneci uma captura de tela dos resultados do enredo abaixo. Isso representa os preços de fechamento normalizados para cada uma das ações ao longo do período selecionado.

def plot_data (df):
ax = df.plot (title = title, fontsize = 2)
machado.set_xlabel ("data")
machado.set_ylabel ("preço")
trama.mostrar()

Pandas é uma biblioteca robusta de manipulação de dados. Ele pode ser usado para diferentes tipos de dados e apresenta um conjunto sucinto e eficiente de métodos para manipular seu conjunto de dados. Abaixo, forneci o código completo do tutorial para que você possa revisar e alterar para atender às suas necessidades. Existem alguns outros métodos que o ajudam com a manipulação de dados e eu encorajo você a revisar os documentos de pandas postados nas páginas de referência abaixo. Numpy e Matplotlib são duas outras bibliotecas que funcionam bem para ciência de dados e podem ser usadas para melhorar o poder da biblioteca de pandas.

Código completo

importar pandas como PD
def plot_selected (df, colunas, start_index, end_index):
plot_data (df.ix [start_index: end_index, colunas])
def get_data (símbolos, start_date, end_date):
painel = dados.DataReader (símbolos, 'yahoo', start_date, end_date)
df = painel ['Close']
Imprimir (df.cabeça (5))
Imprimir (df.cauda (5))
Imprima df.loc ["2017-12-12"]
Imprima df.LOC ["2017-12-12", "AAPL"]
Imprima df.loc [:, "goog"]
df.Fillna (0)
retornar df
def normalize_data (df):
Retornar DF ​​/ DF.ix [0 ,:]
def plot_data (df):
ax = df.plot (title = title, fontsize = 2)
machado.set_xlabel ("data")
machado.set_ylabel ("preço")
trama.mostrar()
def tutorial_run ():
#Choose Symbols
símbolos = ['espião', 'aapl', 'goog']
#Obter dados
df = get_data (símbolos, '2006-01-03', '2017-12-31')
plot_data (df)
Se __name__ == "__main__":
tutorial_run ()

Referências

Página Pandas
Página da Pandas Wikipedia
https: // pt.Wikipedia.org/wiki/wes_mckinney
Página inicial do NumFocus