Capítulo 7
Índice
- 1. O que é Ciência de Dados?
- 2. Causalidade e Experimentos
- 3. Progamando em Python
- 4. Tipos de Dados
- 5. Sequências
- 6. Tabelas
- 7. Visualização
- 8. Funções e Tabelas
- 9. Aleatoriedade
- 10. Amostragem e Distribuições Empíricas
- 11. Testando Hipóteses
- 12. Comparando Duas Amostras
- 13. Estimação
- 14. Por que a Média é Importante
- 15. Previsão
from datascience import *
import matplotlib
path_data = '../../assets/data/'
matplotlib.use('Agg')
%matplotlib inline
import matplotlib.pyplot as plots
plots.style.use('fivethirtyeight')
import numpy as np
np.set_printoptions(threshold=50)
Visualização
As tabelas são uma forma poderosa de organizar e visualizar dados. No entanto, grandes tabelas de números podem ser difíceis de interpretar, não importa quão organizadas sejam. Às vezes é muito mais fácil interpretar gráficos do que números.
Neste capítulo, desenvolveremos alguns dos métodos gráficos fundamentais de análise de dados. Nossa fonte de dados é o Internet Movie Database, um banco de dados online que contém informações sobre filmes, programas de televisão, videogames e assim por diante. O site Box Office Mojo fornece muitos resumos dos dados do IMDB, alguns dos quais adaptamos. Também utilizamos resumos de dados de The Numbers, um site com um slogan que diz ser “onde dados e a indústria cinematográfica se encontram.”
Graficos de Dispersão e Graficos de Linhas
A tabela actors contém dados sobre atores de Hollywood, tanto homens quanto mulheres. As colunas são:
| Coluna | Conteúdo |
|---|---|
Actor |
Nome do ator |
Total Gross |
Total da bilheteria doméstica, em milhões de dólares, de todos os filmes do ator |
Number of Movies |
O número de filmes em que o ator participou |
Average per Movie |
Total da bilheteria dividido pelo número de filmes |
Movie #1 |
O filme com a maior bilheteria em que o ator participou |
Gross |
Bilheteria doméstica, em milhões de dólares, do Filme #1 do ator |
No cálculo da bilheteria, os tabuladores de dados não incluíram filmes em que um ator teve uma participação especial ou um papel falado que não envolvesse muito tempo de tela.
A tabela possui 50 linhas, correspondendo aos 50 atores de maior bilheteria. A tabela já está classificada por Total Gross, então é fácil ver que Harrison Ford é o ator com maior bilheteria. No momento em que a tabela foi criada, seus filmes haviam arrecadado mais dinheiro na bilheteria doméstica do que os filmes de qualquer outro ator na tabela.
actors = Table.read_table(path_data + 'actors.csv')
actors
| Actor | Total Gross | Number of Movies | Average per Movie | #1 Movie | Gross |
|---|---|---|---|---|---|
| Harrison Ford | 4871.7 | 41 | 118.8 | Star Wars: The Force Awakens | 936.7 |
| Samuel L. Jackson | 4772.8 | 69 | 69.2 | The Avengers | 623.4 |
| Morgan Freeman | 4468.3 | 61 | 73.3 | The Dark Knight | 534.9 |
| Tom Hanks | 4340.8 | 44 | 98.7 | Toy Story 3 | 415 |
| Robert Downey, Jr. | 3947.3 | 53 | 74.5 | The Avengers | 623.4 |
| Eddie Murphy | 3810.4 | 38 | 100.3 | Shrek 2 | 441.2 |
| Tom Cruise | 3587.2 | 36 | 99.6 | War of the Worlds | 234.3 |
| Johnny Depp | 3368.6 | 45 | 74.9 | Dead Man’s Chest | 423.3 |
| Michael Caine | 3351.5 | 58 | 57.8 | The Dark Knight | 534.9 |
| Scarlett Johansson | 3341.2 | 37 | 90.3 | The Avengers | 623.4 |
| … (40 rows omitted) | |||||
Terminologia.
Uma variável é um nome formal para o que temos chamado de “característica” ou “atributo”, como ‘number of movies.’ O termo variável enfatiza o ponto de que uma característica pode ter valores diferentes para diferentes indivíduos. Por exemplo, os números de filmes em que os atores participaram variam entre todos os atores.
Variáveis que têm valores numéricos e podem ser medidos numericamente, como ‘number of movies’ ou ‘average gross receipts per movie’ são chamadas de variáveis quantitativas ou numéricas.
Gráficos de Dispersão
Um gráfico de dispersão exibe a relação entre duas variáveis numéricas. Você viu um exemplo de um gráfico de dispersão em uma seção anterior onde examinamos o número de períodos e o número de caracteres em dois romances clássicos.
O método scatter da tabela desenha um gráfico de dispersão composto por um ponto para cada linha da tabela. Seu primeiro argumento é o rótulo da coluna a ser plotada no eixo horizontal, e seu segundo argumento é o rótulo da coluna no eixo vertical.
actors.scatter('Number of Movies', 'Total Gross')

