Capítulo 7

Índice

  1. 1. O que é Ciência de Dados?
  2. 2. Causalidade e Experimentos
  3. 3. Progamando em Python
  4. 4. Tipos de Dados
  5. 5. Sequências
  6. 6. Tabelas
  7. 7. Visualização
  8. 8. Funções e Tabelas
  9. 9. Aleatoriedade
  10. 10. Amostragem e Distribuições Empíricas
  11. 11. Testando Hipóteses
  12. 12. Comparando Duas Amostras
  13. 13. Estimação
  14. 14. Por que a Média é Importante
  15. 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 →