Sobes.tech
Middle
34

¿Cómo obtener la edad en bins en Spark según la fecha de nacimiento en una fecha determinada?

Empresas donde se preguntó
OZONOZON

Respuesta de la IA

sobes.tech AI

В Apache Spark для получения возраста в бинах по дате рождения на определённую дату можно выполнить следующие шаги:

  1. Вычислить возраст в годах, вычитая дату рождения из заданной даты.
  2. Определить границы бинов (например, 0-10, 11-20, 21-30 и т.д.).
  3. Использовать функцию when или bucketizer для распределения возраста по бинам.

Пример на 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"])

# Заданная дата для расчёта возраста
reference_date = F.lit("2024-06-01")

# Преобразуем строки в даты
df = df.withColumn("birth_date", F.to_date("birth_date"))

# Вычисляем возраст в годах
df = df.withColumn(
    "age",
    F.floor(F.months_between(reference_date, F.col("birth_date")) / 12)
)

# Определяем бины возраста
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()

В результате в колонке age_bin будет индекс бина, в который попадает возраст. Можно дополнительно сопоставить индексы с читаемыми метками.