O gráfico contém 50 pontos, um ponto para cada ator na tabela. Você pode ver que ele se inclina para cima, em geral. Quanto mais filmes um ator participa, maior é a bilheteria total de todos esses filmes – em geral.
Formalmente, dizemos que o gráfico mostra uma associação entre as variáveis e que a associação é positiva: altos valores de uma variável tendem a estar associados a altos valores da outra, e baixos valores de uma com baixos valores da outra, em geral.
É claro que há alguma variabilidade. Alguns atores têm um grande número de filmes, mas uma bilheteria total mediana. Outros têm números medianos de filmes, mas bilheterias altas. O fato de a associação ser positiva é simplesmente uma declaração sobre a tendência geral ampla.
Mais tarde no curso, estudaremos como quantificar a associação. Por enquanto, apenas pensaremos sobre isso de forma qualitativa.
Agora que exploramos como o número de filmes está relacionado à receita bruta total, vamos voltar nossa atenção para como ele está relacionado à receita bruta média por filme.
actors.scatter('Number of Movies', 'Average per Movie')

Esta é uma imagem marcadamente diferente e mostra uma associação negativa. Em geral, quanto mais filmes um ator participa, menor é a receita média por filme.
Além disso, um dos pontos está bastante alto e à esquerda do gráfico. Corresponde a um ator que tem um baixo número de filmes e alta média por filme. Este ponto é um valor atípico. Ele está fora da faixa geral dos dados. De fato, está bastante longe de todos os outros pontos no gráfico.
Vamos examinar a associação negativa mais detalhadamente, olhando para os pontos nas extremidades direita e esquerda do gráfico.
Para a extremidade direita, vamos dar zoom no corpo principal do gráfico, olhando apenas para a parte que não tem o valor atípico.
no_outlier = actors.where('Number of Movies', are.above(10))
no_outlier.scatter('Number of Movies', 'Average per Movie')

A associação negativa ainda é claramente visível. Vamos identificar os atores correspondentes aos pontos que ficam do lado direito do gráfico onde o número de filmes é grande:
actors.where('Number of Movies', are.above(60))
| Actor | Total Gross | Number of Movies | Average per Movie | #1 Movie | Gross |
|---|---|---|---|---|---|
| Samuel L. Jackson | 4772.8 | 69 | 69.2 | The Avengers | 623.4 |
| Morgan Freeman | 4468.3 | 61 | 73.3 | The Dark Knight | 534.9 |
| Robert DeNiro | 3081.3 | 79 | 39 | Meet the Fockers | 279.3 |
| Liam Neeson | 2942.7 | 63 | 46.7 | The Phantom Menace | 474.5 |
O grande ator Robert DeNiro tem o maior número de filmes e a menor média de receita por filme. Outros excelentes atores estão em pontos que não estão muito longe, mas o de DeNiro está no extremo.
Para entender a associação negativa, observe que quanto mais filmes um ator participa, mais variáveis esses filmes podem ser, em termos de estilo, gênero e bilheteria. Por exemplo, um ator pode estar em alguns filmes de ação de grande bilheteria ou comédias (como Meet the Fockers), e também em um grande número de filmes menores que podem ser excelentes, mas não atraem grandes multidões. Assim, o valor da média de receitas por filme do ator pode ser relativamente baixo.
Para abordar este argumento de uma direção diferente, vamos dar uma olhada no valor atípico.
actors.where('Number of Movies', are.below(10))
| Actor | Total Gross | Number of Movies | Average per Movie | #1 Movie | Gross |
|---|---|---|---|---|---|
| Anthony Daniels | 3162.9 | 7 | 451.8 | Star Wars: The Force Awakens | 936.7 |
Como ator, Anthony Daniels pode não ter a estatura de Robert DeNiro. Mas seus 7 filmes tiveram uma média de receita surpreendentemente alta de quase $452 milhões de dólares por filme.
Quais foram esses filmes? Você pode conhecer o droide C-3PO em Star Wars:

