Python - Organização de Dados
A transformação de dados envolve o processamento dos dados em vários formatos, como - mesclagem, agrupamento, concatenação, etc., com o objetivo de analisá-los ou prepará-los para serem usados com outro conjunto de dados. Python possui recursos integrados para aplicar esses métodos de transformação a vários conjuntos de dados para atingir o objetivo analítico. Neste capítulo, veremos alguns exemplos que descrevem esses métodos.
Mesclando Dados
A biblioteca Pandas em python fornece uma única função, merge, como o ponto de entrada para todas as operações de junção de banco de dados padrão entre objetos DataFrame -
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True)
Vamos agora criar dois DataFrames diferentes e realizar as operações de fusão neles.
# import the pandas library
import pandas as pd
left = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame(
{'id':[1,2,3,4,5],
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print left
print right
Está output é o seguinte -
Name id subject_id
0 Alex 1 sub1
1 Amy 2 sub2
2 Allen 3 sub4
3 Alice 4 sub6
4 Ayoung 5 sub5
Name id subject_id
0 Billy 1 sub2
1 Brian 2 sub4
2 Bran 3 sub3
3 Bryce 4 sub6
4 Betty 5 sub5
Dados de agrupamento
Agrupar conjuntos de dados é uma necessidade frequente na análise de dados, onde precisamos do resultado em termos de vários grupos presentes no conjunto de dados. Panadas possui métodos embutidos que podem transferir os dados em vários grupos.
No exemplo abaixo, agrupamos os dados por ano e obtemos o resultado de um ano específico.
# import the pandas library
import pandas as pd
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
grouped = df.groupby('Year')
print grouped.get_group(2014)
Está output é o seguinte -
Points Rank Team Year
0 876 1 Riders 2014
2 863 2 Devils 2014
4 741 3 Kings 2014
9 701 4 Royals 2014
Dados de concatenação
Pandas oferece várias facilidades para combinar facilmente Series, DataFrame, e Panelobjetos. No exemplo abaixo oconcatfunção executa operações de concatenação ao longo de um eixo. Vamos criar objetos diferentes e fazer concatenação.
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two])
Está output é o seguinte -
Marks_scored Name subject_id
1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5