<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Pandas
Importando o Pandas e o NumPy
Step5:  Series
Uma Series é um objeto semelhante a uma vetor que possui um vetor de dados e um vetor de labels associadas chamado index.
Sua documentação completa se encontra em
Step6:  Acessando elementos de uma Series
Step12:  Algumas operações permitidas em uma Series
Step17:  DataFrame
Um DataFrame representa uma estrutura de dados tabular, semelhante a uma planilha de excel, contendo um conjunto ordenado de colunas, podendo ser cada uma de tipos de valores diferente. Um DataFrame possui um índice de linhas e um de colunas e pode ser encarado como um dict de Series.
Sua documentação completa se encontra em
Step27:  Note que estas não são todas as formas possíveis de se fazê-lo. Para uma visão mais completa veja a seguinte tabela com as possíveis entradas para o construtor do DataFrame
<ASSISTANT_TASK:>
Python Code:
import pandas as pd
import numpy as np
Explanation: Pandas
Importando o Pandas e o NumPy
End of explanation
 Apenas a partir dos valores 
obj = pd.Series([4, 7, -5, 3])
obj
obj.values
obj.index
 A partir dos valores e dos índices 
obj2 = pd.Series([4, 7, -5, 3], index=['d','b','a','c'])
obj2
obj2.index
 A partir de um dictionary 
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj3 = pd.Series(sdata)
obj3
 A partir de um dictionary e dos índices 
states = ['California', 'Ohio', 'Oregon', 'Texas']
obj4 = pd.Series(sdata, index=states)
obj4
Explanation: Series
Uma Series é um objeto semelhante a uma vetor que possui um vetor de dados e um vetor de labels associadas chamado index.
Sua documentação completa se encontra em: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html#pandas.Series
Instanciando uma Series
End of explanation
obj2['a']
obj2['d'] = 6
obj2['d']
obj2[['c','a','d']]
obj2[obj2 > 0]
Explanation: Acessando elementos de uma Series
End of explanation
 Multiplicação por um escalar 
obj2 * 2
 Operações de vetor do numpy 
import numpy as np
np.exp(obj2)
 Funções que funcionam com dictionaries 
'b' in obj2
'e' in obj2
 Funções para identificar dados faltando 
obj4.isnull()
obj4.notnull()
 Operações aritméticas com alinhamento automático dos índices 
obj3 + obj4
Explanation: Algumas operações permitidas em uma Series
End of explanation
 A partir de um dictionary de vetores 
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], \
        'year': [2000, 2001, 2002, 2001, 2002], \
        'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = pd.DataFrame(data)
frame
 A partir de um dictionary em uma ordem específica das colunas 
pd.DataFrame(data, columns=['year', 'state', 'pop'])
 A partir de um dictionary e dos índices das colunas e/ou dos índices das linhas 
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'], index=['one', 'two', 'three', 'four', 'five'])
frame2
 A partir de um dictionary de dictionaries aninhados 
pop = {'Nevada': {2001: 2.4, 2002: 2.9}, 'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop)
frame3
Explanation: DataFrame
Um DataFrame representa uma estrutura de dados tabular, semelhante a uma planilha de excel, contendo um conjunto ordenado de colunas, podendo ser cada uma de tipos de valores diferente. Um DataFrame possui um índice de linhas e um de colunas e pode ser encarado como um dict de Series.
Sua documentação completa se encontra em: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html
Instanciando um DataFrame
End of explanation
 Acessando colunas como em uma Series ou dictionary 
frame2['state']
 Como colunas como um atributo 
frame2.year
 Acessando linhas com o nome da linha 
frame2.ix['three']
 Acessando linhas com o índice da linha 
frame2.ix[3]
 Modificando uma coluna com um valor 
frame2['debt'] = 16.5
frame2
 Modificando uma coluna com um vetor 
frame2['debt'] = np.arange(5.)
frame2
 Modificando uma coluna com uma Series 
val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
frame2['debt'] = val
frame2
 Adicionando uma coluna que não existe 
frame2['eastern'] = frame2.state == 'Ohio'
frame2
 Deletando uma coluna 
del frame2['eastern']
frame2.columns
Explanation: Note que estas não são todas as formas possíveis de se fazê-lo. Para uma visão mais completa veja a seguinte tabela com as possíveis entradas para o construtor do DataFrame:
Type |Notes
-----|-----
2D ndarray | A matrix of data, passing optional row and column labels
dict of arrays, lists, or tuples | Each sequence becomes a column in the DataFrame. All sequences must be the same length.
NumPy structured/record array | Treated as the “dict of arrays” case
dict of Series | Each value becomes a column. Indexes from each Series are unioned together to form the result’s row index if no explicit index is passed.
dict of dicts | Each inner dict becomes a column. Keys are unioned to form the row index as in the “dict of Series” case.
list of dicts or Series | Each item becomes a row in the DataFrame. Union of dict keys or Series indexes become the DataFrame’s column labels
List of lists or tuples | Treated as the “2D ndarray” case
Another DataFrame | The DataFrame’s indexes are used unless different ones are passed
NumPy MaskedArray | Like the “2D ndarray” case except masked values become NA/missing in the DataFrame result
Manipulando linhas e colunas de um DataFrame
End of explanation
<END_TASK>