Sobes.tech
Middle

Hogyan lehet Spark-ban életkort bináris formában kapni születési dátum alapján egy adott dátumra?

sobes.tech MI

Válasz az MI-től

Az Apache Spark-ban az életkor bináris értékekben való meghatározásához a születési dátum alapján a következő lépéseket lehet követni:

  1. Számítsa ki az életkort években, kivonva a születési dátumot a megadott dátumból.
  2. Határozza meg a bin határait (például 0-10, 11-20, 21-30 stb.).
  3. Használja a when vagy bucketizer függvényt az életkor bináris értékekbe sorolásához.

PySpark példával:

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"])

# Referencia dátum az életkor számításához
reference_date = F.lit("2024-06-01")

# Szövegek dátummá konvertálása
df = df.withColumn("birth_date", F.to_date("birth_date"))

# Életkor számítása években
df = df.withColumn(
    "age",
    F.floor(F.months_between(reference_date, F.col("birth_date")) / 12)
)

# Életkor bináris határainak meghatározása
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()

Az eredményben a age_bin oszlopban megjelenik az életkor bin indexe, amelybe az adott életkor esik. Ezeket az indexeket könnyen társíthatjuk olvasható címkékkel.