Análise de Dados de Filmes Exibidos no Brasil de 2009 a 2017

Com base nos dados da Ancine (https://oca.ancine.gov.br/)

In [1]:
# Importando a biblioteca pandas
import pandas as pd
# Informando para o pandas mostrar o gráfico no jupyter notebook
%matplotlib inline
In [2]:
# Lendo o arquivo e atribuindo a uma variável - convertendo o arquivo em um DataFrame
# Pulando as 2 primeiras linhas (skiprows)
# Descartando as últimas 16 linhas (skipfooter)
df = pd.read_excel('ListagemFilmesBrasileirosEstrangeirosExibidos2009-2017.xlsx', skiprows=2, skipfooter=16)
In [3]:
# Exibindo as 5 primeiras linhas do DataFrame
df.head()
Out[3]:
Ano de exibição Título da obra Gênero País(es) produtor(es) da obra Nacionalidade da obra Data de lançamento Distribuidora Origem da empresa distribuidora Público no ano de exibição Renda (R$) no ano de exibição
0 2017 #Screamers Ficção Estados Unidos Estrangeiros 2017-11-30 00:00:00 Cineart Filmes Distribuição Nacional 714 9437.45
1 2017 10 Centavos para o Número da Besta Documentário Brasil Brasileiros 2017-11-28 00:00:00 Ponto de Equilíbrio Distribuição Nacional 7 63.00
2 2017 120 batimentos por minuto Ficção França Estrangeiros 2018-01-04 00:00:00 Imovision Distribuição Nacional 262 3791.63
3 2017 13 Minutos Ficção Alemanha Estrangeiros 2016-11-03 00:00:00 Alphaville Filmes Distribuição Nacional 620 6463.50
4 2017 150 Miligramas Ficção França Estrangeiros 2017-08-31 00:00:00 Califórnia Distribuição Nacional 771 10508.71
In [4]:
# Exibindo as 5 últimas linhas do DataFrame
df.tail(5)
Out[4]:
Ano de exibição Título da obra Gênero País(es) produtor(es) da obra Nacionalidade da obra Data de lançamento Distribuidora Origem da empresa distribuidora Público no ano de exibição Renda (R$) no ano de exibição
5686 2009 X-Men Origens: Wolverine Ficção Estados Unidos Estrangeiros 2009-05-01 00:00:00 Fox Distribuição Internacional 3199434 27352313.00
5687 2009 Xuxa em o Mistério de Feiurinha Ficção Brasil Brasileiros 2009-12-25 00:00:00 Playarte Distribuição Nacional 250109 1766416.65
5688 2009 Xuxa em Sonho de Menina Ficção Brasil Brasileiros 2007-12-21 00:00:00 Warner Distribuição Internacional 8914 26880.00
5689 2009 Xuxa Gêmeas Ficção Brasil Brasileiros 2006-12-15 00:00:00 Fox Distribuição Internacional 1671 5013.00
5690 2009 Zico na Rede Documentário Brasil Brasileiros 2009-07-03 00:00:00 Business Telecom Distribuição Nacional 546 2529.50
In [5]:
# Verificar todos os tipos das colunas
df.dtypes
Out[5]:
Ano de exibição                      int64
Título da obra                      object
Gênero                              object
País(es) produtor(es) da obra       object
Nacionalidade da obra               object
Data de lançamento                  object
Distribuidora                       object
Origem da empresa distribuidora     object
Público no ano de exibição           int64
Renda (R$) no ano de exibição      float64
dtype: object
In [6]:
# Convertendo o campo 'Data de lançamento' em data
df['Data de lançamento'] = pd.to_datetime(df['Data de lançamento'])
---------------------------------------------------------------------------
UnicodeEncodeError                        Traceback (most recent call last)
pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas/_libs/tslibs/np_datetime.pyx in pandas._libs.tslibs.np_datetime._string_to_dts()

UnicodeEncodeError: 'ascii' codec can't encode character '\xe7' in position 5: ordinal not in range(128)

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas/_libs/tslibs/parsing.pyx in pandas._libs.tslibs.parsing.parse_datetime_string()

~/anaconda3/lib/python3.7/site-packages/dateutil/parser/_parser.py in parse(timestr, parserinfo, **kwargs)
   1355     else:
-> 1356         return DEFAULTPARSER.parse(timestr, **kwargs)
   1357 

~/anaconda3/lib/python3.7/site-packages/dateutil/parser/_parser.py in parse(self, timestr, default, ignoretz, tzinfos, **kwargs)
    647         if res is None:
--> 648             raise ValueError("Unknown string format:", timestr)
    649 

ValueError: ('Unknown string format:', 'Relançamento')

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-6-b072ac130db4> in <module>
      1 # Convertendo o campo 'Data de lançamento' em data
----> 2 df['Data de lançamento'] = pd.to_datetime(df['Data de lançamento'])

~/anaconda3/lib/python3.7/site-packages/pandas/core/tools/datetimes.py in to_datetime(arg, errors, dayfirst, yearfirst, utc, box, format, exact, unit, infer_datetime_format, origin, cache)
    449         else:
    450             from pandas import Series
--> 451             values = _convert_listlike(arg._values, True, format)
    452             result = Series(values, index=arg.index, name=arg.name)
    453     elif isinstance(arg, (ABCDataFrame, MutableMapping)):

~/anaconda3/lib/python3.7/site-packages/pandas/core/tools/datetimes.py in _convert_listlike(arg, box, format, name, tz)
    366                     dayfirst=dayfirst,
    367                     yearfirst=yearfirst,
--> 368                     require_iso8601=require_iso8601
    369                 )
    370 

pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()

TypeError: invalid string coercion to datetime
In [7]:
# Tentando identificar o problema da coluna 'Data de lançamento'
df['Data de lançamento'].value_counts()
Out[7]:
Relançamento           175
2015-12-03 00:00:00     33
2012-12-21 00:00:00     33
2013-11-29 00:00:00     29
2012-11-02 00:00:00     27
2015-11-12 00:00:00     25
2015-11-19 00:00:00     25
2013-12-06 00:00:00     23
2013-10-11 00:00:00     23
2013-11-01 00:00:00     23
2016-11-17 00:00:00     23
2014-11-06 00:00:00     21
2011-11-11 00:00:00     21
2011-12-02 00:00:00     21
2013-09-13 00:00:00     21
2009-12-11 00:00:00     20
2016-11-10 00:00:00     19
2011-09-30 00:00:00     19
2013-12-20 00:00:00     19
2014-06-19 00:00:00     19
2011-12-09 00:00:00     19
2015-12-10 00:00:00     18
2013-09-06 00:00:00     18
2012-10-12 00:00:00     18
2016-11-24 00:00:00     18
2015-08-20 00:00:00     18
2011-11-25 00:00:00     18
2016-12-01 00:00:00     18
2014-12-04 00:00:00     18
2015-11-26 00:00:00     18
                      ... 
