<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Python and Data Science
Mariana Lopes
28/07/2016
Trabalhando com o Jupyter
Ferramenta que permite criação de código, visualização de resultados e documentação no mesmo documento (.ipynb)
Modo de comando
Step1:  Carregando um arquivo csv em um DataFrame do Pandas
pd.DataFrame.from_csv(file_name)
Se, ao usar este comando, você se deparar com um UnicodeDecodingError, adicione o parâmetro encoding='utf-8'
cast.csv
Step2:  release_dates.csv
Step3:  titles
Step4:  df.head(n)
Step5:  df.tail(n)
Step6:  Quantos registros há no conjunto?
len(df)
Step7:  Quais são os possíveis valores para a coluna type?
df[col]
Step8:  df[col].unique()
Step9:  Quantos atores e quantas atrizes há no conjunto?
df[col].value_counts()
Step10:  Operações com colunas
Step11:  Operações Aritméticas
Step12:  Comparações
Step13:  Filtrar
Por valor específico de uma coluna
Step14:  Por colunas
Step15:  Por valor nulo ou não nulo
Step16:  Por vetor de booleanos
Step17:  Preencher valores nulos
Por DataFrame
Step18:  Por coluna
Step19:  Quantos atores atuaram em cada ano?
Step20:  Qual foi a diferença entre o número de atores e atrizes que atuaram em cada década?
Step21:  Datas
Step22:  Quanto % dos filmes foram lançados na sexta-feira?
Step23:  Merge
Step24:  Qual o nome e ano do filme mais antigo?
Step25:  Quantos filmes são de 1960?
Step26:  Quantos filmes são de cada ano dos anos 70?
Step27:  Quantos filmes foram lançados desde o ano que você nasceu até hoje?
Step28:  Quais são os nomes dos filmes até 1906?
Step29:  Quais são os 15 nomes de filmes mais comuns?
Step30:  Em quantos filmes Judi Dench atuou?
Step31:  Liste os filmes nos quais Judi Dench atuou como o ator número 1, ordenado por ano.
Step32:  Liste os atores da versão de 1972 de Sleuth pela ordem do rank n.
Step33:  Quais atores mais atuaram em 1985?
Step34:  SciKit Learn (http
Step35:  iris.csv
Step36:  Treinar modelo de Árvore de Decisão
Step37:  Salvar modelo
Step38:  Carregar modelo
Step39:  Predição para casos de teste
<ASSISTANT_TASK:>
Python Code:
import pandas as pd
import matplotlib
%matplotlib inline
Explanation: Python and Data Science
Mariana Lopes
28/07/2016
Trabalhando com o Jupyter
Ferramenta que permite criação de código, visualização de resultados e documentação no mesmo documento (.ipynb)
Modo de comando: esc para ativar, o cursor fica inativo
Modo de edição: enter para ativar, modo de inserção
Atalhos do teclado (MUITO úteis)
Para usar os atalhos descritos abaixo a célula deve estar selecionada porém não pode estar no modo de edição. 
Para entrar do modo de comando: esc
Criar nova célula abaixo: b (elow)
Criar nova célula acima: a (bove)
Recortar uma célula: x
Copiar uma célula: c
Colar uma cálula: v
Executar uma célula e permanecer nela mesma: ctrl + enter
Executar uma célula e mover para a próxima: shift + enter
 Para ver todos os atalhos, tecle h
Tipos de célula
Code: Para código Python
Markdown: Para documentação
Também existem Raw NBConverter e Heading
Pandas (http://pandas.pydata.org/)
Biblioteca Python para análise de dados
Provê ferramentas de alta performance e fácil usabilidade para análise de dados
Como instalar
Anaconda (http://pandas.pydata.org/pandas-docs/stable/install.html#installing-pandas-with-anaconda)
Download anaconda: https://www.continuum.io/downloads
Instalar Anaconda: https://docs.continuum.io/anaconda/install
Disponível para osx-64, linux-64, linux-32, win-64, win-32 e Python 2.7, Python 3.4, e Python 3.5
conda install pandas
Pip
pip install pandas
Matplotlib (http://matplotlib.org/)
Biblioteca Python para plotar gráficos 2D
Como instalar
Anaconda (http://pandas.pydata.org/pandas-docs/stable/install.html#installing-pandas-with-anaconda)
Download anaconda: https://www.continuum.io/downloads
Instalar Anaconda: https://docs.continuum.io/anaconda/install
Disponível para osx-64, linux-64, linux-32, win-64, win-32 e Python 2.7, Python 3.4, e Python 3.5
conda install matplotlib
Pip
pip install matplotlib
End of explanation
%%time
cast = pd.DataFrame.from_csv('data/cast.csv', index_col=None, encoding='utf-8')
Explanation: Carregando um arquivo csv em um DataFrame do Pandas
pd.DataFrame.from_csv(file_name)
Se, ao usar este comando, você se deparar com um UnicodeDecodingError, adicione o parâmetro encoding='utf-8'
cast.csv
End of explanation
%%time
release_dates = pd.read_csv('data/release_dates.csv', index_col=None,
                            parse_dates=['date'], infer_datetime_format=True)
Explanation: release_dates.csv
End of explanation
cast.columns
titles = cast[['title', 'year']].drop_duplicates().reset_index(drop=True)
titles.head()
Explanation: titles
End of explanation
cast.head()
release_dates.head()
Explanation: df.head(n): 
* Visualizar as primeiras n linhas. 
* Default: n = 5.
End of explanation
cast.tail()
release_dates.tail()
Explanation: df.tail(n): 
* Visualizar as últimas n linhas. 
* Default: n = 5.
End of explanation
len(cast), len(release_dates)
Explanation: Quantos registros há no conjunto?
len(df):
* Tamanho do df
End of explanation
cast['type']
cast.type.head()
c = 'type'
cast[c].head()    #cast.c.head() não vai funcionar!
Explanation: Quais são os possíveis valores para a coluna type?
df[col]:
* Visualizar uma coluna do df
ou
df.col:
* Se o nome da coluna não tiver, espaços, caracteres especiais ou for uma variável
Obs: Ao selecionar uma coluna e manipulá-la fora de um DataFrame, a mesma é tratada como uma Série.
End of explanation
cast['type'].unique()
Explanation: df[col].unique(): 
* Mostrar os possíveis valores de uma coluna
End of explanation
cast['type'].value_counts()
Explanation: Quantos atores e quantas atrizes há no conjunto?
df[col].value_counts():
* Contagem de quantos registros há para cada valor possível da coluna col (somente se col for categórica)
End of explanation
h = cast.head()
h
Explanation: Operações com colunas
End of explanation
h.year // 10 * 10    # Década
h
Explanation: Operações Aritméticas
End of explanation
h.year > 2000
Explanation: Comparações
End of explanation
cast[cast.character == 'Macduff Child']
Explanation: Filtrar
Por valor específico de uma coluna
End of explanation
h[['title', 'year']]
Explanation: Por colunas
End of explanation
h[h.n.isnull()]
h[h.n.notnull()]
h
Explanation: Por valor nulo ou não nulo
End of explanation
h[[True, False, True, False, False]]
h.year > 2000
h[h.year > 2000]
h[(h.year > 2000) & (h.year < 2016)]    # & para 'and', | para 'or'
Explanation: Por vetor de booleanos
End of explanation
h.fillna(0)
Explanation: Preencher valores nulos
Por DataFrame
End of explanation
h.n.fillna(0)
Explanation: Por coluna
End of explanation
cast.year.value_counts()#.head(10)
cast.year.value_counts().plot()
cast.year.value_counts().sort_index()#.head()
cast.year.value_counts().sort_index().plot()
bins = pd.np.arange(1880, 2040, 2)
cast.year.hist(bins=bins)
Explanation: Quantos atores atuaram em cada ano?
End of explanation
g = cast.groupby([cast.year // 10 * 10, 'type']).size()
g
u = g.unstack()
u
a = u['actor'] - u['actress']
a
a.plot()
Explanation: Qual foi a diferença entre o número de atores e atrizes que atuaram em cada década?
End of explanation
release_dates.head()
release_dates.date.dt.year.head()
release_dates.date.dt.dayofyear.head() # segunda=0, domingo=6
Explanation: Datas
End of explanation
len(release_dates[release_dates.date.dt.dayofweek == 4])*100/len(release_dates)
Explanation: Quanto % dos filmes foram lançados na sexta-feira?
End of explanation
cast.head()
release_dates.head()
c = cast[cast.name == 'Ellen Page']
c = c.merge(release_dates)
c.head()
Explanation: Merge
End of explanation
titles.sort_values('year').head(1)
Explanation: Qual o nome e ano do filme mais antigo?
End of explanation
len(titles[titles.year == 1960])
Explanation: Quantos filmes são de 1960?
End of explanation
for y in range(1970, 1980):
    print(y, (titles.year == y).sum())
titles[titles.year // 10 == 197].year.value_counts().sort_index()
titles.groupby('year').size().loc[1970:1979]
Explanation: Quantos filmes são de cada ano dos anos 70?
End of explanation
birth = 1990
len(titles[(titles.year >= birth) & (titles.year <= 2016)])
Explanation: Quantos filmes foram lançados desde o ano que você nasceu até hoje?
End of explanation
titles[titles.year <= 1906][['title']]
titles.year.min()
titles.set_index('year').sort_index().loc[1894:1906]
Explanation: Quais são os nomes dos filmes até 1906?
End of explanation
titles.title.value_counts().head(15)
Explanation: Quais são os 15 nomes de filmes mais comuns?
End of explanation
len(cast[cast.name == 'Judi Dench'])
Explanation: Em quantos filmes Judi Dench atuou?
End of explanation
c = cast
c = c[c.name == 'Judi Dench']
c = c[c.n == 1]
c.sort_values('year')
c =cast
c = c[c.name == 'Judi Dench']
c
Explanation: Liste os filmes nos quais Judi Dench atuou como o ator número 1, ordenado por ano.
End of explanation
c = cast
c = c[c.title == 'Sleuth']
c = c[c.year == 1972]
c.sort_values('n')
Explanation: Liste os atores da versão de 1972 de Sleuth pela ordem do rank n.
End of explanation
cast[cast.year == 1985].name.value_counts().head(10)
Explanation: Quais atores mais atuaram em 1985?
End of explanation
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import confusion_matrix
from sklearn.cross_validation import train_test_split
import pickle
import time
time1=time.strftime('%Y-%m-%d_%H-%M-%S')
Explanation: SciKit Learn (http://scikit-learn.org)
Biblioteca Python para mineração e análise de dados
Como instalar
Anaconda (http://pandas.pydata.org/pandas-docs/stable/install.html#installing-pandas-with-anaconda)
Download anaconda: https://www.continuum.io/downloads
Instalar Anaconda: https://docs.continuum.io/anaconda/install
Disponível para osx-64, linux-64, linux-32, win-64, win-32 e Python 2.7, Python 3.4, e Python 3.5
conda install scikit-learn
Pip
pip install -U scikit-learn
End of explanation
iris = pd.DataFrame.from_csv('iris.csv', index_col=None, encoding='utf-8')
iris.columns
target_data = iris['species']
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
feature_data = iris[features]
features_train, features_test, target_train, target_test = train_test_split(feature_data, target_data, test_size=0.33, random_state=42)
Explanation: iris.csv
End of explanation
dt = DecisionTreeClassifier()
target_data = iris['species']
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
feature_data = iris[features]
dt = dt.fit(features_train, target_train)
Explanation: Treinar modelo de Árvore de Decisão
End of explanation
with open('iris-dt_'+time1, 'bw') as f:
    pickle.dump(dt, f)
   
Explanation: Salvar modelo
End of explanation
with open('iris-dt_'+time1, 'br') as f:
    pickle.load(f)
Explanation: Carregar modelo
End of explanation
predictions = dt.predict(features_test)
confusion_matrix(target_test, predictions)
Explanation: Predição para casos de teste
End of explanation
<END_TASK>