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