CodeGym /Java Course /Python SELF IT /Unione dei dati da più fogli e file Excel

Unione dei dati da più fogli e file Excel

Python SELF IT
Livello 28 , Lezione 1
Disponibile

1. Perché unire i dati?

Nel mondo moderno, è raro trovare tutte le informazioni necessarie in un unico file. Di solito, i dati sono sparpagliati su più tabelle e file, e per un'analisi completa è necessario unirli. Ad esempio, potresti avere dati sulle vendite di ogni mese in file separati. Per analizzare le tendenze generali, è necessario combinare questi dati in un'unica tabella.

Inoltre, l'unione dei dati aiuta a:

  • Risparmiare tempo nell'assemblare i report manualmente.
  • Ridurre il numero di errori associati alla trascrizione manuale dei dati.
  • Automatizzare i processi di analisi dei dati.

2. Metodi per unire i dati

Concatenazione dei dati

L'unione verticale e orizzontale dei dati si chiama concatenazione. Iniziamo con un semplice esempio: abbiamo due DataFrame che vogliamo unire.

Python

import pandas as pd

# Creiamo due DataFrame con struttura simile
data1 = {
    'Product': ['Apples', 'Bananas'],
    'Sales': [100, 150]
}

data2 = {
    'Product': ['Cherries', 'Dates'],
    'Sales': [75, 200]
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# Concatenazione verticale (aggiungiamo righe)
combined = pd.concat([df1, df2], ignore_index=True)
print(combined)

Come risultato, otteniamo un DataFrame unito con tutte le righe da entrambe le fonti. Nota il parametro ignore_index=True, che resetta gli indici nel DataFrame finale.

Unione dei dati usando il metodo merge

Quando hai dati che devono essere uniti basandoti su colonne comuni (ad esempio, id o Product), il metodo merge è quello che fa per te. È come un appuntamento per i tuoi dati: devono avere qualcosa in comune per incontrarsi.

Python

# Creiamo un esempio di dati
sales_data = {
    'Product': ['Apples', 'Bananas', 'Cherries'],
    'Sales': [100, 150, 75]
}

price_data = {
    'Product': ['Apples', 'Bananas', 'Dates'],
    'Price': [1.2, 0.8, 3.0]
}

sales_df = pd.DataFrame(sales_data)
price_df = pd.DataFrame(price_data)

# Uniamo i DataFrame sulla colonna 'Product'
merged_df = pd.merge(sales_df, price_df, on='Product', how='inner')
print(merged_df)

Anche se abbiamo informazioni per ogni prodotto, merge restituisce solo le righe dove c'è una corrispondenza nella colonna chiave Product.

Esaminiamo i tipi di unione:

  • inner (predefinito): restituisce solo le righe presenti in entrambi i DataFrame.
  • outer: restituisce tutte le righe, riempiendo i valori mancanti con NaN.
  • left: restituisce tutte le righe dal DataFrame sinistro e le righe corrispondenti dal destro.
  • right: restituisce tutte le righe dal DataFrame destro e le righe corrispondenti dal sinistro.

Unione dei dati da più fogli

Ora che abbiamo rivisto come funziona l'unione in pandas, applichiamo queste conoscenze in pratica e uniamo dati da più fogli di un unico file Excel.

Python

# Leggiamo un file Excel con più fogli
excel_file = pd.ExcelFile('sales_data.xlsx')

# Lista dei nomi di tutti i fogli
sheet_names = excel_file.sheet_names

# Leggiamo i dati da ogni foglio in un singolo DataFrame e li aggiungiamo a una lista
dataframes = [pd.read_excel(excel_file, sheet_name=sheet_name) for sheet_name in sheet_names]

# Effettuiamo la concatenazione verticale di tutti i DataFrame
all_sales_data = pd.concat(dataframes, ignore_index=True)

print(all_sales_data)

Qui leggiamo tutti i fogli da un file Excel in singoli DataFrame, poi li combiniamo in uno solo. Fantastico, vero?

Unione dei dati da più file

In pratica, potresti incontrare situazioni in cui i dati sono distribuiti su più file. Vediamo come automatizzare il processo della loro unione.

Python

import glob

# Percorso ai file
file_path = r'data/sales_*.xlsx'

# Otteniamo una lista di tutti i file che corrispondono al pattern
files = glob.glob(file_path)

# Leggiamo i dati da ogni file in un singolo DataFrame e li aggiungiamo a una lista
dataframes = [pd.read_excel(file) for file in files]

# Effettuiamo la concatenazione verticale di tutti i DataFrame
all_files_data = pd.concat(dataframes, ignore_index=True)

print(all_files_data)

Usiamo la libreria glob per ottenere una lista di file che corrispondono al pattern specificato, poi uniamo i dati di ogni file in un unico DataFrame.

3. Esempi pratici di utilizzo

Unione dei dati per analisi aziendale

Supponiamo che tu sia un analista che lavora con dati di vendita mensili in file separati. Con le tecniche sopra menzionate puoi facilmente unire i dati per un'analisi delle tendenze annuali e trarre conclusioni significative.

Automatizzazione dei report

Grazie all'automazione dell'unione dei dati, puoi configurare uno script che raccoglie informazioni da diverse fonti e genera report giornalieri, settimanali o mensili automaticamente.

Elaborazione di dati da diverse fonti

I tuoi dati potrebbero provenire da diversi sistemi, dove ogni fonte fornisce una parte delle informazioni. Con pandas, puoi unirli per ottenere un quadro completo, ad esempio, combinando i dati dei clienti con quelli degli acquisti.

4. Errori comuni e loro correzione

Un errore frequente è la mancata corrispondenza dei nomi delle colonne nei DataFrame che si tenta di unire. Assicurati che le colonne utilizzate per l'unione abbiano davvero gli stessi nomi e, se necessario, utilizza i parametri left_on e right_on nel metodo merge.

A volte i dati possono contenere valori mancanti dopo l'unione. Usa i metodi di riempimento dei valori fillna o di rimozione dropna per risolvere questo problema.

Se i tuoi dati contengono duplicati, il metodo concat può portare a ottenere un DataFrame più lungo del previsto. In questo caso, usa il metodo drop_duplicates per effettuare una pulizia.

Ora che abbiamo coperto metodi e trucchi per unire i dati in pandas, hai gli strumenti necessari per affrontare compiti reali di automazione e analisi dei dati. Usa queste conoscenze a tuo vantaggio!

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION