- analiticas
- Posts
- La monotonicità dei dati con Python e pandas
La monotonicità dei dati con Python e pandas
Come capire se i tuoi dati sono costantemente crescenti o decrescenti
Quando analizziamo dati, può capitare di voler sapere se una serie di valori cresce o decresce costantemente.
Infatti, la monotonicità gioca un ruolo molto importante nell’analisi dei dati in quanto ci permette di identificare le tendenze che si trovano in un set di dati.
In questa micro-lezione vedremo due proprietà di pandas che ci aiuteranno a comprendere la monotonicità: is_monotonic_increasing
e is_monotonic_decreasing
.
Il programma della micro-lezione
Cosa è una serie monotona?
La monotonicità può essere di due tipi:
Crescente: ogni valore è uguale o maggiore di quello precedente.
Decrescente: ogni valore è uguale o minore di quello precedente.
Stabilire se una serie (una colonna del dataframe) è monotona crescente o decrescente è spesso utile per fare analisi temporali, trend di vendite, dati di sensori, ecc.
Facciamo un esempio
Per prima cosa, importiamo pandas:
import pandas as pd
Se vuoi sapere perché importiamo pandas come pd, ti consiglio di dare uno sguardo a questa micro-lezione.
Adesso creiamo un dataframe di esempio (se hai già dei dati su cui stai lavorando, puoi saltare questo passaggio):
date = pd.date_range(start='2025-07-01', end='2025-07-07')
temperatura = [20, 21, 21, 22, 23, 28, 30]
vendite = [100, 99, 98, 97, 97, 96, 95]
df = pd.DataFrame({'data':date, 'gradi':temperatura, 'vendite':vendite})
Ed ecco qui il nostro dataframe:
data | gradi | vendite |
---|---|---|
2025-07-01 | 20 | 100 |
2025-07-02 | 21 | 99 |
2025-07-03 | 21 | 98 |
2025-07-04 | 22 | 97 |
2025-07-05 | 23 | 97 |
Applichiamo adesso is_monotonic_increasing
e is_monotonic_decreasing
, rispettivamente alle colonne “gradi” e “vendite”:
df['gradi'].is_monotonic_increasing
df['vendite'].is_monotonic_decreasing
In entrambi i casi, l’output del codice sarà:
True
Infatti:
is_monotonic_increasing
restituisceTrue
se tutti i valori sono uguali o crescenti.is_monotonic_decreasing
restituisceTrue
se tutti i valori sono uguali o decrescenti.
Attenzione!
Queste proprietà non richiedono che i valori siano strettamente crescenti o decrescenti: anche valori uguali tra loro sono accettati.
Controllare la monotonicità di tutte le colonne
Finora abbiamo visto come controllare la monotonicità delle colonne del nostro dataframe, una alla volta.
Se invece vogliamo controllare la monotonicità su tutte le colonne, possiamo usare una funzione lambda. Vediamo come:
df.apply(lambda col: col.is_monotonic_increasing)
Il risultato sarà questo:
data True
gradi True
vendite False
dtype: bool
Infatti, le colonne “data” e “gradi” sono monotone crescenti, a differenza della colonna “vendite”.
Quando controllare la monotonicità
Controllare se i valori delle colonne del nostro dataframe sono monotoni può essere fondamentale in alcuni contesti: pensa ad esempio ad analisi che hanno a che fare con misurazioni del consumo elettrico (tramite lettura di contatori) o con serie temporali o ancora con metriche come il churn cumulativo dei clienti.
In questi casi, qualora is_monotonic_increasing
desse come risultato False
, ciò potrebbe indicare anomalie nei dati, magari dovute a problemi di ingestione, reset, errori di lettura o aggregazioni sbagliate.
Un altro caso in cui controllare la monotonicità dei dati è particolarmente utile è quando operiamo su dataframe molto grandi. Infatti is_monotonic_increasing
e is_monotonic_decreasing
sono operazioni meno dispendiose dell’ordinare i dati con pandas.
Quindi, prima di ordinarli, conviene controllare se sono già ordinati o meno.
Alla prossima micro-lezione 👋