2011-07-02 00:00:00      1
2006-10-06 00:00:00      1
2006-11-24 00:00:00      1
2002-11-01 00:00:00      1
2006-08-11 00:00:00      1
2014-03-28 00:00:00      1
2017-12-02 00:00:00      1
2009-10-28 00:00:00      1
2011-10-01 00:00:00      1
2013-02-09 00:00:00      1
2015-11-01 00:00:00      1
2008-06-28 00:00:00      1
2006-11-17 00:00:00      1
2008-11-29 00:00:00      1
2009-05-22 00:00:00      1
2018-11-29 00:00:00      1
2011-03-09 00:00:00      1
2008-05-02 00:00:00      1
2018-02-08 00:00:00      1
2008-04-18 00:00:00      1
2004-01-09 00:00:00      1
2008-10-18 00:00:00      1
2017-11-28 00:00:00      1
2014-07-04 00:00:00      1
2006-09-22 00:00:00      1
2005-08-25 00:00:00      1
2009-01-31 00:00:00      1
2004-05-21 00:00:00      1
2001-04-06 00:00:00      1
2007-07-20 00:00:00      1
Name: Data de lançamento, Length: 759, dtype: int64
In [18]:
# Exibir 5 primeiros filmes que campo 'Data de lançamento' igual à Relançamento
df[df['Data de lançamento'] == 'Relançamento'].head()
Out[18]:
Ano de exibição Título da obra Gênero País(es) produtor(es) da obra Nacionalidade da obra Data de lançamento Distribuidora Origem da empresa distribuidora Público no ano de exibição Renda (R$) no ano de exibição
7 2017 Ficção França, Itália Estrangeiros Relançamento F. J. Cines Distribuição Nacional 29 196.00
11 2017 A bela da tarde Ficção França, Itália Estrangeiros Relançamento Zeta Filmes Distribuição Nacional 3011 42839.31
36 2017 A História sem Fim Ficção Alemanha, Estados Unidos Estrangeiros Relançamento F. J. Cines Distribuição Nacional 797 6969.00
53 2017 A primeira noite de um homem Ficção Estados Unidos Estrangeiros Relançamento Zeta Filmes Distribuição Nacional 12 96.00
128 2017 Ballet Bolshoi: A bela adormecida Vídeomusical Inglaterra Estrangeiros Relançamento UCI Distribuição Nacional 1504 41391.00

Decisão sobre dados incorretos/faltantes/divergentes

