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 |
Informazioni sull’Ambiente di Sviluppo#
%load_ext watermark
%watermark -n -u -v -iv -w -m
Last updated: Sun Jun 16 2024
Python implementation: CPython
Python version : 3.12.3
IPython version : 8.25.0
Compiler : Clang 16.0.6
OS : Darwin
Release : 23.4.0
Machine : arm64
Processor : arm
CPU cores : 8
Architecture: 64bit
numpy : 1.26.4
arviz : 0.18.0
seaborn : 0.13.2
matplotlib: 3.8.4
scipy : 1.13.1
pandas : 2.2.2
Watermark: 2.4.3