Power BI e Python: Guida all’Analisi Dati Avanzata, Visualizzazioni Personalizzate e Machine Learning Integrato

Cerca:

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Se lavori con i dati, probabilmente conosci già la potenza di Power BI per creare report chiari e interattivi. È uno strumento eccezionale per dare un senso ai numeri. Ma cosa succede quando le analisi standard non bastano più? Quando hai bisogno di una pulizia dei dati più sofisticata, di un grafico che Power BI non offre nativamente, o di applicare un modello predittivo per anticipare le vendite del prossimo trimestre?

È qui che entra in gioco Python. Non come un sostituto, ma come un potentissimo alleato che lavora dentro Power BI. Immagina di poter scrivere poche righe di codice per trasformare dati grezzi in informazioni pulite, creare visualizzazioni statistiche complesse o integrare previsioni di machine learning direttamente nelle tue dashboard. Questa guida ti mostrerà, passo dopo passo e con esempi concreti, come far dialogare questi due strumenti per portare le tue analisi a un nuovo livello di profondità e personalizzazione.

🔥 Perché usare Power BI e Python insieme?

Power BI è uno strumento potente per creare dashboard e report interattivi.

Python è un linguaggio flessibile per analisi dati, machine learning e automazione.

👉 Combinandoli ottieni:

  • ✅ Visualizzazioni avanzate (matplotlib, seaborn, plotly)

  • ✅ Pulizia e trasformazione dati (pandas, numpy)

  • ✅ Machine Learning integrato (scikit-learn, TensorFlow)

  • ✅ Automazione dei report

Tutorial step-by-step

1️⃣ Configurazione dell’ambiente

Prerequisiti

  • 🖥 Power BI Desktop (scaricalo dal sito ufficiale Microsoft)
  • 🐍 Python installato (consigliato Python 3.8+ da python.org)
  • 📦 Librerie Python: pandas, numpy, matplotlib, seaborn, scikit-learn
pip install pandas numpy matplotlib seaborn scikit-learn

Configurare Python in Power BI

Vai su File → Opzioni → Python scripting

Imposta il percorso dell’interprete Python, es:

C:\Python39\python.exe

Test veloce

Puoi fare un test rapido:

print("Power BI e Python funzionano!")

2️⃣ ETL: Utilizzare Python in Power Query

Power Query permette di eseguire script Python per pulire e trasformare i dati prima di caricarli.

Esempio: Pulizia dati con pandas

Importa un file CSV

Vai su: Home → Ottieni dati → Altro → Python script

Inserisci questo script:

import pandas as pd
df = pd.read_csv("C:/Users/TuoUtente/Documents/prodotti.csv")

Poi, nell’Editor Power Query → Trasforma → Esegui script Python puoi fare ulteriori trasformazioni, ad esempio:

df = df.dropna()
df['Data'] = pd.to_datetime(df['Data'])

Chiudi e applica → i dati puliti saranno caricati nel modello Power BI.

Questo è forse l’uso più comune e potente. Power Query è ottimo, ma alcune operazioni di pulizia, specialmente quelle che richiedono logiche complesse o la gestione di serie temporali avanzate, sono più veloci e leggibili in pandas.

Peculiarità: Mostra come lo script Python non sia un’operazione “finale”, ma un passo all’interno del flusso di trasformazione di Power Query. Questo apre infinite possibilità di data manipulation prima ancora che i dati vengano caricati nel modello.

3️⃣ Visualizzazioni avanzate con Python Visual

Power BI supporta matplotlib, seaborn e plotly per grafici personalizzati.

Forse potrebbe interessarti anche:  Come fare un Test Z: Esercizi Pratici su Proporzioni, P-Value e Varianza

Esempio: Scatterplot con seaborn

Crea un visual Python

Seleziona l’icona </> del visual Python.

Trascina i campi Vendite, Profitto e Regione nei valori del visual.

Inserisci questo codice:

import seaborn as sns
import matplotlib.pyplot as plt

sns.scatterplot(data=dataset, x='Vendite', y='Profitto', hue='Regione')
plt.title('Vendite vs Profitto per Regione')
plt.grid(True)
plt.show()

✅ Il grafico verrà mostrato nel report.

Power BI ha ottimi grafici, ma le librerie Python come seaborn e matplotlib offrono un controllo totale sull’estetica e permettono di creare visualizzazioni statistiche complesse (come pairplot, heatmap con annotazioni specifiche, swarmplot) non disponibili nativamente.

Peculiarità: Dimostra come i campi trascinati nel visual (Vendite, Profitto, Regione) diventino una tabella pandas chiamata dataset all’interno dello script. Questa è la meccanica fondamentale per far interagire i dati di Power BI con il codice Python.

4️⃣ Machine Learning in Power BI con Python

Puoi addestrare modelli direttamente dentro Power BI.

Esempio: Regressione Lineare con scikit-learn

Crea un visual Python.

Trascina Pubblicità e Vendite nel visual.

Inserisci:

from sklearn.linear_model import LinearRegression
import pandas as pd

X = dataset[['Pubblicità']]
y = dataset['Vendite']

model = LinearRegression()
model.fit(X, y)

predictions = model.predict(X)

output = pd.DataFrame({'Reali': y, 'Previsioni': predictions})
plt.scatter(y, predictions, color='green')
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--')
plt.xlabel('Vendite Reali')
plt.ylabel('Vendite Predette')
plt.title('Regressione Lineare')
plt.grid(True)
plt.show()

Questo è il “game changer”. Invece di addestrare un modello esternamente e importare i risultati, puoi eseguire l’addestramento e la predizione in tempo reale all’interno del report. È perfetto per analisi “what-if” o per mostrare la bontà di un modello direttamente sui dati filtrati dall’utente.

Peculiarità : L’esempio non si limita a predire, ma visualizza anche la qualità del modello confrontando valori reali e predetti. È un mini-ciclo di vita del machine learning (training -> predizione -> valutazione) condensato in un singolo visual.

5️⃣ Script avanzati e automazione

 Esempio: Genera un PDF report da Power BI

import pandas as pd
from fpdf import FPDF

pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Report Vendite", ln=True, align='C')

for index, row in dataset.iterrows():
    pdf.cell(200, 10, txt=f"{row['Prodotto']}: {row['Vendite']}€", ln=True)

pdf.output("report_vendite.pdf")

Il PDF viene salvato localmente con i dati del tuo report.

Sebbene non sia un caso d’uso primario, mostra la flessibilità di Python. Potrebbe essere utile per generare report tabellari semplici o documenti da dati filtrati, senza passare da servizi esterni.

Peculiarità: È un esempio di “side effect”. Lo scopo del visual non è mostrare un grafico, ma eseguire un’azione (salvare un file). Attenzione: È fondamentale specificare all’utente che il file PDF verrà salvato nella directory di lavoro dell’ambiente Python che Power BI sta utilizzando, non necessariamente in un percorso prevedibile come Documenti. Questo può creare confusione e va chiarito.

Pubblicità

🚀 Mini progetti pratici

📊 Analisi distribuzione prezzi

Dataset

Nome,Prezzo,Categoria
Prodotto A,10,Elettronica
Prodotto B,20,Elettronica
Prodotto C,5,Alimentari
Prodotto D,8,Alimentari
Prodotto E,15,Elettronica

Visual Python: Istogramma

import matplotlib.pyplot as plt

plt.hist(dataset['Prezzo'], bins=5, color='skyblue', edgecolor='black')
plt.title('Distribuzione dei Prezzi')
plt.xlabel('Prezzo')
plt.ylabel('Frequenza')
plt.grid(True)
plt.show()

Mini Progetto ML: Prevedere il Prezzo con la Regressione

Passiamo a un esempio pratico di machine learning. In questo mini-progetto, addestreremo un modello di regressione lineare per prevedere il prezzo di un prodotto utilizzando due variabili (o “feature”): la sua categoria e la sua dimensione. È un perfetto esempio di regressione multivariata eseguita interamente all’interno di Power BI.

Forse potrebbe interessarti anche:  Il Quartetto di Anscombe: Perché Devi SEMPRE Visualizzare i Tuoi Dati (Statistiche Identiche, Storie Diverse)

Preparazione in Power BI

Carica i Dati:

Per prima cosa, assicurati di avere un dataset nel tuo report che contenga le colonne necessarie.

Per questo esempio, ci servono Prezzo, Categoria e Dimensione.

Puoi importare un file CSV con questi dati di esempio:

Prezzo,Categoria,Dimensione
10,Elettronica,5
20,Elettronica,10
5,Alimentari,2
8,Alimentari,3
15,Elettronica,8

Crea il Visual Python:

Seleziona l’icona del visual Python () per aggiungerlo al report. Ora, il passaggio fondamentale: trascina i campi Prezzo, Categoria e Dimensione dal tuo pannello Dati all’area “Valori” del visual. Questa azione crea dinamicamente una tabella dati (DataFrame pandas) chiamata dataset, che il nostro script potrà utilizzare.

Codice per il Visual Python

Incolla il seguente script nell’editor del visual Python. Il codice eseguirà l’intero flusso di lavoro di machine learning.

import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import LabelEncoder
import matplotlib.pyplot as plt