In [19]:
# Tamanho do DataFrame
df.shape
Out[19]:
(5691, 10)
In [20]:
# Criando um novo DataFrame sem o campo 'Data de lançamento' igual à Relançamento
df_novo = df[df['Data de lançamento'] != 'Relançamento']
In [21]:
df_novo[df_novo['Data de lançamento'] == 'Relançamento']
Out[21]:
Ano de exibição Título da obra Gênero País(es) produtor(es) da obra Nacionalidade da obra Data de lançamento Distribuidora Origem da empresa distribuidora Público no ano de exibição Renda (R$) no ano de exibição
In [22]:
# Tamanho do novo DataFrame
df_novo.shape
Out[22]:
(5516, 10)
In [23]:
# Convertendo a coluna 'Data de lançamento' para datetime
df_novo['Data de lançamento'] = pd.to_datetime(df_novo['Data de lançamento'])
/home/valeria/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  
In [24]:
# Verificando os tipos das colunas
df_novo.dtypes
Out[24]:
Ano de exibição                             int64
Título da obra                             object
Gênero                                     object
País(es) produtor(es) da obra              object
Nacionalidade da obra                      object
Data de lançamento                 datetime64[ns]
Distribuidora                              object
Origem da empresa distribuidora            object
Público no ano de exibição                  int64
Renda (R$) no ano de exibição             float64
dtype: object
In [25]:
# Quais os anos tiveram mais filmes lançados
num_filmes_ano = df_novo['Data de lançamento'].dt.year.value_counts()
In [26]:
# Plotando no gráfico 
num_filmes_ano.plot.bar()
Out[26]:
<matplotlib.axes._subplots.AxesSubplot at 0xa93cb40c>
In [31]:
# Qual o filme com maior bilheteria
df_novo[df_novo['Renda (R$) no ano de exibição'] == df_novo['Renda (R$) no ano de exibição'].max()]
Out[31]:
Ano de exibição Título da obra Gênero País(es) produtor(es) da obra Nacionalidade da obra Data de lançamento Distribuidora Origem da empresa distribuidora Público no ano de exibição Renda (R$) no ano de exibição
2249 2015 Vingadores: A Era de Ultron Ficção Estados Unidos Estrangeiros 2015-04-23 Disney Distribuição Internacional 10129071 146184931.0
In [34]:
# Quais 3 filmes com melhor renda
df_novo.nlargest(3, 'Renda (R$) no ano de exibição')
Out[34]:
Ano de exibição Título da obra Gênero País(es) produtor(es) da obra Nacionalidade da obra Data de lançamento Distribuidora Origem da empresa distribuidora Público no ano de exibição Renda (R$) no ano de exibição
2249 2015 Vingadores: A Era de Ultron Ficção Estados Unidos Estrangeiros 2015-04-23 Disney Distribuição Internacional 10129071 1.461849e+08
893 2016 Capitão América: Guerra civil Ficção Estados Unidos Estrangeiros 2016-04-28 Disney Distribuição Internacional 9617572 1.433370e+08
2242 2015 Velozes e Furiosos 7 Ficção Estados Unidos Estrangeiros 2015-04-02 Universal Distribuição Internacional 9857946 1.424659e+08
In [35]:
# Filmes com menor bilheteria
df_novo[df_novo['Renda (R$) no ano de exibição'] == df_novo['Renda (R$) no ano de exibição'].min()]
Out[35]:
Ano de exibição Título da obra Gênero País(es) produtor(es) da obra Nacionalidade da obra Data de lançamento Distribuidora Origem da empresa distribuidora Público no ano de exibição Renda (R$) no ano de exibição
2277 2014 A Batalha do passinho Documentário Brasil Brasileiros 2013-10-11 Cine Santa Teresa Distribuição Nacional 355 0.0
2608 2014 Mar negro Ficção Brasil Brasileiros 2014-01-17 Petrini Distribuição Nacional 0 0.0
2728 2014 O Último Lance do Leilão Ficção Brasil Brasileiros 2014-05-01 Sam Rádio Pictures Distribuição Nacional 0 0.0
3041 2013 As horas vulgares Ficção Brasil Brasileiros 2013-08-09 Petrini Distribuição Nacional 0 0.0
3058 2013 Beije-me outra vez Ficção Itália Estrangeiros 2013-05-10 Petrini Distribuição Nacional 0 0.0
3105 2013 Crazy Horse Ficção Estados Unidos Estrangeiros 2013-06-28 Petrini Distribuição Nacional 0 0.0
3390 2013 Quase um tango Ficção Brasil Brasileiros 2013-08-16 NGM Produções Distribuição Nacional 0 0.0
3459 2013 Todos os Dias Ficção Reino Unido Estrangeiros 2014-01-24 Esfera Produções Distribuição Nacional 0 0.0
3603 2012 Apenas entre Nós Ficção França, Eslovênia, Sérvia, Croácia Estrangeiros 2015-05-07 Lume Distribuição Nacional 0 0.0
3627 2012 Ataque ao prédio Ficção Reino Unido Estrangeiros 2012-01-13 Sony Distribuição Internacional 0 0.0
3665 2012 Clementina de Jesus - Rainha Quelé Documentário Brasil Brasileiros 2012-11-15 Werinton Kermes Telles Marsal Distribuição Nacional 0 0.0
3787 2012 Luto em Luta Documentário Brasil Brasileiros 2012-09-21 Like Filmes Distribuição Nacional 0 0.0
3815 2012 Movimento Browniano Ficção Holanda Estrangeiros 2012-07-06 Petrini Distribuição Nacional 0 0.0
3829 2012 O abrigo Ficção Estados Unidos Estrangeiros 2012-06-01 Sony Distribuição Internacional 0 0.0
3920 2012 Ponto Org Ficção Brasil Brasileiros 2012-09-21 Usina Digital Distribuição Nacional 0 0.0
4085 2011 A Última Estrada da Praia Ficção Brasil Brasileiros 2011-09-16 Okna Produções Distribuição Nacional 0 0.0
4462 2011 Poema de Salvação Ficção Argentina Estrangeiros 2011-09-30 Canzión filmes Distribuição Nacional 0 0.0
4466 2011 Porta a porta – A política em dois tempos Documentário Brasil Brasileiros 2011-12-02 Zéfiro Produções Distribuição Nacional 0 0.0
4587 2011 Walachai Documentário Brasil Brasileiros 2011-11-18 Ciclorama Distribuição Nacional 0 0.0
4732 2010 Cine Cocoricó: As Aventuras na Cidade Ficção Brasil Brasileiros 2009-07-17 Moviemobz Distribuição Nacional 1 0.0
4853 2010 Luto Como Mãe Documentário Brasil Brasileiros 2010-08-20 TV Zero Cinema Distribuição Nacional 0 0.0
5022 2010 Simonal - Ninguém Sabe o Duro que Dei Documentário Brasil Brasileiros 2009-05-15 Moviemobz/RioFilme Distribuição Nacional 1 0.0
5203 2009 As Chaves de Casa Ficção Itália Estrangeiros 2006-01-06 Filmes do Estação Distribuição Nacional 0 0.0
5463 2009 Naufrágio - Mistério e Morte na Catástrofe do ... Documentário Brasil Brasileiros 2009-12-25 Master Shot Produções Distribuição Nacional 0 0.0
5591 2009 Santiago Documentário Brasil Brasileiros 2007-08-24 Videofilmes Distribuição Nacional 0 0.0
5666 2009 Vamos Subir, Leão Documentário Brasil Brasileiros 2009-03-20 Canal 3 Distribuição Nacional 0 0.0
In [36]:
# Quantos filmes brasileiros e extrangeiros
df['Nacionalidade da obra'].value_counts()
Out[36]:
Estrangeiros    4072
Brasileiros     1619
Name: Nacionalidade da obra, dtype: int64
In [37]:
# Número de filmes por país
df['País(es) produtor(es) da obra'].value_counts()
Out[37]:
Estados Unidos                                       1780
Brasil                                               1513
França                                                546
Reino Unido                                            85
Argentina                                              75
Espanha                                                73
Alemanha                                               72
Itália                                                 69
Estados Unidos, Reino Unido                            66
Inglaterra                                             52
Japão                                                  48
Bélgica, França                                        41
França, Itália                                         37
Canadá                                                 33
Coréia do Sul                                          31
Argentina, Espanha                                     28
Suécia                                                 28
Alemanha, França                                       25
México                                                 25
Rússia                                                 23
Canadá, Estados Unidos                                 21
Estados Unidos, França                                 20
Portugal                                               19
China                                                  18
Bélgica                                                16
Canadá, França                                         15
Irã                                                    15
Austrália                                              15
Uruguai                                                13
Polônia                                                13
                                                     ... 
