Open In Colab

Pandas (3)#

In questo tutorial, verranno presentate le funzioni di Pandas più utili per condurre le usuali operazioni di manipolazione dei dati.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
import arviz as az
import seaborn as sns
%config InlineBackend.figure_format = 'retina'
RANDOM_SEED = 42
rng = np.random.default_rng(RANDOM_SEED)
az.style.use("arviz-darkgrid")
sns.set_theme(palette="colorblind")

Per questo tutorial, useremo nuovamente i dati penguins.csv. Come in precedenza, dopo avere caricato i dati, rimuoviamo i dati mancanti.

https://regenerativetoday.com/30-very-useful-pandas-functions-for-everyday-data-analysis-tasks/

pd.read_csv, pd.read_excel#

La prima funzione da menzionare è read_csv o read_excel. Le funzioni vengono utilizzate per leggere un file CSV o un file Excel in formato DataFrame di Pandas. Qui stiamo utilizzando la funzione read_csv per leggere il dataset penguins. In precedenza abbiamo anche visto come la funzione dropna viene utilizzata per rimuovere tutte le righe del DataFrame che includono dati mancanti.

df = pd.read_csv("../data/penguins.csv")
df.dropna(inplace=True)
df.tail()
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year
339 Chinstrap Dream 55.8 19.8 207.0 4000.0 male 2009
340 Chinstrap Dream 43.5 18.1 202.0 3400.0 female 2009
341 Chinstrap Dream 49.6 18.2 193.0 3775.0 male 2009
342 Chinstrap Dream 50.8 19.0 210.0 4100.0 male 2009
343 Chinstrap Dream 50.2 18.7 198.0 3775.0 female 2009

.columns#

Quando si dispone di un grande dataset, può essere difficile visualizzare tutte le colonne. Utilizzando la funzione columns, è possibile stampare tutte le colonne del dataset.

df.columns
Index(['species', 'island', 'bill_length_mm', 'bill_depth_mm',
       'flipper_length_mm', 'body_mass_g', 'sex', 'year'],
      dtype='object')

.drop()#

È possibile eliminare alcune colonne non necessarie utilizzando drop.

df = df.drop(columns=["year"])
df.columns
Index(['species', 'island', 'bill_length_mm', 'bill_depth_mm',
       'flipper_length_mm', 'body_mass_g', 'sex'],
      dtype='object')

len()#

Fornisce il numero di righe di un DataFrame.

len(df)
333

.query()#

È possibile filtrare un DataFrame utilizzando un’espressione booleana.

df1 = df.query("species == 'Chinstrap' & island == 'Dream'")
len(df1)
68

.iloc[]#

Questa funzione accetta come parametri gli indici delle righe e delle colonne, fornendo una selezione del DataFrame in base a questi. In questo caso, stiamo selezionando le prime 3 righe di dati e le colonne con indice 2, 3 e 5.

df2 = df.iloc[:3, [2, 3, 5]]
df2
bill_length_mm bill_depth_mm body_mass_g
0 39.1 18.7 3750.0
1 39.5 17.4 3800.0
2 40.3 18.0 3250.0

.loc[]#

Questa funzione compie un’operazione molto simile a quella della funzione .iloc. Tuttavia, in questo caso, abbiamo la possibilità di specificare gli indici delle righe che desideriamo, insieme ai nomi delle colonne che vogliamo includere nella nostra selezione.

df3 = df.loc[[2, 4, 6], ["island", "flipper_length_mm", "sex"]]
df3
island flipper_length_mm sex
2 Torgersen 195.0 female
4 Torgersen 193.0 female
6 Torgersen 181.0 female
%load_ext watermark
%watermark -n -u -v -iv -w -m
Last updated: Mon Jan 29 2024

Python implementation: CPython
Python version       : 3.11.7
IPython version      : 8.19.0

Compiler    : Clang 16.0.6 
OS          : Darwin
Release     : 23.3.0
Machine     : x86_64
Processor   : i386
CPU cores   : 8
Architecture: 64bit

seaborn   : 0.13.0
scipy     : 1.11.4
numpy     : 1.26.2
pandas    : 2.1.4
matplotlib: 3.8.2
arviz     : 0.17.0

Watermark: 2.4.3