Sobes.tech
Middle

Kaip Spark gauti amžių binų pagal gimimo datą tam tikru data?

sobes.tech AI

Atsakymas iš AI

Apache Spark'e, norint gauti amžių binuose pagal gimimo datą tam tikru data, galite sekti šiuos žingsnius:

  1. Apskaičiuokite amžių metais, atimant gimimo datą iš nurodytos datos.
  2. Nustatykite binų ribas (pvz., 0-10, 11-20, 21-30 ir kt.).
  3. Naudokite funkciją when arba bucketizer, kad paskirstytumėte amžių į binus.

PySpark pavyzdys:

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

# Referencinė data amžiaus skaičiavimui
reference_date = F.lit("2024-06-01")

# Konvertuoti eilutes į datas
df = df.withColumn("birth_date", F.to_date("birth_date"))

# Apskaičiuoti amžių
df = df.withColumn(
    "age",
    F.floor(F.months_between(reference_date, F.col("birth_date")) / 12)
)

# Nustatyti amžiaus binus
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()

Rezultatas bus, kad stulpelyje age_bin bus rodomas binų indeksas, į kurį patenka amžius. Šiuos indeksus taip pat galima susieti su skaitomais žymekliais.