Capitolo 15: Analisi Dati con pandas & NumPy
Impara a manipolare array numerici con NumPy e dati tabulari con pandas, inclusi aggregazioni e grafici base.
Scaricachapter15.py
Obiettivi
- Creare e manipolare oggetti
numpy.ndarray
. - Caricare e ispezionare dati con
pandas.Series
eDataFrame
. - Eseguire indicizzazione, slicing e selezione booleana in pandas.
- Calcolare statistiche descrittive e aggregazioni group-by.
- Gestire dati mancanti e applicare funzioni con
apply
. - Visualizzare dati con i grafici integrati di pandas (matplotlib).
1. Array NumPy
import numpy as np
# array 1D
arr = np.array([1, 2, 3, 4])
# array 2D
mat = np.arange(9).reshape(3, 3)
print(arr)
print(mat)
# operazioni elemento-per-elemento
print(arr + 10)
# statistiche
print("mean:", arr.mean(), "sum:", arr.sum())
2. pandas Series & DataFrame
import pandas as pd
# crea Series
s = pd.Series([10, 20, 30], index=['a','b','c'])
# crea DataFrame
df = pd.DataFrame({
'col1': [1,2,3],
'col2': ['x','y','z']
})
print(s)
print(df.head())
# leggi CSV
df = pd.read_csv('data.csv')
print(df.info())
print(df.describe())
3. Indicizzazione & Selezione
# basato su etichette
print(df.loc[0, 'col1'])
# basato su posizione
print(df.iloc[0:2, 0:2])
# filtro booleano
print(df[df['col1'] > 1])
4. Aggregazione & GroupBy
# statistiche riassuntive
print(df['col1'].mean(), df['col1'].sum())
# group by
grouped = df.groupby('col2')['col1'].agg(['mean','count'])
print(grouped)
5. Dati Mancanti & apply()
# riempi valori mancanti
df['col1'] = df['col1'].fillna(0)
# applica funzione
df['col3'] = df['col1'].apply(lambda x: x**2)
6. Grafici Base
import matplotlib.pyplot as plt
# grafico a linee
df['col1'].plot(title='Col1 nel tempo')
plt.show()
# grafico a barre
df.groupby('col2')['col1'].sum().plot(kind='bar')
plt.show()
Esercizi
- Carica il dataset Iris in un DataFrame e calcola la lunghezza media del petalo per specie.
- Identifica ed elimina righe con valori mancanti in un CSV di esempio.
- Disegna un istogramma di una colonna numerica e salvalo su file.
- Usa
apply
per normalizzare una colonna (scaling min–max).