sábado, 3 de abril de 2021

Visão geral do pacote pandas

pandas é um pacote Python que fornece estruturas de dados rápidas, flexíveis e expressivas projetadas para tornar o trabalho com dados "relacionais" ou "rotulados" fácil e intuitivo. Ele tem como objetivo ser o bloco de construção fundamental de alto nível para fazer análises de dados práticas e do mundo real em Python. Além disso, tem o objetivo mais amplo de se tornar a ferramenta de análise / manipulação de dados de código aberto mais poderosa e flexível disponível em qualquer linguagem. Já está a caminho dessa meta.

O pandas é adequado para muitos tipos diferentes de dados:

  • Dados tabulares com colunas digitadas de forma heterogênea, como em uma tabela SQL ou planilha do Excel.

  • Dados de série temporal ordenados e não ordenados (não necessariamente de frequência fixa).

  • Dados de matriz arbitrária (homogeneamente tipados ou heterogêneos) com rótulos de linha e coluna.

  • Qualquer outra forma de conjuntos de dados observacionais / estatísticos. Os dados não precisam ser rotulados para serem colocados em uma estrutura de dados do pandas.

As duas estruturas de dados primárias do pandas, Series (1-dimensional) e DataFrame (2-dimensional), lidam com a grande maioria dos casos de uso típicos em finanças, estatística, ciências sociais e muitas áreas da engenharia. Para usuários do R, DataFrame oferece tudo o que o R data.frame oferece e muito mais. O pandas é construído em cima do NumPy e se destina a se integrar bem em um ambiente de computação científica com muitas outras bibliotecas de terceiros.

Aqui estão apenas algumas das coisas que os pandas fazem bem:

  • Fácil manuseio de dados ausentes (representados como NaN) em ponto flutuante, bem como dados de ponto não flutuante.

  • Mutabilidade de tamanho: as colunas podem ser inseridas e excluídas do DataFrame e objetos de dimensão superior.

  • Automática e explícita alinhamento de dados: objetos podem ser explicitamente alinhado a um conjunto de etiquetas, ou o usuário pode simplesmente ignorar os rótulos e deixe Series, DataFrame, etc. alinhar automaticamente os dados para você em cálculos.

  • Grupo poderoso e flexível por funcionalidades para executar operações dividir-aplicar-combinar em conjuntos de dados, para agregar e transformar dados.

  • Facilite a conversão de dados irregulares e indexados de forma diferente em outras estruturas de dados Python e NumPy em objetos DataFrame.

  • Inteligente, baseada em rótulo de corte, a indexação de fantasia, e subconjuntos de grandes conjuntos de dados.

  • Intuitiva fusão e concatenação de conjuntos de dados.

  • Remodelagem flexível e dinamização de conjuntos de dados.

  • Rotulagem hierárquica de eixos (possível ter vários rótulos por marca).

  • Ferramentas de IO robustas para carregar dados de arquivos simples (CSV e delimitados), arquivos Excel, bancos de dados e salvar / carregar dados do formato HDF5 ultrarrápido.

  • Funcionalidade específica de série temporal: geração de intervalo de datas e conversão de frequência, estatísticas de janela móvel, mudança de data e atraso.

Muitos desses princípios estão aqui para resolver as deficiências frequentemente experimentadas usando outras linguagens / ambientes de pesquisa científica. Para cientistas de dados, trabalhar com dados é normalmente dividido em vários estágios: munging e limpeza de dados, análise / modelagem e, em seguida, organização dos resultados da análise em uma forma adequada para plotagem ou exibição tabular. O pandas é a ferramenta ideal para todas essas tarefas.

Algumas outras notas

  • pandas é rápido. Muitos dos bits algorítmicos de baixo nível foram amplamente ajustados no código Cython. No entanto, como com qualquer outra coisa, a generalização geralmente sacrifica o desempenho. Portanto, se você se concentrar em um recurso para seu aplicativo, poderá criar uma ferramenta especializada mais rápida.

  • O pandas é uma dependência de modelos de estatísticas, o que o torna uma parte importante do ecossistema de computação estatística em Python.

  • O pandas tem sido amplamente utilizado na produção em aplicações financeiras.

