Você está na página 1de 10

Python para

Análise de Dados
Tratamento de Dados com pandas,
NumPy & Jupyter
terceira edição

Wes McKinney

Novatec
Authorized Portuguese translation of the English edition of Python for Data Analysis, 3E, ISBN
9781098104030 © 2022 Wesley McKinney. This translation is published and sold by permission of
O'Reilly Media, Inc., the owner of all rights to publish and sell the same.
Tradução em português autorizada da edição em inglês da obra Python for Data Analysis, 3E, ISBN
9781098104030 © 2022 Wesley McKinney. Esta tradução é publicada e vendida com a permissão da
O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra.
© Novatec Editora Ltda. [2023].
Editor: Rubens Prates GRA20230301
Tradução: Aldir Coelho Corrêa da Silva
Revisão gramatical: Alexandra Resende
ISBN do impresso: 978-85-7522-841-8
ISBN do ebook: 978-85-7522-842-5
Histórico de impressões:
Março/2023 Primeira edição
Novatec Editora Ltda.
Rua Luís Antônio dos Santos 110
02460-000 – São Paulo, SP – Brasil
Tel.: +55 11 2959-6529
Email: novatec@novatec.com.br
Site: https://novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec
GRA20230301
Sumário

Prefácio.................................................................................................................................... 11
Capítulo 1 ■ Introdução............................................................................................................. 17
1.1 Sobre o que é este livro?...............................................................................................17
Quais são os tipos de dados?........................................................................................17
1.2 Por que Python para a análise de dados?......................................................................18
Python como aglutinador.............................................................................................19
Resolvendo o problema de “duas linguagens”...............................................................19
Por que não Python?....................................................................................................20
1.3 Bibliotecas Python essenciais.......................................................................................21
NumPy........................................................................................................................21
pandas........................................................................................................................21
matplotlib...................................................................................................................23
IPython e Jupyter.........................................................................................................23
SciPy...........................................................................................................................24
scikit-learn..................................................................................................................25
statsmodels.................................................................................................................26
Outros pacotes............................................................................................................27
1.4 Instalação e configuração.............................................................................................27
Miniconda no Windows..............................................................................................27
GNU/Linux................................................................................................................28
Miniconda no macOS..................................................................................................29
Instalação dos pacotes necessários...............................................................................30
Ambientes de desenvolvimento integrado e editores de texto.........................................31
1.5 Comunidade e conferências.........................................................................................31
1.6 Navegação no livro......................................................................................................32
Exemplos de código.....................................................................................................33
Dados dos exemplos....................................................................................................34
Convenções de importação..........................................................................................35

Capítulo 2 ■ Aspectos básicos da linguagem Python, IPython e Jupyter Notebooks.....................36


2.1 Interpretador Python...................................................................................................37
2.2 Aspectos básicos do IPython.......................................................................................38
Execução do shell IPython...........................................................................................38
Execução do Jupyter Notebook....................................................................................40

3
4 Python para Análise de Dados – 3a ed

Preenchimento automático com tabulação....................................................................43


Introspecção................................................................................................................44
2.3 Aspectos básicos da linguagem Python........................................................................46
Semântica da linguagem..............................................................................................46
Tipos escalares............................................................................................................55
Controle de fluxo.........................................................................................................63
2.4 Conclusão...................................................................................................................67

Capítulo 3 ■ Estruturas de dados, funções e arquivos internos....................................................68


3.1 Estruturas de dados e sequências.................................................................................68
Tupla...........................................................................................................................68
Lista............................................................................................................................72
Dicionário...................................................................................................................77
Conjunto.....................................................................................................................82
Funções de sequência internas.....................................................................................84
List, set e dictionary comprehensions...........................................................................86
3.2 Funções......................................................................................................................89
Namespaces, escopo e funções locais...........................................................................90
Retorno de vários valores.............................................................................................91
Funções são objetos.....................................................................................................92
Funções anônimas (lambdas).......................................................................................94
Geradores....................................................................................................................95
Erros e manipulação de exceções.................................................................................98
3.3 Arquivos e o sistema operacional............................................................................... 101
Bytes e Unicode com arquivos.................................................................................... 105
3.4 Conclusão................................................................................................................. 107

Capítulo 4 ■ Aspectos básicos do NumPy: arrays e computação vetorizada................................ 108


4.1 ndarray do NumPy: um objeto de array multidimensional.......................................... 110
Criação de ndarrays................................................................................................... 112
Tipos de dados para ndarrays..................................................................................... 114
Aritmética com arrays NumPy................................................................................... 117
Indexação e fatiamento básicos.................................................................................. 118
Indexação booleana................................................................................................... 124
Indexação sofisticada................................................................................................. 127
Transposição de arrays e troca de eixos......................................................................129
4.2 Geração de números pseudoaleatórios....................................................................... 131
4.3 Funções universais: funções rápidas de arrays para todos os elementos....................... 132
4.4 Programação orientada a arrays.................................................................................136
Expressão da lógica condicional como operações com arrays......................................138
Métodos matemáticos e estatísticos............................................................................ 139
Métodos para arrays booleanos.................................................................................. 141
Ordenação................................................................................................................. 142
Sumário 5

Unicidade e outras lógicas de conjuntos..................................................................... 144


4.5 Entrada e saída de arquivos com arrays...................................................................... 145
4.6 Álgebra linear............................................................................................................ 145
4.7 Exemplo: passeios aleatórios...................................................................................... 148
Simulação de muitos passeios aleatórios ao mesmo tempo..........................................150
4.8 Conclusão................................................................................................................. 151

Capítulo 5 ■ Introdução ao pandas........................................................................................... 152


5.1 Introdução às estruturas de dados do pandas............................................................. 153
Series........................................................................................................................153
DataFrame................................................................................................................158
Objetos Index............................................................................................................ 166
5.2 Funcionalidades essenciais........................................................................................ 168
Reindexação.............................................................................................................. 169
Remoção de entradas de um eixo............................................................................... 172
Indexação, seleção e filtragem.................................................................................... 174
Aritmética e alinhamento de dados............................................................................ 185
Aplicação de funções e mapeamento..........................................................................192
Ordenação e classificação..........................................................................................194
Índices de eixos com rótulos duplicados.....................................................................199
5.3 Síntese e cálculo de estatísticas descritivas................................................................. 201
Correlação e Covariância...........................................................................................204
Valores únicos, contagens de valores e pertencimento.................................................206
5.4 Conclusão................................................................................................................. 210

Capítulo 6 ■ Carregamento de dados, armazenamento e formatos de arquivos......................... 211


6.1 Leitura e escrita de dados no formato texto................................................................ 211
Leitura de arquivos de texto por partes....................................................................... 219
Gravação de dados em formato texto..........................................................................221
Trabalho com outros formatos delimitados.................................................................223
Dados JSON..............................................................................................................225
XML e HTML: web scraping.....................................................................................227
6.2 Formatos de dados binários.......................................................................................232
Leitura de arquivos do Microsoft Excel......................................................................233
Uso do formato HDF5...............................................................................................235
6.3 Interação com web APIs............................................................................................237
6.4 Interação com bancos de dados..................................................................................240
6.5 Conclusão................................................................................................................. 242

Capítulo 7 ■ Limpeza e preparação dos dados.......................................................................... 243


7.1 Manipulação de dados ausentes................................................................................. 243
Filtragem de dados ausentes.......................................................................................246
Preenchendo dados ausentes...................................................................................... 248
6 Python para Análise de Dados – 3a ed

7.2 Transformação de dados............................................................................................250


Remoção de duplicidades...........................................................................................251
Transformação de dados com o uso de uma função ou mapeamento...........................252
Substituição de valores...............................................................................................254
Renomeação dos índices dos eixos.............................................................................256
Discretização e compartimentalização (binning)........................................................257
Detecção e fitragem de valores discrepantes................................................................260
Permutação e amostragem aleatória............................................................................262
Cálculo de variáveis indicadoras/dummy....................................................................264
7.3 Tipos de dados de extensão........................................................................................268
7.4 Manipulação de strings.............................................................................................. 271
Métodos internos dos objetos de string do Python......................................................272
Expressões regulares................................................................................................. 274
Funções de string do pandas......................................................................................277
7.5 Dados categóricos......................................................................................................281
Histórico e motivação................................................................................................281
Tipo de extensão Categorical do pandas.....................................................................283
Computações com categóricos...................................................................................286
Métodos categóricos..................................................................................................289
7.6 Conclusão.................................................................................................................292

Capítulo 8 ■ Tratamento de dados: junção, combinação e reformatação.................................... 293


8.1 Indexação hierárquica...............................................................................................293
Reorganização e ordenação de níveis..........................................................................297
Síntese estatística por nível.........................................................................................298
Indexação com as colunas de um DataFrame..............................................................299
8.2 Combinação e mesclagem de conjuntos de dados.......................................................300
Junções no DataFrame no estilo de bancos de dados................................................... 301
Mesclagem baseada no índice....................................................................................307
Concatenação ao longo de um eixo............................................................................ 312
Combinação de dados com sobreposição.................................................................... 318
8.3 Reformatação e pivotamento.....................................................................................320
Reformatação com indexação hierárquica...................................................................320
Pivotamento do formato “longo” para o formato “largo”............................................. 324
Pivotamento do formato “largo” para o formato “longo”.............................................328
8.4 Conclusão.................................................................................................................330

