Nel panorama odierno della scienza dei dati, Python è emerso come uno degli strumenti più potenti e versatili. Al centro di questa popolarità c’è Pandas, una libreria open-source che fornisce strutture di dati flessibili e potenti per l’analisi dei dati. Questo articolo esplora le caratteristiche, i vantaggi e le applicazioni di Pandas, evidenziando il suo ruolo cruciale nella manipolazione e nell’analisi dei dati.

Cos’è Pandas?

Pandas è una libreria di Python sviluppata per semplificare la manipolazione e l’analisi di dati strutturati (tabulari). Originariamente creata da Wes McKinney nel 2008, Pandas offre due principali strutture di dati: Series e DataFrame. Queste strutture sono progettate per gestire dati etichettati e di tipo eterogeneo in modo efficiente, consentendo operazioni veloci e flessibili.

  • Series: Un array monodimensionale etichettato, simile a una colonna di un foglio di calcolo o di una tabella SQL.
  • DataFrame: Una struttura bidimensionale, simile a una tabella, che contiene una collezione di Series con lo stesso indice.

Caratteristiche Principali

  1. Manipolazione dei Dati

    • Indicizzazione e Selezione: Pandas offre potenti strumenti di indicizzazione e selezione, permettendo l’accesso a porzioni specifiche dei dati tramite etichette o posizioni.
    • Raggruppamento e Aggregazione: Funzioni come groupby() consentono di raggruppare dati in base a una o più colonne e di eseguire operazioni di aggregazione come somma, media e conteggio.
    • Unione e Fusione: Con merge(), join() e concat(), è possibile combinare più DataFrame in modo intuitivo e flessibile.
  2. Pulizia dei Dati

    • Gestione dei Valori Mancanti: Funzioni come fillna() e dropna() permettono di gestire i valori mancanti in modo efficiente, riempiendoli con valori specifici o rimuovendoli.
    • Rimozione dei Duplicati: drop_duplicates() è utile per identificare e rimuovere i dati duplicati, garantendo l’integrità dei dataset.
  3. Analisi dei Dati

    • Statistiche Descrittive: Funzioni come describe() forniscono una panoramica delle statistiche descrittive dei dati, tra cui media, mediana, deviazione standard e quartili.
    • Analisi Temporale: Pandas gestisce in modo nativo i dati temporali, consentendo operazioni avanzate come la resampling, la differenziazione e il calcolo delle statistiche sui dati temporali.

Vantaggi di Pandas

  • Facilità d’Uso: L’interfaccia di Pandas è intuitiva e simile a quella di strumenti come Excel, rendendola accessibile anche a chi non ha una profonda conoscenza della programmazione.
  • Prestazioni: Pandas è costruito su NumPy, il che permette di sfruttare operazioni vettoriali efficienti e di gestire grandi dataset in modo veloce.
  • Compatibilità: Pandas si integra facilmente con altre librerie scientifiche di Python come NumPy, SciPy, Matplotlib e scikit-learn, creando un ecosistema completo per la scienza dei dati.

Applicazioni

  1. Finanza: Analisi di dati finanziari, gestione di portafogli e calcolo di indicatori di performance.
  2. Ricerca Accademica: Gestione di dati sperimentali, analisi statistica e visualizzazione dei risultati.
  3. Marketing: Segmentazione dei clienti, analisi delle vendite e ottimizzazione delle campagne di marketing.
  4. Sanità: Analisi dei dati clinici, monitoraggio delle malattie e previsione degli esiti dei pazienti.

Esempio in Python

Supponiamo di avere un file CSV chiamato dati.csv con i seguenti dati:

Nome,Età,Professione,Salario
Luca,29,Ingegnere,50000
Maria,35,Medico,75000
Giulia,42,Professore,60000
Marco,28,Designer,45000

Passaggio 1: Importare la Libreria Pandas

import pandas as pd

Passaggio 2: Caricare il Dataset


# Caricare il dataset da un file CSV
df = pd.read_csv('dati.csv')

# Mostrare i dati caricati
print(df)

Passaggio 3: Visualizzare Informazioni di Base


# Visualizzare le prime righe del dataset
print(df.head())

# Ottenere informazioni generali sul dataset
print(df.info())

