Capitolo 15: Analisi Dati con pandas & NumPy

Impara a manipolare array numerici con NumPy e dati tabulari con pandas, inclusi aggregazioni e grafici base.

Scarica chapter15.py

Obiettivi

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

  1. Carica il dataset Iris in un DataFrame e calcola la lunghezza media del petalo per specie.
  2. Identifica ed elimina righe con valori mancanti in un CSV di esempio.
  3. Disegna un istogramma di una colonna numerica e salvalo su file.
  4. Usa apply per normalizzare una colonna (scaling min–max).