<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
Pandas é um pacote bastante poderoso para a análise e processamento de dados tabulares, trazendo consigo estruturas de dados e operações muito eficientes
Step1:  Series
Séries são estruturas unidimensionais, como um array do Numpy de dimensão 1
Step2:  Os dados em uma série podem conter um índice, permitindo uma otimização no acesso dos dados
Step3:  Além disso, o índice pode ser utilizado para dar uma semântia ao dado de uma série, permitindo também que o mesmo seja acessado pelo índice atribuído
Step4:  As Series também possuem um método de transformação, conforme apresentado na aula anterior. Esse método chama-se apply
Step5:  DataFrame
Um DataFrame é uma tabela onde cada coluna é uma Serie. Assim como as Series, o DataFrame possui um índice, porém, o índice refere-se a uma linha inteira, ou seja, ao elemento naquela posição em todas suas colunas
Step6:  Para fins de exportação, um DataFrame pode ser representado em diversos formatos
Step7:  Enquanto em uma Serie utilizamos os colchetes ([]) para acessar um elemento em um certo índice, no DataFrame o operador refere-se à uma Serie, permitindo acessá-la, sobrescrevê-la ou adicionar uma nova
Step8:  Um DataFrame também pode ser transposto, ou seja, as labels das suas colunas viram índices e os índices viram as novas colunas
Step9:  Podemos também ordenar as linhas do DataFrame a partir de uma de suas colunas
Step10:  Importando um dataset real
Plataforma Kaggle - Competições de Ciências de Dados
Titanic
Step11:  O operador colchetes ([]) do pandas também pode ser usado como uma filtragem, ou seja, dada uma condição (ou predicado), ele retorna apenas as linhas do DataFrame que satisfaçam o predicado.
OBS
Step12:  O DataFrame permite também que sejam relizadas contagens sobre os valores presentes nas séries, permitindo assim analizarmos a ocorrência de certos dados categóricos
Step13:  Por último mas nunca menos importante, podemos agrupar as linhas do DataFrame a partir de uma coluna e operar sobre os grupos criados
<ASSISTANT_TASK:>
Python Code:
import numpy as np
import pandas as pd
Explanation: Pandas
Pandas é um pacote bastante poderoso para a análise e processamento de dados tabulares, trazendo consigo estruturas de dados e operações muito eficientes
End of explanation
a = pd.Series([20, 50, 190, 11, 76])
a
Explanation: Series
Séries são estruturas unidimensionais, como um array do Numpy de dimensão 1
End of explanation
dados = [20, 50, 190, 11, 76]
rotulos = ['a', 'b', 'c', 'd', 'e']
b = pd.Series(dados, index=rotulos)
b
Explanation: Os dados em uma série podem conter um índice, permitindo uma otimização no acesso dos dados
End of explanation
print(a[2])
print(b[2])
print(b['c'])
Explanation: Além disso, o índice pode ser utilizado para dar uma semântia ao dado de uma série, permitindo também que o mesmo seja acessado pelo índice atribuído
End of explanation
a.apply(lambda x: 2*x)
Explanation: As Series também possuem um método de transformação, conforme apresentado na aula anterior. Esse método chama-se apply: ele recebe uma função que será aplicada sobre todos os elementos da Serie, retornando então uma Serie com os resultados
End of explanation
matriz = np.array([[1, 2, 3], [4, 5, 6]])
nomes_linhas = ['L1', 'L2']
nomes_cols = ['C1', 'C2', 'C3']
df = pd.DataFrame(matriz, index=nomes_linhas, columns=nomes_cols)
df
Explanation: DataFrame
Um DataFrame é uma tabela onde cada coluna é uma Serie. Assim como as Series, o DataFrame possui um índice, porém, o índice refere-se a uma linha inteira, ou seja, ao elemento naquela posição em todas suas colunas
End of explanation
print(df.to_latex()) # latex
print(df.to_csv(index=False)) #csv
print(df.to_json()) # JSON
print(df.to_html()) #HTML
Explanation: Para fins de exportação, um DataFrame pode ser representado em diversos formatos
End of explanation
df['C3']
df['C4'] = [1, 0]
df
df['C4'] = [4, 7]
df
Explanation: Enquanto em uma Serie utilizamos os colchetes ([]) para acessar um elemento em um certo índice, no DataFrame o operador refere-se à uma Serie, permitindo acessá-la, sobrescrevê-la ou adicionar uma nova
End of explanation
df.transpose()
Explanation: Um DataFrame também pode ser transposto, ou seja, as labels das suas colunas viram índices e os índices viram as novas colunas
End of explanation
df.sort_values(by='C4', ascending=False)
Explanation: Podemos também ordenar as linhas do DataFrame a partir de uma de suas colunas
End of explanation
df = pd.read_csv('titanic.csv')
df.head() # 5 primeiras linhas
df.tail() # últimas 5 linhas
df.columns # colunas do dataframe
df.describe() # calcula estatísticas para cada coluna numérica do DataFrame
Explanation: Importando um dataset real
Plataforma Kaggle - Competições de Ciências de Dados
Titanic: Machine Learning from Disaster
Nela, são providenciadas diversas informações sobre os passageiros, como idade, sexo, cabine, valor do tíquete pago, entre outros. 
O pandas possui funções pré-definidas para a leitura de alguns formatos de arquivos.
End of explanation
df[df.Sex == "female"]
Explanation: O operador colchetes ([]) do pandas também pode ser usado como uma filtragem, ou seja, dada uma condição (ou predicado), ele retorna apenas as linhas do DataFrame que satisfaçam o predicado.
OBS: escrever um predicado nesse operador nem sempre é tão simples quanto um predicado Python comum
End of explanation
df['Sex'].value_counts()
df['Survived'].apply(lambda s: "Yes" if s == 1 else "No").value_counts()
Explanation: O DataFrame permite também que sejam relizadas contagens sobre os valores presentes nas séries, permitindo assim analizarmos a ocorrência de certos dados categóricos
End of explanation
df.groupby('Sex')['Survived'].value_counts()
Explanation: Por último mas nunca menos importante, podemos agrupar as linhas do DataFrame a partir de uma coluna e operar sobre os grupos criados
End of explanation
<END_TASK>