Creare una colonna di un dataframe con un loop

Molto spesso ci capita di voler aggiungere una colonna al nostro dataframe che abbia dei valori basati su quelli di altre colonne. Solitamente si ha bisogno che questa nuova colonna svolga una funzione riassuntiva, mettendo ordine trai dati.

Ovviamente, possiamo creare una colonna del genere con l’aiuto della libreria pandas come abbiamo già visto in questo articolo. Tuttavia, vi è una maniera più semplice, rapida ed elegante: basta utilizzare un “for” loop.

Cosa è un “for” loop

Detto in termini più o meno tecnici, un “for” loop è un metodo di iterazione che ci permette di iterare attraverso una sequenza. Dato che l’iterazione è strettamente legata a questa sequenza di oggetti, il “for” loop crea un ciclo finito e di conseguenza determinato a priori.

Come usare un “for” loop per creare una colonna in pandas

Come già premesso, le pecurliarità del “for” loop ci permettono di aggiungere una nuova colonna al nostro dataframe e assegnarle dei valori in maniera chiara, semplice ed elegante.

Immaginiamo avere un elenco di clienti, con il relativo numero identificativo, il loro valore e la città e lo Stato dove si trovano.

Immagine 1

Immagine 1

Ai fini di una segmentazione più ordinata, supponiamo di voler raggruppare gli account con sede negli stessi Paesi o in Paesi affini. Così facendo, andremo ad aggiungere la colonna “Mercato” al nostro dataframe, in modo da avere tre gruppi principali:

  • (Germania + Austria + Svizzera) = mercato DACH

  • (Regno Unito + Irlanda) = mercato UK/IE

  • Tutti gli altri = mercato “altro”

Una volta stabilita la logica della segmentazione, rimbocchiamoci le maniche e procediamo con il codice. Per prima cosa, non esitiamo ad importare le librerie che andremo ad utilizzare con i relativi alias (facoltativi).

import pandas as pd
import numpy as np

Adesso, andiamo a creare una lista (per il momento vuota) dove andremo successivamente ad immagazzinare i valori della nuova colonna.

mercato = []

Ora, sotto con il “for” loop!

for row in df['Paese']:
    if row == 'Germania':
        mercato.append('DACH')
    elif row == 'Austria':
        mercato.append('DACH')
    elif row == 'Regno Unito':
        mercato.append('UK/IE')
    elif row == 'Irlanda':
        mercato.append('UK/IE')
    else:
        mercato.append('Altro')

Il loop ha la funzione di controllare il valore di ogni riga della colonna “Paese” del dataframe. A seconda di esso, una voce viene inserita nella lista creata precedentemente. Adesso useremo questa lista per assegnare dei valori alla colonna “Mercato” che inseriremo nel dataframe.

df['Mercato'] = mercato

Così facendo, questo sarà il nuovo aspetto del nostro dataframe:

Immagine 2

Immagine 2

Perfetto, adesso abbiamo creato una segmentazioni dei clienti nel nostro dataframe su base geografica.