Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa esercitazione illustra le nozioni di base per eseguire l'analisi esplorativa dei dati usando Python in un notebook di Azure Databricks, dal caricamento dei dati alla generazione di informazioni dettagliate tramite visualizzazioni dei dati.
Il notebook usato in questa esercitazione esamina i dati globali relativi all'energia e alle emissioni e illustra come caricare, pulire ed esplorare i dati.
È possibile seguire la procedura usando il notebook di esempio o creare un notebook personalizzato da zero.
Che cos'è EDA?
L'analisi esplorativa dei dati (EDA) è un passaggio iniziale fondamentale nel processo di data science che prevede l'analisi e la visualizzazione dei dati per:
- Scopri le sue caratteristiche principali.
- Identificare modelli e tendenze.
- Rilevare le anomalie.
- Comprendere le relazioni tra le variabili.
EDA fornisce informazioni dettagliate sul set di dati, semplificando decisioni informate su ulteriori analisi statistiche o modellazione.
Con i notebook di Azure Databricks, i data scientist possono eseguire edA usando strumenti familiari. Ad esempio, questa esercitazione usa alcune librerie Python comuni per gestire e tracciare i dati, tra cui:
- Numpy: una libreria fondamentale per il calcolo numerico, fornendo il supporto per matrici, matrici e un'ampia gamma di funzioni matematiche per operare su queste strutture di dati.
- pandas: una potente libreria di manipolazione e analisi dei dati, basata su NumPy, che offre strutture di dati come dataframe per gestire in modo efficiente i dati strutturati.
- Plotly: una libreria grafica interattiva che consente la creazione di visualizzazioni interattive di alta qualità per l'analisi e la presentazione dei dati.
- Matplotlib: una libreria completa per la creazione di visualizzazioni statiche, animate e interattive in Python.
Azure Databricks offre anche funzionalità predefinite che consentono di esplorare i dati all'interno dell'output del notebook, ad esempio il filtro e la ricerca dei dati all'interno delle tabelle e lo zoom avanti sulle visualizzazioni. È anche possibile usare Databricks Assistant per scrivere codice per EDA.
Prima di iniziare
Per completare questa esercitazione, sono necessari gli elementi seguenti:
- È necessario disporre dell'autorizzazione per usare una risorsa di calcolo esistente o creare una nuova risorsa di calcolo. Vedere Calcolo.
- [Facoltativo] Questa esercitazione descrive come usare l'assistente per generare codice. Per altre informazioni, vedere Usare Databricks Assistant .
Scaricare il set di dati e importare il file CSV
Questa esercitazione illustra le tecniche EDA esaminando i dati globali relativi all'energia e alle emissioni. Per seguire la procedura, scaricare il set di dati del consumo energetico di Our World in Data from Kaggle. Questa esercitazione usa il file owid-energy-data.csv.
Per importare il set di dati nell'area di lavoro di Azure Databricks:
Nella barra laterale dell'area di lavoro fare clic su Area di lavoro per passare al browser dell'area di lavoro.
Trascinare e rilasciare il file CSV,
owid-energy-data.csv, nell'area di lavoro.Si apre la finestra modale di importazione . Prendere nota della cartella Target elencata qui. Questa opzione è impostata sulla cartella corrente nel browser dell'area di lavoro e diventa la destinazione del file importato.
Fare clic su Importa. Il file dovrebbe essere visualizzato nella cartella di destinazione nell'area di lavoro.
È necessario il percorso del file per caricare il file nel notebook in un secondo momento. Trovare il file nel browser dell'area di lavoro. Per copiare il percorso del file negli Appunti, fare clic con il pulsante destro del mouse sul nome del file e quindi scegliere Copia URL/percorso>completo.
Creare un nuovo notebook
Per creare un nuovo notebook nella home folder dell'utente, fare clic su
Nuova nella barra laterale e selezionare Notebook dal menu.
Nella parte superiore accanto al nome del notebook selezionare Python come linguaggio predefinito per il notebook.
Per altre informazioni sulla creazione e la gestione dei notebook, vedere Gestire i notebook.
Aggiungere ognuno degli esempi di codice in questo articolo a una nuova cella del notebook. In alternativa, usare il notebook di esempio fornito per seguire l'esercitazione.
Caricare il file CSV
In una nuova cella del notebook caricare il file CSV. A tale scopo, importare numpy e pandas. Queste sono librerie Python utili per l'analisi e l'analisi scientifica dei dati.
Creare un dataframe pandas dal set di dati per semplificare l'elaborazione e la visualizzazione. Sostituire il percorso del file seguente con quello copiato in precedenza.
import numpy as np
import pandas as pd # Data processing, CSV file I/O (e.g. pd.read_csv)
df=pd.read_csv('/Workspace/Users/demo@databricks.com/owid-energy-data.csv') # Replace the file path here with the workspace path you copied earlier
Eseguire la cella. L'output deve restituire il dataframe pandas, incluso un elenco di ogni colonna e il relativo tipo.
Comprendere i dati
Comprendere le nozioni di base del set di dati è fondamentale per qualsiasi progetto di data science. Implica acquisire familiarità con la struttura, i tipi e la qualità dei dati a portata di mano.
In un notebook di Azure Databricks è possibile usare il comando display(df) per visualizzare il set di dati.
Poiché il set di dati ha più di 10.000 righe, questo comando restituisce un set di dati troncato. A sinistra di ogni colonna è possibile visualizzare il tipo di dati della colonna. Per altre informazioni, vedere Formattare le colonne.
Usare pandas per informazioni dettagliate sui dati
Per comprendere in modo efficace il set di dati, usare i comandi pandas seguenti:
Il comando
df.shaperestituisce le dimensioni del dataframe, offrendo una rapida panoramica del numero di righe e colonne.
Il comando
df.dtypesfornisce i tipi di dati di ogni colonna, consentendo di comprendere il tipo di dati che si sta gestendo. È anche possibile visualizzare il tipo di dati per ogni colonna nella tabella dei risultati.
Il comando
df.describe()genera statistiche descrittive per le colonne numeriche, ad esempio media, deviazione standard e percentili, che consentono di identificare modelli, rilevare anomalie e comprendere la distribuzione dei dati. Usarlo condisplay()per visualizzare le statistiche di riepilogo in un formato tabulare con cui è possibile interagire. Vedere Esplorare i dati usando la tabella di output del notebook di Databricks.
Generare un profilo dati
Annotazioni
Disponibile in Databricks Runtime 9.1 LTS e versioni successive.
I notebook di Azure Databricks includono funzionalità di profilatura dei dati predefinite. Quando si visualizza un dataframe con la funzione di visualizzazione di Azure Databricks, è possibile generare un profilo dati dall'output della tabella.
# Display the DataFrame, then click "+ > Data Profile" to generate a data profile
display(df)
Fare clic su +>Profilo dati accanto alla tabella nell'output. Viene eseguito un nuovo comando che genera un profilo dei dati nel dataframe.
Il profilo dati include statistiche di riepilogo per colonne numeriche, stringa e data, nonché istogrammi delle distribuzioni di valori per ogni colonna. È anche possibile generare profili dati a livello di codice; vedere il comando summarize (dbutils.data.summarize).
Pulire i dati
La pulizia dei dati è un passaggio fondamentale in EDA per garantire che il set di dati sia accurato, coerente e pronto per un'analisi significativa. Questo processo comporta diverse attività chiave per garantire che i dati siano pronti per l'analisi, tra cui:
- Identificazione e rimozione di eventuali dati duplicati.
- Gestione dei valori mancanti, che potrebbero comportare la sostituzione con un valore specifico o la rimozione delle righe interessate.
- Standardizzazione dei tipi di dati (ad esempio, conversione di stringhe in
datetime) tramite conversioni e trasformazioni per garantire la coerenza. È anche possibile convertire i dati in un formato più semplice da usare.
Questa fase di pulizia è essenziale perché migliora la qualità e l'affidabilità dei dati, consentendo un'analisi più accurata e approfondita.
Suggerimento: Usare Databricks Assistant per facilitare la pulizia dei dati
È possibile usare Databricks Assistant per generare codice. Creare una nuova cella di codice e fare clic sul collegamento genera o usare l'icona dell'assistente in alto a destra per aprire l'assistente. Immettere una richiesta per l'assistente. L'assistente può generare codice Python o SQL o generare una descrizione di testo. Per risultati diversi, fare clic su Rigenera.
Ad esempio, provare le istruzioni seguenti per usare l'assistente per pulire i dati:
- Controllare se
dfcontiene colonne o righe duplicate. Stampare i duplicati. Eliminare quindi i duplicati. - In quale formato si trovano le colonne di data? Cambia a
'YYYY-MM-DD'. - Non userò la
XXXcolonna. Eliminalo.
Vedere Ottenere informazioni sulla scrittura di codice da Databricks Assistant.
Rimuovere i dati duplicati
Controllare se i dati contengono righe o colonne duplicate. Se sì, rimuovili.
Consiglio
Usare l'assistente per generare automaticamente il codice.
Provare a immettere il prompt: "Controllare se df contiene colonne o righe duplicate. Stampare i duplicati. Eliminare quindi i duplicati." L'assistente potrebbe generare codice simile all'esempio seguente.
# Check for duplicate rows
duplicate_rows = df.duplicated().sum()
# Check for duplicate columns
duplicate_columns = df.columns[df.columns.duplicated()].tolist()
# Print the duplicates
print("Duplicate rows count:", duplicate_rows)
print("Duplicate columns:", duplicate_columns)
# Drop duplicate rows
df = df.drop_duplicates()
# Drop duplicate columns
df = df.loc[:, ~df.columns.duplicated()]
In questo caso, il set di dati non contiene dati duplicati.
Gestire valori nulli o mancanti
Un modo comune per trattare i valori NaN o Null consiste nel sostituirli con 0 per semplificare l'elaborazione matematica.
df = df.fillna(0) # Replace all NaN (Not a Number) values with 0
Ciò garantisce che tutti i dati mancanti nel dataframe vengano sostituiti con 0, che possono essere utili per le successive analisi dei dati o i passaggi di elaborazione in cui i valori mancanti potrebbero causare problemi.
Riformattare le date
Le date vengono spesso formattate in diversi modi in set di dati diversi. Potrebbero essere in formato data, stringhe o numeri interi.
Per questa analisi, considerare la colonna year come numero intero. Il codice seguente è un modo per eseguire questa operazione:
# Ensure the 'year' column is converted to the correct data type (integer for year)
df['year'] = pd.to_datetime(df['year'], format='%Y', errors='coerce').dt.year
# Confirm the changes
df.year.dtype
In questo modo si garantisce che la colonna year contenga solo valori di anno intero, con eventuali voci non valide convertite in NaT (Non un Tempo).
Esplorare i dati usando la tabella di output del notebook di Databricks
Azure Databricks offre funzionalità predefinite che consentono di esplorare i dati usando la tabella di output.
In una nuova cella usare display(df) per visualizzare il set di dati come tabella.
Usando la tabella di output, è possibile esplorare i dati in diversi modi:
- Cercare una stringa o un valore specifico nei dati
- Filtrare per condizioni specifiche
- Creare visualizzazioni usando il set di dati
Cercare una stringa o un valore specifico nei dati
Fare clic sull'icona di ricerca in alto a destra della tabella e immettere la ricerca.
Filtrare per condizioni specifiche
È possibile usare filtri di tabella predefiniti per filtrare le colonne in base a condizioni specifiche. Esistono diversi modi per creare un filtro. Vedere Filtrare i risultati.
Consiglio
Usare Databricks Assistant per creare filtri. Fare clic sull'icona del filtro nell'angolo superiore destro della tabella. Immettere la condizione del filtro. Databricks Assistant genera automaticamente un filtro.
Creare visualizzazioni usando il set di dati
Nella parte superiore della tabella di output fare clic su +>Visualizzazione per aprire l'editor di visualizzazioni.
Selezionare il tipo di visualizzazione e le colonne da visualizzare. L'editor visualizza un'anteprima del grafico in base alla configurazione. Ad esempio, l'immagine seguente mostra come aggiungere più grafici a linee per visualizzare il consumo di varie fonti energetiche rinnovabili nel tempo.
Fare clic su Salva per aggiungere la visualizzazione come scheda nell'output della cella.
Vedere Creare una nuova visualizzazione.
Esplorare e visualizzare i dati usando le librerie Python
L'esplorazione dei dati tramite le visualizzazioni è un aspetto fondamentale di EDA. Le visualizzazioni consentono di individuare modelli, tendenze e relazioni all'interno dei dati che potrebbero non essere immediatamente evidenti solo tramite l'analisi numerica. Usare librerie come Plotly o Matplotlib per tecniche di visualizzazione comuni, tra cui grafici a dispersione, grafici a barre, grafici a linee e istogrammi. Questi strumenti visivi consentono ai data scientist di identificare le anomalie, comprendere le distribuzioni dei dati e osservare le correlazioni tra le variabili. Ad esempio, i tracciati a dispersione possono evidenziare outlier, mentre i tracciati delle serie temporali possono rivelare tendenze e stagionalità.
- Creare una matrice per paesi univoci
- Grafico delle tendenze delle emissioni per i primi 10 emettitori (200-2022)
- Filtrare e tracciare le emissioni in base all'area
- Calcolare e rappresentare graficamente la crescita della quota di energia rinnovabile
- Grafico a dispersione: mostra l'impatto dell'energia rinnovabile per i principali emettitori
- Modello previsto consumo di energia globale
Creare una matrice per paesi univoci
Esaminare i paesi inclusi nel set di dati creando una matrice per paesi univoci. La creazione di un array mostra le entità elencate come country.
# Get the unique countries
unique_countries = df['country'].unique()
unique_countries
Prodotto:
Intuzione:
La country colonna include varie entità, tra cui Paesi a reddito elevato, Asia e Stati Uniti, che non sono sempre direttamente confrontabili. Potrebbe essere più utile filtrare i dati in base all'area.
Grafico delle tendenze delle emissioni per i primi 10 emettitori (200-2022)
Si supponga di voler concentrare l'indagine sui 10 paesi con le più alte emissioni di gas serra negli anni '2000. È possibile filtrare i dati per gli anni da esaminare e i primi 10 paesi con la maggior parte delle emissioni, quindi usare tracciati per creare un grafico a linee che mostra le emissioni nel tempo.
import plotly.express as px
# Filter data to include only years from 2000 to 2022
filtered_data = df[(df['year'] >= 2000) & (df['year'] <= 2022)]
# Get the top 10 countries with the highest emissions in the filtered data
top_countries = filtered_data.groupby('country')['greenhouse_gas_emissions'].sum().nlargest(10).index
# Filter the data for those top countries
top_countries_data = filtered_data[filtered_data['country'].isin(top_countries)]
# Plot emissions trends over time for these countries
fig = px.line(top_countries_data, x='year', y='greenhouse_gas_emissions', color='country',
title="Greenhouse Gas Emissions Trends for Top 10 Countries (2000 - 2022)")
fig.show()
Prodotto:
Intuzione:
Le emissioni di gas serra hanno registrato una tendenza verso l'alto dal 2000 al 2022, ad eccezione di alcuni paesi in cui le emissioni sono state relativamente stabili con un lieve calo nel periodo di tempo.
Filtrare e tracciare le emissioni in base all'area
Filtrare i dati in base all'area e calcolare le emissioni totali per ogni area. Tracciare quindi i dati come grafico a barre:
# Filter out regional entities
regions = ['Africa', 'Asia', 'Europe', 'North America', 'South America', 'Oceania']
# Calculate total emissions for each region
regional_emissions = df[df['country'].isin(regions)].groupby('country')['greenhouse_gas_emissions'].sum()
# Plot the comparison
fig = px.bar(regional_emissions, title="Greenhouse Gas Emissions by Region")
fig.show()
Prodotto:
Intuizione:
L'Asia ha le più alte emissioni di gas serra. L'Asia, l'America del Sud e l'Africa producono le più basse emissioni di gas serra.
Calcolare e tracciare la crescita della quota di energia rinnovabile
Creare una nuova caratteristica/colonna che calcola la quota di energia rinnovabile come rapporto tra il consumo di energia rinnovabile e il consumo di energia primaria. Quindi, classificare i paesi in base alla loro media quota di energia rinnovabile. Per i primi 10 paesi, tracciare la quota di energia rinnovabile nel tempo:
# Calculate the renewable energy share and save it as a new column called "renewable_share"
df['renewable_share'] = df['renewables_consumption'] / df['primary_energy_consumption']
# Rank countries by their average renewable energy share
renewable_ranking = df.groupby('country')['renewable_share'].mean().sort_values(ascending=False)
# Filter for countries leading in renewable energy share
leading_renewable_countries = renewable_ranking.head(10).index
leading_renewable_data = df[df['country'].isin(leading_renewable_countries)]
# filtered_data = df[(df['year'] >= 2000) & (df['year'] <= 2022)]
leading_renewable_data_filter=leading_renewable_data[(leading_renewable_data['year'] >= 2000) & (leading_renewable_data['year'] <= 2022)]
# Plot renewable share over time for top renewable countries
fig = px.line(leading_renewable_data_filter, x='year', y='renewable_share', color='country',
title="Renewable Energy Share Growth Over Time for Leading Countries")
fig.show()
Prodotto:
Intuzione:
Norvegia e Islanda sono leader nel mondo nell'energia rinnovabile, con più della metà del loro consumo proveniente dall'energia rinnovabile.
Islanda e Svezia hanno visto la più grande crescita nella loro quota di energia rinnovabile. Tutti i paesi hanno visto occasionali cali e aumenti, dimostrando come la crescita della quota di energia rinnovabile non è necessariamente lineare. È interessante notare che l'Africa centrale ha visto un tuffo nei primi anni '2010, ma rimbalzato nel 2020.
Grafico a dispersione: mostra l'impatto dell'energia rinnovabile per i principali emettitori
Filtrare i dati per i primi 10 emettitori, quindi usare un grafico a dispersione per esaminare la condivisione di energia rinnovabile rispetto alle emissioni di gas serra nel tempo.
# Select top emitters and calculate renewable share vs. emissions
top_emitters = df.groupby('country')['greenhouse_gas_emissions'].sum().nlargest(10).index
top_emitters_data = df[df['country'].isin(top_emitters)]
# Plot renewable share vs. greenhouse gas emissions over time
fig = px.scatter(top_emitters_data, x='renewable_share', y='greenhouse_gas_emissions',
color='country', title="Impact of Renewable Energy on Emissions for Top Emitters")
fig.show()
Prodotto:
Intuzione:
Poiché un paese utilizza più energia rinnovabile, ha anche più emissioni di gas serra, il che significa che il consumo totale di energia aumenta più velocemente rispetto al suo consumo rinnovabile. L'America del Nord è un'eccezione nel fatto che le sue emissioni di gas serra sono rimaste relativamente costanti nel corso degli anni, man mano che la sua quota rinnovabile ha continuato ad aumentare.
Modello del consumo energetico globale previsto
Aggregare il consumo globale di energia primaria per anno, quindi creare un modello ARIMA (Autoregressive Integrated Moving Average) per proiettare il consumo totale di energia globale per i prossimi anni. Tracciare il consumo di energia cronologico e previsto usando Matplotlib.
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
import matplotlib.pyplot as plt
# Aggregate global primary energy consumption by year
global_energy = df[df['country'] == 'World'].groupby('year')['primary_energy_consumption'].sum()
# Build an ARIMA model for projection
model = ARIMA(global_energy, order=(1, 1, 1))
model_fit = model.fit()
forecast = model_fit.forecast(steps=10) # Projecting for 10 years
# Plot historical and forecasted energy consumption
plt.plot(global_energy, label='Historical')
plt.plot(range(global_energy.index[-1] + 1, global_energy.index[-1] + 11), forecast, label='Forecast')
plt.xlabel("Year")
plt.ylabel("Primary Energy Consumption")
plt.title("Projected Global Energy Consumption")
plt.legend()
plt.show()
Prodotto:
Intuzione:
Questo modello prevede che il consumo globale di energia continuerà a crescere.
Notebook di esempio
Usare il notebook seguente per eseguire i passaggi descritti in questo articolo. Per istruzioni sull'importazione di un notebook in un'area di lavoro di Azure Databricks, vedere Importare un notebook.
Esercitazione: EDA con dati energetici globali
Passaggi successivi
Ora che è stata eseguita un'analisi esplorativa iniziale dei dati nel set di dati, provare i passaggi successivi seguenti:
- Per altri esempi di visualizzazione EDA, vedere l'Appendice nel notebook di esempio .
- Se si verificano errori durante l'esecuzione di questa esercitazione, provare a usare il debugger predefinito per eseguire il codice. Vedere Eseguire il debug dei notebook.
- Condividere il notebook con il team in modo che possano comprendere l'analisi. A seconda delle autorizzazioni concesse, possono aiutare a sviluppare codice per approfondire l'analisi o aggiungere commenti e suggerimenti per ulteriori indagini.
- Dopo aver finalizzato l'analisi, creare un dashboard del notebook o un dashboard di intelligenza artificiale/BI con le visualizzazioni chiave da condividere con gli stakeholder.