Capítulo 9 ■ Plotagem e visualização....................................................................................... 331


9.1 Introdução rápida à API do matplotlib....................................................................... 332
Figuras e subplotagens...............................................................................................333
Cores, marcadores e estilos de linha........................................................................... 337
Marcações, rótulos e legendas.................................................................................... 339
Anotações e desenhos em uma subplotagem...............................................................342
Sumário 7

Como salvar as plotagens em arquivo.........................................................................344


Configuração do matplotlib.......................................................................................345
9.2 Plotagem com o pandas e o seaborn...........................................................................345
Plotagens de linha......................................................................................................346
Plotagens de barras....................................................................................................348
Histogramas e plotagens de densidade.......................................................................354
Plotagens de dispersão ou de pontos...........................................................................356
Grades de faceta e dados categóricos..........................................................................358
9.3 Outras ferramentas de visualização do Python...........................................................360
9.4 Conclusão.................................................................................................................360

Capítulo 10 ■ Agregação de dados e operações de grupo.......................................................... 361


10.1 Como considerar as operações de grupo...................................................................362
Iterando por grupos...................................................................................................367
Seleção de uma coluna ou de um subconjunto de colunas...........................................369
Agrupamento com dicionários e Series....................................................................... 370
Agrupamento com funções........................................................................................ 371
Agrupamento por níveis de índice..............................................................................372
10.2 Agregação de dados.................................................................................................372
Aplicação de uma função às colunas e aplicação de várias funções.............................. 375
Retorno de dados agregados sem índices de linha....................................................... 379
10.3 Método apply: dividir-aplicar-combinar genérico.....................................................380
Supressão das chaves de grupo...................................................................................382
Análise de quantis e de buckets..................................................................................383
Exemplo: preenchimento de valores ausentes com valores específicos de grupo...........385
Exemplo: amostragem aleatória e permutação............................................................388
Exemplo: média ponderada de grupos e correlação.....................................................390
Exemplo: regressão linear nos grupos......................................................................... 393
10.4 Transformações de grupos e GroupBys “não encapsulados”......................................394
10.5 Tabelas dinâmicas e tabulação cruzada....................................................................399
Tabulações cruzadas: crosstab...................................................................................402
10.6 Conclusão...............................................................................................................403

Capítulo 11 ■ Séries temporais.................................................................................................404


11.1 Tipos de dados e ferramentas de data e hora.............................................................405
Conversão entre string e datetime..............................................................................406
11.2 Aspectos básicos das séries temporais......................................................................409
Indexação, seleção e criação de subconjuntos............................................................. 410
Séries temporais com índices duplicados.................................................................... 414
11.3 Intervalos de datas, frequências e deslocamentos...................................................... 415
Geração de intervalos de datas................................................................................... 416
Frequências e offset de datas...................................................................................... 418
Deslocamento de datas (adiantando e atrasando)........................................................420
8 Python para Análise de Dados – 3a ed

11.4 Manipulação de fusos horários................................................................................. 424


Localização e conversão dos fusos horários................................................................425
Operações com objetos Timestamp que consideram fusos horários............................. 427
Operações entre fusos horários diferentes................................................................... 429
11.5 Períodos e aritmética com períodos..........................................................................430
Conversão de frequência de períodos......................................................................... 431
Frequências de período trimestrais............................................................................. 433
Conversão de timestamps para períodos (e vice-versa)................................................ 435
Criação de um PeriodIndex a partir de arrays............................................................. 437
11.6 Reamostragem e conversão de frequências................................................................ 439
Downsampling.......................................................................................................... 441
Upsampling e interpolação.........................................................................................443
Reamostragem com períodos.....................................................................................445
Reamostragem de tempo em grupos...........................................................................447
11.7 Funções de janela móvel...........................................................................................449
Funções exponencialmente ponderadas...................................................................... 452
Funções de janela móvel binárias...............................................................................454
Funções de janela móvel definidas pelo usuário.......................................................... 455
11.8 Conclusão............................................................................................................... 456

Capítulo 12 ■ Introdução às bibliotecas de modelagem em Python........................................... 457


12.1 Interface entre o pandas e o código dos modelos...................................................... 457
12.2 Criação de descrições de modelos com o Patsy.........................................................461
Transformações de dados em fórmulas do Patsy.........................................................464
Dados categóricos e o Patsy........................................................................................466
12.3 Introdução ao statsmodels.......................................................................................469
Estimativa de modelos lineares.................................................................................. 470
Estimativas de processos de séries temporais.............................................................. 473
12.4 Introdução ao scikit-learn........................................................................................ 474
12.5 Conclusão............................................................................................................... 479

Capítulo 13 ■ Exemplos de análise de dados.............................................................................480


13.1 Dados de 1.USA.gov do Bitly....................................................................................480
Contagem de fusos horários em Python puro............................................................. 481
Contagem de fusos horários com o pandas.................................................................484
13.2 Conjunto de dados MovieLens 1M........................................................................... 491
Medição da discrepância nas avaliações.....................................................................496
13.3 Nomes de bebês americanos de 1880 a 2010............................................................500
Análise das tendências para os nomes........................................................................506
13.4 Banco de dados de alimentos do USDA.................................................................... 515
13.5 Banco de dados da Federal Election Commission em 2012.......................................522
Estatísticas de doações por profissão e empregador.....................................................526
Separando os valores das doações em buckets............................................................529
Sumário 9

Estatísticas das doações por estado............................................................................ 532


13.6 Conclusão............................................................................................................... 533

Apêndice A ■ NumPy avançado................................................................................................ 534


A.1 Organização interna do objeto ndarray......................................................................534
Hierarquia de tipos de dados do NumPy.................................................................... 535
A.2 Manipulação avançada de arrays............................................................................... 537
Redefinição do formato de arrays............................................................................... 537
Ordem C versus ordem FORTRAN............................................................................ 539
Concatenação e divisão de arrays...............................................................................540
Repetição de elementos: tile e repeat..........................................................................543
Equivalentes à indexação sofisticada: take e put.........................................................545
A.3 Broadcasting............................................................................................................546
Broadcasting em outros eixos.....................................................................................549
Definição de valores de arrays por broadcasting.......................................................... 551
A.4 Uso avançado das ufuncs.......................................................................................... 552
Métodos de instância das ufuncs................................................................................ 552
Criação de novas ufuncs em Python........................................................................... 555
A.5 Arrays estruturados e de registros............................................................................. 556
Tipos de dados aninhados e campos multidimensionais.............................................. 557
Por que usar arrays estruturados?............................................................................... 558
A.6 Mais detalhes sobre ordenação.................................................................................. 559
Ordenações indiretas: argsort e lexsort....................................................................... 561
Algoritmos de ordenação alternativos......................................................................... 562
Ordenação parcial de arrays.......................................................................................563
numpy.searchsorted: encontrando elementos em um array ordenado..........................564
A.7 Criação de funções rápidas do NumPy com o Numba................................................565
Criação de objetos numpy.ufunc personalizados com o Numba..................................567
A.8 Operações avançadas de entrada e saída com arrays..................................................568
Arquivos mapeados em memória...............................................................................568
HDF5 e outras opções de armazenamento de arrays................................................... 570
A.9 Dicas de desempenho............................................................................................... 570
Importância da memória contígua.............................................................................. 570

Apêndice B ■ Mais sobre o sistema IPython.............................................................................. 573


B.1 Atalhos de teclado no terminal..................................................................................573
B.2 Sobre os comandos mágicos...................................................................................... 574
Comando %run......................................................................................................... 576
Execução de código da área de transferência..............................................................578
B.3 Uso do histórico de comandos...................................................................................579
Pesquisa e reutilização do histórico de comandos.......................................................579
Variáveis de entrada e de saída...................................................................................580
B.4 Interação com o sistema operacional.......................................................................... 581
10 Python para Análise de Dados – 3a ed

Comandos do shell e aliases.......................................................................................582


Sistema de marcadores de diretórios...........................................................................583
B.5 Ferramentas de desenvolvimento de software.............................................................584
Depurador interativo.................................................................................................584
Medição do tempo de execução de um código: %time e %timeit.................................590
Geração básica de perfis: %prun e %run -p................................................................ 592
Geração do perfil de uma função linha a linha............................................................594
B.6 Dicas para desenvolvimento de código produtivo com uso do IPython....................... 597
Recarregamento de dependências de módulos............................................................ 597
Dicas de design de código..........................................................................................598
B.7 Recursos avançados do IPython................................................................................600
Perfis e configuração..................................................................................................600
B.8 Conclusão.................................................................................................................601
Índice remissivo......................................................................................................................603

Você também pode gostar