Alemanha, Estados Unidos, França, Hungria               1
Alemanha, França, Holanda                               1
Brasil, Estados Unidos, França, Itália                  1
Alemanha, Canadá, Finlândia, França, Suécia             1
Alemanha, Austrália, Canadá, França                     1
Estados Unidos, México                                  1
Argentina, Itália                                       1
Canadá, Estados Unidos, França                          1
Brasil, Canadá, França                                  1
Alemanha, Bélgica, Dinamarca, França, Reino Unido       1
Argentina, Israel                                       1
Sérvia                                                  1
Mônaco, França                                          1
Alemanha, Dinamarca, Noruega, Suécia                    1
Alemanha, Canadá, Inglaterra, Suíça                     1
Dinamarca, Holanda, Suécia                              1
França, Brasil                                          1
Espanha, Brasil                                         1
Alemanha, Bélgica, França, Rússia                       1
Bélgica, Luxemburgo                                     1
Bélgica, Holanda                                        1
Brasil, Itália                                          1
Argentina, Peru                                         1
Egito                                                   1
Bulgária, França, Romênia                               1
França, Itália, Qatar, Tunísia                          1
Canadá, Brasil                                          1
África do Sul, Reino Unido                              1
Bulgária, Grécia                                        1
Argentina, Colômbia, Venezuela                          1
Name: País(es) produtor(es) da obra, Length: 386, dtype: int64
In [39]:
# 10 primeiros países por número de filmes
filmes_pais = df['País(es) produtor(es) da obra'].value_counts().head(10)
In [42]:
# Plotando no gráfico
filmes_pais.plot.pie()
Out[42]:
<matplotlib.axes._subplots.AxesSubplot at 0xa8a6d60c>
In [43]:
# filmes por gênero
df['Gênero'].value_counts()
Out[43]:
Ficção          4501
Documentário     738
Animação         411
Vídeomusical      41
Name: Gênero, dtype: int64
In [ ]: