Ciência de Dados

Tutorial do Pandas Data Frame

Tutorial do Pandas Data Frame

Pandas para análise numérica

O Pandas foi desenvolvido a partir da necessidade de uma maneira eficiente de gerenciar dados financeiros em Python.  Pandas é uma biblioteca que pode ser importada para python para auxiliar na manipulação e transformação de dados numéricos. Wes McKinney iniciou o projeto em 2008.  O Pandas agora é administrado por um grupo de engenheiros e apoiado pela organização sem fins lucrativos NUMFocus, que garantirá seu crescimento e desenvolvimento futuros. Isso significa que o pandas será uma biblioteca estável por muitos anos e pode ser incluído em seus aplicativos sem a preocupação de um pequeno projeto.

Embora o pandas tenha sido desenvolvido inicialmente para modelar dados financeiros, suas estruturas de dados podem ser usadas para manipular uma variedade de dados numéricos.  O Pandas tem várias estruturas de dados que são integradas e podem ser usadas para modelar e manipular facilmente dados numéricos. Este tutorial cobrirá os pandas Quadro de dados estrutura de dados em profundidade.

O que é um DataFrame?

UMA Quadro de dados é uma das principais estruturas de dados em pandas e representa uma coleção 2-D de dados.  Existem muitos objetos análogos a este 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 2-D encontrada na maioria das linguagens de programação.  Abaixo está um exemplo de um Quadro de dados em formato gráfico.  Representa um grupo de séries temporais de preços de fechamento de ações por data.

Este tutorial irá guiá-lo através de muitos dos métodos do quadro de dados e usarei um modelo financeiro do mundo real para demonstrar essas funções.

Importando Dados

As classes do Pandas têm alguns métodos integrados para auxiliar na importação de dados para uma estrutura de dados. Abaixo está um exemplo de como importar dados para um painel 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 pandas, você precisa adicioná-la como uma importação em seu código.

importar pandas como pd

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

if __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 cotações da bolsa.  Esta variável será usada posteriormente no código como uma lista de ações cujos dados serão solicitados a fim de preencher o Quadro de dados.  A segunda linha de código chama o adquirir dados método.  Como veremos, o adquirir dados método leva três parâmetros como sua entrada. Vamos passar a lista de cotações da bolsa, a data de início e a data de término para os dados que solicitaremos.

def tutorial_run ():
#Stock Tickers para fonte do Yahoo Finance
símbolos = ['SPY', 'AAPL', 'GOOG']
#adquirir dados
df = get_data (símbolos, '2006-01-03', '2017-12-31')

Abaixo iremos definir o adquirir dados método.  Como mencionei acima, leva três parâmetros, uma lista de símbolos, uma data de início e uma data de término.

A primeira linha de código define um painel pandas instanciando um DataReader aula.  A chamada para o DataReader a classe se conectará ao servidor do Yahoo Finance e solicitará os valores diários de alta, baixa, de fechamento e de fechamento ajustados para cada uma das ações no símbolos Lista.  Esses dados são carregados em um objeto de painel pelos pandas.

UMA painel é uma matriz 3-D e pode ser considerada uma "pilha" de DataFrames.  Cada Quadro de dados na pilha contém um dos valores diários para os estoques e intervalos de datas 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, fechamento e fechamento ajustado) tem seu próprio Quadro de dados no painel resultante retornado da solicitação.

A segunda linha de código divide o 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 uso no restante do tutorial.  Ele mantém os valores de fechamento diário para as três ações para o intervalo de datas especificado.  O painel é fatiado especificando qual painel DataFrames você gostaria de voltar.  Neste exemplo de linha de código abaixo, é o 'Fechar'.

Assim que tivermos nosso Quadro de dados no lugar, vou cobrir algumas das funções úteis na biblioteca do pandas que nos permitirá 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 ['Fechar']
imprimir (df.cabeça (5))
imprimir (df.cauda (5))
return df

Cara e coroa

