Python - Data Wrangling
Il data wrangling implica l'elaborazione dei dati in vari formati come - unione, raggruppamento, concatenazione ecc. Allo scopo di analizzarli o prepararli per essere utilizzati con un altro insieme di dati. Python ha funzionalità integrate per applicare questi metodi di disputa a vari set di dati per raggiungere l'obiettivo analitico. In questo capitolo vedremo alcuni esempi che descrivono questi metodi.
Unione di dati
La libreria Pandas in python fornisce una singola funzione, merge, come punto di ingresso per tutte le operazioni di join di database standard tra oggetti DataFrame -
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True)
Creiamo ora due diversi DataFrame ed eseguiamo le operazioni di unione su di esso.
# 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
Suo output è il seguente -
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
Dati di raggruppamento
Il raggruppamento di set di dati è un'esigenza frequente nell'analisi dei dati in cui è necessario il risultato in termini di vari gruppi presenti nel set di dati. Panadas ha metodi incorporati che possono raggruppare i dati in vari gruppi.
Nell'esempio seguente raggruppiamo i dati per anno e quindi otteniamo il risultato per un anno specifico.
# 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)
Suo output è il seguente -
Points Rank Team Year
0 876 1 Riders 2014
2 863 2 Devils 2014
4 741 3 Kings 2014
9 701 4 Royals 2014
Concatenazione dei dati
Pandas fornisce vari servizi per combinare facilmente insieme Series, DataFrame, e Paneloggetti. Nell'esempio seguente il fileconcatfunzione esegue operazioni di concatenazione lungo un asse. Creiamo oggetti diversi e concateniamo.
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])
Suo output è il seguente -
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