É Anthony Daniels dentro do traje metálico. Ele interpreta o C-3PO.
Toda a filmografia do Sr. Daniels (exceto participações especiais) consiste em filmes da lucrativa franquia Star Wars. Isso explica tanto sua alta média de receita quanto seu baixo número de filmes.
Variáveis como gênero e orçamento de produção têm um efeito na associação entre o número de filmes e a média de receita por filme. Este exemplo é um lembrete de que estudar a associação entre duas variáveis muitas vezes envolve entender outras variáveis relacionadas também.
Gráficos de Linha
Gráficos de linha, às vezes conhecidos como gráficos de linha, estão entre as visualizações mais comuns. Eles são frequentemente usados para estudar tendências e padrões cronológicos.
A tabela movies_by_year contém dados sobre filmes produzidos por estúdios dos EUA em cada um dos anos de 1980 a 2015. As colunas são:
| Coluna | Conteúdo |
|---|---|
Year |
Ano |
Total Gross |
Receita bruta total do mercado interno, em milhões de dólares, de todos os filmes lançados |
Number of Movies |
Número de filmes lançados |
#1 Movie |
Filme de maior bilheteria |
movies_by_year = Table.read_table(path_data + 'movies_by_year.csv')
movies_by_year
| Year | Total Gross | Number of Movies | #1 Movie |
|---|---|---|---|
| 2015 | 11128.5 | 702 | Star Wars: The Force Awakens |
| 2014 | 10360.8 | 702 | American Sniper |
| 2013 | 10923.6 | 688 | Catching Fire |
| 2012 | 10837.4 | 667 | The Avengers |
| 2011 | 10174.3 | 602 | Harry Potter / Deathly Hallows (P2) |
| 2010 | 10565.6 | 536 | Toy Story 3 |
| 2009 | 10595.5 | 521 | Avatar |
| 2008 | 9630.7 | 608 | The Dark Knight |
| 2007 | 9663.8 | 631 | Spider-Man 3 |
| 2006 | 9209.5 | 608 | Dead Man’s Chest |
| … (26 rows omitted) | |||
O método plot da tabela produz um gráfico de linha. Seus dois argumentos são os mesmos que aqueles para scatter: primeiro a coluna no eixo horizontal, depois a coluna no eixo vertical. Aqui está um gráfico de linha do número de filmes lançados a cada ano ao longo dos anos de 1980 a 2015.
movies_by_year.plot('Year', 'Number of Movies')

O gráfico sobe rapidamente e depois tem uma tendência suave para cima, embora os números variem perceptivelmente de ano para ano. O rápido aumento no início dos anos 1980 é devido em parte aos estúdios voltando à vanguarda da produção cinematográfica após alguns anos de filmes dirigidos por cineastas na década de 1970.
Nosso foco será nos anos mais recentes. Mantendo-se no tema de filmes, a tabela de linhas correspondentes aos anos de 2000 a 2015 foi atribuída ao nome century_21.
century_21 = movies_by_year.where('Year', are.above(1999))
century_21.plot('Year', 'Number of Movies')

A crise financeira global de 2008 tem um efeito visível – em 2009 há uma queda acentuada no número de filmes lançados.
Os números do dólar, no entanto, não sofreram muito.
century_21.plot('Year', 'Total Gross')

O total da receita bruta doméstica foi maior em 2009 do que em 2008, mesmo com uma crise financeira e um número muito menor de filmes lançados.
Uma razão para essa aparente contradição é que as pessoas tendem a ir ao cinema durante uma recessão. “Em Tempos de Crise, Americanos Lotam os Cinemas,” disse o New York Times em fevereiro de 2009. O artigo cita Martin Kaplan da Universidade do Sul da Califórnia dizendo: “As pessoas querem esquecer seus problemas e querem estar com outras pessoas.” Quando feriados e mimos caros não são acessíveis, os filmes proporcionam entretenimento e alívio bem-vindos.
Em 2009, outra razão para as altas receitas de bilheteria foi o filme Avatar e seu lançamento em 3D. Não apenas Avatar foi o #1 filme de 2009, mas também, por alguns cálculos, é um dos filmes de maior bilheteria de todos os tempos, como veremos mais tarde.
century_21.where('Year', are.equal_to(2009))
| Year | Total Gross | Number of Movies | #1 Movie |
|---|---|---|---|
| 2009 | 10595.5 | 521 | Avatar |
| ← Capítulo 6.4 – Exemplo: Proporções de Sexos | Capítulo 7.1 – Visualizando Distribuições Categóricas → |
