Pandas
📘 Tutorial Completo su Pandas
Pandas è una delle librerie più potenti di Python per analisi e manipolazione dei dati.
🔹 1. Introduzione
Pandas si basa su NumPy e fornisce due strutture dati principali:
Series → vettore monodimensionale (simile a un array o a una colonna di un foglio Excel).
DataFrame → tabella bidimensionale (simile a un foglio Excel o a una tabella SQL).
Installazione:
pip install pandas
Importazione:
import pandas as pd
🔹 2. Le Series
Una Series
è un array con etichette (index).
import pandas as pd
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s)
📌 Risultato:
a 10
b 20
c 30
d 40
dtype: int64
✅ Accesso ai dati:
print(s['b']) # 20
print(s[0]) # 10
print(s[['a','c']]) # selezione multipla
🔹 3. I DataFrame
Un DataFrame
è una tabella con righe e colonne.
data = {
'Nome': ['Luca', 'Anna', 'Marco'],
'Età': [25, 30, 22],
'Città': ['Roma', 'Milano', 'Torino']
}
df = pd.DataFrame(data)
print(df)
📌 Risultato:
Nome Età Città
0 Luca 25 Roma
1 Anna 30 Milano
2 Marco 22 Torino
✅ Accesso ai dati:
print(df['Nome']) # colonna come Series
print(df[['Nome', 'Città']]) # più colonne
print(df.loc[1]) # riga per label
print(df.iloc[2]) # riga per posizione
🔹 4. Importare Dati da File
Pandas supporta diversi formati:
# CSV
df = pd.read_csv('dati.csv')
# Excel
df = pd.read_excel('dati.xlsx')
# JSON
df = pd.read_json('dati.json')
🔹 5. Esplorazione dei Dati
Comandi utili per capire il contenuto di un DataFrame:
print(df.head()) # prime 5 righe
print(df.tail()) # ultime 5 righe
print(df.info()) # info su colonne e tipi di dati
print(df.describe()) # statistiche descrittive
print(df.shape) # (righe, colonne)
print(df.columns) # nomi delle colonne
print(df.index) # indici
🔹 6. Selezione e Filtraggio
Filtrare righe in base a condizioni:
# Età > 25
print(df[df['Età'] > 25])
# Età compresa tra 20 e 30
print(df[(df['Età'] >= 20) & (df['Età'] <= 30)])
# Nome diverso da 'Luca'
print(df[df['Nome'] != 'Luca'])
🔹 7. Operazioni su Colonne
Aggiungere / modificare colonne:
df['Anni_rimanenti'] = 80 - df['Età']
df['Nome_Maiuscolo'] = df['Nome'].str.upper()
print(df)
Eliminare colonne:
df = df.drop(columns=['Nome_Maiuscolo'])
🔹 8. Gestione dei Valori Mancanti
print(df.isnull()) # True/False per valori nulli
print(df.dropna()) # elimina righe con NaN
print(df.fillna(0)) # sostituisce NaN con 0
🔹 9. Ordinamento
print(df.sort_values(by='Età')) # crescente
print(df.sort_values(by='Età', ascending=False)) # decrescente
🔹 10. Raggruppamenti e Aggregazioni
Funzioni simili a GROUP BY di SQL:
df_grouped = df.groupby('Città')['Età'].mean()
print(df_grouped)
Altri esempi:
print(df.groupby('Città').agg({'Età': ['mean', 'max', 'min']}))
🔹 11. Merge e Join
Unire più DataFrame:
df1 = pd.DataFrame({'ID': [1,2], 'Nome': ['Luca','Anna']})
df2 = pd.DataFrame({'ID': [1,2], 'Età': [25,30]})
merged = pd.merge(df1, df2, on='ID')
print(merged)
🔹 12. Pivot Table
Simile alle tabelle pivot di Excel:
pivot = df.pivot_table(values='Età', index='Città', aggfunc='mean')
print(pivot)
🔹 13. Esportazione Dati
df.to_csv('output.csv', index=False)
df.to_excel('output.xlsx', index=False)
df.to_json('output.json')
🔹 14. Visualizzazione Dati (Base)
Pandas può integrarsi con Matplotlib:
import matplotlib.pyplot as plt
df['Età'].plot(kind='hist')
plt.show()
🔹 15. Best Practices
Usare
copy()
quando si crea un sotto-DataFrame per evitare il SettingWithCopyWarning.Usare
df.query()
per filtri complessi, es:df.query('Età > 25 and Città == "Roma"')
Lavorare con tipi di dati corretti (
astype()
per conversioni).Evitare loop
for
→ usare metodi vettorizzati per performance.
ESERCITAZIONI :
Last updated