# Calcolare le statistiche descrittive
print(df.describe())

Passaggio 4: Manipolare i Dati


# Aggiungere una nuova colonna con il calcolo del salario annuale
df['Salario_Annuale'] = df['Salario'] * 12

# Filtrare i dati per ottenere solo le persone con più di 30 anni
over_30 = df[df['Età'] > 30]

print(over_30)

Passaggio 5: Raggruppare e Aggregare i Dati


# Raggruppare per professione e calcolare il salario medio
salario_medio_per_professione = df.groupby('Professione')['Salario'].mean()

print(salario_medio_per_professione)

Codice Completo


import pandas as pd

# Caricare il dataset da un file CSV
df = pd.read_csv('dati.csv')

# Mostrare i dati caricati
print("Dataset caricato:")
print(df)

# Visualizzare le prime righe del dataset
print("\nPrime righe del dataset:")
print(df.head())

# Ottenere informazioni generali sul dataset
print("\nInformazioni generali sul dataset:")
print(df.info())

# Calcolare le statistiche descrittive
print("\nStatistiche descrittive del dataset:")
print(df.describe())

# Aggiungere una nuova colonna con il calcolo del salario annuale
df['Salario_Annuale'] = df['Salario'] * 12

# Mostrare il dataset con la nuova colonna
print("\nDataset con Salario Annuale:")
print(df)

# Filtrare i dati per ottenere solo le persone con più di 30 anni
over_30 = df[df['Età'] > 30]

print("\nPersone con più di 30 anni:")
print(over_30)

# Raggruppare per professione e calcolare il salario medio
salario_medio_per_professione = df.groupby('Professione')['Salario'].mean()

print("\nSalario medio per professione:")
print(salario_medio_per_professione)

Output Atteso

Dataset caricato:
Nome Età Professione Salario
0 Luca 29 Ingegnere 50000
1 Maria 35 Medico 75000
2 Giulia 42 Professore 60000
3 Marco 28 Designer 45000

Prime righe del dataset:
Nome Età Professione Salario
0 Luca 29 Ingegnere 50000
1 Maria 35 Medico 75000
2 Giulia 42 Professore 60000
3 Marco 28 Designer 45000

Informazioni generali sul dataset:
<class ‘pandas.core.frame.DataFrame’>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
# Column Non-Null Count Dtype
— —— ————– —–
0 Nome 4 non-null object
1 Età 4 non-null int64
2 Professione 4 non-null object
3 Salario 4 non-null int64
dtypes: int64(2), object(2)
memory usage: 256.0+ bytes
None

Statistiche descrittive del dataset:
Età Salario
count 4.000000 4.0
mean 33.500000 57500.0
std 6.701989 13163.3
min 28.000000 45000.0
25% 28.750000 48750.0
50% 32.000000 55000.0
75% 36.750000 63750.0
max 42.000000 75000.0

Dataset con Salario Annuale:
Nome Età Professione Salario Salario_Annuale
0 Luca 29 Ingegnere 50000 600000
1 Maria 35 Medico 75000 900000
2 Giulia 42 Professore 60000 720000
3 Marco 28 Designer 45000 540000

Persone con più di 30 anni:
Nome Età Professione Salario Salario_Annuale
1 Maria 35 Medico 75000 900000
2 Giulia 42 Professore 60000 720000

Salario medio per professione:
Professione
Designer 45000.0
Ingegnere 50000.0
Medico 75000.0
Professore 60000.0
Name: Salario, dtype: float64

Questo esempio illustra alcune delle operazioni fondamentali che puoi eseguire con Pandas per manipolare e analizzare i dati. Puoi espandere queste tecniche per adattarle a dataset più complessi e analisi più sofisticate.

Conclusione

Pandas ha trasformato il modo in cui i dati vengono manipolati e analizzati in Python. La sua capacità di gestire dati eterogenei e strutturati con facilità e efficienza lo rende uno strumento indispensabile per scienziati dei dati, analisti e ricercatori. Con il continuo sviluppo e l’aggiornamento della libreria, Pandas rimarrà al centro dell’ecosistema della scienza dei dati, facilitando nuove scoperte e innovazioni in vari settori.