• 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.

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 restituisce True se tutti i valori sono uguali o crescenti.

  • is_monotonic_decreasing restituisce True 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 👋 

Se vuoi imparare la data analysis con micro-lezioni che vanno dritto al sodo, iscriviti alla newsletter: