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