Sobes.tech
Middle

Come ottenere l'età in bin in Spark in base alla data di nascita in una data specifica?

sobes.tech AI

Risposta dell'AI

In Apache Spark, per ottenere l'età in bin basati sulla data di nascita in una data specifica, puoi seguire questi passaggi:

  1. Calcolare l'età in anni sottraendo la data di nascita dalla data data.
  2. Definire i limiti dei bin (ad esempio, 0-10, 11-20, 21-30, ecc.).
  3. Utilizzare la funzione when o bucketizer per distribuire l'età nei bin.

Esempio in PySpark:

from pyspark.sql import functions as F
from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()

data = [
    ("2000-05-15",),
    ("1985-10-30",),
    ("2010-01-01",)
]

df = spark.createDataFrame(data, ["birth_date"])

# Data di riferimento per il calcolo dell'età
reference_date = F.lit("2024-06-01")

# Convertire le stringhe in date
df = df.withColumn("birth_date", F.to_date("birth_date"))

# Calcolare l'età in anni
df = df.withColumn(
    "age",
    F.floor(F.months_between(reference_date, F.col("birth_date")) / 12)
)

# Definire i bin di età
bins = [0, 10, 20, 30, 40, 50, 60, 100]

from pyspark.ml.feature import Bucketizer

bucketizer = Bucketizer(
    splits=bins,
    inputCol="age",
    outputCol="age_bin"
)

df = bucketizer.transform(df)

df.show()

Il risultato sarà che nella colonna age_bin ci sarà l'indice del bin in cui rientra l'età. È inoltre possibile associare questi indici a etichette leggibili.