Análise de dados com Python e Pandas
Descrição do livro
Atualmente os analistas devem lidar com dados caracterizados por variedade e volume extraordinários, e com muita rapidez. Utilizando a biblioteca Pandas, é possível usar Python para automatizar e executar tarefas de análise de dados de maneira rápida, não importa quão volumosos ou complexos sejam esses dados. O Pandas pode ajudar a garantir a veracidade de seus dados, visualizá-los para uma tomada de decisão eficaz e reproduzir análises em vários conjuntos de dados de modo confiável.
Análise de dados com Python e Pandas reúne conhecimentos práticos e insights para solucionar problemas reais com o Pandas, mesmo que a análise de dados com Python seja novidade para você. Daniel Y. Chen apresenta conceitos essenciais por meio de exemplos simples e práticos, expandindo-os de modo incremental para resolver problemas mais difíceis do mundo real.
Chen oferece um ponto de partida rápido para o Pandas por meio de um conjunto de dados realista, além de abordar a combinação de conjuntos de dados, o tratamento de dados ausentes e a estruturação de conjuntos de dados com o intuito de facilitar a análise e a visualização. Além disso, mostra técnicas eficazes de limpeza de dados que variam da manipulação básica de strings à aplicação simultânea de funções nos dataframes.
Depois que seus dados estiverem prontos, Chen orientará você na adequação de modelos para previsão, clustering, inferência e exploração. O autor apresenta dicas sobre desempenho e escalabilidade, e introduz você ao ecossistema mais amplo da análise de dados com Python.
ASSUNTOS ABORDADOS
Como trabalhar com DataFrames e Series e importar e exportar dados
Criação de plotagens com matplotlib, seaborn e Pandas
Combinação de conjuntos de dados e tratamento de dados ausentes
Reformatação, organização e limpeza de conjuntos de dados para que seja mais fácil trabalhar com eles
Conversão de tipos de dados e manipulação de strings de texto
Aplicação de funções para escalar as manipulações de dados
Agregação, transformação e filtragem de conjuntos de dados volumosos usando groupby
Como tirar proveito dos recursos avançados de data e hora do Pandas
Adequação de modelos lineares usando as bibliotecas statsmodels e scikit-learn
Uso de modelagem linear generalizada para adequação de modelos com diferentes variáveis de resposta
Comparação entre vários modelos para selecionar o “melhor”
Regularização para evitar a superadequação e melhorar o desempenho
Uso de clustering em aprendizado de máquina sem supervisão
Sumário
- Apresentação
- Prefácio
- Agradecimentos
- Sobre o autor
- Parte I ■ Introdução
- Capítulo 1 ■ Básico sobre o DataFrame do Pandas
- 1.1 Introdução
- 1.2 Carregando seu primeiro conjunto de dados
- 1.3 Observando colunas, linhas e células
- 1.3.1 Obtendo subconjuntos de colunas
- 1.3.2 Obtendo subconjuntos de linhas
- 1.3.3 Combinando tudo
- 1.4 Cálculos agrupados e agregados
- 1.4.1 Médias agrupadas
- 1.4.2 Contadores de frequência agrupados
- 1.5 Plotagem básica
- 1.6 Conclusão
- Capítulo 2 ■ Estruturas de dados do Pandas
- 2.1 Introdução
- 2.2 Criando seus próprios dados
- 2.2.1 Criando uma Series
- 2.2.2 Criando um DataFrame
- 2.3 Series
- 2.3.1 Series é semelhante a ndarray
- 2.3.2 Subconjuntos com booleanos: Series
- 2.4 DataFrame
- 2.4.1 Subconjuntos com booleanos: DataFrames
- 2.5 Fazendo alterações em Series e em DataFrames
- 2.5.1 Adicionando mais colunas
- 2.5.2 Alterando diretamente uma coluna
- 2.5.3 Descartando valores
- 2.6 Exportando e importando dados
- 2.6.1 pickle
- 2.6.2 CSV
- 2.6.3 Excel
- 2.6.4 Formato feather para interface com R
- 2.6.5 Outros tipos de saída de dados
- 2.7 Conclusão
- Capítulo 3 ■ Introdução à plotagem
- 3.1 Introdução
- 3.2 Matplotlib
- 3.3 Gráficos estatísticos usando a matplotlib
- 3.3.1 Univariado
- 3.3.2 Bivariado
- 3.3.3 Dados multivariados
- 3.4 seaborn
- 3.4.1 Univariado
- 3.4.2 Dados bivariados
- 3.4.3 Dados multivariados
- 3.5 Objetos do Pandas
- 3.5.1 Histogramas
- 3.5.2 Plotagem de densidade
- 3.5.3 Gráfico de dispersão
- 3.5.4 Plotagem hexbin
- 3.5.5 Gráfico de caixa
- 3.6 Temas e estilos do seaborn
- 3.7 Conclusão
- Parte II ■ Manipulação de dados
- Capítulo 4 ■ Preparação dos dados
- 4.1 Introdução
- 4.2 Tidy Data
- 4.2.1 Combinando conjuntos de dados
- 4.3 Concatenação
- 4.3.1 Adicionando linhas
- 4.3.2 Adicionando colunas
- 4.3.3 Concatenação com índices diferentes
- 4.4 Combinando vários conjuntos de dados
- 4.4.1 Merge um a um
- 4.4.2 Merge de muitos para um
- 4.4.3 Merge de muitos para muitos
- 4.5 Conclusão
- Capítulo 5 ■ Dados ausentes
- 5.1 Introdução
- 5.2 O que é um valor NaN?
- 5.3 De onde vêm os valores ausentes?
- 5.3.1 Carga de dados
- 5.3.2 Dados combinados
- 5.3.3 Valores de entrada do usuário
- 5.3.4 Reindexação
- 5.4 Trabalhando com dados ausentes
- 5.4.1 Encontrando e contando dados ausentes
- 5.4.2 Limpando dados ausentes
- 5.4.3 Cálculos com dados ausentes
- 5.5 Conclusão
- Capítulo 6 ■ Tidy data (dados organizados)
- 6.1 Introdução
- 6.2 Colunas contêm valores, e não variáveis
- 6.2.1 Mantendo uma coluna fixa
- 6.2.2 Mantendo várias colunas fixas
- 6.3 Colunas contendo diversas variáveis
- 6.3.1 Separar e adicionar colunas individualmente (método simples)
- 6.3.2 Separar e combinar em um único passo (método simples)
- 6.3.3 Separar e combinar em um único passo (método mais complicado)
- 6.4 Variáveis tanto em linhas quanto em colunas
- 6.5 Várias unidades de observação em uma tabela (normalização)
- 6.6 Unidades de observação em várias tabelas
- 6.6.1 Carregando vários arquivos usando um laço
- 6.6.2 Carregando vários arquivos usando uma list comprehension
- 6.7 Conclusão
- Parte III ■ Manipulação de dados
- Capítulo 7 ■ Tipos de dados
- 7.1 Introdução
- 7.2 Tipos de dados
- 7.3 Convertendo tipos
- 7.3.1 Convertendo para objetos string
- 7.3.2 Convertendo para valores numéricos
- 7.4 Dados categorizados
- 7.4.1 Conversão para categoria
- 7.4.2 Manipulando dados categorizados
- 7.5 Conclusão
- Capítulo 8 ■ Strings e dados do tipo texto
- 8.1 Introdução
- 8.2 Strings
- 8.2.1 Obtendo subconjuntos e fatiando strings
- 8.2.2 Obtendo o último caractere de uma string
- 8.3 Métodos de string
- 8.4 Outros métodos de string
- 8.4.1 Método join
- 8.4.2 Método splitlines
- 8.5 Formatação de strings
- 8.5.1 Formatação de strings personalizada
- 8.5.2 Formatação de strings de caracteres
- 8.5.3 Formatação de números
- 8.5.4 Formatação no estilo do printf de C
- 8.5.5 Strings literais formatadas em Python 3.6+
- 8.6 Expressões regulares (RegEx)
- 8.6.1 Correspondência de padrão
- 8.6.2 Encontrando um padrão
- 8.6.3 Substituindo um padrão
- 8.6.4 Compilando um padrão
- 8.7 Biblioteca regex
- 8.8 Conclusão
- Capítulo 9 ■ Apply
- 9.1 Introdução
- 9.2 Funções
- 9.3 apply (básico)
- 9.3.1 apply em uma Series
- 9.3.2 apply em um DataFrame
- 9.4 apply (mais avançado)
- 9.4.1 Operações em colunas
- 9.4.2 Operações em linhas
- 9.5 Funções vetorizadas
- 9.5.1 Usando o numpy
- 9.5.2 Usando a biblioteca numba
- 9.6 Funções lambda
- 9.7 Conclusão
- Capítulo 10 ■ Operações groupby: separar–aplicar–combinar
- 10.1 Introdução
- 10.2 Agregação
- 10.2.1 Agregação básica com agrupamento de uma única variável
- 10.2.2 Métodos de agregação embutidos
- 10.2.3 Funções de agregação
- 10.2.4 Várias funções simultaneamente
- 10.2.5 Usando um dicionário em agg/aggregate
- 10.3 Transformação
- 10.3.1 Exemplo com escore z
- 10.4 Filtragem
- 10.5 Objeto pandas core groupby DataFrameGroupBy
- 10.5.1 Grupos
- 10.5.2 Cálculos com grupos envolvendo diversas variáveis
- 10.5.3 Selecionando um grupo
- 10.5.4 Iterando nos grupos
- 10.5.5 Vários grupos
- 10.5.6 Obtendo resultados planos
- 10.6 Trabalhando com MultiIndex
- 10.7 Conclusão
- Capítulo 11 ■ Tipo de dado datetime
- 11.1 Introdução
- 11.2 Objeto datetime de Python
- 11.3 Conversão para datetime
- 11.4 Carregando dados que incluam datas
- 11.5 Extraindo componentes de datas
- 11.6 Cálculos com datas e timedeltas
- 11.7 Métodos de datetime
- 11.8 Obtendo dados de ações
- 11.9 Obtendo subconjuntos de dados com base em datas
- 11.9.1 Objeto DatetimeIndex
- 11.9.2 Objeto TimedeltaIndex
- 11.10 Intervalos de datas
- 11.10.1 Frequências
- 11.10.2 Offsets
- 11.11 Deslocando valores
- 11.12 Reamostragem
- 11.13 Fusos horários
- 11.14 Conclusão
- Parte IV ■ Modelagem de dados
- Capítulo 12 ■ Modelos lineares
- 12.1 Introdução
- 12.2 Regressão linear simples
- 12.2.1 Usando a statsmodels
- 12.2.2 Usando a sklearn
- 12.3 Regressão múltipla
- 12.3.1 Usando a statsmodels
- 12.3.2 Usando a statsmodels com variáveis categorizadas
- 12.3.3 Usando a sklearn
- 12.3.4 Usando a sklearn com variáveis categorizadas
- 12.4 Mantendo os rótulos dos índices com a sklearn
- 12.5 Conclusão
- Capítulo 13 ■ Modelos lineares generalizados
- 13.1 Introdução
- 13.2 Regressão logística
- 13.2.1 Usando a statsmodels
- 13.2.2 Usando a sklearn
- 13.3 Regressão de Poisson
- 13.3.1 Usando a statsmodels
- 13.3.2 Regressão binomial negativa para superdispersão
- 13.4 Outros modelos lineares generalizados
- 13.5 Análise de sobrevivência
- 13.5.1 Testando as suposições do modelo de Cox
- 13.6 Conclusão
- Capítulo 14 ■ Diagnóstico de modelos
- 14.1 Introdução
- 14.2 Resíduos
- 14.2.1 Plotagens q-q
- 14.3 Comparando vários modelos
- 14.3.1 Trabalhando com modelos lineares
- 14.3.2 Trabalhando com modelos GLM
- 14.4 Validação cruzada k-fold
- 14.5 Conclusão
- Capítulo 15 ■ Regularização
- 15.1 Introdução
- 15.2 Por que regularizar?
- 15.3 Regressão LASSO
- 15.4 Regressão de ridge
- 15.5 Rede elástica
- 15.6 Validação cruzada
- 15.7 Conclusão
- Capítulo 16 ■ Clustering
- 16.1 Introdução
- 16.2 k-means
- 16.2.1 Redução de dimensões com PCA
- 16.3 Clustering hierárquico
- 16.3.1 Clustering completo
- 16.3.2 Clustering simples
- 16.3.3 Clustering com médias
- 16.3.4 Clustering com centroide
- 16.3.5 Definindo manualmente o limite
- 16.4 Conclusão
- Parte V ■ Conclusão
- Capítulo 17 ■ Vida além do Pandas
- 17.1 A pilha de processamento (científico)
- 17.2 Desempenho
- 17.2.1 Medindo o tempo de execução de seu código
- 17.2.2 Gerando o perfil de seu código
- 17.3 Maior e mais rápido
- Capítulo 18 ■ No caminho para ser autodidata
- 18.1 É perigoso andar sozinho!
- 18.2 Meetups locais
- 18.3 Conferências
- 18.4 Internet
- 18.5 Podcasts
- 18.6 Conclusão
- Parte VI ■ Apêndices
- Apêndice A ■ Instalação
- Apêndice B ■ Linha de comandos
- Apêndice C ■ Templates de projeto
- Apêndice D ■ Usando Python
- Apêndice E ■ Diretórios de trabalho
- Apêndice F ■ Ambientes
- Apêndice G ■ Instalação de pacotes
- Apêndice H ■ Importando bibliotecas
- Apêndice I ■ Listas
- Apêndice J ■ Tuplas
- Apêndice K ■ Dicionários
- Apêndice L ■ Fatiando valores
- Apêndice M ■ Laços
- Apêndice N ■ Comprehensions
- Apêndice O ■ Funções
- Apêndice P ■ Intervalos e geradores
- Apêndice Q ■ Atribuição múltipla
- Apêndice R ■ ndarray do numpy
- Apêndice S ■ Classes
- Apêndice T ■ Odo: o modificador de formato
Sobre o autor
DANIEL Y. CHEN é engenheiro de dados e pesquisador associado na Social and Decision Analytics Laboratory, no Biocomplexity Institute da Virginia Tech. Doutorando no programa interdisciplinar em GBCB (Genetics, Bioinformatics & Computational Biology), e está envolvido com The Carpentries como instrutor e mantenedor de aulas. É instrutor do DataCamp… Ver perfil completo ▶
Livros relacionados
Recursos
Opinião dos leitores
Guilherme de C F
O livro sobre Python e Ciência de Dados é muito interessante! Como professor, tenho usado bastante em minhas aulas teóricas e práticas!
Hailton D L
Excelente livro!
Francisco A da S F
Livro muito prático, cheio de exemplos e explicações que são fascinantes! Vale a pena a compra!
Elifranio A C
Muito bom livro!