Estruturas de dados

Dimensões

Nome

Descrição

1

Series

Array de tipagem homogênea rotulada 1D

2

Quadro de dados

Estrutura tabular de tamanho mutável rotulado em 2D geral com coluna com tipagem potencialmente heterogênea.

Por que mais de uma estrutura de dados?

A melhor maneira de pensar sobre as estruturas de dados do pandas é como contêineres flexíveis para dados dimensionais inferiores. Por exemplo, DataFrame é um contêiner para Series e Series é um contêiner para escalares. Gostaríamos de poder inserir e remover objetos desses contêineres como um dicionário.

Além disso, gostaríamos de comportamentos padrão razoáveis ​​para as funções API comuns que levassem em consideração a orientação típica de séries temporais e conjuntos de dados transversais. Ao usar a matriz N-dimensional (ndarrays) para armazenar dados bidimensionais e tridimensionais, o usuário tem que considerar a orientação do conjunto de dados ao escrever funções; os eixos são considerados mais ou menos equivalentes (exceto quando a contiguidade C- ou Fortran é importante para o desempenho). Nos pandas, os eixos têm como objetivo dar mais significado semântico aos dados; ou seja, para um determinado conjunto de dados, é provável que haja uma maneira “certa” de orientar os dados. O objetivo, então, é reduzir a quantidade de esforço mental necessário para codificar as transformações de dados nas funções downstream.

Por exemplo, com dados tabulares (DataFrame) é mais semanticamente útil pensar no índice (as linhas) e nas colunas, em vez do eixo 0 e eixo 1. Iterando pelas colunas do DataFrame, portanto, resulta em um código mais legível:

for col in df.columns:
    series = df[col]
    # faça algo com series

Mutabilidade e cópia de dados

Todas as estruturas de dados do pandas são mutáveis ​​em valor (os valores que contêm podem ser alterados), mas nem sempre podem ser mutáveis ​​em tamanho. O comprimento de uma série não pode ser alterado, mas, por exemplo, as colunas podem ser inseridas em um DataFrame. No entanto, a grande maioria dos métodos produz novos objetos e não altera os dados de entrada. Em geral, gostamos de favorecer a imutabilidade onde for sensato.

Obtendo suporte

A primeira parada para questões e ideias sobre pandas é o Rastreador de Problemas do Github. Se você tiver uma pergunta geral, os especialistas da comunidade pandas podem responder por meio do Stack Overflow.

Comunidade

O pandas é apoiado ativamente hoje por uma comunidade de indivíduos com ideias semelhantes em todo o mundo que contribuem com seu valioso tempo e energia para ajudar a tornar os pandas de código aberto possíveis. Obrigado a todos os nossos colaboradores.

Se você estiver interessado em contribuir, visite o guia de contribuição.

pandas é um projeto patrocinado pela NumFOCUS. Isso ajudará a garantir o sucesso do desenvolvimento do pandas como um projeto de código aberto de classe mundial e possibilitará doações para o projeto.

Governança do projeto

O processo de governança que o projeto pandas tem usado informalmente desde seu início em 2008 é formalizado nos documentos de governança do projeto. Os documentos esclarecem como as decisões são tomadas e como os vários elementos de nossa comunidade interagem, incluindo a relação entre o desenvolvimento colaborativo de código aberto e o trabalho que pode ser financiado por entidades com ou sem fins lucrativos.

Wes McKinney é o Ditador Benevolente para a Vida (BDFL).

Equipe de desenvolvimento

A lista dos membros da Equipe Central e informações mais detalhadas podem ser encontradas na página de pessoas do repo de governança.

Parceiros institucionais

As informações sobre os atuais parceiros institucionais podem ser encontradas na página do site do pandas.

Licença

BSD 3-Clause License

Copyright (c) 2008-2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
All rights reserved.

Copyright (c) 2011-2020, Open source contributors.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

* Neither the name of the copyright holder nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Traduzido por Acervo Lima. O original pode ser acessado aqui.

0 comentários:

Postar um comentário