# 'dataset' è il DataFrame che Power BI crea automaticamente 
# con i campi che abbiamo trascinato nell'area "Valori".
df = dataset.copy()

# 1. Pre-processing: Trasformiamo i dati testuali (Categoria) 
#    in un formato numerico che il modello può capire.
le = LabelEncoder()
df['Categoria_encoded'] = le.fit_transform(df['Categoria'])

# 2. Definizione di Feature e Target
#    Le 'features' (X) sono le variabili che usiamo per predire.
#    Il 'target' (y) è il valore che vogliamo predire.
X = df[['Dimensione', 'Categoria_encoded']]
y = df['Prezzo']

# 3. Addestramento del Modello
#    Insegniamo al modello a trovare la relazione tra X e y.
model = LinearRegression()
model.fit(X, y)

# 4. Predizione
#    Usiamo il modello appena addestrato per fare le sue previsioni.
df['Prezzo_predetto'] = model.predict(X)

# 5. Valutazione Visiva
#    Creiamo un grafico per vedere quanto sono accurate le previsioni
#    confrontandole con i prezzi reali.
plt.scatter(df['Prezzo'], df['Prezzo_predetto'], color='green', alpha=0.7)
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--', label='Linea Ideale')
plt.xlabel('Prezzo Reale')
plt.ylabel('Prezzo Predetto')
plt.title('Valutazione Modello: Prezzo Reale vs. Predetto')
plt.grid(True)
plt.legend()
plt.show()

Peculiarità: La bellezza di questo approccio è la sua dinamicità. Se filtri i dati nel tuo report Power BI (ad esempio, selezionando solo una certa fascia di dimensioni), il visual Python rieseguirà lo script solo su quei dati, addestrando e visualizzando un nuovo modello in tempo reale. È un vero e proprio strumento di analisi interattiva.

✅ Analisi Esplorativa Automatica con ydata-profiling

A volte, prima di costruire un modello o un grafico complesso, hai solo bisogno di “capire” i tuoi dati:

quante righe ci sono?

Ci sono valori mancanti?

Qual è la distribuzione di ogni colonna?

La libreria ydata-profiling fa tutto questo per te, generando un report HTML interattivo e dettagliato.

Questo è un esempio di “side effect”: lo script non disegnerà un grafico nel report, ma userà i dati di Power BI per creare un file utile sul tuo computer.

Forse potrebbe interessarti anche:  Liste Python: Guida Completa ai Metodi Essenziali con Esempi Pratici e Applicazioni Reali

🔗Pandas-Profiling (ydata-profiling): Guida all’Analisi Esplorativa dei Dati (EDA) in Python

Preparazione

Installa la Libreria:

Questo esempio richiede una libreria aggiuntiva. Se non l’hai già fatto, apri il terminale o prompt dei comandi e installala con pip:

pip install ydata-profiling

Prepara i Dati in Power BI:

Carica un qualsiasi dataset nel tuo report. Crea un visual Python e trascina tutti i campi che vuoi analizzare nell’area “Valori”. Più campi aggiungi, più ricco sarà il report finale.

Codice per il Visual Python

Incolla questo script per generare il tuo report di analisi.

import os
from ydata_profiling import ProfileReport

# NOTA: Questo script non produrrà un visual, 
# ma creerà un file HTML sul tuo computer.
# Ancora una volta, 'dataset' è il DataFrame creato da Power BI
# con i dati che hai selezionato.
profile = ProfileReport(dataset, title="Report di Analisi Dati da Power BI")

# Definiamo un percorso sicuro e accessibile dove salvare il file,
# ad esempio nella cartella Documenti dell'utente corrente.
output_path = os.path.join(os.path.expanduser('~'), 'Documents', 'powerbi_data_report.html')

# Salviamo il report
profile.to_file(output_path)

# Stampiamo un messaggio di conferma nell'area del visual in Power BI
# per sapere dove trovare il file.
print(f"Report di analisi salvato con successo in:\n{output_path}")

Peculiarità: Questo script è uno strumento di produttività eccezionale. Invece di calcolare manualmente statistiche descrittive, correlazioni e distribuzioni, ottieni un’analisi completa con poche righe di codice. Apri il file HTML generato nel tuo browser per esplorare in modo interattivo ogni aspetto del tuo dataset, direttamente dai dati presenti nel tuo report Power BI.

🚀 Conclusioni

💡 Power BI + Python = dashboard avanzate con la potenza di calcolo e le librerie ML di Python.

Puoi:

  • Fare ETL complesso con pandas in Power Query.
  • Usare matplotlib, seaborn e plotly nei visuals.
  • Addestrare modelli ML direttamente nel report.
  • Automatizzare output (PDF, Excel, HTML).
Pubblicità