A terceira e quarta linha de adquirir dados imprimir a função cabeça e 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.  As funções cabeça e cauda extraem a primeira e a última linha de dados do Quadro de dados.  O parâmetro inteiro entre parênteses define o número de linhas a serem selecionadas pelo método.

 .loc

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

imprimir df.loc ["12/12/2017"]

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.

imprimir df.loc ["12/12/2017", "AAPL"]

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

imprimir df.loc [:, "GOOG"]

.Fillna

É comum, especialmente em conjuntos de dados financeiros, ter valores NaN em seu Quadro de dados.  O Pandas fornece uma função para preencher esses valores com um valor numérico.  Isto é útil se você deseja realizar algum tipo de cálculo nos dados que podem estar distorcidos ou falhar devido aos valores NaN.

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

df.fillna (0)

Normalizando Dados

Ao usar o aprendizado de máquina ou algoritmos de 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.  Eu encorajo você a usar este método porque este código será executado com mais eficiência do que outros métodos de normalização e pode mostrar grandes aumentos de desempenho em grandes conjuntos de dados.

.iloc é um método semelhante a .loc mas usa parâmetros baseados em localização em vez de parâmetros baseados em tag.  É necessário 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 cálculos de matriz poderosos que podem ser realizados.  Vou pular a lição de álgebra linear, mas essencialmente esta linha de código vai 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 baseada em mínimo, máximo 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 ,:]

Dados de plotagem

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

O método abaixo leva nosso Quadro de dados e traça 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.  Ele define o título e o tamanho da fonte do texto.  As duas linhas a seguir definem os rótulos para os eixos xey.  A linha final do código chama o método show que imprime o gráfico no console. Eu forneci uma captura de tela dos resultados do gráfico abaixo.  Isso representa os preços de fechamento normalizados para cada uma das ações ao longo do período de tempo selecionado.

def plot_data (df, title = "Preços das ações"):
ax = df.plot (título = título, tamanho da fonte = 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 de métodos sucintos e eficientes 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 na manipulação de dados e encorajo-o a rever os documentos do pandas publicados 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 pandas.

Código Completo

importar pandas como pd
def plot_selected (df, colunas, start_index, end_index):
plot_data (df.ix [índice_início: índice_final, colunas])
def get_data (símbolos, start_date, end_date):
painel = dados.DataReader (símbolos, 'yahoo', start_date, end_date)
df = painel ['Fechar']
imprimir (df.cabeça (5))
imprimir (df.cauda (5))
imprimir df.loc ["12/12/2017"]
imprimir df.loc ["12/12/2017", "AAPL"]
imprimir df.loc [:, "GOOG"]
df.fillna (0)
return df
def normalize_data (df):
retornar df / df.ix [0 ,:]
def plot_data (df, title = "Preços das ações"):
ax = df.plot (título = título, tamanho da fonte = 2)
machado.set_xlabel ("Data")
machado.set_ylabel ("Preço")
trama.mostrar()
def tutorial_run ():
#Escolha símbolos
símbolos = ['SPY', 'AAPL', 'GOOG']
#adquirir dados
df = get_data (símbolos, '2006-01-03', '2017-12-31')
plot_data (df)
if __name__ == "__main__":
tutorial_run ()

Referências

Página inicial do Pandas
Página do Pandas na Wikipedia
https: // en.wikipedia.org / wiki / Wes_McKinney
Página inicial da NumFocus

WinMouse permite que você personalize e melhore o movimento do ponteiro do mouse no PC com Windows
Se você quiser melhorar as funções padrão do ponteiro do mouse, use um freeware WinMouse. Ele adiciona mais recursos para ajudá-lo a obter o máximo do...
O botão esquerdo do mouse não funciona no Windows 10
Se você estiver usando um mouse dedicado com seu laptop ou computador desktop, mas o o botão esquerdo do mouse não funciona no Windows 10/8/7 por algu...
O cursor pula ou se move aleatoriamente enquanto digita no Windows 10
Se você descobrir que o cursor do mouse pula ou se move por conta própria, de forma automática e aleatória ao digitar em um laptop ou computador com W...